Nesnelerin İnterneti – Ya arka planı?

5 sene önce Beyazıt Kölemen tarafından yazılmıştır.-4.053 Okunma

Günümüzün popüler kelimesi olan iki kelime “Internet of Things” yada kısaca “Nesnelerin İnterneti” olarak her sempozyumda yada her konferansta sıklıkça bu kelimeleri duyuyoruz. Hatta son zamanlarda bahsedilen Endüstri 4.0 kelimesinin de açıkcası anahtar kelimesi Nesnelerin İnterneti!


Peki nedir nesnelerin interneti?

Nesnelerin interneti yada kısaca IOT sistemler gerçek hayatta kullandığımız cihazlara birer düşünme/karar verme yeteneği kazandırmak üzerine ortaya atılmıştır. Kısaca günlük hayatta kullandığımız saat, ayakkabı, kahve makinası yada endüstriyel açıdan kullandığımız “insan gücü”nün yerine “robot gücü” olarak tanımlayabiliriz. Kısaca akıllı telefonlar olarak hitap ettiğimiz yeni nesil telefonların başına “Akıllı” kelimesi eklenerek oluşturulan yeni dünya sistemidir.

Buraya kadar olan kısmı her yerde duymuşsunuzdur herhalde..

Peki yazılım dünyasında IOT nedir?

Yazılım dünyasında yada elektronik alanda bu sistemleri farklı aşamalarda incelememiz gerekicek. Nesnelerin internetini 2 farklı aşamada incelersek birisi “Elektronik” sistemi yada kısaca chipler, mikroişlemciler,servo motorlar gibi.. Diğer açıdan incelersek ise bu sistemleri kontrol edicek yazılımlar olarak ayırabiliriz.

Yazılım dünyasında IOT olayında 2-3 farklı projede karşıma çıkan tecrübelerimide anlatmak istedim. Öncelikle kısa bir elektronik girişi yaparak başlayalım.


1.Elektronik Kartlar ve Mikro Bilgisayarlar:

Burada küçük bir karıştırılan durumu da açıklayarak başlayalım. Mikroişlemci (Micro Processor) ile Mikro Denetleyici (Micro Controller) arasındaki farkı anlatarak başlayalım. Mikro Processer kısaca vucudumuzdan örnek vericek olursak ellerimiz, burnumuz, gözlerimiz gibi dış etkenden veri toplayan ve verilen komutu yerine getiren sistemlerdir. Mikro Denetleyiciler ise kısaca beyindir. Yani emir komuta sistemi verir. Kısaca mikro denetleyici karar verme, mikro işlemci uygulama sistemleridir.

Not: Amerikayı tekrar keşfetmemek için Pic16f lerden girip, Assembly dünyasına değinmek gibi bir hata yapmak istemiyorum 🙂

1.1. Arduino (Mikro İşlemci):

IOT denilince küçük projelerde ilk akla gelen sistem sanırsam Arduino oluyor. Arduino ile IOT unuza bağlı tüm sensörleri kontrol edebilir ve sensörlerdeki değerlere göre komut verme işlemlerini gerçekleştirebilirsiniz. Oldukça basit bir yazılım dili olan Arduino kendi yazılım diliyle beraber bir çok farklı çeşidiyle ucuz ve küçük IOT projeleriniz için oldukça ideal bir çözümdür. Hatta büyük projelerinizde “Mikro İşlemci” görevini hakkıyla yerine getirebilecektir.

1.1. Raspberry PI (Mikro Denetleyici):

Hepimizin küçük bilgisayar olarak gördüğü kart büyüklüğündeki bilgisayarlardır. Raspi sistemleri şu an piyasada en yaygın kullanılan geliştirme kartlarından birisidir diyebiliriz. Benzer bir çok türevi olsa da piyasada şu an yaygın olarak kullanılan mikro denetleyicilerdir. Geliştirilebilir Hafıza, USB Bağlantıları ve üzerindeki PIN yapılarıyla elektronik aksam da bir çok işinizi kolaylıkla çözmeye yarayacaktır. Ek olarak RAM konusunda ciddi verim sağlaması nedeniyle, büyük işletim sistemlerini bile kolaylıkla kurup, IOT larınızı kontrol etmenize olanak sağlamaktadır.


Bu iki işlemi kombine yapıcak olursak Raspi (Beyin) , Arduino (Kollar) olarak özetleyebiliriz. Raspi ve arduino da bir çok proje de tek başlarına yetmektedir. Hatta bir çok IOT sisteminde Raspiyi tek başına kullanmanız da mümkün olsa da herkes kendi işini yapsın politikasıyla Raspi-Ardu entegrasyonunu yapabilirsiniz. Hatta bunu Arduyu direk Raspiye USB üzerinden bağlayarakta kullanmanız mümkün.


Yukarıdaki ön bilgi aşamalarından sonra asıl yazı amacımıza yani IOT Yazılımlarına dönersek.

2.IOT Yazılımları:

2.1. İşletim Sistemleri:

IOT tabanlı yazılımlarda (Makro ölçüde olmayan sistemler) için Mikro Denetleyici kontrolünde genellikle Unix tabanlı yazılımlar kullanılmaktadır. Ücretsiz/Açık Kaynak bu yazılımlarda genellikle sunucu taraflı yazılımlar olarak hitap ettiğimiz, Grafik tabanlı olmayan yazılımları tercih etmemiz performans açısından ciddi kolaylık sağlayacaktır.

Geliştirme aşamasında Raspberry PI üzerinde gelen Rasbian yazılımı yada raspberry üzerine kurabileceğiniz diğer UNİX tabanlı (Ubuntu Mate,Kali Linux) gibi yazılımlarla işletim sistemi ihtiyacınızı giderebilirsiniz. Tabi projenizi hangi amaçla yapılıyor o amaca en uygun işletim sistemini seçmeniz faydanıza olacaktır.  Bu konuda Windows gibi yazılımlarla uğraşmak biraz zaman kaybınıza neden olacaktır 🙂

2.2 IOT Yazılım Geliştirme:

IOT Yazılımı geliştirme aşamasında yine orta ölçekli projeler için tavsiye edebileceğim iki dil mevcut. Bunlardan birisi C/C++ (Bir çoğumuzun üniversitede gördüğü dil) bir diğeri ise C/C++ daki kod kalabalığından bıkanlar için, yüzlerce kütüphanesiyle Python programlama dili diyebilirim.

IOT lar için Açık Kaynak/Bol kütüphane anlayışında kullanmanız gereken dil Python olsa gerek.

Diğer programlama dilleri örnek olarak C#/PHP gibi dilleri de kullanmanız mümkün kısaca Serial Portlara müdahale edebileceğiniz her dili kullanabilirsiniz fakat performans/kullanım kolaylılığı açısından en ideal dil olarak ben projelerimde Python kullanıyorum.


Yukarıdaki verileri ele aldığımızda ortaya şöyle bir karışımı çıkartalım o zaman.

Ubuntu İşletim Sistemi / Python Programlama dili ile Raspi üzerinde yazılım ve Arduino ile IOT umuzu kontrol etme yeteneğine kavuştuk.

Teknik anlamda bu konulara ek olarak bağlantılar için Network Bilgisi, Veriler için Veritabanı bilgisi ve projeyi geliştirmek içinde Yazılım Mühendisliği proje yönetimleri sizi işinizi fazlasıyla kolaylaştıracaktır.

3. Algoritma Geliştirme:

Bu aşamada en önemli kıstaslardan birisi ve ülke insanımız olarak en sevmediğimiz kısım ise IOT u projelendirmek ve algoritmalarını şekillendirmek olsa gerek.

Bu aşamada projenizi detaylıca yazmanız, ardından Flowchartını çıkartıp, gerekli modülleri / sensörleri belirleyerek projenize başlayabilirsiniz. Unutmamak gerekki projenizi en ince ayrıntısına kadar düşünüp araştırmadan parça siparişi vermek, yazılıma başlamak size boş yere zaman kaybına neden olacaktır.

Projenizi doğru aşamalarda geliştiridikten sonraki kısımda ise asıl eğlencenin başladığı nokta diyebiliriz. Bunun için yine gündemdeki en önemli 2 konuyla devam edelim. Yapay Zeka ve Veri Madenciliği.

4. Data Mining ve Big Data:

Algoritmalarınızı geliştirmek, istatistiksel veriler üretmek ve bunu en mantıklı şekilde yorumlamak için kullanacağımız alan işe data mining olarak hitap ettiğimiz veri madenciliğidir.  Yada kısaca şöyle özetlersek sensörlerden gelen verileri en mantıklı nasıl yorumlayabiliriz? sorusunun cevabıdır.

Örnek olarak ISI/NEM sensörlerinden aldığınız yüzlerce değeri, hava durumu apileriyle aldığınız sıcaklık değerlerini belirlediğiniz algoritmalarla işleyip klimayı çalıştırmak için öğrenmeniz gereken alan data mining.

Tabi data mining öncesi bilmeniz gereken diğer konu ise Big Data olarak hitap ettiğimiz büyük veri yada yazılımcı gözüyle veritabanı sistemleridir. Bu alanda sensörlerden alınan verilerin saklanması ve işlenebilmesi için veritabanı sistemlerini inceleyebilirsiniz.

Bu konuda gömülü sistemlerde en yaygın olarak kullanılanı SQL Lite veritabanı diyebilirim, eğer internet bağlantısıyla veritabanını kullanmak istiyorsanız da bu amaçla arka tarafta veri saklama şeklinize göre Mongo, MySQL yada cloud hizmetlerinin diğer veritabanı hizmetlerini kullanabilirsiniz. Alacağınız veri çok yüksek miktarda ise cloud hizmetlerinin big data servislerini kullanmanız faydanıza olacaktır.

5. Yapay Zeka ve Makina Öğrenimi:

Korkmayın dünyayı ele geçirmez 🙂 Her ne kadar günümüzde yapay zeka farklı olarak algılansan da kısaca yapay zeka için şunu söyleyebiliriz. Eldeki verilerle bir sonraki veriyi algoritmalara sokmadan tahmin edebilme yeteneği diyebiliriz.

Yine ISI,NEM faktöründen ele alıcak olursak sensörlerimizden uzun süre boyunca aldığımız verilerle şöyle basit bir yapay zeka sistemi de çıkartmanız mümkündür.

Örnek olarak : 15 derecede %10 nem oranında X Bölgesinde Y tarihinde 10 yıllık datanızla o tarihlerdeki yağmur yağma ihtimalini hesaplamak gibi.

Tabi yapay zeka – data mining konusunda aslında birbirine çok yakın olsa da bu alanda bakabileceğiniz alan Machine Learning olarak belirttiğimiz Makina Öğrenimi üzerine olmalıdır. Elinizdeki verilerle sistemi eğitip, sistemin karar verme yeteneğini arttırmanız mümkün.

Yapay zekanın amacı varolan doğru verilerle bir sonraki işlemi en doğru şekilde yapmak üzerinedir.


Bundan sonra IOT sistemler üzerine genellikle yazılım/algoritma geliştirme üzerine makaleler yazmadan önce bunu ön bilgi açısından yazmak istedim. Yanlış/Eksik bilgi verdiysem affola 🙂

Saygılarımla.

Bir Cevap Yazın