back to top

ESP8266 Dersleri 7: NodeMCU’ya giriş ve Lua dilinde kodlama

Arkadaşlar Merhaba, daha önceki 6 bölümde, ESP8266 modülümüzü Arduino ile haberleştirmiş ve hep Arduino’yu kodlamıştık. Yani ESP modülümüzün kodlamasına hiç girmemiştik.

Fakat ESP8266’nın üzerinde bulunan işlemciyi hiç programlamamıştık. Modülümüzün üzerinde 32-bit CPU bir işlemci bulunmakta ve bu işlemcinin dışarı açılmış 2 tane GPIO pinleri bulunmaktadır(ESP8266-01 için geçerlidir, diğer modüllerde GPIO sayısı daha fazladır).

Bu yazımızda bahsettiğim 32bit işlemciyi Lua programlama dili ile programlayacağız ve GPIO pinini kullanacağız.

Bu işleme başlayabilmek için işlemcimizi Lua programlama diline uygun NodeMCU firmware’i ile güncellememiz gerekmektedir. Bu güncelleme 1. dersteki güncellemeden farklı olacaktır.

NOT: Güncelleme yapıldıktan sonra ESP8266 modülü tekrar eski yazılardaki gibi Arduino ile kullanılamıyor. Tekrar aynı şekilde kullanılması için, 1.yazıdaki güncellemenin yapılması gerekiyor

Kullanılacak araç ve gereçler:

FTDI ile ESP arasındaki bağlantıyı aşağıdaki gibi yapıyoruz.

ftdi ile esp baglantisi

Bağlantıyı yaptıktan sonra, güncellemeyi yapmak için NodeMCU-Flasher, güncelleme dosyası ve LUA dilinde programlama yapabilmek için IDE’yi indiriyoruz. IDE için 2 seçenek var. İkisi için de internette bolca örnek mevcut. Bunlardan birisi ve örneği yapacağımız, ESPlorer, diğeri ise LuaLoader.

NOT: ESPlorer programının çalışması için bilgisayarda Java olması gerekmektedir.

NodeMCU Flasher’ı indirdikten sonra açıyoruz, nodemcu-flasher-master\Win64\Release(benim bilgisayarım 64bit olduğu için bu şekilde 32bit için ayrı bir klasör mevcuttur) adresinden ESP8266Flasher.exe dosyasını açıyoruz ve karşımıza aşağıdaki gibi bir ekran geliyor.

nodemcu_flasher_baslangic
nodemcu_flasher_config

Bu ekrana geldikten sonra Config sekmesine tıklıyoruz, güncelleme dosyalarını indirmek için girdiğiniz siteden, ister float , ister integer başlıklı olanı indirip, programa ekliyoruz.
Ben güncellemeyi yaparken float olanı tercih ettim, siz istediğinizi kullanabilirsiniz.

Tekrar Operation menüsüne gelip Flash(F) butonuna basınca güncelleme başlıyor ve yaklaşık 30 saniye kadar devam ediyor.

NOT: ben bu güncellemeyi Arduino kullanarak yapmayı denediğimde gerekli gücü alamadığı için güncelleme başlamadı. Siz ek güç kaynağı kullanarak deneyebilirsiniz. Fakat, Arduino’nun başına gelecek herhangi bir sorundan sorumlu değilim 🙂 

Güncelleme bittikten sonra ESP modülümüz NodeMCU ile programlanmaya hazır durumdadır.

ESPloerer programını açıyoruz ve karşımıza şu şekilde bir ekran geliyor.

esploerer

Programda sol üstten dosya işlemlerini halledebiliyoruz, sol alttan yazdığımız kodu ESP’ye atarken ki kullandığımız butonlar bulunuyor. Sol kısımda ise kodu yazıyoruz. Sağ kısımda ise port bağlantısını yaptığımız kısım ve terminal bulunuyor.

Sağ taraftaki menüden ESP’nin bağlı olduğu portu seçip OPEN’a basıyoruz ve ESP bağlanmış oluyor. Bu işlem Arduino’da port seçmek ile aynı mantık. Portu seçtikten sonra aşağıdaki devreyi kuruyoruz.

