Başlıyoruz – IoT 101

Internet of Things

Yaklaşık olarak son bir buçuk yıldır takip ettiğim ve üzerinde araştırmalar yaptığım, son zamanlarda ise adını sıkça duyduğumuz, yakın gelecekte ise sadece adını duymakla kalmayıp kendimizi içinde bulacağımız teknolojinin başlangıcını bloğum da yapıyorum.

Internet of Things
Konuya girmeden önce artık her yeni teknolojide klasik bir tartışma haline gelen terim konusuna değinmek istiyorum. Kimileri bunu “Nesnelerin İnterneti” olarak çevirse de kimileri de birebir çevirisini yani; “Şeylerin İnterneti” şeklinde kullanıyor. Her iki tarafın da haklı olduğu yanlar var; Bir taraf; “Internet of Things” diyen kişi “Internet of Objects” diyemez miydi, sorusunu gündeme getirirken, diğer taraf hem pazarlama hem de kavramsal olarak “Nesnelerin İnterneti” kelimesini kullanmayı tercih ediyor. Ben ise bu ve bundan sonraki tüm makalelerimde IoT kısaltmasını kullanacağım. (Tamamen daha karizmatik durduğundan)

Terim kısmını da netleştirdikten sonra konumuza geri dönelim. IoT nedir? sorusunun cevabı internette çokça paylaşıldı;

Kaynak-1
Kaynak-2 (Video)
Kaynak-3

fakat bir cümle ile anlatmak gerekirse; nesnelerden toplanan verilerin anlamlı bir şekilde yorumlanıp, değerlendirilip ve en sonunda bize bir çıktı üretip, anlık olarak karar verilmesi aşamalarının bütününe IoT diyebiliriz.

Elbette bu tanımın altını uzun uzadıya doldurabiliriz fakat bu makalede ben “Ne oldu da IoT teknolojisi son zamanlarda bu kadar popülerleşti?” ve “Tüm dünya şirketleri yatırımlarını bu teknolojiye yapmaya karar verdi?” sorularını yanıtlamaya çalışacağım.

  1. IPv6’nın ortaya çıkması: Cisco’nun yayınladığı rapora göre; 2020’de 50 milyar cihaz internete bağlı hale gelecek. Bu rakamı IPv6 ortaya çıkmadan söylemek pek mümkün olmazdı çünkü mevcut kullandığımız IPv4 teknolojisinin limiti artık sona yaklaşıltı. IPv6 ile birlikte rivayet odur ki dünyadaki her birim metrekareye bir statik ip verilse bile bu sınır doldurulamıyormuş. Bakalım insanoğlu bununla yetinecek mi? 🙂
  2. Veri taşıma ve saklama maliyetleri: Bir konuda hem fikiriz ki bulut teknolojisinin gelişmesiyle veri saklamak artık o kadar da maliyetli bir şey değil. Bununla beraber 3g ile birlikte başlayan ve yakın gelecekte 4G ile devam edecek (ya da pas geçip 5G’ye ile devam edecek) teknolojiler sayesinde veri taşıma maliyetlerinin de aynı oranda azalması, IoT’nin günlük hayatımızda yer bulmasında en önemli etken.
  3. Veri İşleme Gücü: Bulut bilişimi sadece veri saklama yeri olarak değil aynı zamanda ortak bir fikir ürettiğimiz platform olarak düşünmek gerekir. Bunun için bir çok bulut bilişim çözümü sunan firmaların “machine learning” uygulamaları mevcut. Bu uygulamalar sensör verilerini sakladığımız veritabanından (ister ilişkisel bir veri tabanı, ister No-SQL), verileri okuyup, analiz ederek, size bir çıktı üretiyorlar ve bunu milisaniyeler içinde gerçekleştirebiliyor (Microsoft Azure, IBM, Google, Amazon WS vb.). Sensörlerden alınan verileri eş zamanlı olarak işleyip, anlık olarak sizin yerinize karar veren bir sistem, IoT’nin olmazsa olmazlarından. Topladığınız verileri anlamlı bir hale getirip, çıktı üretemiyorsanız yanlış yoldasınız demektir.

