Internet of Things (IoT)

Gelecek vadeden bir teknoloji halkkında bilgi edinmek ve sizleri bilgilendirmek istiyorum. Iot internet of things genelde wifi bağlantısına sahip mikro işlemcilerdir. Bu teknoloji, düşük hesap hapasiteleri ve işlem güçleri olan mikroişlemcileri internete bağlayarak cloud denilen çok yüksek veri depolama ve işlem gücü olan makinaların kabiliyetlerinden yararlandırılması prensibi ne dayanmaktadır. Cloud daki bilgisayarlara bilgi gönderen ucuz ve az enerji tüketen bu minik cihazların çıktılarına başka makinalardan tabletlerden ve cep telefonlarından ulaşmak mümkün olmaktadır.

 

cloud-and-things

 

Bu teknoloji ile sınırsız uygulamalar yapmak mümkün aslında. En değerli olan işte bu kısım. Yani bir teknolojinin ne işe yaradığını anlamak ve bunu kimsenin düşünmediği bir şekilde kullanarak bir sorunu çözmek ve değer yaratmak. Gnexlab genel yaklaşımı tüm teknolojiler için bu şekilde işlemektedir. Teknolojinin nasıl işlediğini anlamak için basitde olsa bir uygulama yapmak gerekli en iyi öğrenme yolu bu. Daha sonra bu teknoloji aklımızda iken günlük hayatta bizim yada çevremizdekilerin yaşantısında bu teknolojiyi nasıl kullanabileceğimizi düşünmemiz gerekli. Aklınıza gelen fikirleri gnexlab proje gruplarında hayata geçirebilir ve bir iş modeline kadar projenizi götürebilirsiniz.

 

Bu yazıda Spark Core olarak bilinen bir IoT ile basit bir uygulama yapmaya çalışacağım. Spark Core bir kickstarter projesi

(https://www.kickstarter.com/projects/sparkdevices/spark-core-wi-fi-for-everything-arduino-compatible) arkasında eski makerbotun kurucularından (şimdi ayrıldı ve kendisi çinde yaşıyor) Zach Hoeken var. Çok başarılı ve örnek aldığım bir makerdır 🙂

kickstarterda 550.000 Dolardan fazla kaynak toplayınca bu güzel ve başarılı çalışma ortaya çıktı. Zach dan aldığım son e-postada bir yatırım grubu kendilerine 14 milyon dolar yatırım yapmış. Çok yakında büyük gelişmeler olacağını düşünüyorum. Bu mebla bize bu teknolojinin bir sonraki büyük şey (Next Big Thing) olabileceği izlemini veriyor. O zaman çalışmaya değer bir konu. Hadi Başlayalım!!!

 

46e46bdc7e2640ff5eecaa335992046e_large

 

Spark Core böyle birşey.

Temel olarak aslında wifi olanağına sahip bir Arduino. Ne var ki bunda çok gördük bunlardan demeyin. Spark Core donanım olarak basit görünse de arkasındaki yazılım gücü ve mimari ile fark yaratıyor. Spark Core’u aldıktan sonra (Ben kickstarter kampanyasına destek olmuştum ilk üretilenlerden bana bir tane geldi) Spark.io adresinden bir account oluşturuyorsunuz. Daha sonra cihazı ev wifi si ile tanıştırmanız gerekiyor. Ben bu kısımda Saprk Coru un iphone uygulamasını kullandım ve ev networkunun bilgilerini girdim. Cihaz üzerindeki çok renkli led bir çok renge büründü ve sonunda yeşil yanıp sönmeye başladı. Cihaz artık internetteydi. Buraya kadar olan kısımları için yapılacaklar burada ayrıntıları ile bahsediliyor. Problemlerle karşılaşan arkadaşlar olursa bu kısımı daha açık anlatabiliriz.

Yapmak istediğim basit proje evde bir oadanın sıcaklığını devamlı ölçerek belli aralıklarla bu değerleri kaydetmek ve nasıl seyrettiğini gözlemlemek. Bir fabrikada bir kazanın yada önemli bir ekipmanın ısısını takip etmek çok daha önemli olabilir. Ama bunların hiç biri bir Öldürücü Uygulama (Killer Application) değil. Sizleri beyin fırtınası ile iot ların ne amaçla kullanılabileceğini düşünmeye davet ediyorum. Dediğim gibi bu teknolojiyi anlama projesi.

Isıyı ölçmek için öncelikle bir ısı sensörümüzün olması gerekli bunlar thermistör yada thermocouple türü komponentler olabilir. Ben 3D yazıcılarda çok ca kullandığım thermistör kullanmak istiyorum (Elimde hazır var biraz da ondan) siz başka komponentler kullanabilirsiniz. Thermistörlerin direnci ısı ile değişmektedir. Elemanın direncini ölçerek ve bu ölçümü bir hesaplamadan geçirerek sıcaklığı bulabiliriz. Direnç ölçmek için Spark Core’un analog bacaklarından birini seçip voltaj okuyacağız. Thermistörümüz bu bacağa bağlı olacak. Direncin ısı ile ilişkisini bir matamatiksel logaritma işlemi ile derece santigrat a dönüştüreceğiz. Böylece sıcaklık değerini bulacağız.

Spark Core ile ilgili anlatılması gereken bir diğer önemli husus da “Access Token”. İnternete bağlı bir cihaza herkesin ulaşmasını engellemek gerekecektir. Spark Core’u internete bağladınız diye herkesin buna ulacağı anlamı çıkarmamak lazım. Spark Core iletişim izinleri için bir standart olan OAuth2 kullanmakta. Spark Core ile konuşurken “Access Token” ınızı da göndermeniz gerekli.  “Access Token” ınızı https://www.spark.io/build/ sayfasına login olduksan sonra settings kısmında bulabilirsiniz.

Donanım:

temp

 

 

 

 

 

Devre şamamız bu şekilde. TEMP yazan yerden Spark Core un A0 analog bacağına bağlantı yapacağız.

 

photo (9)

 

Benim Setupım bu şekilde

 

Aşağıdaki kodu Spark Core içine yuklemek için yine https://www.spark.io/build/ adresindeki IDE yi kullanabiliriz. Create new app düğmesine basıp temp isminde bir uygulama oluşturdum. ve aşağıdaki kodu içeri yapıştırdım. Flash dedim ve kod internet üzerinden Spark Core uma yüklendi. Spark Core üzerindeki led magenta renginde kalp atışı yanıp söndüğünde yükleme işleminin başarı ile gerçekleştiğini anlıyoruz.

 

 

// Read temperature
// -----------------
#include "math.h"
// Create a variable that will store the temperature value
double temperature = 0.0;

void setup()
{
  // Register a Spark variable here
  Spark.variable("temperature", &temperature, DOUBLE);

  // Connect the temperature sensor to A0 and configure it
  // to be an input
  pinMode(A0, INPUT);


}

void loop()
{
  const float Rinf = 0.0173; // thermistor constants for 100k thermistor
  const float B = 4573.5;
  const float Rup = 100000.0; // pullup resistor value
  
  float reading = 0.0;
  
  reading = analogRead(A0);
  
  temperature = B / log(Rup * reading/(4096 - reading)/Rinf) - 273;


}

 

Yükleme işlemi başarılı olduktan sonra Spark Core a ve sensör değerimize Http üzerinden ulaşabiliriz. Şu şekilde:

curl “https://api.spark.io/v1/devices/{Sizin Device ID niz}/temperature?access_token={SizinAccess Token ininz}”

{parentezler yok}

Gelen Cevap:

{

  “cmd”: “VarReturn”,

  “name”: “temperature”,

  “result”: 20.296923598751448,

  “coreInfo”: {

    “last_app”: “”,

    “last_heard”: “2014-10-02T17:02:47.349Z”,

    “connected”: true,

    “deviceID”: “48ff6c065067555023502387”

  }

bir json formatlı bilgi. result kısmında oda sıcaklığı yazıyor. Bu degeri yani sıcaklığı daha hasas ve doğru alma ihtiyacınız olursa thermistor kullanmamanız daha doğru olur. Bu tür bir uygulama yapmak istiyenler temasa geçebilir. Zira thermistör de hata payı olmaktadır.

Ben Macintosh kullandığım için terminalden direkt olarak curl komutunu kullanabiliyorum. Windows kullanıcıları için curl ün executable burada mevcut http://curl.haxx.se/dlwiz/?type=bin&os=Win64

win64 için bunu kurup curl komutunu kullanabilirsiniz. Buna aslında kontrol amaçlı ihtiyacımız olacak. Çok şart değil. Amacım bir google spreadsheet oluşturup sıcaklık değerlerini ona okutup dosyada saklamak. Server kurmak yerine mevcut bedava kaynakları kullanalım 🙂 kaybetme maliyetini düşük tutmak lazım.

Sensörümüzden bilgi aldığımıza göre artık bu değerleri belli aralıklarla okuyup saklamak kısmına geçebiliriz. Dediğim gibi goolge docs bu iş için biçilmiş kaftan. Google App Engine (https://cloud.google.com/appengine/) yine üzerinde durulması gereken bir başka teknoloji artık başka bir yazıda inşallah.

 

Google Docs dan yeni bir spreadsheet oluşturup aşağıdaki adımları yapalım.

  • Create -> Spreadsheet
  • Tools -> Script Editor
  • Aşağıdaki kodu buraya yapıştıralım
  • Resources -> Current Project’s Triggers
  • collectData  foksyonunu her saatte bir çağıralım (siz istediğiniz sıklıkta ayarlayabilirsiniz dokumanın cok buyumemesine dıkkat edin)

 

function collectData() {
  var  sheet = SpreadsheetApp.getActiveSheet();
  var sensor = UrlFetchApp.fetch("https://api.spark.io/v1/devices/{Sizin Device ID niz}/temperature?access_token={SizinAccess Token ininz}");
  // parse the JSON the Core API created
  var sensor = JSON.parse(sensor.getContentText()); 
  // you'll need to unescape before your parse as JSON
  var sensor_result = unescape(sensor.result); 
  // create a time stamp
  var d = new Date();
  // append data to spreadsheet
  sheet.appendRow([d, sensor_result]);
}

Sonuç:

 

excel_spark_temp

 

Ben bu testi yaparken dakikada bir fonksiyonu çağırdım. 3. sıradaki tepe yapan değer sensoru elimle tutup ısıttığım an okunan değer. Çalıştığından emin olabilirsiniz.

Umarım yaralı olmuştur. Spark Core satın almak isteyen arkadaşlar mesaj atabilir. Bu teknoloji ile ilgili fikir ve önerileinizi bekliyorum.

9 thoughts on “Internet of Things (IoT)”

  1. Herşeyin Internet’i…, aslına böyle şeylerin yaygınlaşmasının arduino ile başladığını düşünüyordum ama biraz daha dikkatli bakınca herşeyi başlatan sanırım android oldu, Samsung’un java işletim sistemli gyro ile çalışan zar oyununu gördüğümüzde vay be demiştik üstünden çok geçmedi ki Android ortaya çıktı, şimdi dünyanın öbür ucundaki kombiyi telefondaki butonla istediğin sıcaklığa ayarlayabiliyorsun… Daha da ilginci artık öğrenen sistemler var senin davranışlarını izleyip kendi yorum yapabilen cihazlar var… Aslında mesele ihtiyacı tespit edip çözümlemekten ziyade sunduğun çözümü insanlara kabul ettirmekte bence… Bundan 6-7 yıl öncesinde ne arduino vardı ne de android bu uygulamaların buna karşın bir çoğu Pic serisi işlemcilerle gerçekleştirilebiliyordu belki uygulamasını yapan bir çok kişi de vardı ama kimse ürünlerinin insanlar tarafından bu derece kabul görmesini sağlayamamıştı…

    1. Gerçektende öyle. Bazı teknolojilerin benimsenmesi ve insanlar tarafından kabul edilmesi zaman alabiliyor. Ipad den çok önce microsoft tablet benzeri ürünleri görücüye çıkarmıştı ama olmadı. Apple tasarım gücü ile bir moda yaratıp sunduğu teknolojileri insanlara daha kolay kabul ettiriyor galiba. Birde artık teknoloji doktora yapan üniversite akademisyenlerinin tek elinden çıktı. Daha demokratik olarak insanlar fikirlerini hayata geçirebiliyor.

    1. Çok haklısınız. Elimizden geldiğince bildiklerimizi paylaşmalıyız. Herkez en az bir konuda diğerlerimizden daha bilgili ve tecrübeli. Tüm gnexlab üyelerini teknik konularda yazılar yazmaya davet ediyorum. Lütfen bana ulaşın ve gnexlab da edıtör olun.

  2. Selamlar,
    IBM de IoT ve Cloud based services’in gelecek olduğunu hep iddia ediyor ve yatırım yapıyor. Bunun için BlueMix adı altında bir altyapı oluşturdu ve sanırım birkaç aylık üyeliği ücretsiz. Buradaki temel fikir, IoT cihazlarından gelen bilgilerin, BlueMix api’ları kullanılarak daha komplex (veritabanı, uygulama sunucu vs. ) yazılım katmanları ile çalıştırmak. Bugüne kadar çok moda ve iddia gördüğüm ve bunların bazıları parlayıp, çoğu da “teknoloji tarihine” gömüldüğü için, ben henüz “biraz” temkinli yaklaşıyorum.. Ama paylaşmak istedim.. En azından, teknolojiye yön veren şirketlerden birinin de bu konudaki görüşünü paylaşmak istedim..

    Önemli not: bilenler için, ben de IBM de çalışıyorum ama bu yazımın ama KESİNLİKLE reklam değil (ki, bu durum ilk önce beni rahatsız eder) , sadece bir elektronik amatörü olarak paylaşmak istedim.

    1. Reha Bey,
      Reklam olmadiğına kesinlikle eminim. Bluemix’i bedava olduğu dönem boyunca kullandım ve aslında oldukca beğendim. Galiba nodered de IBM’in onunla ilgilide çalışmalar yapıyorum.

  3. Bu arada;
    Amsterdamda bir server kiralıyarak GnexIOT adı altında sensör bilgilerini toplayıp iot cihazlarımızı yönetebileceğimiz bir server kurdum. Sağlam bir apisi var. Kullanıcı açıp istediğiniz kadar iot tanıtıp bunları yönetebileceğiniz Türkçe bir site peşindeyim. Yakında ilk olarak sizlerle paylaşacağım. Ondan sonra hardware olarak nasıl bir çalışma yaparız düşünelim. Raspery pi ile ilk çalışmayı tamamladığımda buradan bir yazı ile sizlere tanıtacağım. Ondan sonra grup olarak arduinolu örnekler yapabilirsek Bu konuda ilk ciddi çalışmayı yapan Türk grup olabiliriz. Hepinizin desteklerini Bekliyorum.

  4. Nuri bey,
    merakla bekliyorum. tabii ki, destek için “hepbirlikteyiz”.. benim yakın zaman planım , “arduino” ile sensor tarafına devam amaESP8266 hep aklımda .. Ama Rasp hala bana “overkill” gibi geliyor..

Leave a Reply

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

This site uses Akismet to reduce spam. Learn how your comment data is processed.