esp-ftdi

Üstteki devrenin ilk baştaki devreden bir kaç tane farkı bulunmaktadır. Bunlara dikkat ederek kurmanız gerekmektedir. Devreyi kurduktan sonra aşağıdaki kodu ESPlorer’in sol kısmına yazıp alttaki menüden Save to ESP butonuna tıklıyoruz ve bu şekilde kod ESP’ye yüklenmiş oluyor.

lighton=0
pin=4
gpio.mode(pin,gpio.OUTPUT)
tmr.alarm(1,2000,1,function()
if lighton==0 then
   lighton=1
   gpio.write(pin,gpio.HIGH)
else
   lighton=0
   gpio.write(pin,gpio.LOW)
end
end)

Bu işlem ile elimize kod olan ve tek başına kullanılmaya hazır bir ESP modül geçiyor. Artık led devresini kurup ESP’ye güç verdiğimizde 2 saniyede bir 4. pinde yanıp söndüğünü göreceğiz. ESP8266’da 4. pin GPIO0’a denk gelmekte. Yani devreyi aşağıdaki gibi kurduğumuzda kodumuz sorunsuz çalışacaktır.

NOT: 3.3Volt’u FTDI  veya Arduıno’dan alabilirsiniz.

esp_led_devresi

Son Çıkan Yazılar

19 YORUMLAR

  1. peki bu dilde iki esp kullanıp birinden dht sensoruyle aldıgımız veriyi digerine kablosuz olarak atıp mesela onda bulunan bir led i yakmamız mumkun mu arduino olmadan =? galiba esp lerden birini ap digerini sta olarak kullanmamız lazım ama gerisini bilmiyorum mesela dht yi esp ye baglayıp nasıl sıcaklık okutcaz? yada digerinin bu veriyi okuyup ledi yakmasını nasıl saglarız?

    • Sorunuzun dille bir alakası yoktur bu algoritmayı oluşturup o lua dilinde denerseniz muhtemelen çalışacaktır eğer çalışmaz ise algoritmanızı lu a diline uyduramamışsınız demektir o yüzden eğer çalıştıramazsanız algoritmanızı gözden geçirmenizi öneririm

  2. esp leri bulunduğunuz networke bağlayın, sonra birine server diğerine client kodlarını yazıp, bu bahsettiğiniz basit uygulamayı yapabilirsiniz. Ben UDP örneklerini öneririm. Veri göndermesi çok basit, server’in açık olmasına da gerek yok. Havaya gönderip, eğer o IP ağda varsa ilgili porttan dinliyorsa (her on saniyede gelen mesajı) okuyacak ve işlem yapacaktır.

  3. Server kullanmadan 2 nodemcuyu nasıl haberleştirebilirim? birinin eeproöumda ki bilgi değişince diğerinin de değişmesini istiyorum. bunun için nodemcu mu yoksa başka bir kart mı önerirsiniz?

    • Arduino UNO’nuz üzerinde hiçbir program yüklü olmamalıdır. Examples -> Basics -> BareMinimum sırasını takip ederek erişebileceğini programı yükleyebilirsiniz.

  4. Robotistan grubunu tebrik etmek gerek. Modüler elektroniği başarılı şekilde tanıtıyorlar. Arkadaşlar sizlere bir sorum olacak ESP8266 modüller bir kaç çeşit. bunlardan birisinde çalışan AT Firmware diğerlerine de uygun olur mu?

    • Sorularınızı buraya yazsanız, bizler de elimizden geldiği kadar yardımcı olmaya çalışsak ve bundan herkes faydalansa daha güzel olmaz mı 🙂

  5. Merhaba bir sorum oluckatı, Nodemcu ile bir proje geliştiriyorum ve cihaz üzerinde 1 adet analog giriş pini var. Bana gerekli olan ise 4 adet analog giriş pini, bu binleri nasıl elde edebilirim ?

CEVAP VER

Lütfen yorumunuzu giriniz!
Lütfen isminizi buraya giriniz