ESP32-Webserver mit Arduino IDE

Esp32 Webserver Mit Arduino Ide



ESP32 ist ein Mikrocontroller-Board, das über seine GPIO-Pins eine Verbindung zu mehreren Geräten herstellen kann. Es verfügt über einen Dual-Core-Prozessor mit integrierter WLAN- und Bluetooth-Schnittstelle. Beide Eigenschaften machen ESP32 zu einem geeigneten Board für die Gestaltung von IoT-Projekten. Eines der Hauptmerkmale des ESP32-Boards ist seine Fähigkeit, sich mit dem vorhandenen Access Point zu verbinden. Darüber hinaus kann es auch einen eigenen Zugangspunkt erstellen, sodass sich andere Geräte mit ihm verbinden können.

In diesem ESP32-Artikel werden wir untersuchen, wie wir ein ESP32-Board mit einem Zugangspunkt verbinden und seinen Webserver entwerfen können. Über diesen Webserver steuern wir LEDs und Wechselstromgeräte mithilfe eines Relaismoduls.

Inhalt:

1. ESP32-Webserver

Der Webserver verfügt über ein spezielles Programm, das Webseiten verarbeiten und an Web-Clients senden kann. Um eine Website zu öffnen, verwenden wir einen Webbrowser. Dieser Webbrowser wird auch Webclient genannt. Die Website, die Sie sehen möchten, wird auf einem anderen Computer, einem sogenannten Webserver, gespeichert.







Um miteinander zu kommunizieren, verwenden Webserver und Webclient eine gemeinsame Sprache namens HTTP. So funktioniert es: Der Webclient fragt den Webserver per HTTP-Anfrage nach einer Webseite. Der Webserver sendet die angeforderte Webseite zurück. Wenn die Webseite nicht vorhanden ist, wird eine Fehlermeldung angezeigt.



In ESP32 können wir einen Webserver entwerfen, da ESP32 nicht nur über ein Netzwerk eine Verbindung zu anderen Geräten herstellen, sondern auch seinen Webserver erstellen und auf die empfangenen Anfragen antworten kann. Dies alles ist möglich, weil der ESP32 in drei verschiedenen Modi arbeiten kann:



  • Bahnhof
  • Zugangspunkt
  • Sowohl Station als auch Zugangspunkt

Sie können diesen Artikel lesen, um einen Einblick in alle drei Modi von ESP32 zu erhalten:





So richten Sie einen ESP32 Access Point (AP) mithilfe der Arduino IDE ein

2. So erstellen Sie einen ESP32-Webserver mit der Arduino IDE

Um einen ESP32-Webserver mit der Arduino IDE zu erstellen, können Sie ESP32 mit einem Access Point verbinden und eine IP-Adresse für den Webserver generieren. Sie können HTML und CSS anwenden, um Ihre Serverschnittstelle zu entwerfen.



Sobald Sie die Funktionsweise des ESP32-Zugangspunkts verstanden haben, können Sie mithilfe des Arduino-IDE-Codes ganz einfach einen ESP32-Webserver entwerfen. Der ESP32-Webservercode verwendet die ESP32-Wi-Fi-Bibliothek. Dies erleichtert uns die Arbeit, da diese Bibliothek alle wichtigen Funktionen enthält, die für die Anbindung von ESP32 an einen Access Point benötigt werden.

Lassen Sie uns einen ESP32-Webserver mit Arduino-IDE-Code entwerfen.

3. ESP32-Webservercode

Der ESP32-Webservercode umfasst die ESP32-Verbindung mit dem Zugangspunkt und das Abrufen der IP-Adresse für den Server. Sobald Sie die IP-Adresse erhalten haben, müssen Sie sich mit demselben Netzwerk verbinden, um auf den ESP32-Webserver zuzugreifen. Von dort aus können Sie LEDs und andere Geräte steuern.

Öffnen Sie die Arduino IDE und verbinden Sie Ihr ESP32-Board damit:

Installieren des ESP32-Boards in der Arduino IDE

Sobald das ESP32-Board angeschlossen ist, laden Sie den folgenden Code auf Ihr Board hoch.

