Exemple Arduino WebRTC - Tutoriel sur l'interface d'une horloge en temps réel
Vue d'ensemble
L'exemple WebRTC fournit une interface complète d'horloge en temps réel pour vos projets Arduino. Conçu pour Arduino Uno R4 WiFi et DIYables STEM V4 IoT, plateforme éducative dotée de capacités RTC intégrées, de fonctionnalités de gestion du temps améliorées et d'une intégration transparente avec l'écosystème éducatif. Vous pouvez afficher les informations de l'horloge en temps réel, synchroniser l'heure depuis le navigateur Web vers Arduino et surveiller les écarts de temps via une interface Web intuitive.

Fonctionnalités
- Affichage de l'horloge en temps réel: Affiche l'heure RTC actuelle de l'Arduino avec des mises à jour automatiques
- Comparaison de l'heure du périphérique: Affiche l'heure du navigateur Web et celle de l'Arduino
- Synchronisation de l'heure en un clic: Synchroniser l'horloge RTC de l'Arduino avec l'heure du navigateur Web instantanément
- Indicateur visuel de l'écart temporel: Affiche le décalage entre les horloges des appareils en minutes
- Format sur deux lignes: format 12 heures AM/PM avec affichage complet de la date
- Interface moderne avec dégradé: Mise en page en carte et design réactif
- Communication WebSocket: Mises à jour bidirectionnelles en temps réel sans rafraîchissement de la page
- Synchronisation tenant compte du fuseau horaire: Utilise l'heure locale de l'appareil pour une synchronisation précise
- Surveillance de l'état de la connexion: Indicateurs visuels de l'état de la connexion WebSocket
- Requêtes automatiques de l'heure: Effectue des requêtes automatiques de l'heure lors du chargement de la page
- Plateforme extensible: Actuellement implémentée pour Arduino Uno R4 WiFi, mais peut être étendue à d'autres plates-formes matérielles. Voir DIYables_WebApps_ESP32
Préparation du matériel
Ou vous pouvez acheter les kits suivants:
1 | × | Kit de Démarrage DIYables STEM V4 IoT (Arduino inclus) | |
1 | × | Kit de Capteurs DIYables (30 capteurs/écrans) | |
1 | × | Kit de Capteurs DIYables (18 capteurs/écrans) |
Instructions d'installation
Étapes rapides
Suivez ces instructions étape par étape :
- Si c'est votre première utilisation de l'Arduino Uno R4 WiFi/DIYables STEM V4 IoT, reportez-vous au tutoriel sur Arduino UNO R4 - Installation du logiciel..
- Connectez la carte Arduino Uno R4/DIYables STEM V4 IoT à votre ordinateur à l'aide d'un câble USB.
- Lancez l'IDE Arduino sur votre ordinateur.
- Sélectionnez la carte Arduino Uno R4 appropriée (par exemple, Arduino Uno R4 WiFi) et le port COM.
- Accédez à l'icône Libraries dans la barre de gauche de l'IDE Arduino.
- Recherchez "DIYables WebApps", puis trouvez la bibliothèque DIYables WebApps par DIYables
- Cliquez sur le bouton Install pour installer la bibliothèque.

- Vous serez invité à installer d'autres dépendances logicielles
- Cliquez sur le bouton Tout installer pour installer toutes les dépendances logicielles.

- Dans l'IDE Arduino, allez dans Fichier Exemples DIYables WebApps WebRTC exemple, ou copiez le code ci-dessus et collez-le dans l'éditeur de l'IDE Arduino
- Configurez les identifiants WiFi dans le code en mettant à jour ces lignes:
- Cliquez sur le bouton Upload dans l'IDE Arduino pour téléverser le code sur l'Arduino.
- Ouvrez le Moniteur série dans l'IDE Arduino.
- Attendez la connexion au Wi-Fi et l'affichage des informations Wi-Fi dans le Moniteur série.
- Vérifiez le résultat dans le Moniteur série. Il ressemble à ce qui suit.
- Si vous ne voyez rien, redémarrez la carte Arduino.
Utilisation de l'interface Web
- Ouvrez un navigateur web sur votre ordinateur ou votre appareil mobile connecté au même réseau Wi‑Fi
- Saisissez l'adresse IP affichée dans le Moniteur série dans le navigateur web
- Exemple : http://192.168.1.100
- Vous verrez la page d'accueil comme sur l'image ci-dessous :

- Cliquez sur le lien Web RTC, vous verrez l'interface utilisateur de l'application Web RTC comme ci-dessous :

- Ou vous pouvez également accéder directement à la page en utilisant l'adresse IP suivie de /web-rtc. Par exemple : http://192.168.1.100/web-rtc
- Vous verrez l'interface Web RTC s'afficher :
- Temps Arduino : l'heure actuelle du RTC de l'Arduino
- L'heure de votre appareil: Heure actuelle affichée par votre navigateur/appareil
- Écart de temps: Différence entre les deux temps en minutes
- Bouton de synchronisation de l'heure Arduino: Cliquez pour synchroniser l'heure de l'Arduino avec votre appareil
Synchronisation de l'heure
- Cliquez sur le bouton "Synchroniser l'heure de l'Arduino" pour synchroniser l'horloge RTC de l'Arduino avec l'heure locale de votre appareil.

- Le processus de synchronisation :
- Obtenir l'heure locale actuelle de votre appareil (et non UTC)
- Ajuste le décalage horaire pour assurer une synchronisation précise de l'heure locale
- Envoie l'horodatage à l'Arduino via WebSocket
- L'Arduino met à jour son RTC avec l'heure reçue
- L'interface Web se met à jour pour afficher l'heure synchronisée
Explication du code
Composants clés
Fonction de configuration
Fonctions de rappel
Rappel de synchronisation de l'heure:
Rappel de la demande de temps :
Boucle principale
Méthodes de l'API
Méthodes de la classe DIYablesWebRTCPage
onTimeSyncFromWeb(callback)
- Définit la fonction de rappel pour gérer la synchronisation de l'heure à partir du navigateur Web
- Paramètre: void (*callback)(unsigned long unixTimestamp)
- Utilisation: Appelé lorsque l'utilisateur clique sur le bouton « Synchroniser l'heure Arduino »
onTimeRequestToWeb(callback)
- Définit la fonction de rappel pour gérer les demandes de temps provenant du navigateur Web.
- Paramètre : void (*callback)()
- Utilisation : Appelée lorsque l'interface Web demande l'heure actuelle de l'Arduino.
envoyerTempsVersLeWeb(année, mois, jour, heure, minute, seconde)
- Envoie l'heure actuelle d'Arduino à l'interface Web
- Paramètres:
- year: Année en cours (par exemple, 2025)
- month: Mois en cours (1-12)
- jour: Jour actuel du mois (1-31)
- hour : Heure actuelle (0-23)
- minute: Minute actuelle (0-59)
- second: Seconde actuelle (0-59)
Communication WebSocket
Messages du Web vers Arduino
- RTC:GET_TIME - Obtenir l'heure actuelle d'Arduino
- RTC:SYNC:[timestamp] - Synchroniser l'heure d'Arduino avec l'horodatage Unix
Messages d'Arduino vers le Web
- DATETIME:YYYY,MM,DD,HH,MM,SS - Envoyer les composants de l'heure actuelle d'Arduino
Dépannage
Problèmes courants
- Décalage de plusieurs heures
- Problème: L'Arduino affiche une heure qui diffère de plusieurs heures par rapport à l'heure de l'appareil
- Cause: Généralement un problème de fuseau horaire ou le RTC n'est pas correctement initialisé
- Solution:
- Cliquez sur le bouton « Synchroniser l'heure de l'Arduino » pour résynchroniser
- Vérifie si le RTC est correctement initialisé dans setup()
- Vérifier que la connexion Wi-Fi est stable
2. "Non connecté à Arduino" Erreur
- Problème: Erreur lors du clic sur le bouton de synchronisation
- Cause: La connexion WebSocket a échoué
- Solution:
- Vérifier si l'adresse IP de l'Arduino est correcte
- Actualiser la page
- Vérifiez que l'Arduino est connecté au même réseau Wi-Fi
- Vérifiez les paramètres du pare-feu
3. Le temps cesse de se mettre à jour
- Problème: L'affichage de l'heure se fige ou ne se met pas à jour
- Cause: Connexion WebSocket perdue ou RTC arrêté
- Solution:
- Actualiser la page web
- Vérifier l'état de la connexion WebSocket
- Redémarrez l'Arduino si le RTC ne répond plus.
4. Grandes différences temporelles (jours/mois)
- Problème: La différence de temps affiche des milliers de minutes
- Cause: La RTC n'était pas correctement réglée ou a dérivé de manière significative
- Solution: Cliquez sur le bouton de synchronisation à plusieurs reprises et vérifiez les fonctions de rappel
Conseils de débogage
Activer le débogage série :
Vérifier l'initialisation de la RTC:
Utilisation avancée
Journalisation des données avec horodatages
Actions planifiées
Intégration de plusieurs applications Web
Applications et cas d'utilisation
Projets éducatifs
- Apprentissage de la gestion du temps: enseigner aux étudiants le RTC, la chronométrie et la synchronisation
- Notions de temps pour l'IoT: démontrer la synchronisation du temps réseau dans les systèmes IoT
- Projets d'enregistrement de données: ajouter des horodatages aux lectures des capteurs et aux expériences
- Systèmes de planification: créer des systèmes d'automatisation et de contrôle basés sur le temps
Applications du monde réel
- Domotique: Planifier les lumières, l'irrigation ou d'autres appareils
- Acquisition de données: Horodatage des relevés de capteurs pour l'analyse
- Journalisation des événements: Enregistrer le moment où des événements spécifiques se produisent avec un horodatage précis
- Surveillance à distance: Vérifier l'état des appareils et les horodatages des dernières mises à jour
Avantages de l'éducation STEM
- Concepts de fuseaux horaires: Comprendre l'heure locale par rapport à l'UTC et la gestion des fuseaux horaires
- Communication réseau: Apprendre la communication WebSocket et les mises à jour en temps réel
- Intégration matérielle: Combiner les interfaces web avec la fonctionnalité RTC matérielle
- Résolution de problèmes: Déboguer les problèmes de temporisation et de synchronisation
Spécifications techniques
Utilisation de la mémoire
- Mémoire Flash: ~8 Ko pour la fonctionnalité WebRTC
- SRAM: ~2 Ko pendant le fonctionnement
- Tampon WebSocket: ~1 Ko pour la gestion des messages
Caractéristiques de performance
- Fréquence de mise à jour : mises à jour en temps réel via WebSocket
- Précision de synchronisation : typiquement entre 1 et 2 secondes
- Surcharge réseau : environ 50 octets par message de mise à jour de l'heure
- Temps de réponse : <100 ms pour les opérations de synchronisation de l'heure
Compatibilité
- Cartes Arduino: Arduino Uno R4 WiFi, DIYables STEM V4 IoT
- Navigateurs: Tous les navigateurs modernes prenant en charge WebSocket
- Périphériques: Ordinateur de bureau, tablette et appareils mobiles
- Réseaux: Réseaux Wi‑Fi avec accès à Internet
Résumé
L'exemple WebRTC montre comment :
- Créer une interface d'horloge en temps réel basée sur le Web
- Synchroniser le RTC Arduino avec l'heure du navigateur web
- Afficher les informations sur l'heure dans un format convivial
- Surveiller les écarts de temps et l'état de la connexion
- Intégrer les fonctionnalités liées au temps avec d'autres applications web
- Concevoir des projets IoT éducatifs avec des fonctionnalités de gestion du temps
Cet exemple est parfait pour les projets nécessitant une mesure du temps précise, l’enregistrement des données avec horodatages, une automatisation programmée et des démonstrations pédagogiques des concepts de synchronisation du temps dans les systèmes IoT.