ESP8266 WiFi kontrollerade aircon remote (10 / 15 steg)
Steg 10: Programvaran för modulen ESP8266 - Del3 "setup() och loop()"
Setup()
Funktionen setup() anropas en gång efter den ESP8266 bootet. Här jag definierar funktionen GPIO stift, ansluta till lokala WiFi, initiera seriell anslutning och starta HTTP-servern ta emot.
Endast på modulen "master" startar jag också en timer som utlöser var 60 sekunder en uppdatering av effektförbrukningen (mer om detta i nästa steg).
WiFi-anslutning
Att göra det lättare att identifiera olika ESP8266 moduler jag beslutade att använda statiska IP-adresser i stället för med hjälp av DHCP-funktionen av min WiFi router.
Sträcker sig 192.xxx.xxx.000 till 192.xxx.xxx.119 = > DHCP-tilldelade IP-adresser för min PC och bärbara datorer
Sträcker sig 192.xxx.xxx.120 till 192.xxx.xxx.129 = > IP-adressintervall används av mina telefoner och tabletter (statisk IP-adress)
Sträcker sig 192.xxx.xxx.140 till 192.xxx.xxx.150 = > Home automation, detta intervall används av min Arduino och ESP8266 moduler
192.xxx.xxx.140 = > solpaneler övervakningssystem
192.xxx.xxx.141 = > Security system
192.xxx.xxx.142 till 192.xxx.xxx.148 = > ESP8266 moduler för apparater kontroll
Om du vill ansluta med en statisk IP-adress, har vissa ytterligare parametrar som ska användas med WiFi.config():
WiFi.mode(WIFI_STA); < br > WiFi.config (ipAddr, ipGateWay, ipSubNet);
WiFi.begin (ssid, lösenord);
Serial.Print ("väntar för WiFi-anslutning");
medan (WiFi.status()! = WL_CONNECTED) {
Delay(500);
Serial.Print(".");
}
ipAddr = > ipAddr tilldelats denna modul
ipGateWay = > standard-gateway (vanligtvis IP-adressen för routern)
ipSubNet = > IP-mask för alla lokala IP-adresser, i mitt fall 255.255.255.0
Varning - Arduino OTA-funktion
Arduino ESP8266 biblioteken erbjuder också en OTA-funktion (programuppdatering över WiFi). Detta skulle vara en trevlig funktion att uppdatera min ESP8266 moduler utan att ansluta dem med seriell anslutning till PC.
Tyvärr är min erfarenhet med denna funktion mycket dålig. I 70% av mina försök överföring av den nya mjukvaran över WiFi var skadad och efter Reset modul var hängande och inte svarar. Endast en reflektera över seriell anslutning förde dem tillbaka till arbete.
Jag har funktionen OTA i min kod, men jag använder inte det längre. Förhoppningsvis med en senare uppdatering av ESP8266 bibliotek OTA blir funktion mer tillförlitlig.
loop()
Loop() funktion är huvudprogrammet ögla (som namnet säger). Här kontrollera jag om en ny kund har ansluten via WiFi, om ett kommando har mottagits via seriell anslutning eller (endast för modulen "master") om en uppdatering av energiförbrukningen har utlösts (mer om detta i nästa steg.