Arduino - Webserver mit mehreren Seiten
In diesem Tutorial werden wir herausfinden, wie man einen Arduino in einen Webserver verwandelt, der mehrere Seiten gleichzeitig verarbeiten kann, wie zum Beispiel index.html, temperature.html, led.html, error_404.html, und error_405.html... Der Inhalt jeder Seite, einschließlich HTML, CSS und JavaScript, wird in verschiedenen Dateien in der Arduino IDE gespeichert. Indem Sie über einen Webbrowser auf Ihrem PC oder Smartphone auf den Arduino-Webserver zugreifen, können Sie Sensoren und Aktoren, die mit dem Arduino verbunden sind, über das Web anzeigen und steuern. Zusätzlich wird der Webserver so konzipiert, dass er Links mit oder ohne die .html-Erweiterung akzeptiert.

Wenn Sie dieser Anleitung folgen, können Sie Ihren Arduino in einen Webserver mit einigen coolen Funktionen verwandeln:
- Mehrere Webseiten sind gleichzeitig aktiv.
- Der HTML-Inhalt (einschließlich HTML, CSS und Javascript) jeder Seite wird separat in einer eigenen Datei gespeichert.
- Der HTML-Inhalt kann dynamisch mit Echtzeitwerten von Sensoren aktualisiert werden, wodurch die Webseiten dynamisch und responsiv werden.
- Sie können auf die Seiten mit oder ohne die .html-Erweiterung zugreifen. Zum Beispiel können Sie Links wie http://192.168.0.2/led oder http://192.168.0.2/led.html verwenden, um dieselbe LED-Steuerungsseite zu erreichen.
- Der Webserver verarbeitet HTTP-Fehlercodes wie 404 Not Found und 405 Method Not Allowed
Es mag kompliziert klingen, aber mach dir keine Sorgen! Dieses Tutorial bietet eine Schritt-für-Schritt-Anleitung, und der Code ist darauf ausgelegt, anfängerfreundlich zu sein, damit du deinen eigenen Arduino-Webserver leicht verstehen und erstellen kannst.
Erforderliche Hardware
Oder Sie können die folgenden Kits kaufen:
1 | × | DIYables STEM V4 IoT Starter-Kit (Arduino enthalten) | |
1 | × | DIYables Sensor-Kit (30 Sensoren/Displays) | |
1 | × | DIYables Sensor-Kit (18 Sensoren/Displays) |
Über Arduino Uno R4 und Webserver
Wenn Sie mit dem Arduino Uno R4 und dem Webserver (einschließlich Pinbelegung, Funktionsweise und Programmierung) nicht vertraut sind, können Sie durch die folgenden Tutorials mehr darüber erfahren:
Wie ein Webserver auf Arduino funktioniert
Wenn ein Webbrowser eine HTTP-Anfrage an das Arduino-Board sendet, muss das Arduino-Board so programmiert werden, dass es die folgenden Aufgaben ausführt:
- Erstelle einen Webserver, der HTTP-Anfragen vom Webbrowser entgegennimmt.
- Lies die erste Zeile des HTTP-Anforderungs-Headers, wenn eine HTTP-Anforderung eingeht.
- Leite die Anfragen basierend auf der ersten Zeile der HTTP-Anforderung weiter, um zu bestimmen, welche Webseiten der Arduino zurückgeben soll.
- (Optional) Analysiere den HTTP-Anforderungs-Header, um vom Benutzer gesendete Steuerbefehle zu identifizieren.
- (Optional) Steuere die mit dem Arduino verbundenen Geräte basierend auf den empfangenen Steuerbefehlen.
- Sende eine HTTP-Antwort zurück an den Webbrowser, die Folgendes enthält:
- Ein HTTP-Antwort-Header.
- Der HTTP-Antwortkörper, der HTML-Inhalt und (falls zutreffend) Sensordaten oder Gerätezustand enthält.
Durch die Ausführung dieser Aufgaben kann der Arduino HTTP-Anfragen effektiv verarbeiten und dem Webbrowser angemessene Antworten liefern, was eine webbasierte Steuerung und Interaktion mit den an den Arduino angeschlossenen Geräten ermöglicht.
Die Routing-Funktion ist die wichtigste Aufgabe, und sie wird im Detail erläutert. Andere Teile werden im Arduino - Web Server Tutorial behandelt. Sobald Sie den Routing-Algorithmus verstanden haben, fahren wir fort, den vollständigen Code für einen Webserver mit mehreren Seiten zu sehen.
Arduino Webserver - Routing-Algorithmus
Bevor Sie Code für die Routing-Funktion schreiben, sollten Sie eine Liste von Webseiten und den entsprechenden HTTP-Methoden erstellen, die für Arduino verfügbar sein werden. In diesem Tutorial unterstützen wir nur die GET-Methode. Sie können es jedoch leicht erweitern, um bei Bedarf auch andere HTTP-Methoden zu unterstützen. Hier ist eine Beispiel-Liste:
- GET Startseite
- GET Temperaturseite
- GET Türseite
- GET LED-Seite
Danach musst du eine Liste der ersten Zeilen der HTTP-Anforderungsheader erstellen, die der Seitenliste entsprechen:
- GET Startseite:
- GET /
- GET /index.html
- GET Temperaturseite:
- GET /temperature.html
- GET Türseite:
- GET /door
- GET LED-Seite:
- GET /led.html
Zusammenfassend haben wir die folgende Liste:
Arduino-Code - Webserver mit mehreren Seiten
Im Folgenden finden Sie den vollständigen Arduino-Code, der einen Webserver mit mehreren Seiten erstellt. Um es einfach zu halten, ist der HTML-Inhalt jeder Seite sehr einfach und direkt im Arduino-Code eingebettet. Im nächsten Teil werden wir lernen, wie wir die HTML-Inhalte jeder Seite in separate Dateien aufteilen, wodurch der Code besser organisiert und leichter zu verwalten ist.
Schnelle Schritte
- Wenn dies das erste Mal ist, dass Sie Arduino Uno R4 verwenden, sehen Sie sich wie man die Umgebung für Arduino Uno R4 in der Arduino IDE einrichtet an.
- Öffnen Sie den Bibliotheks-Manager, indem Sie auf das Bibliotheks-Manager-Symbol auf der linken Seite der Arduino IDE klicken.
- Suchen Sie nach Webserver für Arduino Uno R4 WiFi und finden Sie die von DIYables erstellte Webserver-Bibliothek.
- Klicken Sie auf die Installieren-Schaltfläche, um die Webserver-Bibliothek hinzuzufügen.

- Kopieren Sie den obigen Code und öffnen Sie ihn in der Arduino IDE
- Ändern Sie im Code die WLAN-Informationen (SSID und Passwort) auf Ihre eigenen WLAN-Informationen
- Klicken Sie auf die Schaltfläche Hochladen in der Arduino IDE, um den Code auf den Arduino zu übertragen
- Öffnen Sie den seriellen Monitor
- Überprüfen Sie das Ergebnis im seriellen Monitor
- Sie sehen eine IP-Adresse im Seriellen Monitor, zum Beispiel: 192.168.0.2
- Geben Sie nacheinander die folgende Liste in die Adresszeile eines Webbrowsers auf Ihrem Smartphone oder PC ein.
- Bitte beachten Sie, dass Sie die 192.168.0.2 durch die IP-Adresse ersetzen müssen, die Sie im Serial Monitor erhalten haben.
- Sie werden die folgenden Seiten sehen: Startseite, LED-Seite, Tür-Seite, Temperatur-Seite und die Seite 'Nicht gefunden'.
- Sie können die Ausgabe auch im Serial Monitor überprüfen.
Der vorherige Code enthält für jede Seite sehr einfachen HTML-Inhalt. Aber wenn wir eine schicke Benutzeroberfläche mit viel HTML erstellen möchten, kann der Code groß und unübersichtlich werden. Um es einfacher zu machen, lernen wir, wie man das HTML vom Arduino-Code trennt. So können wir das HTML in separaten Dateien halten, was die Verwaltung und die Arbeit damit erleichtert.
Arduino-Code – Vollständiger Mehrseiten-Webserver
- Öffnen Sie die Arduino-IDE.
- Erstellen Sie einen neuen Sketch und geben Sie ihm einen Namen, zum Beispiel ArduinoWebServer.ino.
- Kopieren Sie den bereitgestellten Code und fügen Sie ihn in diese Datei ein.
- Passen Sie die WLAN-Informationen (SSID und Passwort) im Code an.
- Erstellen Sie die index.h-Datei in der Arduino-IDE folgendermaßen:
- Entweder klicken Sie direkt unter dem Symbol des seriellen Monitors auf die Schaltfläche und wählen Sie Neue Registerkarte, oder verwenden Sie die Tasten Ctrl+Shift+N.
- Geben Sie den Dateinamen index.h ein und klicken Sie auf die Schaltfläche OK
- Kopieren Sie den untenstehenden Code und fügen Sie ihn in die Datei index.h ein.
- Ebensfalls erstellen Sie die Datei temperature.h in der Arduino-IDE mit dem folgenden Inhalt.
- Ebenso erstellen Sie die Datei door.h in der Arduino IDE mit dem folgenden Inhalt.
- Analog dazu erstellen Sie die Datei led.h in der Arduino-IDE mit dem folgenden Inhalt.
- Analog dazu erstellen Sie die Datei error_404.h in der Arduino IDE mit dem folgenden Inhalt.
- Jetzt haben Sie mehrere Dateien in der Arduino-IDE wie unten:
- Klicken Sie auf die Schaltfläche Hochladen in der Arduino IDE, um Code auf den Arduino hochzuladen
- Greifen Sie wie zuvor nacheinander per Webbrowser auf die Webseiten des Arduino-Boards zu. Sie sehen alle Webseiten wie unten gezeigt:
- Wenn Sie Änderungen am HTML-Inhalt innerhalb der index.h-Datei vornehmen, aber in der ArduinoWebServer.ino-Datei nichts ändern, wird die Arduino IDE den HTML-Inhalt beim Kompilieren und Hochladen des Codes auf den ESP32 nicht aktualisieren oder neu laden.
- Um die Arduino IDE in dieser Situation dazu zu zwingen, den HTML-Inhalt zu aktualisieren, müssen Sie eine Änderung in der ArduinoWebServer.ino-Datei vornehmen. Zum Beispiel können Sie eine leere Zeile hinzufügen oder einen Kommentar einfügen. Diese Aktion veranlasst die IDE dazu festzustellen, dass Änderungen am Projekt vorgenommen wurden, und stellt sicher, dass Ihr aktualisierter HTML-Inhalt in den Upload aufgenommen wird.




※ Notiz: