Raspberry Pi mit LED Display

Da ich eher ein Software-Mensch bin, habe ich nach einer Lösung gesucht dem Raspberry Pi ein Display zu verpassen ohne einen Lötkolben zu benutzen oder Schaltungen mit einer Steckplatine zu bauen. Fündig wurde ich beim Dream Cheeky USB Message Board. Dieses braucht nur einen USB-Anschluss und der Hersteller bietet praktischerweise ein Datenblatt an, das genaue Informationen enthält wie dieses anzusteuern ist.

Vorab was zu den Bewertungen. Auf Amazon fallen die Bewertungen für das Board schlecht aus. Dies liegt daran, dass sich die Leute über fehlende Softwareunterstützung beklagen. Da wir unsere eigenen Treiber nutzen, haben wir dieses Problem nicht. Das Board funktioniert einwandfrei.

Treiber

Da Dream Cheeky das Datenblatt für Hardwareentwickler veröffentlicht hat, das genau zeigt welche Bits übertragen werden müssen, ist es keine große Herausforderung hierfür eigene Treiber zu entwickeln.

So gibt es dcled, ein in C geschriebenes Programm, dass das Board ansteuert. Da mir dieses Programm aber nicht flexibel genug war, habe ich mich entschieden eigene Treiber zu entwickeln und zwar in NodeJS. Warum NodeJS? Damit es einfach ist Online-Dienste einzubinden, um beispielsweise Tweets oder das Wetter auf dem Board anzuzeigen. In C wäre wäre der Aufwand deutlich höher.

Installation auf dem Raspberry

NodeJS

Als erstes besorgen wir uns NodeJS, eine serverseitige Runtime für JavaScript. Da es in Raspbian kein Package für NodeJS gibt, kann man dieses anhand des Git Repositories selbst kompilieren. Da dies aber ewig dauert, werde ich nicht näher darauf eingehen. Praktischerweise gibt es nämlich vorkompilierte Packages für ARM. Wir geben also folgendes ein:

wget http://node-arm.herokuapp.com/node_latest_armhf.deb
sudo dpkg -i node_latest_armhf.deb
node -v

Liefert der letzte Befehl eine Versionsnummer aus, wissen wir, dass die Installation erfolgreich war.

NodeUsbLed installieren

Als nächstes laden wir die eigentlichen Treiber runter:

git clone https://github.com/MorbZ/NodeUsbLed

Hierfür werden noch einige NodeJS Module benötigt. Unter anderem node-hid, welches libusb benötigt, daher installieren wir diese:

sudo aptitude install libusb-1.0-0-dev
cd NodeUsbLed
npm install node-hid sprintf-js request xml2js ws

Jetzt ist alles installiert, was wir brauchen und wir können das Programm starten:

sudo node rotate.js

Jetzt sollte der Demo-Modus auf dem Display zu sehen sein.

Plugins

Standardmäßig laufen auf dem Display im Demo-Modus verschiedene Plugins durch und werden jeweils für 5 Sekunden angezeigt. Die Plugins sind: Equalizer, Ein sich bewegender Punkt, Uhr, Temperatur und Bitcoin Kurs.

Um einzelne Plugins zu deaktivieren kann man die rotate.js Datei öffnen und die unerwünschten Plugins auskommentieren.

Es ist auch möglich eigene Plugins zu schreiben. Hierzu schaut man sich am Besten die vorhandenen Plugins an. Es ist möglich Text auf dem Display auszugeben oder auch manuell die einzelnen Pixel anzusteuern.

Forever

Um das Display am Laufen zu halten ohne eine Konsole offen zu lassen, kann man Forever nutzen:

sudo npm install forever -g
sudo forever start rotate.js

Hiermit wird Forever installiert und das Programm im Hintergrund gestartet. Will man es wieder beenden schreibt man:

sudo forever stopall