Dünya’nın Herhangi Bir Yerinden IoT Cihazlarınızı Kontrol Edin! (Arduino IoT Cloud)

Arduino IoT Cloud, Arduino firmasının sunmuş olduğu bir IoT hizmetidir. Herhangi bir ölçümümüzü internet üzerine aktarmaya veya internet üzerinden almamızı sağlar. Tasmota, esphome gibi sistemlerin aksine sadece yerel ağda değil tüm internet üzerinde bir veritabanı sağlayarak çalışır. Dolayısıyla, IoT cihazla aynı ağa bağlanma zorundalığını ortadan kaldırır. İnterneti olan herhangi bir yerden bu sisteme bağlanabilir ve aletlerinizi kontrol edebilirsiniz. Bir örnek vermek gerekirse, evinizin içerisindeki bir odaya Wi-Fi özelliği olan bir mikrokontrolcü ve sıcaklık ölçen bir sensör koydunuz ve sensörün aldığı verileri Arduino’nun servisine yolluyorsunuz. Diyelim bu sistem Türkiye’de olsun, ben ise Bangladeş’te olayım. Dolayısıyla farklı ağlara bağlı olacağız. Bu sistem ile sıcaklık verisini uzaktan da görebilirsiniz. Tabi bu basit bir örnek, sıcaklığı kontrol de edebilirsiniz projenize göre. Arduino IoT Cloud’a herhangi bir web servis ile ulaşılabiliyor, bu bir site. Aynı zamanda iOS ve Android uygulama marketler için de uygulamaları bulunuyor. Bu sistemle yüksek lisans için bir proje yaparken denk geldim. İnternete belli bir veriyi yüklemem gerekiyor ve bu veriyi işleyip bazı şartlar altında bazı eylemler yapmam gerekiyordu. Tabi bu işlemleri aynı ağa bağlı olmak zorunda kalmadan yapmam gerekiyordu. İlk başta tabi ki bu işlemi yapabilecek sistemleri araştırarak başladım. En garanti yöntem bence domain ve hosting servisleri ile olacaktı. Bağlı olduğun sunucuya veriler yükleyerek veritabanı üzerinden bu verileri kontrol etme fikri çok cazip geldi fakat üşendim ve başka yollar aramaya koyuldum. Tasmota ve EspHome sistemleri çıktı önüme, bu sistemlerle de denedim fakat anladığım kadarıyla bunlar sadece yerel ağdan bağlıyken iş görüyorlar herhangi bir veritabanına veri gönderilmiyor. En son şans eseri karşıma Blynk ve Arduino IoT Cloud çıktı. Blynk sistemi de Arduino sistemi gibi bir sistem fakat Arduino komunitesi bildiğimiz, tanıdığımız bir camia olduğu için Arduino tarafından ilerlemeyi seçtim.

Herhangi bir arama motoruna “Arduino IoT Cloud” yazdığınızda karşınıza direk Arduino’nun sitesi çıkmakta. Basıp giriyoruz tabi ki. 🙂

Sağ üstte bulunan “Get Started” yazısından ilk adımımızı atıyoruz. Kişiye özel bir kullanım alanı sunduğu için kayıt olmamız gerekiyor, verilerimiz Arduino veritabanında depolanacak.

Home ekranı sizi karşılıyor. Önümüzde duran koskoca “IoT Cloud” butonunu görmemek imkansız, yazımızın ana kahramanı burada. “Web Editor” butonu ise Arduino IDE’ye benzer bir kullanım sunuyor. IoT Cloud’un içerisinde bir sketch oluşturma alanı bulunuyor fakat Web Editor daha detaylı bir kullanım sunuyor. Tabi ikisi de Arduino IDE kadar detaylı değil.

Sol tarafta Courses ve Resources kısmından da güzel bilgiler edinmek mümkün, hatta 7 saatlik güzel bir ücretsiz kurs sunuyor Arduino, IoT Cloud için, girip izlemek gerek. IoT Cloud’a basıyoruz. Karşımıza “Thing” oluşturma ekranı çıkıyor. Thing denilen şey aslında bir proje, birazdan bir thing oluşturacağız. Bu thing’in içerisinde değişkenler, aletler bulunmaktadır. Değişken dediğimiz şey yazılımdan bildiğimiz değişken aslında. Mesela bir sıcaklık sensörü bağlayacağız, float tipinde ve “sicaklik” adında bir değişken tanımlayacağız. “Create Thing” butonuna bastığımızda karşımıza şöyle bir ekran çıkıyor.

