Arduino WebRTC-Beispiel – Tutorial zur Echtzeituhr-Schnittstelle
WebRTC-Beispiel - Installationsanleitung
Überblick
Das WebRTC-Beispiel bietet eine umfassende Echtzeituhr-Schnittstelle für Ihre Arduino-Projekte. Entwickelt für die Arduino Uno R4 WiFi- und DIYables STEM V4 IoT-Bildungsplattform mit integrierten RTC-Fähigkeiten, erweiterten Zeitverwaltungsfunktionen und nahtlose Integration in das Bildungsökosystem. Sie können Echtzeit-Uhrinformationen anzeigen, die Zeit vom Webbrowser auf den Arduino synchronisieren und Zeitunterschiede über eine intuitive Weboberfläche überwachen.

Funktionen
- Echtzeituhranzeige: Zeigt die aktuelle Arduino RTC-Zeit mit automatischen Aktualisierungen
- Gerätezeit-Vergleich: Anzeige der Browser-/Gerätezeit neben der Arduino-Zeit
- Zeit-Synchronisierung mit einem Klick: Synchronisiert die Arduino RTC sofort mit der Browserzeit
- Visueller Zeitdifferenz-Indikator: Zeigt die Zeitdifferenz zwischen Geräten in Minuten an
- Zweizeiliges Zeitformat: 12-Stunden-Format mit AM/PM und vollständiger Datumsanzeige
- Modernes Gradient-UI: Kartenlayout mit responsivem Design
- WebSocket-Kommunikation: Echtzeit bidirektionale Updates ohne Neuladen der Seite
- Zeitzonenbewusste Synchronisierung: Verwendet die lokale Gerätezeit für eine genaue Synchronisation
- Verbindungsstatus-Überwachung: Visuelle Indikatoren für den WebSocket-Verbindungsstatus
- Automatische Zeitabfragen: Fordert beim Laden der Seite die aktuelle Arduino-Zeit an
- Plattform erweiterbar: Derzeit implementiert für Arduino Uno R4 WiFi, kann aber auf andere Hardwareplattformen erweitert werden. Siehe DIYables_WebApps_ESP32
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) |
Anweisungen zur Einrichtung
Schnelle Schritte
Befolgen Sie diese Anweisungen Schritt für Schritt:
- Wenn dies das erste Mal ist, dass Sie das Arduino Uno R4 WiFi/DIYables STEM V4 IoT verwenden, lesen Sie das Tutorial zur Einrichtung der Umgebung für Arduino Uno R4 WiFi/DIYables STEM V4 IoT in der Arduino IDE Einrichten der Umgebung für Arduino Uno R4 WiFi/DIYables STEM V4 IoT in der Arduino IDE.
- Verbinden Sie das Arduino Uno R4/DIYables STEM V4 IoT-Board mit Ihrem Computer über ein USB-Kabel.
- Öffnen Sie die Arduino IDE auf Ihrem Computer.
- Wählen Sie das passende Arduino Uno R4-Board (z. B. Arduino Uno R4 WiFi) und den COM-Port aus.
- Gehen Sie zum Libraries-Symbol in der linken Leiste der Arduino IDE.
- Suchen Sie "DIYables WebApps", und finden Sie anschließend die DIYables WebApps-Bibliothek von DIYables.
- Klicken Sie auf die Installieren-Schaltfläche, um die Bibliothek zu installieren.

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

- In der Arduino IDE gehen Sie zu Datei Beispiele DIYables WebApps WebRTC Beispiel, oder kopieren Sie den obigen Code und fügen Sie ihn in den Editor der Arduino IDE ein
- Konfigurieren Sie die WiFi-Zugangsdaten im Code, indem Sie diese Zeilen aktualisieren:
- Klicken Sie in der Arduino IDE auf die Upload-Schaltfläche, um den Code auf den Arduino hochzuladen.
- Öffnen Sie den Seriemonitor in der Arduino IDE.
- Warten Sie auf die Verbindung zum WLAN und auf die Ausgaben der WLAN-Informationen im Seriemonitor.
- Schauen Sie sich das Ergebnis im Seriemonitor an. Es sieht wie folgt aus.
- Wenn Sie nichts sehen, starten Sie das Arduino-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 seriellen 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, dann sehen Sie die Benutzeroberfläche der WebRTC-App wie unten dargestellt:

