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.

Arduino WebRTC-Beispiel – RTC-Schnittstelle Tutorial

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

1×ESP32 ESP-WROOM-32 Entwicklungsmodul
1×USB-Kabel Typ-A zu Typ-C (für USB-A PC)
1×USB-Kabel Typ-C zu Typ-C (für USB-C PC)
1×DS3231 Echtzeituhr(RTC)-Modul
1×CR2032 Batterie
1×Verbindungskabel
1×Breadboard
1×(Empfohlen) Schraubklemmen-Erweiterungsboard für ESP32
1×(Empfohlen) Breakout Expansion Board for ESP32
1×(Empfohlen) Stromverteiler für ESP32

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)
Offenlegung: Einige der in diesem Abschnitt bereitgestellten Links sind Amazon-Affiliate-Links. Wir können eine Provision für Käufe erhalten, die über diese Links getätigt werden, ohne zusätzliche Kosten für Sie. Wir schätzen Ihre Unterstützung.

Verdrahtungsdiagramm

ESP32 Echtzeituhr DS3231 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.
DIYables ESP32 WebApps-Bibliothek
  • Sie werden aufgefordert, einige weitere Bibliotheksabhängigkeiten zu installieren.
  • Klicken Sie auf die Schaltfläche Alle installieren, um alle Bibliotheksabhängigkeiten zu installieren.
DIYables ESP32 WebApps-Abhängigkeit
  • 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.
ESP32 RTC-Bibliothek
  • 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.
ESP32 Adafruit BusIO-Bibliothek
  • 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
/* * DIYables WebApp Library - Web RTC Example * * This example demonstrates the Web RTC feature: * - Real-time clock display for both ESP32 and client device * - One-click time synchronization from web browser to ESP32 * - Hardware RTC integration for persistent timekeeping * - Visual time difference monitoring * * Hardware Required: * - ESP32 development board * - DS3231 RTC module (connected via I2C) * * Required Libraries: * - RTClib library (install via Library Manager) * * Setup: * 1. Connect DS3231 RTC module to ESP32 I2C pins (SDA/SCL) * 2. Install RTClib library in Arduino IDE * 3. Update WiFi credentials below * 4. Upload the sketch to your ESP32 * 5. Open Serial Monitor to see the IP address * 6. Navigate to http://[IP_ADDRESS]/web-rtc */ #include <DIYables_ESP32_Platform.h> #include <DIYablesWebApps.h> #include <RTClib.h> // RTC object RTC_DS3231 rtc; char daysOfWeek[7][12] = { "Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday" }; // WiFi credentials - UPDATE THESE WITH YOUR NETWORK const char WIFI_SSID[] = "YOUR_WIFI_SSID"; const char WIFI_PASSWORD[] = "YOUR_WIFI_PASSWORD"; // Create WebApp server and page instances ESP32ServerFactory serverFactory; DIYablesWebAppServer webAppsServer(serverFactory, 80, 81); DIYablesHomePage homePage; DIYablesWebRTCPage webRTCPage; void setup() { Serial.begin(9600); delay(1000); Serial.println("DIYables ESP32 WebApp - Web RTC Example"); // Initialize RTC if (!rtc.begin()) { Serial.println("RTC module is NOT found"); Serial.flush(); while (1); } // Check if RTC lost power and if so, set the time if (rtc.lostPower()) { Serial.println("RTC lost power, setting time!"); // When time needs to be set on a new device, or after a power loss, the // following line sets the RTC to the date & time this sketch was compiled rtc.adjust(DateTime(F(__DATE__), F(__TIME__))); // This line sets the RTC with an explicit date & time, for example to set // January 21, 2021 at 3am you would call: // rtc.adjust(DateTime(2021, 1, 21, 3, 0, 0)); } // Print initial RTC time DateTime initialTime = rtc.now(); Serial.print("Initial RTC Time: "); Serial.print(initialTime.year(), DEC); Serial.print("/"); Serial.print(initialTime.month(), DEC); Serial.print("/"); Serial.print(initialTime.day(), DEC); Serial.print(" ("); Serial.print(daysOfWeek[initialTime.dayOfTheWeek()]); Serial.print(") "); if (initialTime.hour() < 10) Serial.print("0"); Serial.print(initialTime.hour(), DEC); Serial.print(":"); if (initialTime.minute() < 10) Serial.print("0"); Serial.print(initialTime.minute(), DEC); Serial.print(":"); if (initialTime.second() < 10) Serial.print("0"); Serial.print(initialTime.second(), DEC); Serial.println(); // Add pages to server webAppsServer.addApp(&homePage); webAppsServer.addApp(&webRTCPage); // Optional: Add 404 page for better user experience webAppsServer.setNotFoundPage(DIYablesNotFoundPage()); // Set callback for time sync from web webRTCPage.onTimeSyncFromWeb(onTimeSyncReceived); // Set callback for time request from web webRTCPage.onTimeRequestToWeb(onTimeRequested); // Start the WebApp server if (!webAppsServer.begin(WIFI_SSID, WIFI_PASSWORD)) { while (1) { Serial.println("Failed to connect to WiFi"); delay(1000); } } } void loop() { // Handle web server webAppsServer.loop(); // Send current time to web clients and print to Serial every 1 second static unsigned long lastUpdate = 0; if (millis() - lastUpdate >= 1000) { lastUpdate = millis(); // Get current RTC time DateTime currentTime = rtc.now(); // Send time to web clients in human readable format webRTCPage.sendTimeToWeb(currentTime.year(), currentTime.month(), currentTime.day(), currentTime.hour(), currentTime.minute(), currentTime.second()); // Print time to Serial Monitor Serial.print("RTC Time: "); Serial.print(currentTime.year(), DEC); Serial.print("/"); Serial.print(currentTime.month(), DEC); Serial.print("/"); Serial.print(currentTime.day(), DEC); Serial.print(" ("); Serial.print(daysOfWeek[currentTime.dayOfTheWeek()]); Serial.print(") "); if (currentTime.hour() < 10) Serial.print("0"); Serial.print(currentTime.hour(), DEC); Serial.print(":"); if (currentTime.minute() < 10) Serial.print("0"); Serial.print(currentTime.minute(), DEC); Serial.print(":"); if (currentTime.second() < 10) Serial.print("0"); Serial.print(currentTime.second(), DEC); Serial.println(); } delay(10); } // Callback function called when web client sends time sync command void onTimeSyncReceived(unsigned long unixTimestamp) { Serial.print("Time sync received: "); Serial.println(unixTimestamp); // Convert Unix timestamp to DateTime and set RTC time DateTime newTime(unixTimestamp); rtc.adjust(newTime); Serial.println("ESP32 RTC synchronized!"); } // Callback function called when web client requests current ESP32 time void onTimeRequested() { // Get current RTC time and send to web in human readable format DateTime currentTime = rtc.now(); webRTCPage.sendTimeToWeb(currentTime.year(), currentTime.month(), currentTime.day(), currentTime.hour(), currentTime.minute(), currentTime.second()); }
  • Konfigurieren Sie die WiFi-Zugangsdaten im Code, indem Sie diese Zeilen aktualisieren:
const char WIFI_SSID[] = "YOUR_WIFI_NETWORK"; const char WIFI_PASSWORD[] = "YOUR_WIFI_PASSWORD";
  • 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
COM6
Send
DIYables ESP32 WebApp - Web RTC Example Initial RTC Time: 2025/8/28 (Thursday) 12:00:08 INFO: Added app / INFO: Added app /web-rtc DIYables WebApp Library Platform: ESP32 Network connected! IP address: 192.168.0.2 HTTP server started on port 80 Configuring WebSocket server callbacks... WebSocket server started on port 81 WebSocket URL: ws://192.168.0.2:81 WebSocket server started on port 81 ========================================== DIYables WebApp Ready! ========================================== 📱 Web Interface: http://192.168.0.2 🔗 WebSocket: ws://192.168.0.2:81 📋 Available Applications: 🏠 Home Page: http://192.168.0.2/ 🕐 Web RTC: http://192.168.0.2/web-rtc ==========================================
Autoscroll Show timestamp
Clear output
9600 baud  
Newline  
  • 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:
ESP32 DIYables WebApp-Startseite mit WebRTC-App
  • Klicken Sie auf den WebRTC-Link; Sie sehen die Benutzeroberfläche der WebRTC-App wie unten:
ESP32 DIYables Web-App WebRTC-App
  • 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
ESP32 DIYables Web-App WebRTC-App
  • Der Synchronisationsprozess:
    1. Ermittelt die aktuelle lokale Zeit Ihres Geräts (nicht UTC)
    2. Berücksichtigt den Zeitzonenoffset, um eine genaue Synchronisierung der lokalen Zeit sicherzustellen
    3. Sendet Zeitstempel über WebSocket an den Arduino
    4. Arduino aktualisiert sein RTC mit der empfangenen Zeit
    5. Aktualisiert die Weboberfläche, um die synchronisierte Zeit anzuzeigen
  • Nach der Synchronisation sollte der Zeitunterschied minimal sein (in der Regel 0–1 Minuten)
  • Der ESP32 hält die genaue Zeit auch nach dem Schließen der Weboberfläche.
  • Code-Erklärung

    Schlüsselkomponenten

    #include <DIYablesWebApps.h> #include <RTClib.h> // Initialize RTC object and web server RTC_DS3231 rtc; DIYablesWebAppServer server; DIYablesWebRTCPage rtcPage; // Days of week array for display char daysOfWeek[7][12] = { "Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday" };

    Setup-Funktion

    void setup() { Serial.begin(9600); // Initialize DS3231 RTC module if (!rtc.begin()) { Serial.println("RTC module is NOT found"); Serial.flush(); while (1); } // Check if RTC lost power and set time if needed if (rtc.lostPower()) { Serial.println("RTC lost power, setting time!"); rtc.adjust(DateTime(F(__DATE__), F(__TIME__))); } // Setup WiFi connection server.setupWiFi(WIFI_SSID, WIFI_PASSWORD); // Add RTC page to server server.addWebApp(rtcPage); // Set up callback functions rtcPage.onTimeSyncFromWeb(onTimeSyncReceived); rtcPage.onTimeRequestToWeb(onTimeRequested); // Start the server server.begin(); }

    Callback-Funktionen

    Zeitabgleich-Callback:

    // Called when web interface sends time sync command void onTimeSyncReceived(unsigned long unixTimestamp) { Serial.print("Time sync received: "); Serial.println(unixTimestamp); // Convert Unix timestamp to DateTime and set RTC time DateTime newTime(unixTimestamp); rtc.adjust(newTime); Serial.println("ESP32 RTC synchronized!"); }

    Zeitabfrage-Callback:

    // Called when web interface requests current ESP32 time void onTimeRequested() { DateTime currentTime = rtc.now(); // Send current time to web interface rtcPage.sendTimeToWeb( currentTime.year(), currentTime.month(), currentTime.day(), currentTime.hour(), currentTime.minute(), currentTime.second() ); }

    Hauptschleife

    void loop() { server.handleClient(); // Send current time to web clients every 1 second static unsigned long lastUpdate = 0; if (millis() - lastUpdate >= 1000) { lastUpdate = millis(); DateTime currentTime = rtc.now(); // Send time to web clients rtcPage.sendTimeToWeb(currentTime.year(), currentTime.month(), currentTime.day(), currentTime.hour(), currentTime.minute(), currentTime.second()); // Print time to Serial Monitor Serial.print("RTC Time: "); Serial.print(currentTime.year(), DEC); Serial.print("/"); Serial.print(currentTime.month(), DEC); Serial.print("/"); Serial.print(currentTime.day(), DEC); Serial.print(" ("); Serial.print(daysOfWeek[currentTime.dayOfTheWeek()]); Serial.print(") "); if (currentTime.hour() < 10) Serial.print("0"); Serial.print(currentTime.hour(), DEC); Serial.print(":"); if (currentTime.minute() < 10) Serial.print("0"); Serial.print(currentTime.minute(), DEC); Serial.print(":"); if (currentTime.second() < 10) Serial.print("0"); Serial.print(currentTime.second(), DEC); Serial.println(); } delay(10); }

    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

    1. 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.
    1. "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:

    void onTimeSyncReceived(unsigned long unixTimestamp) { Serial.print("Time sync received: "); Serial.println(unixTimestamp); // ... rest of function } void onTimeRequested() { Serial.println("Time request received from web"); // ... rest of function }

    RTC-Initialisierung überprüfen:

    void setup() { // ... other setup code if (!rtc.begin()) { Serial.println("RTC module is NOT found"); Serial.println("Check I2C wiring:"); Serial.println("SDA -> GPIO 21"); Serial.println("SCL -> GPIO 22"); Serial.println("VCC -> 3.3V or 5V"); Serial.println("GND -> GND"); while (1); } Serial.println("DS3231 RTC initialized successfully"); if (rtc.lostPower()) { Serial.println("RTC lost power, will set to compile time"); rtc.adjust(DateTime(F(__DATE__), F(__TIME__))); } }

    Fortgeschrittene Nutzung

    Datenprotokollierung mit Zeitstempeln

    void logSensorData(float temperature, float humidity) { DateTime currentTime = rtc.now(); String logEntry = String(currentTime.year()) + "-" + String(currentTime.month()) + "-" + String(currentTime.day()) + " " + String(currentTime.hour()) + ":" + String(currentTime.minute()) + ":" + String(currentTime.second()) + " (" + String(daysOfWeek[currentTime.dayOfTheWeek()]) + ") - " + "Temp: " + String(temperature) + "°C, " + "Humidity: " + String(humidity) + "%"; Serial.println(logEntry); // Save to SD card, send to database, etc. }

    Geplante Aktionen

    void checkScheduledActions() { DateTime currentTime = rtc.now(); // Turn on LED every day at 6:00 AM if (currentTime.hour() == 6 && currentTime.minute() == 0 && currentTime.second() == 0) { digitalWrite(LED_BUILTIN, HIGH); Serial.print("Morning LED activated! Time: "); Serial.print(daysOfWeek[currentTime.dayOfTheWeek()]); Serial.print(" "); Serial.print(currentTime.hour()); Serial.print(":"); Serial.println(currentTime.minute()); } // Turn off LED every day at 10:00 PM if (currentTime.hour() == 22 && currentTime.minute() == 0 && currentTime.second() == 0) { digitalWrite(LED_BUILTIN, LOW); Serial.println("Evening LED deactivated!"); } }

    Integration mehrerer Webanwendungen

    // Combine WebRTC with other web apps server.addWebApp(rtcPage); // Real-time clock server.addWebApp(monitorPage); // Serial monitor with timestamps server.addWebApp(plotterPage); // Data plotting with time axis

    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.

    ※ UNSERE NACHRICHTEN

    • Sie können gerne den Link zu diesem Tutorial teilen. Bitte verwenden Sie jedoch unsere Inhalte nicht auf anderen Websites. Wir haben viel Mühe und Zeit in die Erstellung der Inhalte investiert, bitte respektieren Sie unsere Arbeit!