ESP32 – Steuert Servomotor über das Web
Dieses Tutorial zeigt dir, wie du den ESP32 verwendest, um einen Servomotor über das Web von einem Browser auf deinem Smartphone oder PC aus zu steuern. Wir verwenden WebSocket, um den Servomotor über eine grafische Web-Benutzeroberfläche sanft und dynamisch zu steuern.
Das untenstehende Video ist eine Demonstration:
Nun, warum WebSocket verwenden? Hier ist die Idee:
- Ohne WebSocket musst du jedes Mal, wenn du den Winkel des Servos ändern möchtest, die Seite neu laden. Nicht so gut!
- Aber mit WebSocket richten wir eine spezielle Verbindung zwischen der Webseite und dem ESP32 ein. Das bedeutet, wir können den Winkelwert im Hintergrund an den ESP32 senden, ohne die Seite neu zu laden. Das Servo bewegt sich flüssig und in Echtzeit. Ziemlich cool, oder?
Lass uns anfangen!
Erforderliche Hardware
Oder Sie können die folgenden Kits kaufen:
1 | × | DIYables ESP32 Starter-Kit (ESP32 enthalten) | |
1 | × | DIYables Sensor-Kit (30 Sensoren/Displays) | |
1 | × | DIYables Sensor-Kit (18 Sensoren/Displays) |
Über Servomotor und WebSocket
Wir haben spezielle Tutorials zu Servomotoren und WebSocket. Jedes Tutorial enthält detaillierte Informationen und Schritt-für-Schritt-Anleitungen zur Pinbelegung, zum Funktionsprinzip, zur Verkabelung mit dem ESP32 und zum ESP32-Code... Erfahren Sie mehr darüber in den folgenden Links:
- ESP32 - Servo Motor tutorial
- ESP32 - WebSocket tutorial
Wie es funktioniert
Der ESP32-Code erstellt sowohl einen Webserver als auch einen WebSocket-Server. So funktioniert es:
- Wenn Sie die IP-Adresse des ESP32 in einen Webbrowser eingeben, fordert der ESP32 die Webseite (Benutzeroberfläche) vom ESP32 an.
- Der Webserver des ESP32 antwortet, indem er den Inhalt der Webseite (HTML, CSS, JavaScript) sendet.
- Ihr Webbrowser zeigt dann die Webseite an.
- Der JavaScript-Code in der Webseite stellt eine WebSocket-Verbindung zum WebSocket-Server auf dem ESP32 her.
- Sobald diese WebSocket-Verbindung hergestellt ist, sendet der JavaScript-Code, wenn Sie den Regler auf der Webseite drehen, den Winkelwert über diese WebSocket-Verbindung im Hintergrund an den ESP32.
- Der WebSocket-Server auf dem ESP32 steuert den Servomotor entsprechend dem empfangenen Winkelwert.
Kurz gesagt ermöglicht die WebSocket-Verbindung die nahtlose Echtzeitsteuerung des Servomotorwinkels.
Verdrahtungsdiagramm zwischen Servomotor und ESP32

Dieses Bild wurde mit Fritzing erstellt. Klicken Sie, um das Bild zu vergrößern.
Wenn Sie nicht wissen, wie Sie ESP32 und andere Komponenten mit Strom versorgen, finden Sie Anleitungen im folgenden Tutorial: Wie man ESP32 mit Strom versorgt.
Aus Gründen der Einfachheit wird das oben gezeigte Verdrahtungsdiagramm zu Test- oder Lernzwecken sowie für einen Servomotor mit geringem Drehmoment verwendet. In der Praxis empfehlen wir dringend die Verwendung einer externen Stromversorgung für den Servomotor. Das unten gezeigte Verdrahtungsdiagramm zeigt, wie der Servomotor an eine externe Stromquelle angeschlossen wird.

Dieses Bild wurde mit Fritzing erstellt. Klicken Sie, um das Bild zu vergrößern.
Nachstehend wird eine echte Verdrahtung zwischen Servomotor und ESP32 gezeigt.