- Oder Sie können die Seite auch direkt über die IP-Adresse aufrufen, gefolgt von /web-rtc. Zum Beispiel: http://192.168.1.100/web-rtc
- Sie sehen die WebRTC-Oberfläche, die Folgendes zeigt:
- Arduino-Zeit: Aktuelle Zeit vom RTC des Arduino
- Ihre Gerätezeit: Aktuelle Uhrzeit von Ihrem Webbrowser/Gerät
- Zeitunterschied: Unterschied zwischen den beiden Zeiten in Minuten
- Arduino-Zeitsynchronisations-Schaltfläche: Klicken Sie, um die Arduino-Zeit mit Ihrem Gerät zu synchronisieren
Zeitsynchronisierung
- Klicken Sie auf die "Arduino-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 den Zeitstempel über WebSocket an den Arduino
- Der Arduino aktualisiert seine RTC mit der empfangenen Zeit
- Die Weboberfläche aktualisiert sich, um die synchronisierte Zeit anzuzeigen
Code-Erklärung
Schlüsselkomponenten
Setup-Funktion
Callback-Funktionen
Zeit-Synchronisation-Callback:
Zeitanfrage-Rückruf:
Hauptschleife
API-Methoden
DIYablesWebRTCPage Klassenmethoden
onZeitAbgleichVomWeb(callback)
- Setzt die Callback-Funktion fest, um die Zeitsynchronisierung aus dem Webbrowser zu behandeln.
- Parameter: void (*callback)(unsigned long unixTimestamp)
- Verwendung: Wird aufgerufen, wenn der Benutzer auf die Schaltfläche „Arduino-Zeit synchronisieren“ klickt.
onTimeRequestToWeb(callback)
- Setzt die Callback-Funktion zur Bearbeitung von Zeitabfragen vom Webbrowser
- Parameter: void (*callback)()
- Verwendung: Wird aufgerufen, wenn die Weboberfläche die aktuelle Arduino-Zeit anfordert
sendTimeToWeb(jahr, monat, tag, stunde, minute, sekunde)
- Sendet die aktuelle Arduino-Zeit an die Weboberfläche
- Parameter:
- Jahr: aktuelles Jahr (z. B. 2025)
- month: Aktueller Monat (1-12)
- day: Aktueller Tag des Monats (1-31)
- hour: Aktuelle Stunde (0-23)
- minute: Aktuelle Minute (0-59)
- second: Aktuelle Sekunde (0-59)
WebSocket-Kommunikation
Nachrichten vom Web an Arduino
- RTC:GET_TIME - Abrufen der aktuellen Arduino-Zeit
- RTC:SYNC:[timestamp] - Arduino-Zeit mit Unix-Zeitstempel synchronisieren
Nachrichten vom Arduino zum Web
- DATETIME:YYYY,MM,DD,HH,MM,SS - Sende die aktuellen Arduino-Zeitkomponenten
Fehlerbehebung
Häufige Probleme
1. Zeitunterschied von mehreren Stunden
- Problem: Arduino zeigt die Uhrzeit um mehrere Stunden gegenüber der Gerätezeit an
- Ursache: In der Regel handelt es sich um ein Zeitzonenproblem oder eine RTC, die nicht ordnungsgemäß initialisiert wurde
- Lösung:
- Klicken Sie auf die Schaltfläche „Arduino-Zeit synchronisieren“, um die Zeit neu zu synchronisieren.
- Prüfe, ob RTC in setup() ordnungsgemäß initialisiert ist.
- Überprüfen Sie, ob die WLAN-Verbindung stabil ist.
2. "Nicht mit Arduino verbunden" Fehler
- Problem: Fehler beim Klicken auf den Synchronisationsknopf
- Ursache: WebSocket-Verbindung ist fehlgeschlagen
- Lösung:
- Überprüfe, ob die Arduino-IP-Adresse korrekt ist.
- Lade die Webseite neu.
- Vergewissern Sie sich, dass Arduino mit demselben WLAN-Netzwerk verbunden ist.
- Firewall-Einstellungen überprüfen
- Die Zeit hört auf, sich zu aktualisieren.
- Problem: Die Zeitanzeige friert ein oder aktualisiert sich nicht
- Ursache: WebSocket-Verbindung verloren oder RTC gestoppt
- Lösung:
- Webseite aktualisieren
- WebSocket-Verbindungsstatus prüfen.
- Starte den Arduino neu, wenn die RTC nicht mehr reagiert
4. Große Zeitunterschiede (Tage/Monate)
- Problem: Der Zeitunterschied zeigt Tausende von Minuten
- Ursache: RTC war nicht ordnungsgemäß eingestellt oder ist deutlich abgewichen
- Lösung: Klicken Sie mehrmals auf die Sync-Schaltfläche und überprüfen Sie die Callback-Funktionen
Tipps zum Debuggen
Serielles Debugging aktivieren:
RTC-Initialisierung überprüfen:
Erweiterte Nutzung
Datenprotokollierung mit Zeitstempeln
Geplante Aktionen
Integration mehrerer Webanwendungen
Anwendungen und Anwendungsfälle
Bildungsprojekte
- Zeitmanagement-Lernen: Schülerinnen und Schülern RTC, Zeitmessung und Synchronisation beibringen
- IoT-Zeitkonzepte: Die Netzwerkzeitsynchronisation in IoT-Systemen demonstrieren
- Datenprotokollierungsprojekte: Sensoraufzeichnungen und Experimente mit Zeitstempeln versehen
- Zeitplanungssysteme: Zeitbasierte Automatisierungs- und Steuerungssysteme erstellen
Anwendungen in der realen Welt
- Hausautomation: Beleuchtung, Bewässerung oder andere Geräte planen
- Datenerfassung: Sensorwerte mit Zeitstempeln für die Analyse erfassen
- Ereignisprotokollierung: Aufzeichnen, wann bestimmte Ereignisse mit präzisen Zeitstempeln auftreten
- Fernüberwachung: Aus der Ferne den Zustand des Geräts und die letzten Aktualisierungszeiten überprüfen
Vorteile der MINT-Bildung
- Zeitzonenkonzepte: Verstehen von Ortszeit im Vergleich zu UTC und der Handhabung von Zeitzonen
- Netzwerkkommunikation: Lernen Sie WebSocket-Kommunikation und Echtzeit-Updates
- Hardware-Integration: Webschnittstellen mit Hardware-RTC-Funktionalität kombinieren
- Problemlösung: Timing-Probleme und Synchronisationsprobleme debuggen
Technische Spezifikationen
Speicherverbrauch
- Flash-Speicher: ~8KB für WebRTC-Funktionalität
- SRAM: ~2KB während des Betriebs
- WebSocket-Puffer: ~1KB für die Nachrichtenverarbeitung
Leistungsmerkmale
- Aktualisierungsfrequenz: Echtzeit-Updates über WebSocket
- Synchronierungsgenauigkeit: Typischerweise innerhalb von 1–2 Sekunden
- Netzwerk-Overhead: ca. 50 Bytes pro Zeitaktualisierungsmeldung
- Antwortzeit: <100 ms für Zeitabgleich-Operationen
Kompatibilität
- Arduino-Boards: Arduino Uno R4 WiFi, DIYables STEM V4 IoT
- Browser: Alle modernen Browser mit WebSocket-Unterstützung
- Geräte: Desktop-Computer, Tablets und Mobilgeräte
- Netzwerke: WLAN-Netzwerke mit Internetzugang
Zusammenfassung
Das WebRTC-Beispiel zeigt, wie man:
- Webbasierte Echtzeituhr-Schnittstelle erstellen
- Synchronisieren Sie das Arduino-RTC mit der Uhrzeit des Webbrowsers
- Zeigen Sie Zeitinformationen in einem benutzerfreundlichen Format an
- Überwachen Sie Zeitdifferenzen und den Verbindungsstatus
- Integrieren Sie Zeitfunktionen in andere Webanwendungen
- Bildungsorientierte IoT-Projekte mit Zeitmanagement-Funktionen bauen
Dieses Beispiel eignet sich perfekt für Projekte, die eine genaue Zeitmessung, Datenprotokollierung mit Zeitstempeln, zeitgesteuerte Automatisierung sowie lehrreiche Demonstrationen von Zeit-Synchronisationskonzepten in IoT-Systemen erfordern.