Retroclock

Ausgangspunkt

Als ich mich mal wieder auf der Suche nach Vorlagen fĂŒr meinen 3D-Drucker auf Thingiverse herumgetrieben habe, bin ich ĂŒber die Retro 7 Segment Clock (Complete) von Daniel Cikic gestolpert. Diese Uhr besteht aus bis zu 6 riesigen Sieben-Segment-Anzeigen, die mit einem WS2812-LED-Strip beleuchtet werden. Im Vollausbau, also mit Sekunden Anzeige ist das Teil ca. 62 x 15cm groß. Als leicht LED-VerrĂŒckter Bastler war ich natĂŒrlich gleich schwer begeistert von dem Teil und habe gleich mit dem Nachbau angefangen. ✹

7Segment RetroClock

Der Ausdruck und der Zusammenbau der Teile war dank der ausfĂŒhrlichen Anleitung auf der Thingiverse-Seite kein Problem. Die Firmware, die zu dem Zeitpunkt (Version V6 von 06/2020) in dem Projekt hinterlegt war, sollte sich mit der Arduino IDE entweder fĂŒr einen Arduino Nano oder den ESP8266 kompilieren lassen. Ich habe mir daraufhin die ESP8266-Version fĂŒr das Nodemcu-Board gebaut und war dann ein bisschen enttĂ€uscht, dass die Firmware nicht so richtig gut lief. Das Einlocken ins WLAN und die NTP-Synchronisation haben problemlos funktioniert, aber die Ansteuerung der LEDs hat stark geflimmert oder geblinkt etc. Alles Probleme, die mit denen ich schon in anderen Projekten mit dem ESP8266 und den WS2812-Leds auch schon zu tun hatte… 😒 Also habe ich angefangen die Elektronik und Firmware zu modifizieren.

Hardware-Modifikationen

Die WS2812-Leds brauchen eigentlich 5V-CMOS Logikpegel, damit sie stabil funktionieren. In vielen FĂ€llen gehen (zumindest zeitweise…) auch 3.3V-CMOS-Pegel, wie sie der ESP8266 liefert. Um sicher zu gehen, dass das LED-Flackern nicht auf durch die falschen Signalpegel ausgelöst wird, habe ich einen einfachen Pegelwandler mit zwei hintereinander geschalteten 74HCT00-NAND-Gattern, in das Datensignal der LEDs eingeschleift. Hier der komplette Schaltplan:

Schaltplan ESP8266 plus Pegelwandler

Das war aber nicht alleine das Problem fĂŒr das Flackern…

Neue Firmware

Das Hauptproblem der LED-Anzeige ließ sich aber auch sehr schnell löschen. Das Ursache dafĂŒr ist, dass der ESP8266 nur einen Prozessorkern hat und das Timing fĂŒr die WS2812 sehr genau eingehalten werden muss. Entsprechend nutzt die verwendete FASTLED-Library alle möglichen Tricks auf dem ESP8266 um das Timing einzuhalten. Das klappt leider in AbhĂ€ngigkeit von den unterschiedlichen Firmwareversionen der Library’s unterschiedlich gut. In diesem Fall war es ausreichend die Interupts wĂ€hrend des Datentransfers zu sperren. Dazu musste man nur "#define FASTLED_ALLOW_INTERRUPTS 0" in die Sourcen eintragen und alles war eigentlich fertig.

Wo ich sowieso mich gerade durch den Sourcecode gewĂŒhlt habe, dachte ich mir, das eine Anmeldung am WLAN via WIFIManager ganz nett wĂ€re. Außerdem wollte ich die Uhr an die Wand hĂ€ngen, entsprechend fand ich das unpraktisch die Anzeigemodi per Tasten umzuschalten, besser wĂ€re eine Umschaltung per Webinterface. Also habe ich diese Features zusĂ€tzlich in die Firmware eingebaut.

Hier das Ergebnis: Die Webseite zum Einstellen der Betriebsmodi und Zeitzone. Die OberflĂ€che ist nicht besonders schick oder benutzerfreundlich, aber dafĂŒr, dass ich zum ersten Mal eine HTML-OberflĂ€che mit Javascript-UnterstĂŒtzung zusammengebaut habe, bin ich ganz zufrieden.

Webpage zur Konfiguration der Uhr

Die meine Version der Firmware inklusive der meisten verwendeten Libraries habe ich auf GITHUB abgelegt.

Hier der Link zu dem Repository.

In dem Repository befindet sich auch eine PDF-Version des Schaltplans und ein Binary der gebauten Firmware. Es is also nicht unbedingt nötig die Firmware nochmal zu compilieren.

Inzwischen hat Daniel Cikic auch eine neue Version der Firmware (v7) und eine weitere Version der Uhr veröffentlicht. Da ich aber mit den Funktionen meiner angepassten Version zufrieden bin, plane ich aber aktuell nicht, meine Anpassungen in die Firmware v7 einzuarbeiten. Hier die Links zu den aktuellsten Versionen: Retro 7 Segment Clock - the Final One(s) und die Firmware ClockSketch V7.

Fazit

Die Uhr lĂ€uft mit der Firmware stabil. Optisch gefĂ€llt mir die Uhr immer noch sehr gut! 😃 Außerdem habe ich dabei wieder ein paar Sachen ĂŒber die verwinkelte Welt der ESP8266 Firmware-Libraries und Webseiten mit Javascript kennengelernt und wie man damit klar kommt.