Bir IoT hikayesi #5 — Hub

thumbnail-5

Bu serinin önceki yazılarını okumadıysanız, bu yazıyı daha verimli kılabilmek için okumanızı rica ederiz:

Sensörlerin dışında merkezde; modemin yanına kurmayı planladığımız bir gateway, yani hub (merkezi bağlantı noktası) donanımı planladık. İki temel görevi olan hub, sensörlerden gelen bilgiyi alıp, işleyecek ve sunucuya göndecekti. Gateway tarafında bu görevleri yapabilecek pratik birkaç donanım vardı, bunlardan biri de Raspberry Pi idi. Zaman kaybetmeden hemen işe koyulduk.

Veriyi almak

Sensörlerden gelen verileri Raspberry’e; minimum güç harcayarak, stabil, hızlı ve mesafe sorunu yaşamadan göndermek için Zigbee teknolojisi kullanan XBee modülü kullanma kararı almıştık. Sensörden çıkan veriyi hub tarafında yakalamak için yine XBee kullandık. XBee modülümüzü Raspberry Pi’ın I/O pinlerine şemadaki gibi bağladık.

Raspberry Pi — XBee şema
Raspberry Pi — XBee şema

Bu işlemi gerçekleştirerek Hub’da bulunan XBee’ye gelen bilgileri, “Seri Haberleşme yöntemi” ile (Tx/Rx) Raspberry Pi’ye aktardık.

Veriyi sunucuya göndermek

Tamam, veriyi aldık ve hub’da topladık. Ama bir sorun vardı: Bu veriyi işleyip, sunucuya ve ardından bildirim olarak nasıl gönderecektik? Bunu en verimli hangi dili kullanarak yapabilirdik? Yaptığımız araştırmalar sonucunda Python yerine Node.js kullanmaya karar verdik. Peakode ekibinden Node.js bilen Full-Stack Web Developer, Uğur Güngezerler arkadaşımız sunucu tarafında Node.js kullanmıştı. Client tarafta da Node.js kullanmak için kütüphane araştırdık ve uygun kütüphane ile GPIO kontrolü yapabilir hale geldik. Bu da ilk etapta işimizi görmeye yetti. Seri Haberleşme ile aldığımız veriyi artık anlamlı hale getirebiliyorduk.

PHP/Laravel ve API

Back End Developer arkadaşımız Mert Can Esen’in sihirli dokunuşlarıyla prototip aşamasında kullandığımız iOS uygulamamız için API geliştirdik. Bunu yaparken PHP/Laravel framework kullandık ve AWS (Amazon Web Services) üzerinde SNS (Simple Notification Service) ile kullanımına hazır hale getirdik. En temelde sunucuya sensörden gelen verileri Push Notification (bildirim) göndermeye yarayan bir platform oluşturduk.

Node.js — Raspberry Pi

Web uygulamasının görevi bir porttan gelen istekleri dinleyip uygun cevaplar ile karşılık vermektir. İstek sayısı arttıkça cevap süreleri artmaya başlar. Node.js bu sorunu minimize eden bir framework. Bu sebeple IoT uygulamalarında geniş yer bulmuştur. Güvenlik sektöründe geliştirilen bir ürün olduğu ve gecikme toleransı bulunmadığından Node.js bizim için biçilmiş kaftandı.

Geliştirdiğimiz Node.js yazılımı ile Raspberry Pi’ın seri porttan gelen sensör durum bilgisindeki karakterler belirli metinleri JSON ile sembolize ettik. Bu sayede veri trafiğini minimuma indirmeyi amaçladık. JSON ile sınıflandırdığımız verileri sunucuya göndererek mobil bildirimde kullanılmaya hazır hale getirdik. Sensör durum bilgisinin içindeki belirli bir kısımda 1 değerini okuduğumuz anda yine Raspberry Pi’ nin I/O pinlerinden birine bağlı olan alarmı çalıştırdık.


Yaptığımız tüm aşamalarda projeye başlamadan önceki ön koşulları uyguladık. Bunlar bizim projede ilerlediğimiz her aşamada daha hızlı ve proje için en doğru karar vermemizi sağladı. Bu işlemleri tamamladıktan sonra ise sıra geldi uygulamayı geliştirme kısmına!

Serinin sıradaki yazılarını aşağıdaki linkler aracılığıyla okuyabilirsiniz:

Görüşmek dileğiyle!

Eyüp Görkem Bayram

Peakode | Elektronik Mühendisi

Bahadır Gölcük

Peakode | Elektronik Mühendisi

Leave a Reply

Your email address will not be published. Required fields are marked *