WordClock24h

Aus der Mikrocontroller.net Artikelsammlung, mit Beiträgen verschiedener Autoren (siehe Versionsgeschichte)
Wechseln zu: Navigation, Suche

Es geht um eine minutengenaue "WordClock" bzw. "WortUhr" mit 24-Stunden-Modus.

Dieser Artikel ist obsolet.

Nachfolgeprojekt, wo die WordClock24h und WordClock12h vereint mit ein- und derselben Schaltung betrieben werden kann:

WordClock_mit_WS2812


Einleitung

Es geht hier um den Bau einer Wand- bzw. Tischuhr, bei welcher auf einer quadratischen Frontplatte die jeweils aktuelle Uhrzeit als Text durch Hinterleuchtung der entsprechenden Wörter angezeigt wird. Die Hinterleuchtung der Wörter erfolgt durch farbige RGB-LEDs (Farbeinstellung mittels Fernbedienung wählbar), welche durch einen mit der Uhrzeit synchronisierten Mikrocontroller angesteuert werden.

Im Unterschied zu der bekannten QlockTwo Wortuhr, welche die Uhrzeit im 12 Stunden-Wiederholungsrhythmus in Fünf-Minuten-Schritten anzeigt, liegt dieser Wortuhr ein Konzept zu Grunde, welches eine minutengenaue Zeitanzeige für 24 Stunden ermöglicht. Um den unterschiedlichsten regionalen und persönlichen Gewohnheiten gerecht zu werden, verfügt diese minutengenaue 24 Stunden-Wortuhr über mehrere Betriebsarten, mit welchen sich über die allgemein üblichen Standard-Zeitanzeigen hinaus per Voreinstellung auch verschiedene, regional übliche Wortfolgen konfigurieren lassen (viertel nach ..., dreiviertel ..., viertel vor ... ,...).

Für Diskussionen der "Insider" gibt es den Thread "Minutengenaue 24 Stunden-Wortuhr - wer will mitbauen?".

Neu-Einsteiger, die diesen Artikel gelesen haben, stellen Ihre Fragen gern im Thread "WortUhr/WordClock: Minutengenau, 24h, RGB für Neu-Einsteiger".

Dieser Artikel wird schrittweise ausgebaut und soll zur Zeit nur zur Sammlung von Ideen dienen.

LEDs

Bei der 18 x 16 Matrix (Standardversion mit allen Texten) werden insgesamt 288 LEDs benötigt, bei der 16 x 16 Matrix (abgespeckte Version mit weniger Texten) insgesamt 256 LEDs. Vorzugsweise sollen WS2812 oder WS2812B zum Einsatz kommen. Um Lötarbeit zu sparen, sollen entweder fertige LED-Matrizen (gibt es bei eBay) oder LED-Stripes verwendet werden. Vorzugsweise werden für die 18 x 16 Matrix WS2812B RGB-LED-Stripes mit 60 LEDs/lfm, für die 16 x 16 Matrix 2 Stück 16 x 8 WS2812B RGB-LED-Matrizen (LED-Abstand horizontal und vertikal jeweils 20mm) verwendet.

18 x 16 Matrix

Da die Buchstaben höher als breit ist, sieht es besser aus, wenn der Buchstabenabstand in der Waagerechten geringer ist als in der Höhe. Dies kann man mit einer 18x16-Matrix erreichen - bei quadratischem Umfang der kompletten Matrix.

Wenn man Stripes verwendet, welche 60 LEDs/m haben, dann ist die Breite aller 18 Buchstaben exakt 30cm. Bei 16 Zeilen kommt man auf eine Komplett-Höhe bei einem senkrechten Buchstaben-Abstand von 30/16 = 1,875cm.

Also: Abstand in der Breite: 1,667cm, in der Höhe 1,875cm. Dann besteht bei einer 45cm x 45cm großen Frontplatte ein einheitlicher Rand von je 7,5cm. Das Schriftbild ist durch den geringeren waagerechten Buchstabenabstand dann leichter lesbar.

