Come accennato nel precedente articolo
Caricare il firmware nodemcu con esptool
ora siamo pronti a caricare qualche esempio di codice sul sistema ESP8266.
Seguendo la documentazione Lua per Nodemcu
proviamo a caricare un semplice server http sul sistema.
Apriamo ESPlorer e carichiamo il seguente codice, esempio modificato presente sul github, inserendo i valori appropriati per i campi “SSID” e “password”.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 |
wifi.setmode(wifi.STATION) wifi.sta.config("SSID", "password") gpio.mode(1, gpio.OUTPUT) srv=net.createServer(net.TCP) srv:listen(80,function(conn) conn:on("receive", function(client,request) local buf = "" local _, _, method, path, vars = string.find(request, "([A-Z]+) (.+)?(.+) HTTP") if(method == nil)then _, _, method, path = string.find(request, "([A-Z]+) (.+) HTTP") end local _GET = {} if (vars ~= nil)then for k, v in string.gmatch(vars, "(%w+)=(%w+)&*") do _GET[k] = v end end buf = buf.."<h1> Hello, NodeMcu.</h1><form src=\"/\">Turn PIN1 <select name=\"pin\" onchange=\"form.submit()\">" local _on,_off = "","" if(_GET.pin == "ON")then _on = " selected=true" gpio.write(1, gpio.HIGH) elseif(_GET.pin == "OFF")then _off = " selected=\"true\"" gpio.write(1, gpio.LOW) end buf = buf.."<option".._on..">ON</opton><option".._off..">OFF</option></select></form>" client:send(buf) end) conn:on("sent", function (c) c:close() end) end) |
Salviamo il file come ipstatico.lua. Con ESPlorer carichiamo il file sul nodemcu devkit con il pulsante “Save to ESP”.
Creare un secondo file init.lua
1 |
tmr.alarm(0, 5000, 0, function() dofile("ipstatico.lua") end) |
e salvare anche questo sul device.
Facciamo ripartire il dispositivo con il comando reset sul tool ESPlorer. Dalla barra dei comandi eseguiamo
1 |
print(wifi.sta.getip()) |
che ci fornisce l’indirizzo ip acquisito dal disposito. Con il browser accediamo all’indirizzo ip ricavato sopra e troviamo una piccola interfaccia che ci permette di attivare o meno il PIN1 in uscita
Con tale metodo però occorre conoscere l’Access Point cui ci si deve connettere. Per superare questa limitazione si può utilizzare il modulo enduser setup
Con tale modulo si avvia ESP8266 come access point con un portale su cui si possono inserire le credenziali dell’access point cui ci si deve collegare.
Nel prossimo articolo compileremo il firmware con l’aggiunta del modulo enduser_setup, non presente sulla compilazione standard, e faremo lo stesso esempio con il suo utilizzo
Esempio Lua modulo Enduser_setup