Tabii bu listeye bir çok farklı teknolojik geliştirmeler eklenebilir. Bana göre bu üç teknolojik gelişme, IoT alanında geliştirilen uygulamaların temelini oluşturan ve önünü açan geliştirmeler.

Yukarıdaki 3 teknolojik gelişmeye ek olarak bir de sosyolojik bir tespit eklemek istiyorum. Yaptıklarımızı paylaşma isteğimiz; artık firmalar gittiğimiz yeri, yediğimiz yemeği, izlediğimiz filmi, en son okuduğumuz kitabı vb. verilerden daha fazlasını istiyorlar, sabahları kaçta kalktığımızı, evimizin sıcaklığını, hangi gün ne tür sportif faaliyetlerinde bulunduğumuzu gibi. Kısaca sadece bizim paylaştıklarımızı değil, direkt hayatımıza etki eden verilere de sahip olmak istiyorlar. Sahip olup ne yapacaklarını size bırakıyorum 🙂

Yazıya, işin biraz da arka tarafında neler oluyor, onları inceleyerek devam etmek istiyorum.

IoT Teknolojisi’nde genel olarak hangi katmanlar var? Sorumlulukları neler? Mevcut çözümler neler? Bu soruların cevaplarını aşağıdaki resim üzerinden giderek verelim;

iotArchitecture

Yukarıdaki mimariye baktığımızda en altta donanım katmanı mevcut. Bu katmanın komponentlerinden bir kaçını inceleyelim;

Donanım Katmanı

  • Sensörler: Her türlü elektronik sensörleri bu kutunun içine ekleyebiliriz. Koşu yaparken attığımız adımı ölçen sensör veya odamızın belli bir sıcaklık seviyesine ulaştığında klimayı açmasını söylememize yarayan sıcaklık sensörü de bu kutuda.
  • Mikroişlemciler: Sensörlerden verileri okuduğumuz, verileri işlediğimiz ve bu verileri dış dünyaya anlamlı bir şekilde servis etmemizi sağlayan komponent. Atmel, Texas Instruments, Microchip vb. firmaların çeşitli modelleri bulunmaktadır.
  • İletişim Donanımları: Mikroişlemcilerin dış dünya ile hangi iletişim protokolü ile konuşacağının bulunduğu kısım. wireless, usb, rs232, modbus, spi vb. iletişim protokollerinden birisi ile veriler cihazlar arasında taşınabilir.
  • Cihaz İşletim Sistemi: Mikroişlemcinin üzerinde hangi işletim sistemi bulunacak? Burada da büyük firmalar arasında ciddi bir rekabet var, Microsoft Windows 10 işletim sistemini Rasperry Pi üzerinde çalışacağının açıklamasının ardından Android de IoT için özel bir işletim sistemini duyurdu; Brillo. Apple ise kendi işletim sistemini henüz bu platform için duyurmamış olsa da ben yakın zamanda Apple’dan da böyle bir çıkış bekliyorum.

İletişim Katmanı

  • Veri Yolu Protokolü: Fotoğraftaki görsele bakıldığında bu katmanın 5 alt başlığa ayrıldığı görülüyor. Kısa/Uzun Mesafe ve Düşük/Yüksek bantgenişliği ve Kablolu Bağlantı tipleri şeklinde beşe ayrılmış durumda. Örnek vermek gerekirse Kısa Mesafe/Düşük bantgenişliği için bluetooth, rfid gibi teknolojileri söyleyebiliriz.
  • Ağ ve Taşıma Protokolü: Veri paketlerinin hangi protokol ile taşınılacağı katman. IPv4, IPv6 bu katman için örnek olabilir.
  • Oturum Protokolü: Verilerin nasıl dağıtılacağını belirlediğimiz katman. İster bir http protokolü kullanarak ile restful apiler ile verimizi dağıtabiliriz, istersek MQTT veya CoAP protokolü ile de verilerimizi dağıtabiliriz.

Yazılım Katmanı
Yazılım katmanı da üç başlık altında toplanmış,

  • Sistem Donanımı: Bu katmanın sorumlulukları resimde de görüleceği üzere, tüm bu katmandaki uygulamalar (veritabanı, uygulamalar vs.) lokal bir serverda mı, yoksa bulut ortamında mı tutulacağının konuşulduğu kısım.
  • IoT Platformları: Biz yazılımcıların biraz daha aşina olduğu kısım. Kısaca buradakilerin de üstünden geçecek olursak,
    • Middleware kısmı bir alt katmandaki oturum protokolü katmanı ile bağlı. Oturum katmanında MQTT’yi seçtiğinizde, bu protokole uygun bir server yazılımı gerekiyor. (RabbitMQ, Mosquitto vb)
    • Veritabanında ise MsSql, Oracle, MySql gibi ilişkisel veri tabanı kullanabileceğimiz gibi, büyük veri için de tercih edilen MongoDB, Hadoop, Cassandra gibi NoSQL veri tabanları.

Son Kullanıcı Seviyesi

Son kısımda ise artık uygulamamızı yapabiliriz. Burayı da aslında ikiye ayırıyorlar; son kullanıcı ya da bireysel kullanıcılara yönelik uygulamalar. Akıllı saatler, akıllı ev teknolojileri vb., bir de sektörel uygulamalar; tarım, enerji, sağlık vb. müşterisi firma olan uygulamalar şeklinde.

Tabii bir de tüm katmanları kapsayan dikey de güvenlik katmanı var. Yukarıda metinsel olarak açıklamaya çalıştığım katmanları bir resim ile özetlemek gerekirse;

iotArchitectureApp

IoT görüldüğü üzere tek bir uygulamadan ya da disiplinden meydana gelmiyor. Elektronik mühendisi, bilgisayar mühendisi, network uzmanı, güvenlik uzmanı, endüstriyel ürün tasarımcısı gibi farklı disiplinden insanların bir arada çalışmasını gerektiren bir teknoloji.

Peki biz yazılımcılar bu teknolojinin neresindeyiz?

Bu tamamen bu zamana kadar ki yapmış olduğunuz çalışmalara göre vereceğiniz bir karar olacaktır. Web uygulamaları geliştiren bir yazılımcıysanız sizin için değişen tek şey, bir textbox’dan veriyi almayacaksınız, sensörlerden gelen verileri alıp veritabanına yazacaksınız. (tabii bu veri tabanı da NoSQL olabilir)

Donanım katmanında da yazılım geliştirebilirsiniz. Arduino, RaspberryPi, Intel Gallieo gibi kartlar da C, C++ ve hatta yakın zamanda Microsoft’un duyurduğu Universal App sayesinde RaspberryPi’da C# ile uygulama geliştirebilirsiniz. Tabii burada sınırsız bir kaynak yok, içinde bulunduğumuz ortamlara göre (web ve masaüstüne göre) biraz daha farklı ama kesinlikle eğlenceli.

NOT: Denemediyseniz bir butona basınca yanan led uygulamasını yapmanızı kesinlikle öneririm 🙂

Özetlemek gerekirse, IoT yaptığımız işin “şeklini” değiştirecek gibi duruyor. Biz bunun neresinde yer alacağız, buna karar vermemiz gerekiyor. Bu zamana kadar edindiğimiz tecrübeleri, yukarıdaki katmanlardan bir ya da birkaçında rahatlıkla kullanabiliriz. Bence çok zevkli bir teknoloji, insanlara dokunan yanı olduğu için de beni ayrıca heyecanlandıran bir teknoloji.

Son olarak bu blogda ilerleyen günlerde sizi neler bekliyor?

Bundan sonra ben de bloğumda IoT üzerine paylaşımlarda bulunacağım. Dokunabildiğim kadar bütün katmanlardaki çözümleri inceleyip, örnekler yapacağım. İlerleyen günlerde yalnızca yazılım çözümlerini değil, donanım çözümlerini de inceleyip sizlerle paylaşacağım. Tüm bunların yanında son kullanıcıya dokunan ürünleri de incelemek istiyorum. Bu bize neler yapabileceğimiz hakkında da fikir verecektir.

Başlangıç yazım heyecanıma yenik düştüğüm için biraz uzun oldu ama IoT’yi en güzel özetleyen bu resmi anlatmadan geçmek istemedim. Bir sonraki makalede görüşmek üzere.

One Response to Başlıyoruz – IoT 101

    Bir cevap yazın

    Your email address will not be published. Please enter your name, email and a comment.