ESP8266 webserver

Doel:

  • gebruik van ESP8266 als webserver
  • aansturen van LED via deze webserver

nodig:

  • ESP8266-bordje, bijv. NodeMCU of WeMos D1 mini

Voorkennis:

  • ESP8266

De ESP8266 beschikt over een WiFi-radio, en de nodige WiFi- en internet-software. Hiermee kun je bijv. een eenvoudige webserver maken. Via deze webserver kun je de ESP8266-outputs aansturen, bijvoorbeeld om een LED aan- en uit te zetten.

Schakeling

Verbind de ESP8266 met je "host" computer, en selecteer:

  • je EPS8266-bord
  • de gebruikte USB-poort

Opdracht 1

Selecteer het voorbeeld: Bestand->Voorbeelden->ESP8266WebServer->HelloServer.

Pas dit aan zodat je toegang hebt tot het lokale WiFi netwerk:

Vul de gegevens van het netwerk in:

const char* ssid = "........";

const char* password = "........";

Geef een naam op voor je eigen ESP8266:

  if (MDNS.begin("esp8266")) { ...

(pas hierin de naam "esp8266" aan tot een eigen herkenbare naam).

De webserver is in het lokale netwerk te vinden via:

  • het IP-adres (zie de uitvoer naar de Seriële Monitor)
  • als esp8266.local - waarbij esp8266 vervangen is door je  eigen herkenbare naam.

Open deze webserver via een browser: geef bijv. als URL:

http://esp8266.local/

Geef verschillende paden op in de URL, bijvoorbeeld: "/", "/inline", en een ander pad.

Bekijk niet alleen het resultaat in de browser, maar ook de uitvoer naar Seriële Monitor.

Opdracht 2

Pas deze webserver aan zodat je er een LED mee kunt aansturen:

Declareer het LED-pinnummer, en initialiseer de pin voor output (in setup).

Maak twee handler-functies (boven setup):

void ledOn() {...}  - zet de LED aan

void ledOff() {...}  - zet de LED uit

en voeg deze handlers toe aan de server, voor de URLs voor het aan- en uitzetten (in setup, na de andere server.on("/", ...)):

server.on("/on", ledOn);

server.on("/off", ledOff);

Je kunt de ingebouwde LED gebruiken: deze heeft als pinnr LED_BUILTIN.

Je kunt ook een eigen LED aan een eigen pin gebruiken.

Je kunt nu de de server gebruiken met de URLs:

http://esp8266.local/on   en

http://esp8266.local/off

Opdracht 3

Je kunt in de webserver ook inputs uitlezen. Verbind een analoge sensor (bijv. een temperatuursensor) aan de analoge input. Lees de waarde hiervan uit in een functie die de URL "/temp" afhandelt - en stuur deze waarde als resultaat naar de browser (via server.send, zie de andere handler-functies).

Definieer de handler-functie

void handleTemp() {...}

Voeg de URL hiervoor toe:

server.on("/temp", handleTemp);

ESP8266 webserver     --