Der erste Teil zu Olis Uhr ist Mitte 2022 erschienen und mittlerweile hängt das Ergebnis an seinem Platz. Mit freundlicher Erlaubnis von Oli, kann ich an dieser Stelle ein Bild der Uhr zeigen. In meinen Augen kann sich das Ergebnis sehen lassen. Ich halte an dieser Stelle jedoch fest, dass die meisten, sichtbaren Teile, nichts mit den Funktionen der Uhr bzw. des Uhrwerks zu tun haben. Das Design entstammt zu 95% der Feder von Oli. Die restlichen 5% stammen zwar von mir, sind aber lediglich das Ergebnis verschiedener Abhängigkeiten und Anforderungen. So hat zum Beispiel der «Uhrwerkskasten» letztendlich seine heutige Form erhalten, weil ich für die Unterbringung der Technik viel Platz benötigt habe.
Von der Technik, die in dieser Uhr steckt, sieht man auf den ersten Blick sehr wenig. Damit ist eines der wichtigsten Ziele erreicht. Das Anschlusskabel auf der linken Seite ist noch provisorisch. Ursprünglich war ein anderer Aufstellungsort und eine andere Befestigung geplant.
In diesem zweiten, abschliessenden Bericht, möchte ich ein paar Hintergrund-Informationen zum Uhrwerk, der Technik und den Herausforderungen liefern. Bereits im ersten Bericht bin ich auf einige Funktionen des Uhrwerks eingegangen. Im Laufe der weiteren Bauzeit gab es dann noch Änderungen.
Die meiste Technik befindet sich im weissen Kasten im Zentrum der Uhr.
Zwei Komponenten musste ich ausserhalb des Kastens verbauen. Das betrifft den DCF77-Empfänger inkl. Anschlusskabel und dem, sich an der Unterseite der Uhr befindlichen, Ultraschall-Empfänger.
Ursprünglich hatte der DCF77-Empfänger ebenfalls seinen Platz im Kasten drin, aber dort erwies er sich als nutzlos, da die umliegenden Elektronik-Komponenten den Empfang störten.
Hier eine Aufstellung der verbauten Komponenten:
– Im Zentrum befindet sich die Mechanik für die Zeiger. Im Grunde eine einfache Anordnung von drei Achsen, welche versetzt über Schrittmotoren angetrieben werden. Im ersten Artikel zur Uhr ist ein Bild dazu zu finden.
– Symmetrisch verteilt (links und rechts) sind die Lautsprecher zu finden. Neben jedem Lautsprecher befinden sich, zur Mitte hin betrachtet, je zwei Treiber für die Schrittmotoren. Obwohl 4 Treiber vorhanden sind, werden nur 3 wirklich benötigt. Der vierte Treiber kommt dann vielleicht irgendwann später mal zum Einsatz. Gedacht war dieser mal für den Betrieb von ein paar Show-Zahnräder an der Front
– Im schwarzen Kasten, auf der linken Seite, befinden sich zwei Netzteile. Einmal 5V für den Arduino, einmal 12V für die Schrittmotoren und den Verstärker. Der Verstärker befindet sich links unterhalb des rechten Lautsprechers
– Direkt neben dem Verstärker befindet sich der 12-Kanal Empfänger. Die Uhr verfügt über 10 vorgegebene Programme, welche sich über eine Fernbedienung aufrufen lassen
– Im Zentrum unterhalb der Schrittmotoren findet man einen Arduino Mega mit aufgesteckter Anschlussplatine
– Links vom Arduino (etwas unterhalb) ist dann noch das RTC-Modul und der MP3-Player zu finden
– Auf dem Bild fast nicht zu erkennen ist das Bluetooth-Modul, welches ich beim unteren Schrittmotor befestigt habe.
– An der Unterseite der Holzverkleidung gibt es noch einen Power-Schalter, ein Poti für die Lautstärke und ein paar Schalter für Wartungszwecke
Der Uhrenkasten
Eine der grösseren Herausforderungen stellte für mich die Anfertigung des Uhrenkastens dar. Die Grundplatte, also der Teil, den man von vorne sieht, war schnell im CAD gezeichnet und gefräst. Die Einfassung wiederum hat sich als «schwieriger als gedacht» erwiesen.
Für den Uhrenkasten selbst brauchte ich ein Material, das sich sehr eng biegen liess. Ich wollte jedoch explizit keinen geschäumte Kunststoff verwenden, da ich mit diesem Material überhaupt nicht gern arbeite. Oli hat «biegbares Holz» vorgeschlagen und mir auch ein paar Platten geliefert. Diese dann aber in Form zu bringen war eine ziemliche Knochenarbeit und ich muss zugeben, dass ich mit dem Endergebnis nicht zu 100% zufrieden bin.
Ich habe die Platten in Streifen geschnitten und konnte einen «Trick» anwenden. Da ich die Frontplatte zweimal anfertigen musste (die erste Platte hatte ich verbohrt…), und ich die Teile mit einem 4mm-Fräser ausgeschnitten habe, hatte ich also sowohl eine Negativ- wie auch Postitiv-Form übrig. Auf den Bildern ist das auf den ersten Blick gar nicht so richtig zu erkennen, aber die biegbaren Holzplatten sind komplett eingespannt. Biegen liessen sich die Platten erst nach einer intensiven Wässerung und dem Bearbeiten mit dem Bügeleisen. Nach dem Spannen wurden die Teile verleimt, verschraubt und für ein paar Tage ruhen gelassen, so dass die Spannung nachlässt.
Eine weitere Herausforderung stellte die Beleuchtung dar. Oli hatte ursprünglich die Idee, dass die Uhr vom Zentrum heraus strahlen sollte. Eine entsprechende Lampe liess sich aber nicht finden und somit wurde die Beleuchtung wieder verworfen. Das liess mir dann aber doch keine Ruhe und ich setzte mich erneut ans CAD und entwarf einen Ring, der gleichmässig verteilt 12 RGB-LEDs aufweist.
Der Ring sitzt, gut versteckt, hinter dem «Herzrad» der Uhr. Die 12 RGB-LEDs können in ihrer Farbe frei kombiniert und angesteuert werden. Ein Programm der Uhr zeigt die Zeit nur mittels Licht an. Die meisten Programme werden nun auch durch ein entsprechendes Lichtbild unterstützt, was der Uhr einen ganz eigenen Charakter verleiht.
DCF77 - Ein langer und beschwerlicher Weg
Im ersten Artikel zu dieser Uhr, habe ich bereits auf das DCF77-Problem hingewiesen. Hier nochmals zur Erklärung, die Uhr benötigt logischerweise die Information zur aktuellen Uhrzeit. Diese erhält sie von einem DCF77-Modul
Ich gehe jetzt hier nicht näher auf die genaue Funktionsweise dieses Moduls ein, da dies den Rahmen dieses Berichts sprengen würde. Auf dem Bild ist das eigentliche Modul (kleine Platine in der Mitte) und die Antenne (Stab mit Kupferwicklung daneben) zu sehen. Das Modul empfängt jede Sekunde ein Signal vom DCF-Sender und benötigt pro Minute 59 Signale. Kommt auch nur ein einziges dieser Signale nicht richtig an, dann bedeutet dies, dass die Gesamt-Information fehlerhaft ist und die Uhrzeit nicht bestimmt werden kann. Es muss also mindestens eine ganze Minute (von 1-60 Sekunden) jede Sekunde ein lesbares Signal empfangen werden und erst wenn eine ganze Sequenz fehlerfrei empfangen wurde, kann die aktuelle Uhrzeit daraus ausgelesen werden. Die jeweiligen Signale werden vom DCF-Modul zum Arduino übertragen und dort ausgewertet. Genau hier lag dann am Ende das erste Problem meines ersten DCF77-Moduls. Ich habe mein Modul am Arduino angeschlossen und konnte dort auch hin und wieder ein Signal sehen, aber irgendwie ergab es sich nicht, dass eine Minute lang am Stück alle Signale zu einer interpretierbaren Uhrzeit ausgewertet werden konnten. Irgendwann blieb mir nichts mehr anderes übrig, als mein altes Oszilloskop auszugraben und mich auf die Fehlersuche zu begeben.
Zugegeben, das Gerät ist zwar uralt, aber zumindest habe ich dann den Fehler meines DCF-Empfangs recht schnell gefunden. Mein DCF-Modul hatte nicht nur Schwierigkeiten mit dem Empfang, sondern es lieferte an den Arduino ein viel zu schwaches Signal weiter. Ich habe mir dann kurzerhand ein anderes DCF-Modul aus einer Funkuhr «geborgt» und siehe da, nun empfing die Uhr erstmals eine gültige Uhrzeit.
Die Freude währte aber irgendwie nicht lange. Schon nach ein paar Tagen war der Empfang wieder völlig unterschiedlich. Mein Oszilloskop zeigte mir zwar an, dass ein Signal kam, aber irgendwas störte ziemlich. Schliesslich habe ich mich dann dazu entschieden, den Empfänger in eine separate Box zu verfrachten und über ein rund 3m langes Kabel mit dem Arduino zu verbinden. Je weiter der Empfänger von der restlichen Elektronik entfernt war, desto besser war mein Signal. Der Empfänger hängt heute gut versteckt hinter der Uhr, kann aber, falls der Empfang schlecht ist, zum Einstellen der Uhr, temporär weiter weg platziert werden.
Man kann sich nun natürlich fragen, was passiert, wenn der DCF-Empfänger mal einen Tag lang keine Zeit empfängt oder der Empfang generell schlecht ist. Nun, das ist generell mal kein sehr grosses Problem. Der DCF77-Empfänger braucht die Zeit nur alle paar Tage zu liefern. Sobald er ein gültiges Signal empfangen hat, übergibt der Arduino dies an ein RTC-Modul. Das RTC-Modul (Real Time Clock) ist eine kleine Elektronik-Platine, die über eine Batterie verfügt. Also eigentlich nichts anderes als eine Uhr. Das RTC-Modul kann aber keine Zeit via Funk empfangen. Einmal eingestellt, läuft das Modul dann einfach mehr oder weniger genau weiter.
Das Ultraschall-Modul
Die Uhr kann unterdessen so einiges. Sie kann die Zeiger und das Herzrad unabhängig voneinander drehen. Sie kann Musik und Texte abspielen und für eine attraktive Beleuchtung ist auch gesorgt. Für ein klein wenig Interaktion mit der Aussenwelt habe ich noch einen Ultraschall-Sensor verbaut. Auf dem ersten Bild sieht man diesen Sensor an der Position 6 Uhr.
Ursprünglich war der Sensor dafür gedacht, dass die Uhr erkennen soll, wenn jemand davor steht und auf sich aufmerksam macht. Am Ende wurde der Sensor nun für ein einzelnes Programm eingesetzt. Die Uhr erkennt, wenn ein bestimmtes Programm gewählt wurde, wenn sich etwas im Abstand von 80cm oder weniger befindet. Also eine Person oder auch ein Gegenstand. Verweilt diese Person länger als 10 Sekunden vor der Uhr, werden Zitate ausgegeben. Die Zitate habe ich auf dem MP3-Player bzw. dessen SD-Karte hinterlegt und erstellt wurden die Zitate über eine Text-To-Speech Webseite.
Ich muss hier auch festhalten, dass das Ultraschall-Modul nicht ganz so gut funktioniert hat, wie ich mir das gedacht habe. Die Genauigkeit des Moduls hat für meine Begriffe etwas zu fest variiert. Aber insgesamt funktioniert die Sache wie sie soll.
Bluetooth macht alles besser
Da die Uhr mehrere Monate bei mir in der Werkstatt verbracht hat, hatte ich auch viel Zeit um mich um die Kinderkrankheiten zu kümmern. Im Rahmen der Fehlersuche und Entwicklung habe ich mich dann irgendwann entschieden, dass ein Bluetooth-Modul das Werk ergänzen soll. Die ursprüngliche Idee war es, die Uhr nicht mehr über den USB-Port programmieren zu müssen. Also, Bluetooth-Modul installiert und losgelegt. Natürlich war es klar, dass ich einmal mehr nicht bei der Sache bleiben konnte, sondern abgeschweift bin. Als ich das Bluetooth-Modul mit meinem Tablet verbunden habe, stiess ich auch noch auf ein paar coole Apps, welche Sprachbefehle in Text umwandelten und damit eine Sprachsteuerung der Uhr ermöglichten. Auf einmal konnte ich dann in mein Tablet den Text «Starte Uhremodus» sprechen und wie von Geisterhand referenzierte die Uhr ihre Zeiger auf 12 und fuhr dann auf die aktuelle Uhrzeit. Das Ganze ist ein nettes Add-On, wird aber nicht wirklich gebraucht. Dennoch hatte das Bluetooth-Modul einen ganz entscheidenden Vorteil. Ich konnte mir Debug-Informationen auf dem Tablet anzeigen lassen und dies ohne, dass ich über die Konsole verbunden sein musste.
Projekt-Fazit
Das Uhren-Projekt ist für mich definitiv ein Highlight des Jahres 2022. Der Aufwand war riesig und hin und wieder rauchte mein Kopf gewaltig. Neben meiner Tätigkeit als Informatiker für Einzelpersonen und KMU war das Projekt aber eine gute Ergänzung. Es vereint die Dinge, die ich am liebsten mache. Planen, bauen, programmieren, tüfteln und so weiter. Mich persönlich macht es stolz, dass ich dieses Projekt verwirklichen konnte und durfte. An dieser Stelle ein ganz herzliches Dankeschön an Oli, der sehr viel Geduld üben musste, bis die Uhr dann endlich den Weg zu ihm nach Hause gefunden hat 😉