
Die Prozessorfamilien
- ESP32
ESP32-Wroom
ESP32-C6
XIAO-ESP32-C3
Arduino Nano ESP32 - ESP8266
NodeMCU
Wemos D1 Mini
Konfiguration der Mikrocontroller
Netzwerkmodi der ESP-Mikrocontroller
Stations-Modus
Stations-Modus mit DHCP
Im Stations-Modus (STA) verwendet der Mikrocontroller das WLAN-Netz des Routers und erhält von dort eine IP-Adresse. Diese wird dynamisch zugewiesen, es kann jedes Mal eine andere sein (DHCP = Dynamic Host Configuration Protocol).
#ifdef ESP8266
#include "ESP8266WiFi.h"
#else
#include "WiFi.h"
#endif
// Router als AP
char Router[] = "Router_SSID";
char Passwort[] = "xxxxxxxx";
void setup()
{
Serial.begin(9600);
// auf serielle Verbindung warten
while (!Serial);
delay(1000);
WiFi.mode(WIFI_STA);
WiFi.begin(Router, Passwort);
while (WiFi.status() != WL_CONNECTED)
{
delay(200);
Serial.print(".");
}
// SSID des Routers anzeigen
Serial.println();
Serial.print("Verbunden mit ");
Serial.println(WiFi.SSID());
Serial.print("IP-Adresse: ");
Serial.println(WiFi.localIP());
}
void loop()
{
// bleibt leer, das Programm läuft nur einmal
}

Stations-Modus mit statischer IP-Adresse
Die statische IP-Adresse muss dem Netzwerk des Routers angepasst werden.
#ifdef ESP8266
#include "ESP8266WiFi.h"
#else
#include "WiFi.h"
#endif
// Router als Accesspoint
char Router[] = "Router_SSID";
char Passwort[] = "xxxxxxxx";
// statische IP-Adresse
IPAddress ip(192, 168, 1, 5);
IPAddress gateway(192, 168, 1, 1);
IPAddress subnet(255, 255, 255, 0);
void setup()
{
Serial.begin(9600);
// auf serielle Verbindung warten
while (!Serial);
delay(1000);
WiFi.mode(WIFI_STA);
WiFi.config(ip, gateway, subnet);
WiFi.begin(Router, Passwort);
// SSID des Routers anzeigen
Serial.println();
Serial.print("Verbunden mit ");
Serial.println(WiFi.SSID());
Serial.println();
Serial.print("IP-Adresse: ");
Serial.println(WiFi.localIP());
}
void loop()
{
// bleibt leer, das Programm läuft nur einmal
}

AP-Modus (Accesspoint-Modus) der ESPs
Beim AP-Modus bauen die ESPs ein eigenes Netz auf, du musst ihnen neben dem Namen des Routers und dem Passwort einige Daten mitteilen:
IPAddress ip(192, 168, 4, 1);
IPAddress gateway(192, 168, 4, 1);
IPAddress subnet(255, 255, 255, 0);
Natürlich kannst du auch andere Subnetze verwenden:
IPAddress ip(192, 168, 5, 1);
IPAddress gateway(192, 168, 5, 1);
IPAddress subnet(255, 255, 255, 0);
Der Name des Routers und das Passwort sind frei wählbar, allerdings muss das Passwort mindestens 8 Zeichen haben.
ip legt die statische IP-Adresse fest.
gateway ist das Gerät - in diesem Fall der ESP selbst - das die Kommunikation der verbundenen Geräte (der Klienten) untereinander regelt.
subnet ist der Adressbereich der zugelassenen IP-Adressen. 255 bedeutet, dass dieser Bereich jeweils unveränderlich ist, 0 am Ende heißt, dass die IP-Adressen variabel sind. Da die erste und die letzte IP-Adresse aus organisatorischen Gründen nicht vergeben werden darf, bleiben 254 IP-Adressen (192.168.4.1 bis 192.168.4.254) übrig.
Die neuere Schreibweise ist übrigens in diesem Fall 192.168.4/24.
#ifdef ESP8266
#include "ESP8266WiFi.h"
#else
#include "WiFi.h"
#endif
// Netzwerkname und Passwort des ESP
char Router[] = "ESPServer";
char Passwort[] = "espserver";
// Server und Klient
IPAddress ip(192, 168, 4, 1);
IPAddress gateway(192, 168, 4, 1);
IPAddress subnet(255, 255, 255, 0);
void setup()
{
Serial.begin(9600);
// auf serielle Verbindung warten
while (!Serial);
delay(1000);
// ESP als Access-Point (AP) konfigurieren
WiFi.mode(WIFI_AP);
WiFi.softAPConfig(ip, gateway, subnet);
// Access-Point starten
WiFi.softAP(Router, Passwort);
// SSID des Routers anzeigen
Serial.println();
Serial.print("Verbunden mit ");
Serial.println(WiFi.softAPSSID());
Serial.print("IP-Adresse: ");
Serial.println(WiFi.softAPIP());
}
void loop()
{
// bleibt leer, das Programm läuft nur einmal
}

ESP als Webserver mit DHCP im Stations-Modus verwenden
Beachte hier die Unterschiede beim Start von WiFi und Webserver der Prozessorfamilien ESP8266 und ESP32.
- ESP32
#include "WiFi.h"
#include "WebServer.h"
WebServer Server(80); - ESP8266
#include "ESP8266WebServer.h"
ESP8266WebServer Server(80);
Das Programm
Das Programm fragt den Wert an einem analogen Pin ab, in diesem Fall den Pin 35 an einem ESP32-Wroom. Für andere Mikrocontroller musst du die Nummer des Pins anpassen.
#ifdef ESP8266
#include "ESP8266WebServer.h"
ESP8266WebServer Server(80);
#else
#include "WiFi.h"
#include "WebServer.h"
WebServer Server(80);
#endif
// WiFi-Daten
char Router[] = "Router_SSID";
char Passwort[] = "xxxxxxxx";
int AnalogerPin = 35;
void setup()
{
Serial.begin(9600);
// auf serielle Verbindung warten
while (!Serial);
delay(1000);
// Verbindung aufbauen
WiFi.mode(WIFI_STA);
WiFi.begin(Router, Passwort);
while (WiFi.status() != WL_CONNECTED)
{
delay(200);
Serial.print(".");
}
// SSID des Routers anzeigen
Serial.println();
Serial.print("Verbunden mit ");
Serial.println(WiFi.SSID());
Serial.print("IP-Adresse: ");
Serial.println(WiFi.localIP());
// Webserver starten
Server.begin();
Server.on("/", SeiteBauen);
// beim Aufruf der URL /SeiteBauen
// Funktion SeiteBauen aufrufen
Server.on("/SeiteBauen", SeiteBauen);
}
void loop()
{
// auf Anfragen warten
Server.handleClient();
}
void SeiteBauen()
{
// Seite "zusammenbauen"
String Seite = "";
Seite += "<h1>Webserver gestartet</h1>";
Seite += "<hr>";
Seite += "Analoger Messwert an Pin " + String(AnalogerPin) + ": ";
Seite += analogRead(D2);
// Seite anzeigen
Server.send(200, "text/html", Seite);
}
Im Seriellen Monitor wird die IP-Adresse angezeigt, diese musst du in einem Browser deiner Wahl eingeben.


ESP als Webserver im AP-Modus verwenden
Als Klienten können alle WLAN-fähigen Geräte verwendet werden.
Manuelle Konfiguration des Klienten

Ein Smartphone sucht über das mobile Netz im Internet nach der IP-Adresse des ESPServers (192.168.4.1), das ist natürlich nicht gewünscht. Verwende stattdessen http://192.168.4.1
Den Klienten werden keine IP-Adressen automatisch zugeteilt. Daher muss die Konfiguration händisch erledigt werden.
Zunächst musst du das als "ESPServer" angezeigte WLAN auswählen und anschließend die Konfiguration anpassen.
Wenn du mehrere Klienten verwenden willst, musst du jeweils eine andere IP-Adresse verwenden (z. B. 192.168.4.5). Die Adresse des Routers bleibt unverändert.
iOS
Android
Windows 10



Das Programm
Das Programm fragt den Wert an einem analogen Port ab, in diesem Fall den Pin 35 an einem ESP32-Wroom. Für andere Mikrocontroller musst du die Nummer des Pins anpassen.
#ifdef ESP8266
#include "ESP8266WebServer.h"
ESP8266WebServer Server(80);
#else
#include "WiFi.h"
#include "WebServer.h"
WebServer Server(80);
#endif
// Netzwerkname und Passwort des ESP
char Router[] = "ESPServer";
char Passwort[] = "espserver";
// Konfiguration als Server und Klient
IPAddress ip(192, 168, 4, 1);
IPAddress gateway(192, 168, 4, 1);
IPAddress subnet(255, 255, 255, 0);
void setup()
{
Serial.begin(9600);
// auf serielle Verbindung warten
while (!Serial);
delay(1000);
// ESP als Access-Point (AP) konfigurieren
WiFi.mode(WIFI_AP);
WiFi.softAPConfig(ip, gateway, subnet);
// Access-Point starten
WiFi.softAP(Router, Passwort);
// SSID des Routers anzeigen
Serial.println();
Serial.print("Verbunden mit ");
Serial.println(WiFi.softAPSSID());
Serial.print("IP-Adresse: ");
Serial.println(WiFi.softAPIP());
// Webserver starten
Server.begin();
// beim Aufruf der URL /SeiteBauen
// Funktion SeiteBauen aufrufen
Server.on("/", SeiteBauen);
}
void loop()
{
// auf Anfragen warten
Server.handleClient();
}
void SeiteBauen()
{
// Seite "zusammenbauen"
String Seite = "";
Seite += "<h1>Webserver gestartet</h1>";
Seite += "<hr>";
Seite += "Analoger Messwert an Pin 35: ";
Seite += analogRead(35);
// Seite anzeigen
Server.send(200, "text/html", Seite);
}
Letzte Aktualisierung: