Haber

ESP8266, Lua ve Cep Telefonu

Ve evet beklenen gerçekleşti ve ESP8266 çipi için herkesin kullanabileceği bir yazılım arayüzü ve programlama dili kullanıcılara sunuldu. SDK gerçi daha önce çipin üreticisi olan Espressif Systems tarafından yayımlanmıştı ama çok da kullanılabilir değildi. Peter Jennings Lua script dilini kullanabilen bir firmware geliştirerek ESP8266 çipini bir kaç basamak yukarıya taşımayı başardı. İlk denemelerimde gayet kararlı ve güzel bir ortamın geliştiricilere sunulduğunu söylemek isterim. Bu IoT çalışmalarında oldukça kullanılacak bir çözüm olacağa benziyor. Daha önce Arduino kullanarak yaptığım örneği bu sefer başka hiç bir işlemci kullanmadan Lua ile ESP8266 üzerinde geliştireceğim. Sadece 5 dolarlık bir çip ile güzel bir IoT örneği yapmış olacağız. Çep telefonuna bir buttona basıldığında uyarı göndereceğiz.

Öneclikle Lua script dilini kullanabilmeniz için ESP8266 çipinin firmware’ini değiştirmemiz gerekiyor. Muhtemelen aldığınızda ESP8266 At komutlarını işleyen bir firmware ile gelecektir. ESP8266 firmware’ini yeniden yüklemek için nodemcu-flasher programına ihtiyacınız olacak. Bu programı işletim sisteminize göre aşağıdaki linklerden indirebilirsiniz.

ESP8266Flasher.exe for Win32

ESP8266Flasher.exe for Win64

ESP8266 çipine yeni Firmware yüklemek için dikkate edilmesi gereken bir husus daha var. Çipin GPIO0 bacağını GND ye çekmeniz gerekmekte. Çipile seri iletişim kurmak için daha önceki yazılarımda da belirttiğim 3.3v USB UART çeviriciyi kullanıyoruz. işte bağlantı resmi;

 

esp8266-reflash-firmware

 

Sarı yazı ilede belirtildiği gibi çipin GPIO0 pacağını GND ye sadece firmware atarken bağlıyoruz. Normal kullanımda GND ye çekmiyoruz.

Ortam ve devre bağlantısı hazır olduğuna göre ESP8266 Lua anlar hale getirebiliriz. USB UART çeviricinizi bilgisayara tanıtmışsanız bağladığınızda bir Com port oluştuğunu göreceksiniz. modencu-flasher programını açıp bu komportu seçin ve Flash(F) düğmesine basın

687474703a2f2f693635392e70686f746f6275636b65742e636f6d2f616c62756d732f75753331362f766f77737461722f4e6f64654d43552d466c61736865722d426567696e2e706e67

 

 

 

 

 

 

 

 

 

 

 

Flash yüklemesi tamamlandığında ESP8266 ile bağlantı kurmak için LuaLoader.zip programını yükleyin. Artık GPIO0 GND ye bağlı olmayacak.

LuaLoader programının görüntüsü aşağıdaki gibi

 

LuaLoader

 

 

Bu program çipile oynamanız için çok güzel bir araç. Tüm detaylarını anlatmıyorum. Vakit ayırıp kurcalayın derim.

Çok kabaca çipin GPIO2 bacağını input yapmak ve oradaki akımı okumak için aşağıdaki komutları kullanıyoruz.

gpio.mode(4,gpio.INPUT,gpio.FLOAT)

gpio.read(4)

(GPIO2 için 4 kullanıyoruz. Pinlerin isimleri ve Lua da kullanılan rakamlar tutmuyor. Maping çizelgesi burada var)

Yada aynı pini Output olarak kullanmak istersek

gpio.mode(4,gpio.OUTPUT) 

gpio.write(4,gpio.HIGH)  -- GPIO2 3.3v oldu
gpio.write(4,gpio.LOW)  -- GPIO2 0v oldu

 

 

Şimdi daha önceki yazımızda yaptığımız Cep telefonuna Push Notification yollama örneğini yapalım;

http://www.prowlapp.com/ sitesine uye olup bir API Key olusturuyorsunuz. IOS uygulamasını cep telefonunuza kuruyorsunuz.

Daha sonra aşağıdaki iki dosyayı bilgisayarınıza lua uzantısı ile kopyalayın. init.lua ESP8266 ilk olarak enerjilendirildiğinde otomatik olarak çalışır. Daha sonra init.lua dosyasındaki kod bir timer’ı her 4sn de bir ateşliyor. Bu ateşleme diğer dosyanın (interupt.lua) çalıştırılmasını sağlıyor.

init.lua

wifi.sta.autoconnect(1)
print("gnexlab")
gpio.mode(4,gpio.INPUT,gpio.FLOAT)
tmr.alarm(0,6000,1,function() dofile("interupt.lua") end)

 

interupt.lua 

function push(level)
conn = nil
conn = net.createConnection(net.TCP, 0)

conn:on("receive", function(conn, payload)
success = true
print(payload)
end)
conn:on("connection", function(conn, payload)
print('\nConnected')
conn:send("GET /publicapi/add?apikey=7b0fcbc142b12c30f474c4a5c8258b6e3d9f51ad&application=ESP8266&event=Button+pressed&priority=0 HTTP/1.1\r\n"
.."Host: prowl.weks.net\r\n"
.."Accept: */*\r\n"
.."User-Agent: Mozilla/4.0 (compatible; esp8266 Lua; Windows NT 5.1)\r\n"
.."\r\n")
end)

-- when disconnected, let it be known
conn:on("disconnection", function(conn, payload) print('\nDisconnected') end)

conn:connect(80,'209.20.89.148')

tmr.delay(500000)

end

if gpio.read(4) == 0 then push(0) end

Bu iki dosyayı lua uzantılı olarak text dosyası formatında bilgisayarınıza yazdıktan sonra LuaLoader programındaki UploadFile buttonuna basarak bu iki dosayayı ESP8266 ya yükleyin.

Gelelim doanıma

esp8266_lua1_bb

 

 

Devreyi bu şekilde yapın ve çalıstırın Butona bastığınızda Cep telefonuna mesaj geldıgını göreceksiniz.

Uygulama alanları ile ilgili fikirlerinizi bekliyorum. En basitinden kapıya bağlayıp bir readröle kullanıp açıldığında cep telefonuna mesaj gelmesini sağlayabilirsiniz.

Bir çok sensör bağlamak mümkün. Iot Serüvenlerimiz Gnexlab da devam edecek.

 

 

Kaynaklar