ESP32 WebRTC-Beispiel – Tutorial zur Echtzeituhr-Schnittstelle
Überblick
Das WebRTC-Beispiel bietet eine umfassende Echtzeituhr-Schnittstelle für Ihre ESP32-Projekte. Entworfen für die ESP32-Bildungsplattform, mit integrierten RTC-Funktionen, erweiterten Funktionen zur Zeitverwaltung und nahtloser Integration in das Bildungsökosystem. Sie können Informationen zur Echtzeituhr anzeigen, die Zeit vom Webbrowser zum Arduino synchronisieren und Zeitunterschiede über eine intuitive Weboberfläche überwachen.

Funktionen
- Echtzeit-Uhranzeige: Zeigt die aktuelle ESP32 RTC-Zeit mit automatischen Aktualisierungen
- Gerätezeit-Vergleich: Zeigt die Zeit des Webbrowsers bzw. des Geräts neben der ESP32-Zeit an
- Ein-Klick-Zeitabgleich: Synchronisiert ESP32 RTC-Zeit sofort mit der Zeit des Webbrowsers
- Visueller Zeitdifferenz-Indikator: Zeigt die Zeitabweichung zwischen den Geräten in Minuten
- Zweizeilen-Zeitformat: 12-Stunden-Format mit AM/PM und vollständiger Datumsanzeige
- Moderne Gradient-UI: Kartenlayout mit responsivem Design
- WebSocket-Kommunikation: Echtzeit bidirektionale Updates ohne Seitenaktualisierung
- Zeitzonenbewusste Synchronisierung: Verwendet die lokale Gerätezeit für eine genaue Synchronisierung
- Verbindungsstatusüberwachung: Visuelle Indikatoren für den WebSocket-Verbindungsstatus
- Automatische Zeitabfragen: Fordert beim Laden der Seite die aktuelle ESP32-Zeit an
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) |
Verdrahtungsdiagramm

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.
ESP32 - DS3231 RTC-Modul
| DS1307 RTC Module | ESP32 |
|---|---|
| Vin | 3.3V |
| GND | GND |
| SDA | GPIO21 |
| SCL | GPIO22 |
Schnelle Schritte
Folgen Sie diesen Anweisungen Schritt für Schritt:
- Wenn dies das erste Mal ist, dass Sie den ESP32 verwenden, lesen Sie das Tutorial zur Einrichtung der ESP32-Umgebung in der Arduino-IDE Einrichtung der ESP32-Umgebung in der Arduino-IDE.
- Verbinden Sie das ESP32-Board mit Ihrem Computer über ein USB-Kabel.
- Starten Sie die Arduino-IDE auf Ihrem Computer.
- Wählen Sie das passende ESP32-Board (z. B. ESP32 Dev Module) und den COM-Port aus.
- Navigieren Sie zum Bibliotheken-Symbol in der linken Leiste der Arduino IDE.
- Suchen Sie "DIYables ESP32 WebApps", dann finden Sie die DIYables ESP32 WebApps-Bibliothek von DIYables.
- Klicken Sie auf die Schaltfläche Installieren, um die Bibliothek zu installieren.

- Sie werden aufgefordert, einige weitere Bibliotheksabhängigkeiten zu installieren.
- Klicken Sie auf die Schaltfläche Alle installieren, um alle Bibliotheksabhängigkeiten zu installieren.

- Suchen Sie nach „RTClib“, dann finden Sie die RTC-Bibliothek von Adafruit
- Klicken Sie auf die Schaltfläche Installieren, um die RTC-Bibliothek zu installieren.

- Sie werden möglicherweise aufgefordert, Abhängigkeiten für die Bibliothek zu installieren
- Installieren Sie alle Abhängigkeiten für die Bibliothek, indem Sie auf die Schaltfläche Alle installieren klicken.

- Verbinden Sie das DS3231 RTC-Modul mit Ihrem ESP32:
- VCC auf 3,3 V oder 5 V
- GND zu GND
- SDA an GPIO 21 (Standard-I2C-SDA-Pin)
- SCL auf GPIO 22 (Standard-I2C-SCL-Pin)
- In der Arduino-IDE gehen Sie zu Datei Beispiele DIYables ESP32 WebApps WebRTC Beispiel, oder kopieren Sie den obigen Code und fügen ihn in den Editor der Arduino-IDE ein
- Konfigurieren Sie die WiFi-Zugangsdaten im Code, indem Sie diese Zeilen aktualisieren:
- Klicken Sie auf die Upload-Schaltfläche in der Arduino-IDE, um den Code auf Arduino hochzuladen.
- Öffnen Sie den Serial Monitor in der Arduino-IDE
- Warten Sie auf die Verbindung zum WLAN und auf die Ausgaben der WLAN-Informationen im Serial Monitor.
- Schauen Sie sich das Ergebnis im Serial Monitor an. Es sieht wie folgt aus
- Wenn Sie nichts sehen, starten Sie das ESP32-Board neu.
Die Weboberfläche verwenden
- Öffnen Sie einen Webbrowser auf Ihrem Computer oder Mobilgerät, das mit demselben WLAN-Netzwerk verbunden ist.
- Geben Sie die im Serial Monitor angezeigte IP-Adresse in den Webbrowser ein.
- Beispiel: http://192.168.1.100
- Sie sehen die Startseite wie im folgenden Bild:

