ESP8266 Internet Alarm (3 / 12 steg)
Steg 3: programmering
Jag använder Arduino IDE för att skriva programvara. Det är extremt enkelt, men du måste först hämta och installera den ESP8266 addonen. Det finns massor av bra tutorials, såsom:
https://learn.Sparkfun.com/tutorials/esp8266-Thing-hookup-guide/Installing-The-esp8266-Arduino-addon
När du har gjort det, kan du nu skriva Arduino skisser för ESP8266, som om det var bara en Arduino ombord.
Min kod, liksom alla scheman finns tillgänglig på Github: https://github.com/3zuli/esp_internet_alarm/
Klona det i en katalog och öppna esp_internet_alarm.ino skissen. Först och främst måste du göra några små ändringar:
Välja driftsform genom uncommenting en av följande rader
Standard: DETECT_NO_INTERNET
#define DETECT_INTERNET
#define DETECT_NO_INTERNET
Markera av driftsform genom uncommenting och en av dessa rader. När DETECT_NO_INTERNET är okommenterade, blinkar ljuset om det finns ingen anslutning till internet. När DETECT_INTERNET är okommenterade, likaså blinkar ljuset när det finns en anslutning till internet. Se till att endast en av dessa rader är okommenterade och att den andra är bortkommenterad.
Din WiFi nätverksreferenser
CONST char * ssid = "Ditt SSID";
CONST char * lösenord = "Ditt lösenord";
Ganska självklar. Ange namn och lösenord för WiFi-nätverk som du vill övervaka, kontrollera att de är båda rätt!
Inställd på sant att aktivera debug utskrifter
CONST bool debug = false;
Slutligen, Ställ in den till true om du vill se felsöka utskrifter under genomförandet, nämligen värdet av variabeln hasInternet, och om lampan vrids på eller av. Det är inaktiverat som standard.
Anslut GPIO0 till marken, återställa modulen ESP och drabbades uppladdning. Det ska funka. Öppna den seriella bildskärmen om du vill se meddelanden. Helst bör du se något lik:
Ansluter till "SSID"
WiFi kopplas från
...
WiFi kopplas från
WiFi-anslutna
IP-adress: 192.168.43.164
WiFi OK
Anslutning till httpbin.org
Begär URL: httpbin.org/get
HTTP/1.1 200 OK
Server: nginx
Datum: Sat, 16 Jan 2016 21:58:41 GMT
Content-Type: application/json
Content-Length: 128
Anslutning: Stäng
Access-kontroll-tillåta-ursprung: *
Kontroll-tillåta-autentiseringsuppgifter: sanna {
"arg": {},
"headers": {
"Host": "httpbin.org"
},
"ursprung": "176.4.65.58",
"url": "http://httpbin.org/get"
}
stänga anslutningen
Koden fungerar på följande sätt: I början, vi antar att vi inte är ansluten, så strobe är påslagen. ESP kommer att försöka ansluta till WiFi-nätverk du angav. Det börjar ansluta och kontrollerar anslutningsstatus varje 500ms, tills det var ansluta, sedan strobe är avstängd. I de viktigaste loop kontrollerar den först om den fortfarande är ansluten till nätverket. Om inte, det kommer att börja att ansluta igen och strobe är påslagen. Annars det sedan försöker öppna en anslutning till http://httpbin.org/. Det är en enkel webbplats avsedd för testning av HTTP-program, om de kommunicerar korrekt. Om anslutningen misslyckas, det vänder på strobe och avslutar loop(), väntar på en ny runda. Annars fortsätter med att skicka en HTTP GET-begäran till http://httpbin.org/get och därefter läser svaret. Den/get / skickar helt enkelt tillbaka några json-kodad information om anslutna klienten. (Prova det själv!) Efter att slingan ska vänta 5 sekunder och repetitioner sig själv.
Anledningen till att vi använder httpbin.org (och inte försöker ladda Google som du gör på datorn) är att returnera en mycket liten mängd data (vanligtvis under 200 byte). Detta sätt det kommer att fungera även på långsammaste förbindelser, som kant (2 G) telefon nätverk, och också mycket sannolikt på urtavlan upp (om någon använder ens det idag). Jag antar ungefär, att denna anslutning ska konsumerar mest bara cirka 1,6 MB per 24h kontinuerlig drift.
Koden är ännu inte helt klar. Först och främst kontrollerar det inte om det faktiskt fått alla data. Det skulle vara trevligt att även lägga till några andra funktioner, som mäter ping till servern eller aktivera strobe endast efter ett visst antal misslyckade försök. Eller spela in uptime/driftstopp statistiken. Det är öppet för alla att bidra :)