Die WS2812-LEDs werden dabei folgendermaßen verdrahtet:


              +----------------------------------------------------------+
              |                                                          |
              1  2  3  4  ...                              18            |
              O--O--O--O--O--O--O--O--O--O--O--O--O--O--O--O--+          |
                                                              |          |
              36                                       20  19 |          |
              O--O--O--O--O--O--O--O--O--O--O--O--O--O--O--O--+          |
              |                                                          |
              |                                                          |
              O--O--O--O--O--O--O--O--O--O--O--O--O--O--O--O--           |
             37 38 ....                                                  |
                                                                         |
                                                                         |
           +-------+             Status-LED                              |
 µC -------| R220  |------------------O----------------------------------+
           +-------+

Das heißt, dass jeder zweite Streifen "auf dem Kopf" steht.

Ab der STM32-Projektversion 1.5.8 werden bis zu 100 weitere LEDs hinter der Buchstabenkette als Ambilight unterstützt. Diese müssen einfach hinter der LED für den letzten Buchstaben in der Kette angeschlossen werden. Die Anzahl ist variabel, maximal Ambilight-LEDs sind möglich.

16 x 16 Matrix

Bei der 16 x 16 Matrix kommen 2 Stück 16 x 8 LED-Matrizen mit einem horizontalen und vertikalen Abstand der LEDs von jeweils 20mm zum Einsatz. Dementsprechend betragen die Außenabmessungen der Matrix 32cm x 32cm. Bei einer 45cm großen Frontplatte bleibt rundherum ein 6,5 cm freier Rand bestehen.

Die 16x8 LED-Matrizen sind ebenfalls mit WS2812B RGB-LEDs bestückt, die Ansteuerung erfolgt wie bei den Stripes seriell.

Elektronik

Als Mikrocontroller ist ein STM32F401 oder STM32F411 Nucleo Board vorgesehen. Dieses kostet ca. 12 EUR und mit 512KB Flash und mindestens 96KB RAM genügend Reserven.

STM32F4xx Projekt

Die Beschreibung des STM32-Projekts wurde auf einen neuen Wiki-Artikel ausgegliedert:

https://www.mikrocontroller.net/articles/WordClock_mit_WS2812

Mechanik

Gehäuse (sofern man nicht den 50x50 Ribba-Rahmen des schwedischen Möbelhauses nehmen möchte):

Eine preisgünstige Variante wäre der Aufbau auf einer 45 x 45 cm großen, 16mm starken MDF-Platte aus dem Baumarkt. Die Kanten kann man in der Regel gleich beim Zuschnitt mit Kantenumleimern versäubern lassen.

Die MDF-Platte erhält 288 Bohrungen im Rastermaß der LED-Matrix. Ein Bohrplan ist hier als Download im pdf-Format verfügbar. Die Bohrungen werden nach vorne hin auf 14mm Durchmesser aufgebohrt und dienen einerseits zur Lichtabdichtung gegenüber den benachbarten LEDs, andererseits als Reflektorkammern. Will man die Bohrungen selbst anbringen, eignet sich dafür ein 5mm Holzbohrer mit aufgesetztem 14mm Versenker. Die stirnseitigen Schneiden des Versenkers sind im Winkel von 45 ° abgeschrägt, dadurch ergeben sich am Boden der Kammern schöne Reflektorflächen. Da der Durchmesser der Bohrlöcher mit 5mm für die LEDs zu klein ist, muss man sie abschließend mit einem größeren Holzbohrer (8mm,..) auf den für die LEDs erforderlichen Durchmesser aufbohren (leider sind im Handel keine 14mm Versenker-Aufsätze für 8mm Bohrer erhältlich). Man kann auch gleich Löcher mit 8mm Durchmesser bohren und dann mit einem Versenker ohne Bohrer auf 14mm Durchmesser aufweiten. Für die Anbringung der Acrylglas-Frontplatte mittels Neodym-Magneten erhält die MDF-Platte am Rand 9 Ausnehmungen (Vertiefungen), welche den Abmessungen der Magneten entsprechen.