Şuan Things sekmesinin altındayız. “Untitled” yazan yer bizim Things’imizin adı. Üstüne tıklayarak modif yapılabilir durumdadır. “Cloud Variables” başlığı altında “Add Variables” butonunu görmekteyiz. Bahsettiğim değişkenler bu pencere altında eklenecek. Butona bastığımızda karşımıza bir pencere çıkmaktadır.

“Name” kısmından artık ne girmek istiyorsak onu giriyoruz. Mesela demin bahsettiğim gibi sıcaklık verisi okunacaksa “sicaklik”, led verisi alınacaksa “led” gibi isimler girilebilir. Select variable type penceresine tıkladığımızda alttaki gibi bir pencere açılıyor.

Burada verinin hangi tipte olduğunu seçiyoruz. Ardından devam ediyoruz. Seçtikten sonra hemen altında bu değişkenin nasıl deklara edileceği otomatik olarak yazıyor. “Variable Permission” kısmında ise yazma ve okuma mı istiyoruz yoksa sadece okuyacak mıyız onu seçiyoruz. Eğer odanın sadece sıcaklığını ölçeceksek read only bırakılabilir fakat odanın sıcaklık değerini girip odayı o sıcaklığa getirmeye planlıyorsak projede yazma yetkisi de bizde olmalı. Variable update policy kısmında verinin her değiştiğinde mi yoksa periyodik olarak mı gelecek onu görüyoruz. Projeye göre değişebilecek güzel bir seçim olduğunu düşünüyorum. Sıcaklık için genel olarak aşağıdaki gibi bir pencere oluşuyor.

Add variable dediğiniz anda sağ üstte Sketch’in yanında kırmızı içinde 1 yazmaya başlıyor. Variable her arttığında kırmızı içindeki sayı artıyor. Kod yazmak için gerekecek taslağı Arduino size sunuyor. Sketch kısmına geldiğimizde taslak kod ile karşılaşıyoruz ve bunu düzenleyebiliyoruz.

Değişkenlerimizi oluşturduğumuzu varsayıyorum fakat daha kurulum aşamasında işimiz bitmedi. “Setup” kısmına geri dönüyoruz çünkü bu verileri hangi cihazla kontrol edeceğimizi hala belirtmedik Arduino’ya. Associated Device menüsü altındaki butona tıklıyoruz. Arduino cihaz mı yoksa 3. Parti bir cihaz mı kullanacaksınız diye soruyor. ESP kullananları da es geçmemişler, Arduino’nun Wi-Fi özellikli kartları ESP’lere göre çok daha üst seviyelerde dolayısıyla iyi bir özellik olmuş. ESP8266 ve ESP32 tarafında destekleri bulunmakta. Ben ESP-32’yi seçiyorum ve Wrover kullandığım için “Wrover Module”ü seçiyorum. Ardından size “device”ınızın ismini soruyor, ben yine esp32 giriyorum ve devam ediyorum. Ardından size bir Device ID ve Secret Key oluşturuyor. Yukarıdan .pdf olarak bu verileri alıyoruz ve aşağıda tiki işaretledikten sonra devam ediyoruz. Secret Key’in gizemini hala çözemedim, gerekli mi acaba gerçekten ? Bu aşamalarda bir yerde sizden “Create Agent” isimli bir program indirmenizi isteyecek çünkü biz hangi cihazımızı kullanacağımızı söyledik falan bilgisayarda tanınılan cihazın web üzerine de iletilmesi gerek dolayısıyla web ile pc arasında bir köprü görevi görerek bizim cihazımızı tanıyan bir program aslında. Ardından “Setup” kısmına geri geliyoruz ve “Network” verilerini giriyoruz, secret key’i burada istiyor. ESP cihazlarda 5GHz desteği bulunmamaktadır bilginize.

Setup kısmımızı tamamladık, kullanacağımız değişkenler, kullanacağımız kontrolcü modülü ve kullanacağımız ağ verilerini Arduino’nun sistemi an itibari ile bilmekte. Sistemi monitör edeceğimiz ve sistemdeki aletlerimizi kontrol edebileceğimiz bir arayüze ihtiyacımız var. Sayfanın üst kısmında “Setup”ın yanında “Dashboard” bu işe yarıyor. Kendi arayüzümüzü kolay bir şekilde oluşturuyoruz ve cep telefonlarımızdan monitör edebilioruz. Dashboard’a bastığımızda önümüze bir sayfa geliyor ve “build dashboard”a basıyoruz. Sayfanın orta üstünde dashboard’umuza bir isim verebiliyoruz. Sayfanın sol üstünde 4 tane simge görünüyor.

En soldaki göz simgesi dashboard’umuzu ayarladığımızda nasıl görüneceğini göstermesi için bir simgedir. Hemen sağındaki kalem simgesi ise dashboardumuzu ayarlamamızı sağlayan simgedir. Göz modunda dururken yanda telefon görünümünde ve tam ekran görünümünde görmeniz için iki simge bulunmaktadır. Düzenleme moduna geldiğimizde “Add” butonu çıkmaktadır. “Add” butonuna bastığımızda verilerimizi monitör edebileceğimiz ve kontrol edeceğimiz parçacıklar görüyoruz.

Misal sıcaklık değeri okuyacaksak “value” parçacığını seçip dashboarda ekleyebiliriz. “Value” parçacığını seçince bizden bu parçacık için bir isim istiyor, “sicaklik_widget” olarak girilebilir. Tabi bu parçacık ve ismi tek başına anlamsız bir durumda. Bu parçacıktan okuyacağımız veriyi “Setup” ekranında oluşturduğumuz bir “değişken” ile ilişkilendirmemiz lazım. Hemen altta “Linked Variable” butonuna basarak bu eşleme işlemini gerçekleştireceğiz.

“Things” sekmesi altından oluşturduğumuz projeyi seçiyoruz, ardından hangi değişkeni bu parçacığa bağlayacağımızı soruyor. Ardından onay alıyor, değişken ve parçacığı bağlamış oluyoruz. Burada “Read/Write” izninde olmasının amacı örnek olmasıdır. Sıcaklık okunacaksa Write’a gerek yoktur.

Artık “Sketch”imizi hazırlayıp kontrolcümüze yüklemeye hazırız. Ana menülerden “Things”e giriyoruz ve “Setup”ın yanında “Sketch” sekmesine tıklıyoruz. Arduino ekosisteminin en basit arayüzlü compiler’ı önümüze çıkıyor. Dilersek “Open full editor” butonuna basarak yine web tabanlı daha gelişmiş bir compiler’a gidebliriz.

Sketch sayfasında hazır bir taslak görüyoruz, ben yazılımımı burada yapmıyorum. İlk önce yerel tarafta bir kod yazıyorum, hiç internete bağlanmayacakmış gibi, daha sonrasında gelip gerekli yerlere o kodu yerleştiriyorum ve “Upload” butonundan kontrolcüme yüklüyorum. “Create Agent” programını yüklediyseniz “No associated device found” kısmında takılı olan cihazı ve takılı olduğu portu otomatik olarak algılayacaktır.

Kodumuz da hazır ise upload etmeye hazırız. Upload ettikten sonra yaklaşık 10 saniye sonra çalışmaya başlıyor benim sistemim, biraz beklemek gerekebilir. Hemen çalışmıyor diye üzülmemek lazım. J Ardından dashboard’umuza girip değişkenlerimizi monitör edebiliriz.

Arduino IoT Cloud’u direk yerel Arduino IDE ile de senkronize edebilir ve kodlarımızı lokalde düzenleyip IoT Cloud’da çalışmasını sağlayabiliriz. Bunun için Arduino IDE’yi açıyoruz. Ben bu örnekte 2.0.4 versiyonunu kullanıyorum versiyon 1 cephesinde bu özellik var mı bilmiyorum. Soldan Sketchbook’a giriyoruz ve web simgesine tıklıyoruz. Giriş yapmamızı isteyecek, IoT Cloud kullandığımız hesap ile giriş yapıyoruz, hemen önümüze IoT Cloud’daki sketchler düşüyor, bu sketchleri hem pull hem push edebiliyoruz.

Kodları açtığımızda bir adet .ino uzantılı Arduino kodu, bir adet ReadMe dosyası, 2 adet de kütüphane uzantılı dosya gelecek. Arduino-secrets isimli kodda ağımızın verileri çıkıyor. .ino uzantılı koda bu arduino_secrets uzantısını eklemezsek kütüphane olarak projeyi compile edemiyoruz.

Ekledikten sonra compile etmeye ve kontrolcüye upload etmeye hazırız. Bu şekilde de proje üzerinde çalışılabiliyor ve pratik de oluyor.

Çok kompleks bir sistem olmamasına rağmen ben ilk projemi yapana kadar sağını solunu karıştırmıştım, benim gibiler vardır diye yazmak istedim. Görüşmek üzere. 🙂

Share this content: