Wednesday, February 11, 2015

NodeMCU , Open Source, Open Hardware Iinternet of Things Device

Merhaba ,
IoT ile ilgili her gün yeni bir cihaz, modül vb. donanım çıkıyor. Bunlardan biride NodeMCU platformu .

NodeMCU aslında bir ESP8622 SoC çipi kullanan bir WiFi modül. Tamamen açık kaynak ve açık donanım sahip, farklı firmware yüklemeleri ile farklı fonksiyonları sağlayabilen bir donanıma sahip oluyorsunuz. 

NodeMCU anasayfası,

Donanım ile ilgili tüm dökümanlar,

https://github.com/nodemcu/nodemcu-devkit


NodeMCU cihazınıza modem firmware dosyasını yüklediğiniz zaman , AT komutlar ile çalışan bir WIFI modülünüz oluyor.Bir  Web Server  firmware dosyası yüklediğiniz zaman, çok temel bir web sunucunuz oluyor.Açık kaynak kodlu bir projenin’de tüm güzelliklerini içeriyor. 


Geliştirme ortamı için birkaç kurulum birden yapmak lazım. Malesef tek bir program kurulumu ile geliştirmeye hazır durumu gelmiyor.

Öncelike NodeMCU kullanmak için bir adet Android telefonlar için olan standart USB data kablosuna ( (bendeki samsung) ve CH340 USB seri dönüştürücü sürücüsüne ihtiyacınız var.

Windows 8, FTDI entegrelerinde olduğu  gibi otomatik sürücüleri yüklemedi. Google'dan arayıp güvenilir bir siteden indirebilirsiniz.
Sürücü kurulumu başarılı olduktan sonra, aygıt yöneticisi altında COMX olarak karşınıza çıkacak. Programlamak içinde bu portu kullanacağız. Benim bilgisayarım COM29 olarak gördü.





NodeMCU  ile ilgili iki tip geliştirme ortamı söz konusu,


LUA script ve C,C++ .

LUA script,

Biraz arduino benzeri bir kullanım sağlıyor. LUA ile çalışabilmek için NodeMCU özel bir firmware yüklemeniz gerekiyor. Daha sonra LUA ile , bir script hazırlayıp cihaza yüklüyorsunuz.50 satır vs bir işleminiz var çok kolay ve hızlı bir şekilde bir IoT uygulaması geliştirmenizi sağlıyor. Ama kompleks projelerde işin içinden çıkmak zor olur diye düşünüyorum.  Lua ile herkes bir IoT uygulaması yapabilir gibi. Basit hızlı etkili daha ne olsun.

LUA ile ilgili örneğe başka bir yazıda değineceğim. 


C,C++ ,

ESP8266 ile ilgili tüm registerlara vs ulaşabilmeniz ve kendi firmware veya özel uygulamanızı yapabilmeniz için gerekli olan geliştirme ortamı.

Windows için IDE ve SDK kurulumu ile ilgili, Rus bir yazılımcının sitesindeki adımları takip ettim. Gayet hızlı ve hatasız kurulum gerçekleştirebildim.  
Adımlara gelince, translate ile çevirip burada paylaşıyorum. Rusça-İngilizce-Türkçe Çeviri hataları olabilir.  Temelde indir ve adım adım kur mantığı işe yaradı.

1. Ckachivaem (86Mb) Espressif-ESP8266-DevKit-v1.0.x-x86.exe 
2. 
Download the JRE kurulumu x86 , x64 işletim sisteminize göre seçin (jre-7uXX-windows-i586.exe) 
3. Download the  Eclipse Luna  IDE C ++  kurulumu,  (eclipse-cpp-luna-SR1-win32.zip). Zip dosyasını c’nin altına unzip yapabilirsiniz.
4. Download the and install MinGW. Run mingw-get-setup.exe, Windows için GNU ortamı, GCC derleyici vs içeriyor. C,C++ kodlarının derlenmesi için gerekli.
5. Download the (84Mb) MinGW kurulumunu otomatik hale getirilmiş bir paket. Ben dört adımı kurdukdan sonra bunuda kurdum. 4 kurmadan 5’i de kurabilirsiniz. 5’in içindeki bat dosyasını çalıştırmanız yeterli.

Eclipse IDE yi açtıktan sonra , workspace olarak ,  C: \ Espressif \ examples seçmeniz yeterli.
ESP8266 ile ilgili örnekler Eclipse IDE içerisinde görünecek.


Örnek Olarak ESPHTTPD uygulamasını kullanmak istedim,
Hem Web Server , Hemde Led örneğini içeriyor.
İlk yapmanız gereken projeyi açmak “build” yapmak. Eğer başarılı bir şekilde “build” yapabilirseniz. Yükleme adımlarını doğru bir şekilde yapmışsınızdır.



Daha sonra sağdaki “Make Target” Kısmından, “build” yaptığınız projeyi cihaza yükleyebilirsiniz.



Make target kısmında, birden çok seçenek söz konusu.
-      ALL ( projeyi build ediyor )
-      Clean ( Projede geçici dosyaları temizliyor / Bende bilmiyorum )
-      Flash ( Proje dosyasını Flash içerisine yüklüyor)
-      FlashoneFile ( Tek bir komut ile Hem proje hem HTML kısmını yüklüyor)
-      -htmlFlash ( WEB server içerisindeki HTML dosyalarını Flasha yüklüyor )

Projenizdeki Makefile dosyasında ESP port yazan kısma , USB seri dönüştürücünün aldığı COMXX değerini yazmanız lazım. Benim için bu değer COM29



İşin diğer püf noktası da, Flash yapabilmeniz için NodeMCU üzerindeki Flash Butonuna basılı tutmanız gerekliliği. İçerisindeki MCU bootloader modun da açılmasını sağlıyor. Diğer Türlü bir Flash update yapamıyorsunuz.
·         Butona basılı tutun.
·         Makefile / Flash başlatın.
·         Yükleme İşlemi Başladıktan sonra butonu bırakabilirsiniz.



Yukarıdaki adımları düzgün bir şekilde tamamlarsanız.
Bilgisayarınızda wireless ağları arattığınızda ESPXXX diye bir ağ göreceksiniz. Buda NodeMCU AP modunda çalıştığını göstermekte. Ben SSID ismini değiştirdiğimden farklı görünüyor.


Bundan sonra , hazır yazılım içerisinde bazı değişiklikler yaptım.
SSID ve Passoword değiştirme,

include/user_config.h altında,

#define WIFI_AP_NAME "Veysel_NODEMCU"
#define WIFI_AP_PASSWORD "123456789"


Açılış sayfasını vs değiştirmek için,
HTML klasörü içerinde , index.tpl dosyasında değişiklik yaptım.
FlashHTML ile bu klasör altındaki dosyalar, MCU hafızasına aktarılıyor. ( Normalde FTP ile yaptığımız işlem gibi ) Limitler vs hakkında bir bilgim yok. CCS ile style belirleniyor. Birden çok sayfa olabiliyor.
3 USD bir SoC için daha ne olsun.
Orjinlin de bir kedi resmi vardı. Onu değiştirdim ve bir banner ekledim.
HTML vs Web programcılığı bilgim pek yok. Çok daha etkileyici bir şeyler yapıla bilinir.


Bilgisayarınız ile NodeMCU bağlandığınız zaman,
Adres çubuğuna nodemcu IP adresini yazarsanız (192.168.4.1) karşınıza hazırladığınız index.tpl sayfası geliyor.





İkinci kısım , LED yakıp söndürme işlemi için ise ,

GPIO 2 portuna bir LED bağlamamız gerekiyor.  LED pozitif ucuna bir 120ohm seri direnç bağladım. Negatif ucu ise NodeMCU GND ucuna bağlı.






LED.tpl sayfasından , Butonlara basmanız ile LED durumunu değiştiğini gözlemleyebilirsiniz.




NodeMCU ile ilgili değerlendirmeme gelince,

Daha önceden benzer Wifi Modüller vardı. Fiyat olarak nodemcu maliyetini bir  10 ile çarpmamız gerekiyor. Tüm fonksiyonlar vs karşılaştırma yapmayacağım. SoC olması kendi projenize entegre ederken kolaylık sağlayabilir. İyi bir tekniker, SMD lehimlemesini büyüteç altında rahatlıkla yapabilir. Modül olarakda 3 USD ( Wifi Certificated ) üstelik.
IoT ve Wifi ile ilgili çalışacaksanız kesinlikle alıp denemenizi öneririm. NodeMCU hali ise 15 USD civarlarında.


Umarım faydalı olmuştur. Zaman ayırıp inceleyen herkese teşekkürler.

No comments:

Post a Comment