Nach Abschluss der Fräs- und Bohrarbeiten wird die MDF-Platte vorderseitig grundiert und weiß spritzlackiert. Wenn man über keine Farbspritzpistole verfügt, verwendet man dafür Spritzfüller und Acryllack aus der Dose - jedoch unbedingt lösungsmittelhaltig und nicht auf Wasserbasis, damit die MDF-Platte nicht aufquillt! Da sich der Farbnebel weiträumig verteilt und überall anlegt, sollten die Spritzarbeiten vorzugsweise im Freien oder in einem leeren, gut belüfteten Nebenraum durchgeführt werden. In geschlossenen Räumen muss mit Atemschutzmaske gearbeitet werden! Wer sich das nicht antun will, kann die MDF-Platte selbstverständlich auch mit Pinsel grundieren und lackieren.

Auf die Rückseite der MDF-Platte wird ein Rahmen aus Alu-U-Profil aufgeschraubt (Baumarkt, 2m Stange auf 4 Stk. mit je 40cm Länge auf Gehrung geschnitten). Er dient als Gehäuse für die Aufnahme der Elektronik und der Verdrahtung.

Weitere mechanische Arbeiten sind:

  • Aufkleben der LED-Streifen auf einer Grundplatte. Es werden horizontal 16 Streifen zu je 18 LEDs (60 LEDs/lfm) mit einem vertikalen Abstand von 18,75 mm auf eine Grundplatte aufgeklebt. Vorzugsweise verwendet man dafür Aluminiumblech zur Wärmeableitung. Die LED-Streifen müssen mäanderförmig - jede zweite Reihe um 180° gestürzt - angebracht werden, sodass sich eine schlangenähnliche Anordnung der LEDs ergibt.
  • In die Außenflächen der U-Profile werden LED-Strips zur Hintergrundbeleuchtung eingeklebt und zum Schutz vor Staub und mechanischer Beschädigung mit Milchglasstreifchen aus Acrylglas oder Weichplastik abgedeckt ( man kann selbstverständlich auch fertige LED-Kanäle aus dem Handel verwenden).
  • Die Platzierung von Platinen, Umgebungslicht-Sensor, Buchsen für Stromzufuhr und PC-Anschluss, ggf. Lautsprecher ist abzuklären;
  • Bei Deckenbefestigung wird an der Zimmerdecke das Netzteil der Uhr in einem unscheinbaren Kästchen angebracht. Daran wird die Uhr an 2 Drahtseilen (transparent isolierte Seile aus dem LED-Zubehörhandel) aufgehängt, welche gleichzeitig als Stromzuführung für die LEDs und die Elektronik dienen.
  • Die Acrylglas-Frontplatte wird mit magnetischen Pads versehen, mit welchen sie an den Magneten der Montageplatte haftet.

Wörter und Wortkombinationen

Die WordCLock24h stellt die Zeit in Form von Wörtern und Wortkombinationen dar. Dabei sind per Konfiguration verschiedene Darstellungsformen im 12h- und im 24h-Modus auswählbar. Die Auswahl der Darstellungsform sowie der jeweils angezeigten Wörter erfolgt über Tabellen (Arrays), welche untereinander nach Art einer Baumstruktur hierarchisch verknüpft sind.

Die Inhalte und Verknüpfungen der Tabellen können beispielhaft aus der Access Datenbank WC24h.accdb entnommen werden. Die Datenbank enthält auch ein Formular frm_Anzeigestrings, mit welchem man eine gewünschte Darstellungsform auswählen und die 1440 Wortkombinationen eines 24-Stunden-Tages (24 Std. x 60 Min.) in Listenform anzeigen kann.

Über die Tabelle tbl_modes der obersten Hierarchieebene können folgende Darstellungsformen ausgewählt werden:

 1 ES IST HH UHR MM (12)
 2 ES IST HH UHR MM (24)
 3 ES IST HH UHR UND MM MINUTEN (12)
 4 ES IST HH UHR UND MM MINUTEN (24)
 5 ES IST MM MINUTEN NACH HH UHR (12) NACHTS
 6 ES IST MM MINUTEN NACH HH UHR (24)
 7 OSSI  - ES IST MM NACH HH (12) 
 8 OSSI - ES IST MM NACH HH UHR (12) NACHTS 
 9 OESI - ES IST MM NACH HH UHR (12) - OESI
