Freitag, 2. Januar 2015

Arduino Yun + Led Pixelstrip = Terrassenlicht

In unseren neuen Wintergarten braucht es auch die richtige Beleuchtung! Natürlich bietet sich Leds auch für den Ausseneinsatz an. An einen Microcontroller angeschlossen, lassen mit mehrfarbigen Leds abwechslungsreiche Lichtstimmungen erzeugen. Hardwareseitig gibt es nicht viel Arbeit. Meine Stückliste:

1 Aduino Yun (Microcontroller mit WLan)
2 Led Pixelstrip (50 Leds), Spritzwasserfest (IP67) pro Led ein WS2801 zu Ansteuerung
1 Netzteil 5V 8A
1 Gehäuse

Aufgebaut sieht das dann ungefähr so aus:

Die Softwareseite ist etwas aufwändiger. Die Programmierung des Arduino ist relativ einfach. Guter Einstiegspunkt ist die offizelle Aduino-Webseite: http://www.arduino.cc/. Zum Glück gibt es zur Ansteuerung der Leds und zur Kommunikation mit dem WLan-Chip gute Bibliotheken. Ich habe von der Arduino Bridge-Library die Mailbox-Funktionen übernommen. Damit lässt sich asynchron zwischen Microcontroller und WLan-Chip kommunizieren.

Der Vorteil am Arduino ist, dass alles gut zusammenpasst. Das Arduinoboard verfügt über einen USB-Anschluss und lässt sich direkt aus der Arduino-Entwicklungsumgebung programmieren. Mit dem Arduino YUN ist das sogar über WLan möglich. Das ist für mich sehr praktisch, weil ich auch nach dem fertigen Einbau meine Software weiterentwickeln und updaten kann. Herausfordernd am Arduino sind die technischen Daten. 2.5k Ram und 32k Flash sind nicht sehr viel. (300 Byte sind schon nur nötig, um die RGB-Werte der 100 Leds im Speicher zu halten.)

Weil jede Led von einem WS-2801 angesteuert ist, kann jede Led individuell angesteuert werden. Pro Led können also separate Rot-, Grün- und Blauwerte setzen. Die Leds sind über einen seriellen Bus miteinander verbunden. Das vereinfacht die Verkabelung natürlich stark. Wegen des seriellen Busses machte ich mir zunächst etwas Sorgen bezüglich der maximalen Übertragungsrate. Bei 100 Leds braucht man sich aber keine Sorgen zu machen.  In einem einfachen Test kam ich auf ca. 40 FPS. D.h. es wäre möglich ca 40 Mal pro Sekunde die RGB-Werte aller Leds neu zusetzen.

Zur Steuerung des Microcontrollers und damit schlussendlich der Leds habe ich einen einfachen Webclient geschrieben. Der Webclient verwendet Twitter Bootstrap und etwas Javascript. Der Client ist damit auf unterschiedlichen Endgräten lauffähig. Getestet habe ich das auf meinem Notbook, einem IPad und einem Samsung S4 Mini.

Und zum Schluss ein Video, dass die Bastelei in Action zeigt: