Transformer l’horloge analogique à 3,88 $ de Walmart en horloge Wi‑Fi basée sur l’ESP8266
(github.com/jim11662418)- Projet de synchronisation sur l’heure Internet d’une horloge analogique à quartz bon marché, pilotée avec un module ESP8266 et un sketch Arduino
- L’heure est récupérée toutes les 15 minutes depuis un serveur NTP pour maintenir la précision, avec ajustement automatique de l’heure d’été
- La bobine du moteur pas à pas Lavet de l’horloge est isolée afin que l’ESP8266 puisse la piloter, et une puce EERAM est utilisée pour mémoriser la position des aiguilles des heures, minutes et secondes même en cas de coupure d’alimentation
- Lors de la configuration initiale, la position des aiguilles est définie via une interface de page web fournie par l’ESP8266, puis l’état de l’horloge est visualisé sur une page de statut en SVG ou HTML Canvas
- Un exemple open source montrant comment réaliser une horloge précise synchronisée par le réseau avec du matériel bon marché, et une application pratique des techniques de contrôle IoT embarqué
Aperçu du projet
- ESP8266 WiFi Analog Clock est un système qui utilise un module WEMOS D1 Mini ESP8266 et un sketch Arduino pour récupérer automatiquement l’heure locale depuis un serveur NTP(Network Time Protocol) et l’afficher
- Reconnexion au serveur NTP toutes les 15 minutes pour conserver la précision de l’horloge
- Inclut un ajustement automatique de l’heure d’été (Daylight Saving Time)
- Le projet repose sur une horloge analogique à quartz à bas coût et combine modification matérielle et contrôle logiciel
Configuration matérielle
- L’horloge utilisée est une horloge analogique à quartz achetée chez Walmart pour 3,88 $
- Le mouvement à quartz est ouvert afin de séparer la bobine interne du moteur pas à pas Lavet de l’oscillateur à quartz, puis des fils sont soudés sur chaque broche pour connecter l’ESP8266
- La plupart des mouvements sont assemblés par encliquetage, sans vis
- Les fils de la bobine sont plus fins qu’un cheveu et doivent être manipulés avec une extrême précaution
- Le circuit final est monté sur une plaque perforée (perfboard) avec le circuit intégré EERAM et d’autres composants
Fonctionnement logiciel
- Le sketch AnalogClock.ino fait comparer par l’ESP8266, 10 fois par seconde, l’heure réelle et l’heure affichée par l’horloge
- Si l’horloge est en retard, l’aiguille des secondes est accélérée pour resynchroniser
- Si l’horloge est en avance, le système attend que l’heure réelle la rattrape
- Le déplacement de l’aiguille des secondes se fait en appliquant une impulsion bipolaire (bipolar pulse) à la bobine du moteur Lavet
- Selon les caractéristiques du moteur, il faut ajuster la constante PULSETIME ; expérimentalement, 30 ms s’avèrent adaptés
- Les horloges bon marché ne disposent pas de retour sur la position des aiguilles, ce qui entraîne une perte de cette information en cas de coupure d’alimentation
- Pour résoudre ce problème, le projet utilise une Microchip 47L04 Serial EERAM (SRAM 4Kbit + sauvegarde EEPROM)
- La position des aiguilles des heures, des minutes et des secondes est enregistrée chaque seconde, puis restaurée au redémarrage
Configuration initiale et interface web
- Lors de la première exécution du sketch, l’ESP8266 fournit une simple page web permettant à l’utilisateur de définir la position initiale des aiguilles
- Ensuite, l’ESP8266 mémorise la position des aiguilles à l’aide des données stockées dans l’EERAM
- En fonctionnement, une page de statut (status page) est proposée avec trois modes d’affichage
- Affichage graphique du cadran basé sur SVG
- Affichage du cadran basé sur HTML Canvas
- Affichage d’état en texte seul
Licence et informations techniques
- Le projet est publié sous licence MIT
- La répartition principale des langages est C++ 64,1 % et C 35,9 %
- Le dépôt GitHub compte 252 stars et 2 forks
- Tags associés : arduino, esp8266, clock, analog-clock, ntp, hardware-construction
Intérêt
- Un exemple concret pour transformer une horloge bon marché en horloge connectée synchronisée en Wi‑Fi
- Un cas d’usage de contrôle temporel précis et d’interface web avec ESP8266 et l’environnement Arduino
- Une ressource open source utile pour apprendre la modification de matériel IoT et les techniques de synchronisation firmware
1 commentaires
Commentaires Hacker News
La partie la plus intéressante, à mon avis, était la puce « SRAM with EEPROM backup »
Elle permet de sauvegarder de façon persistante la position des aiguilles à chaque déplacement, sans consommer la durée de vie en écriture comme une EEPROM classique
En plus, elle coûte moins de 1 dollar à l’unité, donc c’est un composant utile pour les projets de loisir ou de petite série
Une SRAM et une EEPROM sont intégrées dans le même boîtier avec un contrôleur, et il y a à proximité un petit condensateur (4.7µF)
La SRAM conserve les données tant qu’elle est alimentée, tandis que l’EEPROM les stocke de façon permanente même hors tension, mais avec une limite sur le nombre d’écritures
Quand le contrôleur détecte une baisse de tension, il vide immédiatement le contenu de la SRAM dans l’EEPROM
Le condensateur fournit alors l’énergie nécessaire pour écrire ces données dans l’EEPROM
Quand l’alimentation revient, les données de l’EEPROM sont recopiées dans la SRAM
L’inconvénient, c’est que la capacité est faible, seulement 4 kilobits, mais si on peut résoudre ce problème pour 1 dollar, cela en vaut largement la peine
En particulier, stocker des logs de débogage sous forme de buffer circulaire permet de conserver les logs de crash d’un système embarqué même sans connexion à un PC de développement
Lien produit
Mais là où j’habite maintenant, le signal est trop faible, donc le réglage manuel est très pénible
J’ai donc écrit moi-même un code Arduino qui émule les signaux d’horloge atomique du monde entier à l’aide d’un ESP32 et d’un serveur NTP
C’est aussi assez intéressant d’explorer l’histoire et les différences entre les signaux de radiodiffusion des horloges atomiques selon les pays
La luminosité rouge de la projection est parfaite la nuit, mais il n’y a pas de synchronisation Wi‑Fi, donc impossible de régler l’heure via NTP ou GPS
La partie projecteur est reliée au boîtier principal par un câble nappe, donc ce serait amusant à rétroconcevoir
Idéalement, ce serait bien d’avoir une matrice LED au plafond pour afficher d’autres informations que l’heure
Ce genre de produit existe, mais c’est très cher, comme sur buyfrixos.com
Lien vers mon montage
J’utilise moi aussi plusieurs horloges murales bon marché de ce type, et elles dérivent à peine
Je pense qu’elles ont peut-être moins de gigue que le NTP
Je n’ai jamais besoin de les régler, et elles restent à moins d’une seconde des horloges NTP
En revanche, j’aimerais bien pouvoir éteindre celles du four et du micro-ondes
Au bout d’un mois, elles prennent environ une minute d’avance, donc j’aimerais bien qu’elles aient une synchronisation Wi‑Fi
Comme les produits deviennent de plus en plus fermés aujourd’hui, ça me manque de fabriquer moi-même des objets simples et modifiables
Un jour, quand je ne serai plus pris par mon activité principale, j’aimerais concevoir moi-même des appareils domestiques simples, fiables et pensés pour les hackers
Ce genre de projet est vraiment admirable
Je l’avais achetée pour ma fille, mais son tic-tac irrégulier la gênait pour étudier, donc elle est au repos pour l’instant
Cela dit, c’était une expérience assez amusante
En revanche, s’il y a plusieurs horloges dans la maison, il faut décider de n’en suivre qu’une seule pour que ça marche
Présentation du Gents Turret Movement
Je m’en suis servi pour fabriquer une horloge électromécanique à diapason
Elle fonctionne non pas avec une source de temps de précision, mais avec un diapason et de la logique 74xx
Je me demande pourquoi Accutron n’en fabrique toujours pas
Le principe fondé sur la fréquence de résonance est similaire à celui d’une montre à quartz, mais visuellement plus séduisant
Sinon, des pics peuvent provoquer des dysfonctionnements ou endommager le microcontrôleur
L’idéal est d’isoler la tension de grille avec un optotransistor et d’alimenter séparément le moteur
Il y a aussi un projet GitHub
Il reste encore beaucoup d’anciens decks et de contrôleurs LANC, donc il y a matière à les réemployer
Même si l’horloge connaît l’heure exacte, si sa vitesse de fonctionnement réelle se décale peu à peu, l’erreur cumulée peut devenir importante
En particulier, si la constante PULSETIME est mal réglée d’1 ms, cela peut suffire à créer un écart au bout d’une journée
Bien sûr, un moteur pas à pas Lavet conserve en théorie des pas fondés sur une fréquence constante, mais l’usure ou le bruit peuvent introduire un biais
Cela dit, à l’échelle d’une horloge murale, l’erreur est peut-être négligeable
La page Wikipedia aide à bien comprendre
pulsetimen’est que la durée nécessaire pour faire avancer d’un pasTant qu’aucun pas n’est perdu, il n’y a pas d’erreur cumulée
Autrement dit, il suffit de conserver un comptage exact des pas