10 OESI - ES IST MM NACH HH UHR (12) NACHTS 
11 RHEIN/RUHR - ES IST MM MINUTEN NACH HH (12) 
12 RHEIN/RUHR - ES IST MM MINUTEN NACH (12) NACHTS 
13 SCHWABEN - ES IST MM MINUTEN NACH HH (12) 
14 SCHWABEN - ES IST MM MINUTEN NACH (12) NACHTS 
15 WESSI - ES IST MM MINUTEN NACH HH (12) 
16 WESSI - ES IST MM MINUTEN NACH (12) NACHTS 
17 COUNTDOUWN - ES IST MM MINUTEN VOR MITTERNACHT
18 TEMPERATUR - "ES IST CC GRAD ("WARM")

Eine Erweiterung um Modi mit anderen Wortkombinationen ist jederzeit möglich.

Die Tabelle tbl_modes greift auf die Datensätze der Tabellen tbl_it_is, tbl_hours und tbl_minutes zurück, in welchen die Referenz-Indizes für die jeweils für die Stunden und Minuten zu verwendenden Wortkombinationen enthalten sind.

Diese Referenz-Indizes beziehen sich ihrerseits auf die Indizes der Tabelle tbl_words der untersten Hierarchieebene, in welcher die Position und Anzahl der für die Darstellung der jeweiligen Wörter einzuschaltenden LEDs festgehalten ist.

Aus dieser Tabelle (Array) werden nacheinander die Bitmuster für die Wörter der anzuzeigenden Uhrzeit ausgelesen und seriell in die Schieberegister der Leuchtdioden eingespeist.

Die zip-Dateien wc24h1816_V3_Office_2003.zip und wc24h1816_V3_Office_2010.zip enthalten jeweils eine Excel und eine Access-Datenbank-Datei, in welchen ein Layout der Frontplatte sowie Tabellen mit den Positionsnummern der den einzelnen Wörtern zugeordneten LEDs enthalten sind.

Verifikation, Validierung, Code-Generator

Mock-up

Bevor Frontplatten erstellt werden, erfolgt eine Prüfung der Buchstabenanordnung und der Tabellen für alle oben genannten Modi mit einer Simulation (Mock-up in C#.net, siehe Bild).

Der aktuelle Stand der Steuer-Tabellen kann auch online anhand von exemplarischen Uhrzeiten überprüft werden.

Auf diesen statischen HTML-Seiten gibt es für jeden Modus 60 Exemplarische Uhrzeiten:

 00:00, 01:01, 02:02, …, 23:23, 00:24, 01:25, 02:26, …, 11:59

Verifikation: Sind die Formulierungen und Wort-Anordnungen wie gewünscht?

Validierung: Sind die Steuer-Tabellen fehlerfrei?

Interaktive WordClock24h

Hier kann man sich interaktiv durch die Uhrzeiten klicken:

Der Stand des Frontplatten-Layouts ist hier 08.12.2014.





WordClock2 Exe Konfiguration

Hier gibt es eine Windows-Anwendung mit Simulationsmodus (ändern des Modus/Stunde/Minute per Taste) die auch als Screensaver benutzt werden kann nach umbennen der Exe:




Im Mock-up in C#.net ist auch ein Code-Generator integriert. Für µCs mit Von-Neumann-Architektur und Havard-Architektur werden unterschiedliche Dialekte benötigt, z.B. mit "progmem" für einige gcc-Toolketten.

Downloads

  • Datei:Wc24h1816 V3 Bohrplan 45x45cm.pdf Bohr- und Frässchablone Maßstab 1:1 für MDF-Montageplatte 450mm x 450 mm, 18x16 Matrix, Update 06.02.2015 19:51, in 6 Teilen zum Ausdruck auf A4 Drucker