- Ein Projekt, das eine günstige analoge Quarzuhr mit einem ESP8266-Modul und einem Arduino-Sketch steuert und mit Internetzeit synchronisiert
- Die Uhr bezieht alle 15 Minuten die Zeit von einem NTP-Server, um die Genauigkeit zu erhalten, und enthält eine automatische Sommerzeit-Anpassung
- Die Lavet-Schrittmotorspule der Uhr wird vom Quarzoszillator getrennt und so umgebaut, dass sie vom ESP8266 gesteuert werden kann; ein EERAM-Chip speichert außerdem bei Stromausfall die Position von Stunden-, Minuten- und Sekundenzeiger
- Bei der Ersteinrichtung wird die Zeigerposition über eine vom ESP8266 bereitgestellte Webseiten-Oberfläche festgelegt; danach visualisiert eine Statusseite den Zustand der Uhr per SVG oder HTML Canvas
- Ein Open-Source-Beispiel dafür, wie sich mit günstiger Hardware eine präzise netzwerksynchronisierte Uhr bauen lässt, und eine praktische Anwendung von Embedded-IoT-Steuerungstechnik
Projektüberblick
- ESP8266 WiFi Analog Clock ist ein System, das mit einem WEMOS D1 Mini ESP8266-Modul und einem Arduino-Sketch automatisch die lokale Zeit von einem NTP(Network Time Protocol)-Server abruft und anzeigt
- Es verbindet sich alle 15 Minuten erneut mit dem NTP-Server, um die Genauigkeit der Uhr zu erhalten
- Enthält eine automatische Anpassung an die Sommerzeit (Daylight Saving Time)
- Das Projekt basiert auf einer günstigen analogen Quarzuhr und kombiniert Hardware-Umbau mit Softwaresteuerung
Hardware-Aufbau
- Verwendet wurde eine analoge Quarzuhr, die bei Walmart für 3,88 Dollar gekauft wurde
- Das Quarzwerk der Uhr wird geöffnet, die interne Lavet-Schrittmotorspule vom Quarzoszillator getrennt und an jede Anschlussleitung ein Draht zur Verbindung mit dem ESP8266 angelötet
- Die meisten Uhrwerke sind als Schnappkonstruktion ohne Schrauben montiert
- Die Spulendrähte sind dünner als ein Haar und müssen daher äußerst vorsichtig behandelt werden
- Die fertige Schaltung wurde mit einem EERAM-IC und weiteren Bauteilen auf einer Lochrasterplatine (perfboard) aufgebaut
Funktionsweise der Software
- Der Sketch AnalogClock.ino lässt den ESP8266 zehnmal pro Sekunde die tatsächliche Zeit mit der angezeigten Uhrzeit vergleichen
- Wenn die Uhr nachgeht, wird der Sekundenzeiger zur Synchronisierung beschleunigt
- Wenn die Uhr vorgeht, wartet das System, bis die reale Zeit wieder aufgeschlossen hat
- Die Bewegung des Sekundenzeigers erfolgt durch einen bipolaren Puls (bipolar pulse) an der Lavet-Motorspule
- Je nach Motoreigenschaften muss die Konstante PULSETIME angepasst werden; experimentell erwiesen sich 30 ms als geeignet
- Bei günstigen Uhren fehlt eine Rückmeldung über die Zeigerposition, sodass diese Information bei einem Stromausfall verloren geht
- Zur Lösung wird Microchip 47L04 Serial EERAM (4Kbit SRAM + EEPROM-Backup) verwendet
- Die Position von Stunden-, Minuten- und Sekundenzeiger wird jede Sekunde gespeichert und nach dem Wiedereinschalten wiederhergestellt
Ersteinrichtung und Web-Oberfläche
- Beim ersten Ausführen des Sketches stellt der ESP8266 eine einfache Webseite bereit, über die der Nutzer die anfängliche Position der Uhrzeiger festlegt
- Danach merkt sich der ESP8266 die Zeigerposition anhand der in EERAM gespeicherten Daten
- Während des Betriebs stellt er außerdem eine Statusseite (status page) bereit, die drei Anzeigemodi unterstützt
- Grafische Zifferblattanzeige auf SVG-Basis
- Zifferblattanzeige auf Basis von HTML Canvas
- Reine Text-Statusanzeige
Lizenz und technische Informationen
- Das Projekt wird unter der MIT-Lizenz veröffentlicht
- Die wichtigsten verwendeten Sprachen sind C++ 64,1 % und C 35,9 %
- Das GitHub-Repository hat 252 Stars und 2 Forks
- Zugehörige Themen-Tags: arduino, esp8266, clock, analog-clock, ntp, hardware-construction
Bedeutung
- Ein praktisches Beispiel dafür, wie sich eine günstige Uhr in eine Wi-Fi-synchronisierte smarte Uhr verwandeln lässt
- Ein Beispiel für die Umsetzung von präziser Zeitsteuerung und webbasierten Oberflächen mit ESP8266 und der Arduino-Umgebung
- Open-Source-Referenzmaterial zum Lernen über IoT-Hardware-Umbauten und Firmware-Synchronisierungstechniken
1 Kommentare
Hacker-News-Kommentare
Besonders interessant fand ich den Chip mit „SRAM with EEPROM backup“
Er ermöglicht es, die Position der Uhrzeiger bei jeder Bewegung dauerhaft zu speichern, ohne wie gewöhnliches EEPROM die Schreib-Lebensdauer zu verbrauchen
Mit einem Stückpreis von unter 1 Dollar ist das auch für Hobby- oder kleine Projekte ein nützliches Bauteil
SRAM und EEPROM sitzen zusammen mit einem Controller in einem einzigen Gehäuse, dazu kommt in der Nähe ein kleiner Kondensator (4,7µF)
SRAM behält Daten, solange Strom anliegt, und EEPROM speichert Daten dauerhaft auch ohne Strom, hat aber eine begrenzte Anzahl an Schreibzyklen
Der Controller erkennt einen Spannungsabfall und kippt den Inhalt des SRAM sofort ins EEPROM
Der Kondensator liefert in diesem Moment die Energie, damit die Daten noch ins EEPROM geschrieben werden können
Wenn die Stromversorgung zurückkehrt, werden die Daten aus dem EEPROM wieder ins SRAM kopiert
Der Nachteil ist die geringe Kapazität von 4 Kilobit, aber wenn sich so ein Problem für 1 Dollar lösen lässt, ist das absolut lohnenswert
Besonders praktisch ist es, Debug-Logs als Ringpuffer zu speichern, weil man so Crash-Logs eines Embedded-Systems behalten kann, selbst wenn es nicht mit einem Entwicklungs-PC verbunden ist
Produktlink
An meinem jetzigen Wohnort ist das Signal aber so schwach, dass die manuelle Einstellung sehr mühsam ist
Deshalb habe ich selbst Arduino-Code geschrieben, der mit ESP32 und einem NTP-Server Atomuhrsignale aus aller Welt emuliert
Es ist auch ziemlich interessant, sich die Geschichte und Unterschiede der Atomuhr-Funksignale verschiedener Länder anzusehen
Die rote Projektionshelligkeit ist nachts genau richtig, aber ohne Wi‑Fi-Synchronisierung lässt sich die Zeit nicht per NTP oder GPS abgleichen
Der Projektorteil ist per Flachbandkabel mit dem Hauptgerät verbunden, daher könnte Reverse Engineering daran ziemlich spannend sein
Idealerweise könnte eine LED-Matrix an der Decke neben der Uhrzeit auch andere Informationen anzeigen
Solche Produkte gibt es zwar, sind aber wie bei buyfrixos.com extrem teuer
Link zu meinem Projektbericht
Ich nutze selbst mehrere solcher günstigen Wanduhren, und sie gehen fast gar nicht falsch
Ich glaube sogar, dass sie weniger Jitter haben könnten als NTP
Man muss sie nie stellen, und sie stimmen selbst mit NTP-Uhren auf weniger als 1 Sekunde überein
Nur die Uhren an Ofen und Mikrowelle würde ich am liebsten ausschalten
Nach einem Monat gehen sie etwa 1 Minute vor, daher wäre eine Wi‑Fi-Synchronisierung schön
Während Produkte heute immer geschlossener werden, vermisse ich es, einfache und hackbare Dinge selbst zu bauen
Wenn ich irgendwann nicht mehr für meinen Lebensunterhalt arbeiten müsste, würde ich gern einfache, zuverlässige und hackerfreundliche Haushaltsgeräte selbst entwickeln
Solche Projekte finde ich wirklich bewundernswert
Ich habe sie für meine Tochter gekauft, aber das unregelmäßige Ticken war beim Lernen störend, deshalb liegt sie gerade still
Trotzdem war es eine ziemlich unterhaltsame Erfahrung
Wenn man allerdings mehrere Uhren im Haus hat, muss man sich wirklich vornehmen, nur diese eine zu benutzen, damit es wirkt
Vorstellung der Gents Turret Movement
Ich habe damit eine elektromechanische Uhr auf Basis einer Stimmgabel gebaut
Sie läuft nicht mit einer präzisen Zeitquelle, sondern mit einer Stimmgabel und 74xx-Logik
Ich frage mich, warum Accutron so etwas nicht immer noch baut
Die Nutzung einer Resonanzfrequenz ist Quarzuhren ähnlich, aber optisch deutlich reizvoller
Sonst kann es durch Spannungsspitzen zu Fehlfunktionen kommen oder der Mikrocontroller wird beschädigt
Ideal ist es, die Gate-Spannung mit einem Optotransistor zu entkoppeln und den Motor separat zu versorgen
Dazu gibt es auch ein GitHub-Projekt
Alte Decks oder LANC-Controller gibt es noch reichlich, also hat das wirklich Potenzial
Selbst wenn die Uhr die korrekte Zeit kennt, kann sich ein kleiner Fehler in der tatsächlichen Ansteuerungsgeschwindigkeit mit der Zeit aufaddieren
Besonders wenn die PULSETIME-Konstante nur um 1 ms falsch eingestellt ist, kann schon nach einem Tag eine Abweichung entstehen
Zwar hält ein Lavet-Schrittmotor theoretisch konstante frequenzbasierte Schritte, aber durch Verschleiß oder Rauschen könnte eine Verzerrung entstehen
Für eine Wanduhr könnte dieser Fehler allerdings vernachlässigbar sein
Mit der Wikipedia-Erklärung wird das leicht verständlich
Solange keine Schritte verloren gehen, entsteht keine kumulative Abweichung
Es reicht also, die Schrittzahl exakt beizubehalten