Stap 3: programmeren
Ik ben met behulp van de Arduino IDE voor het schrijven van de software. Het is zeer eenvoudig, maar u eerst moet downloaden en installeren van de ESP8266 addon. Er zijn veel grote tutorials, zoals:
https://Learn.Sparkfun.com/tutorials/esp8266-thing-hookup-Guide/Installing-the-esp8266-Arduino-addon
Zodra u dat hebt gedaan, kunt u nu schrijven Arduino schetsen voor de ESP8266, alsof het was gewoon een Arduino board.
Mijn code, evenals alle de schema's zijn beschikbaar op Github: https://github.com/3zuli/esp_internet_alarm/
Kloon in een map en open de schets van de esp_internet_alarm.ino. Allereerst zul je een paar kleine wijzigingen aan te brengen:
// Select mode of operation by uncommenting one of the following lines// Default: DETECT_NO_INTERNET //#define DETECT_INTERNET #define DETECT_NO_INTERNET
Selecteer de bewerkingsmodus door uncommenting één van deze lijnen. Wanneer DETECT_NO_INTERNET commentaar is, knippert het licht als er geen verbinding met het internet. Evenzo, wanneer DETECT_INTERNET commentaar is, knippert het licht wanneer er een verbinding met het internet zijn. Zorg ervoor dat slechts één van deze lijnen commentaar is en dat anderzijds is uitgecommentarieerd.
// Your WiFi network credentials const char* ssid = "Your SSID"; const char* password = "Your Password";
Vrij spreekt voor zichzelf. Voer de naam en het wachtwoord voor het WiFi-netwerk dat u wilt volgen, zorg ervoor dat ze zijn beide correct!
// Set to true to enable debug printoutsconst bool debug = false;
Ten slotte, zet deze op true als u wilt zien debug afdrukken tijdens de uitvoering, namelijk de waarde van de variabele hasInternet, en als de LED is wordt ingeschakeld of uitgeschakeld. Het standaard uitgeschakeld.
Sluit de GPIO0 om grond, reset de ESP-module en klik op upload. Het zou moeten werken. De seriële monitor als u berichten wilt openen. Ideaal, u ziet iets als:
Connecting to "Your SSID" WiFi disconnected... WiFi disconnected WiFi connected IP address: 192.168.43.164 WiFi OK Connecting to httpbin.org Requesting URL: httpbin.org/get HTTP/1.1 200 OK Server: nginx Date: Sat, 16 Jan 2016 21:58:41 GMT Content-Type: application/json Content-Length: 128 Connection: close Access-Control-Allow-Origin: * Access-Control-Allow-Credentials: true{ "args": {}, "headers": { "Host": "httpbin.org" }, "origin": "176.4.65.58", "url": "http://httpbin.org/get" } closing connection
De code werkt als volgt: aan het begin, wij gaan ervan uit dat wij niet zijn aangesloten, zodat de flitser is ingeschakeld. De ESP probeert te verbinden met het WiFi-netwerk dat u hebt opgegeven. Het begint met het aansluiten en controleert de verbindingsstatus elke 500ms, totdat het kon verbinden, dan de flitser is uitgeschakeld. In de hoofdlus, deze eerst na of als deze nog is aangesloten op het netwerk. Als dat niet het geval is, het zal beginnen opnieuw verbinding te maken, en de flitser is ingeschakeld. Anders het vervolgens probeert te openen een verbinding met http://httpbin.org/. Het is een eenvoudige site bedoeld voor het testen van HTTP-toepassingen, als ze goed communiceren. Als de verbinding mislukt, het draait op de flitser en verlaat de loop, wachten op een nieuwe ronde. Anders het overgaat tot een HTTP GET-aanvraag te verzenden naar http://httpbin.org/get en dan luidt het antwoord. De /get stuurt gewoon terug wat json-gecodeerde informatie over de client verbinding heeft gemaakt. (Probeer het zelf!) Na dat de lus wordt 5 seconden gewacht en herhaalt zich.
De reden we zijn met behulp van httpbin.org (en niet proberen te laden van Google als jij op de computer) is dat het een zeer kleine hoeveelheid van gegevens (meestal onder 200 bytes) als resultaat geeft. Op deze manier die het werkt zelfs op de langzaamste verbindingen, zoals de netwerk van de telefoon van de rand (2 G), en ook zeer waarschijnlijk op dial-up (als iedereen het zelfs vandaag gebruikt). Ruwweg denk, dat dit verband hooguit slechts ongeveer 1.6MB per 24u van continue werking moet consumeren.
De code is nog niet volledig afgewerkt. Eerst en vooral, controleren niet het als zij eigenlijk geen gegevens ontvangen. Het zou leuk zijn om ook het toevoegen van enkele andere functies, zoals het meten van ping naar de server, of de flitser inschakelen alleen na een aantal mislukte pogingen. Of de uptime/downtime statistische gegevens vastleggen. Het is open voor iedereen te dragen :)