/******************

Linuxhint.com
ESP32-Webserver zur Steuerung von LEDs

**************/
// Importieren Sie die Bibliothek für WiFi Verbindung
#include
// Geben Sie Ihren WLAN-Namen und Ihr Passwort ein
const char * ssid = „ESP32“ ;
const char * Passwort = „123456789“ ;
// Wählen Sie die Portnummer für Der Webserver
WiFiServer-Server ( 80 ) ;
// Erstellen Sie eine Variable zum Speichern der Webanfrage
String-Header;
// Erstellen Sie Variablen, um den Status der Ausgänge zu speichern
String-Ausgabe26State = 'AUS' ;
String-Ausgabe27State = 'AUS' ;
// Weisen Sie den Variablen die Ausgangspins zu
const int Ausgabe26 = 26 ;
const int Ausgabe27 = 27 ;
unsigned long currentTime = Millis ( ) ;
unsigned long previousTime = 0 ;
// Wählen Sie das Zeit Grenze für die Webanfrage In Millisekunden
const long timeoutTime = 2000 ;
ungültiges Setup ( ) {
Serial.begin ( 115200 ) ;
// Legen Sie die Ausgangspins fest als Ausgänge
​ pinMode ( Ausgang26, AUSGANG ) ;
​ pinMode ( Ausgang27, AUSGANG ) ;
// Schalten Sie die Ausgänge aus
digitalWrite ( Ausgang26, LOW ) ;
digitalWrite ( Ausgang27, LOW ) ;
// Stellen Sie eine Verbindung zum Wi-Fi-Netzwerk her
Seriendruck ( 'Verbinden mit ' ) ;
Serial.println ( SSID ) ;
WiFi.beginnen ( SSID, Passwort ) ;
// Warten bis Die Verbindung wird hergestellt
während ( WLAN-Status ( ) ! = WL_CONNECTED ) {
Verzögerung ( 500 ) ;
Seriendruck ( '.' ) ;
}
Serial.println ( „“ ) ;
Serial.println ( „WiFi verbunden.“ ) ;
Serial.println ( 'IP Adresse: ' ) ;
Serial.println ( WiFi.localIP ( ) ) ;
server.begin ( ) ;
}

Leere Schleife ( ) {
WiFiClient-Client = server.available ( ) ; // Überprüfen für neue Kunden
Wenn ( Klient ) { // Wenn ein Client verbunden ist,
currentTime = Millis ( ) ;
previousTime = currentTime;
Serial.println ( 'Neuer Kunde.' ) ; // Benachrichtigen Sie den seriellen Port
String currentLine = „“ ; // Erstellen Sie einen String zum Speichern der Clientdaten
während ( Client.verbunden ( ) && currentTime - previousTime = 0 ) {
Serial.println ( „GPIO 26 an“ ) ;
Ausgabe26State = 'AN' ;
digitalWrite ( Ausgang26, HIGH ) ;
} anders Wenn ( header.indexOf ( „GET /26/off“ ) > = 0 ) {
Serial.println ( „GPIO 26 aus“ ) ;
Ausgabe26State = 'AUS' ;
digitalWrite ( Ausgang26, LOW ) ;
} anders Wenn ( header.indexOf ( „GET /27/on“ ) > = 0 ) {
Serial.println ( „GPIO 27 an“ ) ;
Ausgabe27State = 'AN' ;
digitalWrite ( Ausgang27, HIGH ) ;
} anders Wenn ( header.indexOf ( „GET /27/off“ ) > = 0 ) {
Serial.println ( „GPIO 27 aus“ ) ;
Ausgabe27State = 'AUS' ;
digitalWrite ( Ausgang27, LOW ) ;
}

client.println ( „“ ) ;
client.println ( ' ) ;
// Übergangseffekt für die Knöpfe
client.println ( „.button, .button2 {transition: alle 0,3 Sekunden Ease-in-out;}“ ) ;
// Abgerundete Knöpfe
client.println ( '.button, .button2 {border-radius: 50%;}' ) ;
// Titel der Webseite
client.println (

ESP32-Webserver

');

// Zeigen Sie den Status und die Schaltflächen an für GPIO 26
client.println ( '



' ) ;
// Zeigen Sie die Schaltfläche „EIN“ an Wenn Der Zustand ist AUS
Wenn ( Ausgabe26Status == 'AUS' ) {
client.println ( '