Akıllı Ev İhtiyacım ve Nesnelerin Ağı’na(Internet of Things) Giriş 2

Şu yazıyı yazmak için o kadar geciktim ki… Projeyi tamamlamamın, karşılaştığım sorunların üzerinden koca bir yıl ve ev taşıma geçti. Yeni evimde böyle bir sisteme ihtiyacım olmadığı gibi önceki evdeki çılgın röle macerasıyla bu projeyi kullanmayı bırakmıştım zaten.

Niye bunları anlatıyorum? Siz siz olun, günlük öğrenilerinizi not alın. Okuldayken sorun olmuyor ama, işyeri, ev çevirme gibi yüklerin üstüne bir de yaş ilerleyince unutmaya başlıyorsunuz.

Bu satırları yazmaya başlamadan önce henüz açılmamış taşınma kolilerinden devrelerimi bulmaya çalıştım. Çalışan devreyi anlatması kolay ama ben asıl olarak karşılaştığım sorunlardan bahsetmek istiyordum.  O yüzden aleti sıfırlayıp öyle başlayacağım.

ESP8266

Ne diyorduk? ESP8266. İnanılmaz bir cihaz gerçekten. tek başına 2 dolara bulunabiliyor. Aradan geçen 1 yılın ardından belki rakipleri de çıkmıştır, araştırmak lazım. Bahsettiğim gibi ilk hedefim sıcaklık okumaktı. Bu konuda birkaç alternatif var. TMP36 ucuz bir analog alternatif, espinin analog portunu kullanmayla ilgili bilgi mevcut. Ben dijital bir sensör olan DHT22 kullanmayı tercih ettim. (Aynı şekilde 0’ın üzerindeki sıcaklıkla için daha ucuz olan DHT11 alternatifi de tercih edilebilir).

ESP8266’yı kullanıma uygun hale getirmek

Modülü basit bir breakout board ile alabileceğiniz gibi, adafruit feather veya nodemcu geliştirme kitleri olarak da alabilir, giriş çıkışlara kolay erişim sağlamanın yanısıra voltaj regülasyonuyla da uğraşmak zorunda kalmazsınız. Aradaki birkaç dolar fark derli toplu durması için yeter de artardı benim kullanımımda. Yerinizde olsam, başlangıçta heves kırılmaması adına şunu alır geçerim. Hem pil için JST connector’ü bile hazır.

Ürünün yaygınlaşmasıyla birden çok firmware çıkmış durumda. Sanırım nereden alırsanız alın hazır kitler üzerinde nodemcu adındaki lua interpretter kurulu olarak geliyor ama artık Arduino IDE üzerinden programlamak da mümkün, tabi bu durumda nodemcu tamamen siliniyor. Başlangıç için Arduino IDE kullanmak ve hatta öğrenmek çok faydalı olacaktır. Kaynak 1 Kaynak2 Bu arada gördüğüm kadarıyla micropython için de bir firmware mevcut. Ona da göz atabilirsiniz.

Ben nodemcu ve Lua üzerinden projemi tamamladım.

Nodemcu firmware’inin son versiyonunu flashlamak için birden fazla yöntem var. esptool.py ile terminal üzerinden python codu ile atabileceğiniz gibi aynı kodu kullanan ve yeni çıktığını öğrendiğim grafik arayüzlü NodeMCU PyFlasher da kullanabilirsiniz. Ben Windows için olan NodemcuFlasher’ı kullandım. Bu arada eğer bir development kit aldıysanız flashlamak çok daha kolay. Aksi takdirde firmware flashlarken çeşitli pinleri high/low olarak ayarlamanız gerekecek.

Hangi Firmware?

En çok zamanı burada harcadım. Neden? Çünkü bu ucuz entegreye geliştirilen nodemcu  karşılıksız bir çabanın ürünü ve uyumsuzluklar var. Bana gelen entegredeki kurulu versiyon 0.9.x idi(aynı şekilde nodemcu flasher da default olarak 0.9 atıyor) ve bu versiyon üzerine çıkan 1.x’li kodlar çalışmıyor.  Muhtemelen yeni flashlanan kodun eski versiyonun izlerini tamamen silmemesinden ötürü bu durum.

Belki de bir ay boyunca, kurduğum firmware’in neden çalışmadığını bulmak için uğraştım. Firmware gelişiricisine attığım emaillerde beni dökümantasyona yönlendirdi. Aslında normalde bu dökümnatasyonu takip ederek sonuca ulaşabiliyorsunuz ama ben o seviyeye gelmeden önce o kadar çok şeyi kurcalamıştım ki dökümantasyonda anlatılanlar işime yaramamıştı. Her gece takıntılı bir şekilde saatlerimi buna harcadım ve en sonunda kendimce çözüm buldum. NodeMcu üzerindeki tüm registerları temizlemek için şu yazıdaki yöntemi takip ettim. ESP’nin üreticisi Espressif’in kendi Download Tool’unu kullanarak tüm register’lara 0xFF atan 1 mb’lık bir dosyayı 4 adrese yolladım. Böylelikle tertemiz bir entegreye flashlama yapmayı sağladım.

Tüm bunlar olurken bir yandan da firmware bulmak kısmına değineyim. Kullanacağım sensör dijital olduğundan iletişim kurmamı sağlayacak bir kütüphaneye ihtiyacım vardı. Bulduğum kütüphaneler python ve c tabanlıydı ve lua üzerinde nasıl kullanacağım konusunda oldukça çaresizdim. Nedense o zamana kadar hep nodemcu bin dosyalarını arayıp kuruyordum. Ardından kendi nodemcu firmware’imi oluşturabileceğimi ve bu kütüphanelerin nodemcu içinde bir modül olarak gömülü şekilde gelebildiğini keşfettim.

nodemcu-build.com sitesinden son geliştirici veya yayın kodunu istediğiniz modülleri ekleyerek compile edebilirsiniz ve emailinize yollanır. Tabi ben diğer hafıza sorunlarıyla boğuştuğum için bu firmware’i kullanamayacağım/bunun bozuk olduğunu düşünerekten bir süre acaba c kütüphanesini 0.9 nodemcu ile nasıl kullanırım konusunu da uzun uzadıya araştırdım. Neyse ki tüm bunlara gerek kalmadan sorunları çözdüm.

Firmware Flash

Hikaye kısmını bitirip adım adım gidelim. Aletin üzerinde işinize yarayan bir nodemcu sürümü halihazırda gelmiş olabilir. O durumda flashlamanıza gerek bile yok. Ben kendi yöntemimi anlatacağım.

1- Bahsettiğim hazır kitlerden aldıysanız cihazı usb üzerinden bilgisayara bağlayın. Direkt modülle uğraşıyorsanız flash etmek için pinlerin high/low olma durumunu internetten araştırın.

2-  Nodemcu build adresinden dilediğiniz kütüphanelerin eklendiği bir firmware compile ettirin. İşlemlerinize göre integer veya floating point olarak seçebilirsiniz. Ben Floating point kullandım

3- Emailime gelen firmware’i, NodeMcu Firmware Programmer ile programlayacağız. Bu kodu 0x00000 adresine atacağız. Aynı zamanda, elinizdeki ürüne göre esp_init_data_default(Tıkladığınızda açılacak sayfadan güncel sdk dosyasını indirin, içinde bulacaksınız) binary ayarlarını da şuradaki ürünlere göre adreslerden birine flashlamanız gerekiyor. (Development kitlerdeki versiyon için bu adres 0x3fc000.)

hafiza

4- Benim advanced ayarlara dokunmama gerek kalmadı. Operation kısmında bağlı olduğunuz com portunu seçin, ve programlayın.

HELLO WORLD

Buraya kadar gelmişken bir de hello world diyerek yazıyı kapayalım. Burada da kendi kullandığım Esplorer yazılımını öneririm.

Inline image 2

Yukarıda gördüğünüz arayüzün sol tarafında bilgisayarınzdaki lua kodlarını editleyebilir ve açabilirsiniz. Sağ tarafta ise esp ile olan bağlantınızı seri port üzerinden görmektesiniz.

Nodemcu firmware’i cihaz sıfırlandığında init.lua kodunu çalıştıracak şekilde ayarlanmış durumda. Dolayısıyla ben de bir init.lua kodu yaratıp içine print(“Hello World”) yazdım. Ve bu kodu esp’ye upload ettim. Sağ tarafa bakarsanız cihaz bağlantısı sağlandığında içindeki firmware hakkında bilgi vermekte. Ardından benim upload komutum ile init kodumun yüklenmesini ve aletin sıfırlanmasıyla ekrana Hello World yazısı çıkmasını görmektesiniz.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s