Der ESP32 mit dem Arduino Framework programmieren

Ein Webserver auf dem ESP32

Mit Hilfe eines Webservers lässt sich mit dem ESP32 via WLAN eine Kommunikation mit dem Browser eines Endgeräts im WLAN etablieren.
Dies funktioniert mit jedem Gerät, das sich per WLAN mit dem ESP32 verbinden kann, also auch mit Tablets oder Smartphones. Lediglich ein Webbrowser muss auf diesem Gerät laufen.

Die Kommunikation kann dann mit dem HTTP Protokoll erfolgen.

Beispiel: Ein Status-Button auf dem ESP32

Aufgaben-Beschreibung

Ein Beispiel für eine Kommunikation mit dem HTTP-Protokoll ist ein Status-Button, der auf Anfragen eines Clients reagiert.

Der ESP32 dient dabei als Webserver, der eine Website als HTML-Ressource zur Verfügung stellt. Diese kann von jedem Webbrowser auf einem Client angezeigt werden.

Der Button wird als Link dargestellt. Das Anklicken des Link-Buttons generiert eine GET-Request an den Webserver. Diese GET-Request wird vom ESP32 ausgewertet und der Mikrocontroller kann dann auf die Anfrage mit einer modifizierten HTTP-Datei reagieren.

Der Status-Button soll einen Toggle-Switch repräsentieren, dessen Zustand in einer Variablen auf dem ESP32 gespeichert wird.

Der ESP32 soll als unabhängiger Access-Point (AP) ein WLAN aufspannen, in welches sich ein Client einloggen kann.

Die Programmierung soll mit Hilfe der WiFi-Library für das Arduino Framework realisiert werden.

Aufspannen eines WLANs (ESP32 als AP)

Der ESP32 muss im AP-Modus betrieben werden.

Webserver starten

Auf dem ESP32 muss mit WiFiServer.begin() ein Webserver auf Port 80 gestartet werden.

Auf Client warten

Mit WiFiServer.available() wird auf einen Client gewartet. Sobald ein Client vorhanden ist, wird eine Instanz vom Typ WifiClient erzeugt. Mit dieser Instanz wird nun weiter gearbeitet.

Client-Kommunikation auswerten

Die Kommunikation mit dem Client muss nun ausgewertet werden.

Wesentlich ist die Ressource, die der Client in seiner GET-Anfrage anfordert. Dazu muss die Request Line ausgewertet werden. Das request-target entspricht dem href Befehl_Attribut eines Links (<a> Tag), der Teil der HTML-Website ist, die dem Client übermittelt wird.

Aufbau der HTML-Ressource für den Client

Die HTML-Ressource, die an den Client übermittelt wird entspricht einer HTML-Website, deren Grundstruktur der eines HTML-Dokuments entsprechen muss.

Die Seite muss einen Hyperlink enthalten, der vom ESP32 ausgewertet werden kann.

Mit Hilfe von CSS kann die übermittelte Seite und deren Inhalt gestaltet werden.

Quelltext für den ESP32

Der Quelltext zeigt die Lösung der Aufgabe.