ESP32-Code
Der Inhalt der Webseite (HTML, CSS, JavaScript) wird separat in einer index.h-Datei gespeichert. Daher werden wir zwei Code-Dateien in der Arduino-IDE haben:
- Eine .ino-Datei, die ESP32-Code enthält und einen Webserver sowie einen WebSocket-Server erstellt und einen Servo-Motor steuert
- Eine .h-Datei, die den Webseiteninhalt enthält
Schnelle Schritte
- Wenn Sie ESP32 zum ersten Mal verwenden, sehen Sie sich an, wie Sie die Umgebung für ESP32 in der Arduino IDE einrichten wie man die Umgebung für ESP32 in der Arduino IDE einrichtet.
- Schließen Sie die Verkabelung wie im obigen Bild an.
- Schließen Sie das ESP32-Board über ein Micro-USB-Kabel an Ihren PC an.
- Öffnen Sie die Arduino IDE auf Ihrem PC.
- Wählen Sie das richtige ESP32-Board (z. B. ESP32 Dev Module) und den COM-Port aus.
- Öffnen Sie den Library Manager-Bereich, indem Sie auf das Symbol in der linken Navigationsleiste der Arduino IDE klicken.
- Suchen Sie “ESPAsyncWebServer”, und finden Sie den von lacamera erstellten ESPAsyncWebServer.
- Klicken Sie auf die Schaltfläche Install, um die ESPAsyncWebServer-Bibliothek zu installieren.

- Sie werden aufgefordert, die Abhängigkeit zu installieren. Klicken Sie auf die Schaltfläche Alle installieren.

- Suche “WebSockets”, und finde anschließend die von Markus Sattler erstellte WebSockets-Bibliothek.
- Klicke auf die Schaltfläche Installieren, um die WebSockets-Bibliothek zu installieren.

- Geben Sie ServoESP32 in das Suchfeld ein, dann suchen Sie nach der Servo-Bibliothek von Jaroslav Paral. Bitte beachten Sie, dass sowohl Version 1.1.1 als auch 1.1.0 von Fehlern betroffen sind. Bitte wählen Sie eine andere Version.
- Klicken Sie auf die Schaltfläche Install, um die Servo-Motor-Bibliothek für den ESP32 zu installieren.

- In der Arduino-IDE erstelle eine neue Skizze, gib ihr einen Namen, zum Beispiel newbiely.com.ino
- Kopiere den untenstehenden Code und öffne ihn mit der Arduino-IDE
- Ändern Sie die WLAN-Informationen (SSID und Passwort) im Code, damit sie zu Ihren eigenen Netzwerkanmeldeinformationen passen.
- Erstellen Sie die Datei index.h in der Arduino-IDE durch:
- Entweder klicken Sie auf den Button direkt unter dem Symbol des Serial Monitors und wählen Sie Neuer Tab, oder verwenden Sie die Tasten Ctrl+Shift+N.
- Gib den Dateinamen index.h ein und klicke auf die OK Schaltfläche
- Kopieren Sie den untenstehenden Code und fügen Sie ihn in die index.h ein.
- Jetzt hast du den Code in zwei Dateien: newbiely.com.ino und index.h
- Klicke auf die Upload-Schaltfläche in der Arduino-IDE, um den Code auf den ESP32 hochzuladen
- Öffne den Serial Monitor
- Schau dir das Ergebnis im Serial Monitor an.
- Notieren Sie sich die angezeigte IP-Adresse und geben Sie diese Adresse in die Adresszeile eines Webbrowsers auf Ihrem Smartphone oder PC ein.
- Sie sehen die folgende Webseite wie unten dargestellt:
- Der JavaScript-Code der Webseite erstellt automatisch die WebSocket-Verbindung zum ESP32.
- Jetzt können Sie den Winkel des Servomotors über die Weboberfläche steuern.
- Wenn Sie den HTML-Inhalt in der index.h-Datei ändern und nichts in der newbiely.com.ino-Datei ändern, wird beim Kompilieren und Hochladen des Codes auf ESP32 die Arduino IDE den HTML-Inhalt nicht aktualisieren.
- Um in diesem Fall sicherzustellen, dass die Arduino IDE den HTML-Inhalt aktualisiert, nehmen Sie eine Änderung in der newbiely.com.ino-Datei vor (z. B. eine leere Zeile hinzufügen, einen Kommentar hinzufügen ....)



Um den Speicher des ESP32 zu schonen, werden die Bilder des Servomotors NICHT im ESP32 gespeichert. Stattdessen werden sie im Internet gespeichert, daher muss Ihr Telefon oder PC eine Internetverbindung haben, um die Bilder für die Websteuerungsseite zu laden.
※ Notiz:
Zeile für Zeile Code-Erklärung
Der obige ESP32-Code enthält eine zeilenweise Erklärung. Bitte lesen Sie die Kommentare im Code!