1 points par GN⁺ 2026-02-10 | 1 commentaires | Partager sur WhatsApp
  • 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

 
GN⁺ 2026-02-10
Commentaires Hacker News
  • C’est vraiment un super projet
    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
    • Si je résume son principe de fonctionnement, je pense que c’est ceci
      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
    • Je ne suis pas certain que ce soit une technologie similaire, mais le lien produit d’Adafruit est aussi intéressant
    • J’aime aussi la FRAM pour ce genre d’usage
      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
  • Le prix affiché chez Walmart semble être de $3.88, mais à cause de la tarification dynamique selon la région et l’utilisateur, il s’affiche à $5.92 chez moi
    Lien produit
  • J’ai chez moi une horloge atomique Seiko censée se régler automatiquement via le signal WWVB
    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
    • Attention toutefois : émettre sur la même fréquence que WWVB est probablement illégal
  • J’aimerais voir quelqu’un modifier ce genre d’horloge à projection
    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
    • J’en ai déjà fabriqué une version à faible luminosité
      Lien vers mon montage
    • Le produit lié semble avoir une fonction « Atomic Time », donc il se synchronise apparemment sur le signal WWVB
      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
    • Moi aussi, j’aime les horloges WWV/WWVB
      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
    • En réalité, quand on se lance dans ce genre de modification, on finit souvent par conclure que le prix d’un produit du commerce est raisonnable, vu le coût des composants et le temps passé
    • J’ai quelques horloges numériques achetées sur Temu, et elles avancent progressivement
      Au bout d’un mois, elles prennent environ une minute d’avance, donc j’aimerais bien qu’elles aient une synchronisation Wi‑Fi
  • J’adore complètement ce côté bidouille/hacking
    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
  • Si vous voulez vous salir un peu moins les mains, je recommande Crazy Clock
    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
    • Le mode « Early clock » maintient l’horloge entre 0 et 10 minutes en avance, ce qui est pratique pour éviter les retards
      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
  • Avec un budget un peu plus élevé, il existe aussi une grande horloge qui fait un « boum » toutes les 30 secondes
    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
    • Ces horloges à diapason sont vraiment superbes
      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
  • Lors de la conception d’un pont en H pour moteur pas à pas, il faut impérativement tenir compte du courant de retour
    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
  • J’ai vu une vidéo YouTube intitulée « Transformer des déchets à 0 € en deck de montage vidéo à 400 € »
    Il y a aussi un projet GitHub
    • L’idée de réutiliser un contrôleur de magnétoscope comme périphérique d’entrée numérique est excellente
      Il reste encore beaucoup d’anciens decks et de contrôleurs LANC, donc il y a matière à les réemployer
  • Le projet est cool, mais il semble y avoir un risque de dérive temporelle
    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
    • Le moteur pas à pas de type Lavet est contrôlé par le nombre d’impulsions, donc c’est la quantité d’impulsions qui compte plus que leur largeur
      La page Wikipedia aide à bien comprendre
    • pulsetime n’est que la durée nécessaire pour faire avancer d’un pas
      Tant 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