Im Zuge der Konzeptarbeiten an der Heimautomatisierung zeigt sich immer wieder der Bedarf an einem Display bzw. einer Signalisierung allgemein. Da ich gerade Bock drauf hatte eine Uhr zu bauen, muss diese auch für den ersten Versuch dazu herhalten.
Projekt: Smartclock
Kontakt: Boris Dirnfeldner
Link: – eigenes Projekt –
Mir haben diese Leuchtanzeigen auf Basis von WS2812 schon immer gefallen, zumal die Dinger ja auch mit so wenig Drahtverhau auskommen (VCC, GND und Signal). Die Ansteuerung erfolgt über ein serielles Protokoll (Eindraht) und fertige Libs für Arduino gibt es dazu auch. Nachdem ich einen Leuchtring mit 60 LEDs gefunden hatte, war klar das dies eine Uhr werden musste.
Anforderungen:
o Anzeige der Uhrzeit analog über den Leuchtring.
o Anzeige von Datum und Uhrzeit über LED-Segmentanzeigen digital
o Signalisierung von Zählerständen, über MQTT-Nachrichten im System zentral verteilt und von dort auch bezogen. Rückwärtszähler sollten bei <60 Sekunden am Ring präsent angezeigt werden.
o Signalisierung von Events über MQTT, die über „Flashen“ am Ring dargestellt werden. Dabei soll es verschiedene Kritikalitäten geben, z.B. Rot für Alarme, Gelb z.B. für Türklingel etc.
Design:
Der Zeitgeber ist ein RTC vom Typ DS3231. Als Controller wird ein Arduino verwendet, der Analogring besteht aus 60 x WS2812 auf vier Platinen (je ein Viertelkreis). Die Digitalanzeigen sind mit TM1637 Display-Modulen aufgebaut die auch mit einer 2-Drahtverbindung seriell angesteuert werden (Signal + CLK).
Die Anbindung an den MQTT-Server erfolgt über einen ESP-01S und ESP-Link.
Aufbau und Inbetriebnahme:
Der RTC-Code ist kein Problem, auch die Ansteuerung eines TM1637 nicht. Nachdem die ersten Teile richtig funktionieren wird alles mal fliegend verdrahtet.
Und siehe da, es geht gar nix mehr.
Es zeigt sich recht schnell das die Stromversorgung mit Arduino für die Anzeige nicht mehr reicht, also die Stromversorgung separat aufbauen und schon ist alles gut.
Der Ring erfordert erstmal Lötarbeit damit aus den vier Teilen auch ein Ring wird (und das kann ich so gar nicht gut). Naja, irgendwie halten die Teile (mehr aus Mitleid) zusammen.
Die Ansteuerung ist ziemlich einfach, nur die Leuchtkraft der Module hat mich überrascht. Beim ersten Versuch (mit externer Stromversorgung, ich habe mit den TMs gelernt) war ich erst mal blind und hatte den Ring wortwörtlich im Auge eingebrannt am nachleuchten. Die Lib startet per Default alles in voller Leistung in Weiß, und das ist dann Abends im Zimmer hell!
Bei den nächsten Versuchen (mit erheblich weniger Leistung per Parameter) ist dann auch alles gut. Nach etwas Kodierarbeit zeigt sich auch eine uhrenähnliche Anzeige.
Jetzt kommen die TMs wieder dran und bekommen auch Code zur Anzeige von Datum und Zeit. Auch die Module lassen sich in der Helligkeit parametrisieren (was dann auch passiert).
Nachdem das alles läuft (die Uhr an sich ist damit fertig) geht es an die Netzwerkverbindung und die Signalisierung. Mit dem Ring sind einfache Blinksignale kein Problem, ein Satz von Funktionen habe ich schnell fertig.
Der ESP-01s ist auch schnell verbunden und die ESP-Link Firmware in Verbindung mit EL-Client Library bietet mir eine komfortable Anbindung an den MQTT-Server.
Leider zeigt sich hier ein übler Bug in der Firmware des ESP, der beim Empfang längerer MQTT-Nachrichten leider versagt und die Meldung verschluckt.
Das Problem hat leider auch ein anderes Problem erwischt (Beetbewässerung) und kann nicht zeitnah gelöst werden. Damit bekomme ich leider die Anbindung nicht zuverlässig hin.
Ich spiele mich noch etwas mit der Anzeige (mache z.B. Leuchtpunkte für die 5-Minuten-Markierung) und baue den Code für meine Library um, will aber das Teil so nicht fertigmachen.
Da ich etwas Zeitdruck an anderen Baustellen habe, bleibt der fertige Aufbau noch aus.
Fazit:
Die Uhr an sich läuft, der Aufbau in ein ansehnliches Gehäuse ist erstmal noch vertagt bis ich das Netzwerkthema unter Kontrolle habe. Sieht sehr danach aus als würde ich den Arduino ersetzen gegen was mit integrierten WLAN (z.B. ESP32).
Dann kommt auch die Zähleranzeige dazu und vermutlich ein Drehgeber zu Eingaben am Gerät. Vielleicht kommt ja noch ein „richtiges“ Display rein, mal sehen. Vorerst geht es erst mal mit anderen Dingen weiter und dem Design vom Gehäuse.
Komponenten:
RTC DS3231 Echtzeituhr
TM1637 Display Module
WS2812 RGB-Ring (60)
Arduino Uno (Clone)
ESP01S WLAN-Modul
Schaltnetzteil 230V/5V
MQTT-Server im Netz
Überlegungen:
Da im Haus keine Alexa wohnt, aber ständig langlaufende Timer gebraucht werden, wäre doch eine relativ intelligente Uhr gar nicht so doof.
Schäden:
– Einmal Geblitzdingst beim ersten Start des Leuchtrings.
– Wegen MQTT-Problem ist die Uhr noch nicht smart.