ESP8266 baserad web konfigurerbara wifi generell kontroll (del II)
Obs: En klar att gå ombord kan köpas här
På del II går jag över hur man programmerar ESP8266 så en USB till seriell modul och en terminal är inte nödvändigt: det kommer allt att ske via webben. Också, jag kommer att förklara hur man kör en binär räknare och kontroll 4 reläer (multi på/multi off) med GPIO0 som kontroll och GPIO2 som reset. Detta sätt ESP8266 verkligen förvandlas till en kraftfull enhet som kan läggas till alla automationsprojekt och dess lätt till program på webbplatsen.
Du kan få mer information om mina projekt på Horacio Bouzas webbplats
Kontroll firmware
Firmware måste kunna tillåta användaren att ansluta till modulen och ange SSID och lösenord i nätverket modulen kommer att anslutas till. Stegen för att utforma den fasta programvaran är enligt följande:
1. Ställ in modulen till server (AP)-läge
2. Ange ett namn och lösenord
3. skapa en server
4. lyssna på port 80
5. modul adress är 192.168.4.1
6. lägga fram en webbsida som frågar efter SSID och lösenord
7. växla till Station läge och ställa in SSID och lösenord
8. Anslut till nätverk
9. börja lyssna för händelser av IP-adressen tilldelats av nätverks- och port 9999
Här är koden för att göra det:
File.Open("init.lua","w")
File.WriteLine ([[Skriv ut ("WIFI control")]])
--sätta modul i AP-läge
File.WriteLine ([[wifi.setmode (wifi. SOFTAP)]])
File.WriteLine ([[skriva ut ("ESP8266 läge är:".. WiFi.getmode())]])
File.WriteLine([[cfg={}]])
--Ange SSID för modulen i AP-läge och tillgång lösenord
File.WriteLine([[cfg.SSID="ESP_STATION"]])
File.WriteLine([[cfg.pwd="the_ESP8266_WIFI_password"]])
File.WriteLine ([[om ssid och lösenord sedan]])
File.WriteLine ([[skriva ut ("ESP8266 SSID är:".. cfg.SSID... "och lösenordet är:"... cfg.Password)]])
File.WriteLine([[end]])
--Nu bör du se ett SSID trådlös router som heter ESP_STATION när du söker efter tillgängliga WIFI-nätverk
--Kan ansluta till modulen från en dator av mobiltelefon. Så hitta SSID och ansluta med det lösenord valt
File.WriteLine([[WiFi.AP.config(cfg)]])
File.WriteLine ([[ap_mac = wifi.ap.getmac()]])
--skapa en server på port 80 och vänta på en anslutning, när en anslutning kommer i funktion c kommer att genomföras
File.WriteLine ([[sv=net.createServer (net. TCP, 30)]])
File.WriteLine([[sv:listen(80,function(c)]])
File.WriteLine ([[c: på ("får", funktion (c, pl)]])
--Skriv ut nyttolasten pl fått från anslutningen
File.WriteLine([[Print(pl)]])
File.WriteLine([[Print(String.len(pl))]])
--vänta tills SSID kommer tillbaka och analysera SSID: T och lösenordet
File.WriteLine([[Print(String.match(pl,"get"))]])
File.WriteLine([[ssid_start,ssid_end=String.find(pl,"SSID=")]])
File.WriteLine ([[om ssid_start och ssid_end sedan]])
File.WriteLine ([[amper1_start, amper1_end =string.find (pl,"&", ssid_end + 1)]])
File.WriteLine ([[om amper1_start och amper1_end sedan]])
File.WriteLine ([[http_start, http_end =string.find (pl, "HTTP/1.1", ssid_end + 1)]])
File.WriteLine ([[om http_start och http_end sedan]])
File.WriteLine ([[ssid=string.sub (pl, ssid_end + 1, amper1_start-1)]])
File.WriteLine ([[password=string.sub (pl, amper1_end + 10, http_start-2)]])
File.WriteLine ([[skriva ut ("ESP8266 ansluter till SSID:".. SSID... "lösenord:"... lösenord)]])
File.WriteLine ([[om ssid och lösenord sedan]])
File.WriteLine([[sv:Close()]])
--stänga servern och ange modulen till STATION läge
File.WriteLine ([[wifi.setmode (wifi. STATIONAP)]])
File.WriteLine ([[skriva ut ("ESP8266 läget nu är:".. WiFi.getmode())]])
--Konfigurera modulen wso det kan ansluta till nätverket med den mottagna SSID och lösenord
File.WriteLine([[WiFi.sta.config(SSID,Password)]])
File.WriteLine ([[Skriv ut ("ställa in ESP8266 för stationen läge... Vänta.")]])
File.WriteLine([[TMR.Delay(10000000)]])
File.WriteLine ([[skriva ut ("ESP8266 STATION IP är nu:".. WiFi.sta.getip())]])
File.WriteLine ([[skriva ut ("ESP8266 AP IP är nu:".. WiFi.AP.getip())]])
--nu modulen är konfigurerad och ansluten till nätverket så låter börja ställa saker för kontroll logik
File.WriteLine ([[gpio.mode (8, gpio. OUTPUT)]])
File.WriteLine ([[gpio.mode (9, gpio. OUTPUT)]])
File.WriteLine([[TMR.Delay(10)]])
File.WriteLine ([[gpio.write (8, gpio. HÖG)]])
File.WriteLine([[TMR.Delay(10)]])
File.WriteLine ([[gpio.write (8, gpio. LÅG)]])
File.WriteLine ([[sv=net.createServer (net. TCP, 30)]])
File.WriteLine([[sv:listen(9999,function(c)]])
File.WriteLine ([[c: på ("får", funktion (c, pl)]])
File.WriteLine ([[om tonumber(pl) ~ = noll då]])
File.WriteLine ([[if tonumber(pl) > = 1 och tonumber(pl) < = 16 då]])
File.WriteLine([[Print(tonumber(pl))]])
File.WriteLine([[TMR.Delay(10)]])
File.WriteLine ([[gpio.write (8, gpio. HÖG)]])
File.WriteLine([[TMR.Delay(10)]])
File.WriteLine ([[gpio.write (8, gpio. LÅG)]])
File.WriteLine ([[för count =1,tonumber(pl) do]])
File.WriteLine ([[print(count)]])
File.WriteLine([[TMR.Delay(10)]])
File.WriteLine ([[gpio.write (9, gpio. LÅG)]])
File.WriteLine([[TMR.Delay(10)]])
File.WriteLine ([[gpio.write (9, gpio. HÖG)]])
File.WriteLine ([[c:send("Sequence finished")]])
File.WriteLine([[end]])
File.WriteLine([[end]])
File.WriteLine([[end]])
File.WriteLine ([[skriva ut ("ESP8266 STATION IP är nu:".. new_ip)]])
File.WriteLine ([[c:send("ESP8266 STATION IP now is:".. new_ip)]])
File.WriteLine ([[c:send("Action completed")]])
File.WriteLine([[end)]])
File.WriteLine([[end)]])
File.WriteLine([[end]])
File.WriteLine([[end]])
File.WriteLine([[end]])
File.WriteLine([[end]])
--Detta är den webbsida som begär SSID och lösenord från användaren
File.WriteLine ([[c:send("")]])
File.WriteLine ([[c:send("")]])
File.WriteLine ([[c:send("")]])
File.WriteLine ([[c:send("ESP8266 Wireless control setup")]])
File.WriteLine ([[mac_mess1 = "modul-MAC-adress:".. ap_mac]])
File.WriteLine ([[mac_mess2 = "Du måste denna MAC-adress för att hitta IP-adressen av modulen, behaga ta märka av det.."]])
File.WriteLine ([[c:send("".. mac_mess1... "")]])
File.WriteLine ([[c:send("".. mac_mess2... "")]])
File.WriteLine ([[c:send("Enter SSID and Password for your WIFI router")]])
File.WriteLine ([[c:send("
")]])
File.WriteLine ([[c:send("
")]])
File.WriteLine([[c:send("SSID:")]])
File.WriteLine([[c:send("")]])
File.WriteLine ([[c:send("
")]])
File.WriteLine([[c:send("Password:")]])
File.WriteLine([[c:send("")]])
File.WriteLine([[c:send("")]])
File.WriteLine([[end)]])
File.WriteLine([[end)]])
File.Close()