Nach meinen ersten Experimenten mit STM32 Mikrocontrollern habe ich damit eine schöne bunte Uhr gebaut.
Die Uhrzeit wird mit vier Binärzahlen darstellt, welche den vier Ziffern der normalen Uhrzeit entsprechen:
Stunden | Minuten | ||
---|---|---|---|
Zehner | Einer | Zehner | Einer |
8 | 8 | 8 | 8 |
4 | 4 | 4 | 4 |
2 | 2 | 2 | 2 |
1 | 1 | 1 | 1 |
Die gelb leuchtenden Felder bedeuten in diesem Fall 17:49. Man muss einfach nur die vertikal untereinander stehenden Zahlen addieren.
Um die Uhrzeit einzustellen drückt man beide Tasten genau gleichzeitig. Die Anzeige flackert dann, es sei denn es ist gerade zufällig 00:00 Uhr. Anschließend kann man mit der linken Taste die Stunden und mit der rechten Taste die Minuten hoch drücken. Nach 5 Sekunden Pause beendet die Uhr diesen Setup-Modus automatisch.
Außerhalb des Setup-Modus kann man durch Druck auf die linke oder rechte Taste das Farbmuster wechseln. Folgende Muster sind programmiert:
Anzahl | Bezeichnung |
---|---|
1 | Steckernetzteil 5V min. 300mA |
1 | STM32F103C8T6 Board (Blue-Pill) |
2 | Mikrotaster |
16 | RGB LED in der Bauform PLCC-6 |
4 | Transistoren BC337-40 |
4 | Widerstände 1k Ohm 1/4 W |
12 | Widerstände für die LEDs, z.B. 100 Ohm 1/4 W (siehe Text) |
1 | Rolle Kupferlackdraht, min. 5 Meter lang mit 0,1 - 0,3mm Durchmesser |
(1) | Knopfzelle 3V mit Batteriehalter |
2 | Blatt dickes Papier Din-A4 (Herlitz Karteikarten 170g/m²) |
1 | Gehäuse |
Es werden passive RGB LEDs benötigt, also nicht die bekannten WS2812 mit integrierter Steuerung.
Die Vorwiderstände für die Leuchtdioden sollen so ausbalanciert werden, dass alle drei Farben gleich hell aussehen. Der Strom darf dabei pro Farbe nicht über 15mA betragen, sonst wird der Mikrocontroller überlastet. Ich bin für meine Leuchtdioden durch Ausprobieren auf folgende Werte gekommen: 4x220 Ohm für grün, 4x100 Ohm für rot, und 4x10 Ohm für blau.
Die Leuchtdioden sind in einer Matrix aus 4x4 Feldern angeordnet. Sie befinden sich in einem Gitterartigen Rahmen, welcher mit einem bedruckten Blatt Transparentpapier als Mattscheibe abgedeckt ist.
Die Transistoren und Widerstände habe ich direkt an das Mikrocontroller Board angelötet. Die Leuchtdioden und Taster werden mit Kupferlackdraht verbunden. Dieser lässt sich bei hoher Temperatur (in meinem Fall 350°C) gut löten. Aber schone dabei die empfindlichen Leuchtdioden!
Man kann optional eine 3V Batterie an den Anschluss 3VB (und GND) anlöten, damit die eingestellte Uhrzeit bei Stromausfall nicht verloren geht.
Die Firmware habe ich mit der System Workbench geschrieben. Man kann sie wahlweise mit einem ST-Link Adapter oder mit einem USB-UART Adapter in den Mikrocontroller übertragen (siehe Software und Anleitung). In der ersten Minute der Inbetriebnahme sind die LEDs zunächst alle dunkel, weil die Anzeige mit 00:00 Uhr beginnt.
Download: Druckvorlage für das Gitter, Firmware, Quelltext der Firmware