- Klicken Sie auf den WebRTC-Link; Sie sehen die Benutzeroberfläche der WebRTC-App wie unten:

- Oder können Sie die Seite auch direkt über die IP-Adresse mit dem Pfad '/web-rtc' aufrufen. Zum Beispiel: http://192.168.1.100/web-rtc
- Sie sehen die WebRTC-Oberfläche, die Folgendes zeigt:
- Arduino-Zeit: Aktuelle Uhrzeit vom RTC des Arduino
- Uhrzeit Ihres Geräts: Die aktuelle Zeit von Ihrem Webbrowser/Gerät
- Zeitunterschied: Unterschied zwischen den beiden Zeiten in Minuten
- ESP32-Zeitsynchronisationsknopf: Klicken Sie, um die ESP32-Zeit mit Ihrem Gerät zu synchronisieren.
Zeitsynchronisation
- Klicken Sie auf die "ESP32-Zeit synchronisieren" Schaltfläche, um die RTC des Arduino mit der lokalen Zeit Ihres Geräts zu synchronisieren

- Der Synchronisationsprozess:
- Ermittelt die aktuelle lokale Zeit Ihres Geräts (nicht UTC)
- Berücksichtigt den Zeitzonenoffset, um eine genaue Synchronisierung der lokalen Zeit sicherzustellen
- Sendet Zeitstempel über WebSocket an den Arduino
- Arduino aktualisiert sein RTC mit der empfangenen Zeit
- Aktualisiert die Weboberfläche, um die synchronisierte Zeit anzuzeigen
Code-Erklärung
Schlüsselkomponenten
Setup-Funktion
Callback-Funktionen
Zeitabgleich-Callback:
Zeitabfrage-Callback:
Hauptschleife
API-Methoden
DIYablesWebRTCPage Klassenmethoden
onTimeSyncFromWeb(callback)
- Setzt die Callback-Funktion fest, um die Zeitsynchronisation aus dem Webbrowser zu behandeln
- Parameter: void (*callback)(unsigned long unixTimestamp)
- Verwendung: Wird aufgerufen, wenn der Benutzer auf die Schaltfläche „Sync ESP32 Time“ klickt
termingerechteAnfrageAnWeb(callback)
- Setzt die Callback-Funktion, um Zeitabfragen vom Webbrowser zu behandeln
- Parameter: void (*callback)()
- Verwendung: Wird aufgerufen, wenn die Weboberfläche die aktuelle ESP32-Zeit anfordert
sendTimeToWeb(jahr, monat, tag, stunde, minute, sekunde)
- Sendet die aktuelle Zeit des ESP32 an die Weboberfläche
- Parameter:
- year: Aktuelles Jahr (z. B. 2025)
- monat: Aktueller Monat (1-12)
- Tag: Aktueller Tag des Monats (1-31)
- Stunde: aktuelle Stunde (0-23)
- minute: Aktuelle Minute (0-59)
- second: Aktuelle Sekunde (0-59)
WebSocket-Kommunikation
Nachrichten vom Web an Arduino
- RTC:GET_TIME - Aktuelle ESP32-Uhrzeit abrufen
- RTC:SYNC:[timestamp] - ESP32-Uhrzeit mit Unix-Zeitstempel synchronisieren
Nachrichten vom ESP32 zum Web
- DATETIME:YYYY,MM,DD,HH,MM,SS - Sende die aktuellen ESP32-Zeitkomponenten
Fehlerbehebung
Häufige Probleme
- Zeitunterschied von mehreren Stunden
- Problem: Die ESP32-Uhr zeigt eine Zeit, die um mehrere Stunden von der Gerätezzeit abweicht
- Ursache: Normalerweise ein Zeitzonenproblem oder eine RTC, die nicht ordnungsgemäß initialisiert ist
- Lösung:
- Klicken Sie auf die Schaltfläche "Sync ESP32 Time", um die Zeit erneut zu synchronisieren.
- Überprüfe, ob RTC in setup() ordnungsgemäß initialisiert ist.
- Überprüfen Sie, ob die WLAN-Verbindung stabil ist.
- "RTC-Modul NICHT gefunden" Fehler
- Problem: RTC-Modul während der Initialisierung nicht erkannt
- Ursache: DS3231-Modul nicht ordnungsgemäß verbunden oder defekt
- Lösung:
- Überprüfe die I2C-Verkabelung (SDA an GPIO 21, SCL an GPIO 22)
- Überprüfen Sie die Stromanschlüsse (VCC auf 3,3 V/5 V, GND auf GND)
- Mit dem I2C-Scanner testen, um die Moduladresse zu ermitteln
- Versuchen Sie verschiedene DS3231-Module, falls verfügbar.
3. "Nicht mit Arduino verbunden" Fehler
- Problem: Fehler beim Klicken auf die Sync-Schaltfläche
- Ursache: WebSocket-Verbindung ist fehlgeschlagen
- Lösung:
- Überprüfen Sie, ob die ESP32-IP-Adresse korrekt ist.
Webseite neu laden
- Prüfe, ob der ESP32 mit demselben WLAN-Netzwerk verbunden ist
- Firewall-Einstellungen überprüfen
3. Die Zeit hört auf, sich zu aktualisieren
- Problem: Die Zeitanzeige friert ein oder aktualisiert sich nicht mehr
- Ursache: WebSocket-Verbindung verloren oder RTC gestoppt
- Lösung:
- Seite aktualisieren
- WebSocket-Verbindungsstatus überprüfen
- Starte den ESP32 neu, falls das RTC nicht mehr reagiert.
4. Große Zeitunterschiede (Tage/Monate)
- Problem: Die Zeitdifferenz beträgt Tausende von Minuten
- Ursache: Das RTC wurde nicht richtig eingestellt oder hat sich deutlich verschoben
- Lösung: Klicken Sie mehrmals auf die Synchronisieren-Schaltfläche und überprüfen Sie die Callback-Funktionen
Tipps zum Debuggen
Serielles Debugging aktivieren:
RTC-Initialisierung überprüfen:
Fortgeschrittene Nutzung
Datenprotokollierung mit Zeitstempeln
Geplante Aktionen
Integration mehrerer Webanwendungen
Anwendungen und Anwendungsfälle
Bildungsprojekte
- Zeitmanagement lernen: Vermitteln Sie den Schülerinnen und Schülern RTC, Zeitmessung und Synchronisation
- IoT-Zeitkonzepte: Demonstrieren Sie die Netzwerkzeitsynchronisation in IoT-Systemen
- Datenlogging-Projekte: Sensorwerte und Experimente mit Zeitstempeln versehen
- Terminplanungssysteme: Erstellen Sie zeitbasierte Automatisierungs- und Steuerungssysteme
Anwendungen in der realen Welt
- Hausautomatisierung: Zeitpläne für Beleuchtung, Bewässerung oder andere Geräte festlegen
- Datenerfassung: Sensorwerte mit Zeitstempeln für die Analyse erfassen
- Ereignisprotokollierung: Aufzeichnen, wann bestimmte Ereignisse auftreten, mit präzisem Timing
- Fernüberwachung: Den Gerätezustand und die letzten Aktualisierungszeiten aus der Ferne prüfen
Vorteile der MINT-Bildung
- Zeitzonen-Konzepte: Verstehen der lokalen Zeit im Vergleich zu UTC und der Zeitzonen-Handhabung
- Netzwerkkommunikation: Erlernen der WebSocket-Kommunikation und Echtzeit-Updates
- Hardware-Integration: Weboberflächen mit Hardware-RTC-Funktionalität verbinden
- Problemlösung: Timing-Probleme und Synchronisationsprobleme debuggen
Technische Spezifikationen
Speicherverbrauch
- Flash-Speicher: ca. 8 KB für WebRTC-Funktionalität
- SRAM: ca. 2 KB während des Betriebs
- WebSocket-Puffer: ca. 1 KB für die Nachrichtenverarbeitung
Leistungsmerkmale
- Aktualisierungsfrequenz: Echtzeit-Updates über WebSocket
- Genauigkeit der Synchronisation: Typischerweise innerhalb von 1–2 Sekunden
- Netzwerk-Overhead: ~50 Bytes pro Zeitaktualisierungsnachricht
- Antwortzeit: <100 ms für Zeitabgleich-Operationen
Kompatibilität
- ESP32-Boards: ESP32, ESP32 Web-Apps
- Webbrowser: Alle modernen Webbrowser mit WebSocket-Unterstützung
- Geräte: Desktop-, Tablet- und Mobilgeräte
- Netzwerke: WiFi-Netzwerke mit Internetzugang
Zusammenfassung
Das WebRTC-Beispiel demonstriert, wie man:
- Eine webbasierte Echtzeituhr-Schnittstelle erstellen
- Die RTC des ESP32 mit der Zeit des Webbrowsers synchronisieren
- Zeitinformationen in einem benutzerfreundlichen Format anzeigen
- Zeitdifferenzen und Verbindungsstatus überwachen
- Zeitfunktionen in andere Webanwendungen integrieren
- Bildungsorientierte IoT-Projekte mit Zeitmanagement-Funktionen entwickeln
Dieses Beispiel eignet sich hervorragend für Projekte, die eine genaue Zeiterfassung, Datenprotokollierung mit Zeitstempeln, geplante Automatisierung und lehrreiche Demonstrationen der Konzepte der Zeit-Synchronisation in IoT-Systemen erfordern.