Son zamanlarda IoT ve M2M
ile ilgili birçok gelişme, yaşanıyor.
IoT ve M2M ile ilgili sayfalarca tanıtım vs yapılabiliriz. Elektronik ve
Bilişim sektörü IoT ve M2M üzerinde çok fazla büyüyecek ..
Bir önceki yazımda, ESP8622 ile yapılmış, NodeMCU
platformunu incelemiştim.
Bu yazıda ise , NodeMCU platformuna , AT komutların
çalışması için gerekli Firmware dosyasını yükleyeceğim ve NodeMCU ve Mbed ile bir TCP soket bağlantısı
gerçekleştireceğim.
Kısaca MBED hakkında biraz bilgilendirme yapmam
gerekirse, MBED , ARM tarafından
geliştirilen ve Mikroişlemciler ve benzeri
platformlarda yazılım geliştirme işlemlerini kolaylaştıran ve bir çok
geliştiricinin bilgilerini ve kütüphanelerini paylaştığı bir ekosistem.
Mbed biraz Arduino’ya benziyor, fakat daha esnek bir
mimarisi var.
Her
firma kendi mimarisini ekleyebilmesi için tasarlanmış. ARM mimarisini kullanmak
kaydıyla.
MBED bir diğer yanı ise, Geliştirme ortamının online olması.
Yazdığınız kodlar ve tüm veriler cloud üzerinde hesabınızda duruyor ve
istediğiniz zaman erişime ve geliştirme yapabilirsiniz. Online compiler , çok
esnek ve hızlı değil. İsterseniz çeşitli
profesyonel geliştirme ortamlarına da
projenizi export edebiliyorsunuz. ( KEIL , IAR, CooCOX, GCC vsvs )
MBED için bir kullanıcı hesabı açmanız gerekli.
Detaylı bilgileri aşağıdaki siteden inceleyebilirsiniz.
İlk işlem olarak ESP8622 entegresine Modem Firmware
dosyasını yüklemek . AT komutları kullandığı için Modem firmware dedim.
Firmware yükleme işlemini yapmadan önce , “Makefile”
dosyasındaki COM parametresini kontrol ediniz.
Firmware işlemine başlamadan önce, Nodemcu üzerindeki
Firmware butonuna basılı tutunuz. Firmware başladıktan sonra bırakabilirsiniz.
Bunun için Yapmamız gereken , Eclipse IDE açıp, workspace’den “at_v0.20_on_SDKv0.9.4” projesini seçmek.
Proje ile ilgili güncel verileri aşağıdaki paylaşacağım
linklerden takip edebilirsiniz.
Notice: AT v0.20 is based on SDK v0.9.4.
Git repo
https://github.com/espressif/esp8266_at
Patch SDK v0.9.4
https://github.com/vowstar/esp8266_at/commit/366a8a5e1c6c273bafdf555b85c34dcde5d7d508
ESP8266 AT Instruction Set v0.20 28.11.2014
http://esp8266.ru/download/esp8266-doc/4A-AT-Espressif%20AT%20Instruction%20Set_020.pdf
ESP8266 AT Command Examples v0.3 28.11.2014
http://esp8266.ru/download/esp8266-doc/4B-AT-Espressif%20AT%20Command%20Examples_v0.3.pdf
Modem Firmware dosyasını başarılı bir şekilde yükledikden
sonra, yapmanız gereken Bir terminal
programı ile Modemi kontrol etmek ,
Bunun için TeraTerm kullanıyorum. Hyper terminal , Putty ve
benzeri programlarda işinizi görecektir.
Modem firmware dosyası düzgün bir şekilde yüklendi ise,
AT Komutuna , OK diye cevap dönecektir.
AT+GMR komutuna ise versiyon ve tarih bilgisini döner. Bu
verileri, “at_v0.20_on_SDKv0.9.4”
projesi içerisinden değiştirebilirsiniz.
Bu adıma kadar geldiysek WIFI modemimiz hazır demektir.
İkinci adımımız ise MBED yazılım geliştirme ortamını
hazırlamak,
MBED için elimde bulunan ST Nucleo F401RE kartını kullanacağım. ST geliştirdiği Nucleo boardları MBED uyumu ve aynı zamanda Arduino shieldler ile uyumu ile baya beğenimi topladı. Board üzerinde bulunan JTAG ile binary dosyayı karta yüklemek oldukça kolay. Keil , GCC benzeri IDE lerde JTAG olarak görüyor ve debug vb işlemleri yapmanıza izin veriyor.
MBED kartınızı USB ile bilgisayarınıza taktığınızda , aygıt
yöneticisinde ST virtual COM driver aygıtının gelmesi gerekiyor.
ST virtual Com , MBED üzerinde yazılım geliştirirken çok
işinize yarayacak bir aygıt.
Anladığım kadarı ile, JTAG ile ilişkili ve Mikroişlemcinizin
herhangi bir COM portunu işgal etmiyor. ARM
çekirdeğinin desteklediği “Serial Wire
Debug” özelliğini kullandırıyor. Nucleo üzerinde bir JTAG olması, programlama
, debug ve geliştirme işlemleri için
güzel bir avantaj.
ST JTAG sürücüsü ile cihazı programlamak ise oldukça kolay
olmuş. Flash diske dosya kopyalamak kadar basit.
Resimde de görüldüğü gibi 512KB bir hafızanız var. Bu aşan Nucleoda üzerindeki SMT32F401RET6 mikro işlemcisinin flash alanı.
Projenizi derlediğiniz zaman oluşacak BIN dosyasını buraya sürükle bırak yapmanız , cihazı programlamanızı sağlıyor.
Projenizi derlediğiniz zaman oluşacak BIN dosyasını buraya sürükle bırak yapmanız , cihazı programlamanızı sağlıyor.
Hafızanın ne kadarı dolu veya boş , yüklenen binary dosyayı
geri almak için bir özellik yok.
Daha detaylı flash işlemleri için STM32 ST-LINK UTILITY programını kurmanız gerekiyor.
Projenizde, yazılım güncelleme , bootloader vb
ihtiyaçlarınız olduğunda bu programa ihtiyacınız olacaktır.
Şimdilik Nucleo Drive’ı kullanacağım.
MBED ile ilgili bir diğer işlem MBED hesabı oluşturmak.
Bunun için " http://developer.mbed.org/ " sayfasına girip login/signup yönergelerini tamamlamanız gerekli
MBED ile ilgili bir diğer işlem MBED hesabı oluşturmak.
Bunun için " http://developer.mbed.org/ " sayfasına girip login/signup yönergelerini tamamlamanız gerekli
MBED hesabınızı oluşturduktan sonra, sağ üst köşede bulunan Compiler linkini
tıklayabilirsiniz.
Compiler linkine tıkladıktan sonra, karşınıza bir yazılım
geliştirme ortamı gelecek. Eğer daha önceden tanımladığınız bir platform yok
ise , yine sağ üstte bulunan platform ekle butonuna basabilirsiniz. Platform , elinizde bulunan yazılım geliştirme boardlarına verilen adlar. sitede , bir çok üreticinin geliştirdiği platformlar mevcut.
Daha önceden "ST Nucleo F401RE" eklediğimden, ek son kullandığınız platform görünmekte.
Buradan karşınıza gelecek yönergeleri takip ederek platformu
ekleme işlemini tamamlayabilirsiniz.
Platformu da ekledikten sonra, Bir "Hello World" örneğini
çalıştırmamız doğru yolda olup olmadığımız hakkında bilgi verebilir.
Bunun için compiler üzerinde , new/ create new program
seçeneğini açıyoruz ve karşımıza aşağıdaki aşağıdaki ekran geliyor.
Platform olarak, ST Nucleo F401RE seçtim.
Örnek Proje ise, bilgisayara UART üzerinden mesaj gönderen bir uygulama.
OK dediğimiz zaman, workspace alanımıza, seçtiğimiz proje
ile ilgili dosyaları indirecek.
Dosyalar üzerinde herhangi bir değişiklik yapmadan "compile" butonuna bastığımızda, projemiz derlenecek ve ST Nucleo bordumuza
kopyalayacağımız BIN dosyasını ise bilgisayarın ilgili download klasörüne indirecek.
BIN dosyasını Nucleo Sürücüsüne yükledikten sonra
yazılımımız otomatik olarak çalışmaya başlayacaktır.
Terminal ekranında görüldüğü gibi, Örnek kod her 1saniye'de programın ne kadar süredir çalıştığını yazmakta.
Yukarıdaki her iki adımı da tamamladıktan sonra, elimizde
WIFI modemimiz ve ST geliştirme ortamımız hazır olarak bulunur durumda.
Bu iki karta ilave olarak , bir adet USB seri
dönüştürücü daha kullanacağım. Toplamda 3 adet elektronik PCB birbirine
bağlanacak. USB dönüştürücüyü kullanma nedenim Nodemcu ve Nucleo kartları arasındaki iletişimi dinlemek.
Maalesef ST Nucleo
boardumuza , NodeMCU kartını , Aurduino
shield benzeri bir yöntemle üzerine takamıyoruz.
Bunun için kısa laboratuvar kablolarından kullanacağım.
Bağlantıyı aşağıdaki şemadaki gibi yapıyorum. 3.3V ve 5V
bağlantılara dikkat edilmesi gerekiyor.
Nucleo boardumuzda , NodeMCU boardumuzda 3.3V ile çalışmakta. Olası bir 5V ile besleme yaparsak bozulma ihtimali oldukça yüksek.
Nucleo boardumuzda , NodeMCU boardumuzda 3.3V ile çalışmakta. Olası bir 5V ile besleme yaparsak bozulma ihtimali oldukça yüksek.
Ben Üç kartıda bilgisayardan USB kabloları ile besledim. Besleme bağlantılarını birbirine taşımadım.
Sadece kartların, GND'lerini ortak bağladım.
Bağlantı şeması aşağıdaki gibi oldu.
USB seri dönüştürücünün RX pinini , MBED TX pinine bağlar iseniz, bu seferde ,
MBED gönderdiği komutları izleyebilirsiniz. Bu kartı kullanmayabilirsiniz de.
Yazılımı MBED platformuna upload edeceğim. Kendi workspaceinize import edebilirsiniz.
Yazılım ile ilgili ,
- AT komutlar ile TCP Socket bağlantısı kurup , veri gönderiyor. Her gönderimde bir sayaç değerini arttırıyor.
- NUCLEO ile ADC , button interrupt vb işlemlerde TCP soket üzerine gönderile bilinir.
- Button interruptı da ekledim ama LED1 yakıp söndürmekden başka fonksiyonu yok.
- MBED RTOS kullanılıyor.Main içerisinde iki thread açıyor. Bir thread WIFI bağlantılarını vs yapıp veri göndermeye başlıyor. Diğer Thread ise boş , içerisine ADC, Sensör okumaları vs ekleyebiliriz.
- AT komutlar ile TCP Socket bağlantısı kurup , veri gönderiyor. Her gönderimde bir sayaç değerini arttırıyor.
- NUCLEO ile ADC , button interrupt vb işlemlerde TCP soket üzerine gönderile bilinir.
- Button interruptı da ekledim ama LED1 yakıp söndürmekden başka fonksiyonu yok.
- MBED RTOS kullanılıyor.Main içerisinde iki thread açıyor. Bir thread WIFI bağlantılarını vs yapıp veri göndermeye başlıyor. Diğer Thread ise boş , içerisine ADC, Sensör okumaları vs ekleyebiliriz.
No comments:
Post a Comment