|
Nach der
MP3-Station
folgt nun ein weiteres Geld und Zeit verbrauchendes Konstrukt, basierend auf
dem
Blinkenlights-Starterkit
der Firma
Tinkerforge
. Auf das System dieser Firma war ich ja früher schon gestossen,
was dann die
MP3-Station
zur Folge hatte. Dort sind auch die Grundlagen dieses Systems aufgeführt.
Dieses Kit besteht primär aus 200 RBG-Pixeln (auf der Tinkerforge-Seite
sind auch einige Fotos des zusammengebauten Systems sowie der Einzelteile
zu sehen). Angeschlossen an ein "LED-Strip"-Bricklet (und damit natürlich
auch an einen "Master Brick" des Tinkerforge-Systems), kann man jede einzelne
dieser 200 Pixel in einer beliebigen Farbe (Rot, Grün und Blau in
jeweils 255 Helligkeitsschritten) leuchten lassen. Im Set ist dann noch
eine große Grundplatte aus schwarzem Plastik enthalten, in welcher die
Pixel eingesetzt werden und dann eine Matrix von 20 x 10 Pixeln darstellen.
Das Set habe ich dann wieder
an einen
Raspberry Pi
angeschlossen, damit man die LED-Tafel ohne Anschluss eines "grossen"
Computers autark betreiben kann. Ich habe dann das Grundgerüst der
Funktionalität des Java-Programmes meiner MP3-Station als Basis
genommen, um das Steuerprogramm der LED-Tafel zu schreiben. Grundlage ist
dabei ein kleines Framework, in welchem einzelne Plugins gewählt werden
können, welche Darstellungen auf der LED-Tafel vornehmen (laufende
Lichter, Uhrzeit etc pp). Diese Plugins können dazu auf zentrale
Hilfsfunktionen zum Darstellen der grafischen Daten zugreifen, d.h.
die eigentliche Arbeit der Ansteuerung der LED-Pixel wird von einer zentralen
Funktion durchgeführt.
Zur autarken Bedienung war es auch nötig, ein
Anzeige- und Bedienelement anzuschliessen. Dazu diente das auch schon bei
der MP3-Station verbaute "LCD-Bricklet", welches neben einer 20x4-LCD-Anzeige
auch 4 Button bietet. Mit Hilfe dieses Bricklets können nun die
vorhandenen Plugins gestartet und gesteuert werden.
Wie bei der MP3-Station ist hier auch wieder ein kleiner Web-Server
am Start, über den die LED-Tafel zusätzlich
bedient werden kann. Das betrifft
natürlich das Starten und Stoppen der Plugins, aber auch die
Konfiguration des jeweils laufenden Plguins. Dazu stellt das Plugin eine
Liste der änderbaren Parameter dem Framework zur Verfügung. Diese
werden auf der Weboberfläche angezeigt und können dort geändert
werden. Das Framework leitet diese Daten dann an das Plugin weiter.
Tinkerforge bietet in einem Demo-Programm bereits einige grafische
Effekte an. Ein paar davon habe ich dann in dieses Framework
überführt und auch bereits selbst ein paar
Plugins geschrieben. Auf jeden Fall ist da noch Potential für mehr ;-)
Die LED-Tafel besteht zur Zeit aus folgenden Komponenten:
- Raspberry Pi: Auf diesem (zuvor Modell B, inzwischen ein Modell 2)
läuft das Java-Programm, welches die Tinkerforge-Komponenten
steuert, die LED-Pixel ansteuert und zudem über einen Mikro-Webserver auch
neben dem LCD eine
Web-Steueroberfläche für das Gerät bietet.
- Auf dem Raspberry gibt es aus Kostengründen keine RTC, also keine Echtzeituhr, welche
die Zeit auch bei abgeschaltetem Raspberry behält. Für das
Uhren-Plugin (s.u.) ist aber eine korrekte Uhrzeit notwendig, also
habe ich dem Raspberry eine aufsteckbare
RTC
von ABelectronics spendiert. Die Anbindung geschieht über den I2C-Bus.
Inzwischen habe ich diese RTC allerdings entfernt, der Raspberry
holt sich die aktuelle Uhrzeit über das Netz.
- Master Bricks (2 Stück): Hier sind die Bricklets angeschlossen. Weil
das LED-Strip-Bricklet viel internen RAM eines Bricks zur Speicherung der
Zustände
verbrauchen,
braucht es einen weiteren Master Brick, wenn mehr als
ein anderes Bricklet angeschlossen werden soll. Dieser Stapel ist per USB an
den Raspberry angeschlossen.
- LED-Strip-Bricklet: Hier sind die LED-Pixel angeschlossen. Diese bestehen
im Prinzip aus einem Bus, d.h. sind alle hintereinander angeschlossen. Jedes
LED-Pixel hat einen kleinen Chip, der auf dem Bus lauscht und ggf. die drei
internen LEDs (grün, rot und blau) ansteuert.
- LCD-Bricklet: das beleuchtete 4x20-stellige Display dient zu Bedienung
des Systems: Auf dem Display werden vorhandene Plugins angezeigt und
können mit den Buttons des Displays ausgewählt werden. Ist ein
Plugin gestartet, zeigt dieses auf dem Display weitere Informationen an. Die
Buttons dienen dann zur Steuerung des Plugins.
- 7-Segment-LED-Bricklet: Hierüber kann die Uhrzeit angezeigt werden,
alternativ das aktuelle Datum. Ist natürlich nur eine Spielerei,
aber das ist der Rest des Systems ja auch ;-) Das Framework kümmert
sich um die Anzeige, das jeweilige Plugin kann sich aber dafür
entscheiden, das das Datum angezeigt wird (beim Uhrzeit-Plugin ist eine
zusätzliche Zeitanzeige eher sinnlos).
- IR-Entfernungs-Bricklet: Analog der Verwendung bei der MP3-Station
wird dieser Sensor dazu verwendet, die LCD-Beleuchtung nur dann anzuschalten,
wenn jemand vor dem Display steht.
Folgende Plugins habe ich Zeit implementiert:
- Uhrzeit: Die aktuelle Uhrzeit wird auf der LED-Tafel abgezeigt.
Dazu gibt es zwei Darstellungen: Einmal angenährt an Segment-Anzeigen,
und einmal leicht abgerundet. Zudem kann man verschiedene Farben der Anzeige
wählen, darunter auch eine "Regenbogen"-Azeige, in welcher die Spalten
in verschiedenen, sich verschiebenden Farben angezeigt werden.
- Regenbogen: Alle 200 Pixel leuchten, die Farben sind alle leicht
verschieden und ziehen sich durch das gesamte Spektrum (daher "Regenbogen").
Die Farben laufen dabei langsam weiter. Basiert auf dem
Tinkerforge-Demoprogramm.
- Feuer: Eine Feuer-Simulation, also eine Art Lager- oder Kaminfeuer.
Farbton und Höhe des flackernden Feuers können eingestellt werden.
Basiert auf dem Tinkerforge-Demoprogramm.
- Game of Life: Eine Implementierung der "Lebensimulation" von
John Horton Conway
. Es werden zufällig Punkte gesetzt und die Simulation so lange
ausgeführt, bis Stillstand herrscht. Dann wird das Spielfeld
gelöscht und neu gefüllt.
- Farbmorph: Von links nach rechts verändert sich die Farbe langsam von
einem zufälligen Farbton in einen anderen.
- Lauftext: Ein Text läuft über die LED-Tafel. Am LCD-Display
können dabei einige eingespeicherte Texte ausgewählt werden, und
über die Weboberfläche können beliebige Texte vorgegeben
werden. Basiert auf dem Tinferforge-Demoprogramm.
- MP3-Info: Hier fragt das Programm regelmässig Daten der
MP3-Station
ab (macht natürlich nur Sinn, wenn diese auch läuft),
unter anderem den Titel des gerade laufenden MP3-Stücks oder
ggf. die Zusatzinformation des Livestreams. Diese Daten werden
(abwechselnd mit Temperatur, Luftdruck etc.)
auf der
LED-Tafel angezeigt (ähnlich dem Lauftext). Läuft ein
MP3-Stück, wird die Länge auf der 7-Segment-Anzeige angezeigt
und der Fortschritt des Stücks auf einer Linie unterhalb des Textes.
- Flicker: "Aufblitzen" einer Menge zufällig gewählter
Punkte, abhängig von diversen einstellbaren Parametern.
©2020 Holger Thiele
generiert aus "ledtafel.template" vom 05 05 2016
|