Rundbuntplasma
Inhaltsverzeichnis
Idee
Eine günstige tallierte, zylindrische Papierlampe soll zu einem interaktiven Dekoobjekt umgebaut werden. Von Innen wird in die Lampe ein Lichtschlauch mit LPD8806 LED-Controllern eingebracht, der sich dadurch auszeichnet, das jede LED einzeln angesteuert werden kann. Ein Raspberry soll das ganze steuern, mit einem für Mobilgeräte optimierten Webinterface kann der Lichteffekt dann eingestellt werden. Einer der wichtigsten Effekte ist der Oldschool Plasmaeffekt, der auch realisiert werden soll. Hier ist recht anschaulich erklärt, wie ein solcher Plasma-Effekt erzeugt wird.
Umsetzung
Hardware
Die Ansteuerung der LPD8806 LED-Ketten dürfte ziemlich unproblematisch sein, die Kette müsste sich direkt mit dem SPI-Port des Raspberry Pi verbinden lassen. Zur Versorgung wird allerdings ein stärkeres Netzteil (5V, viel Ampere) nötig sein. Die Kette wurde um die innere Drahtkonstruktion gewickelt und mit Draht fixiert, und zwar so, dass sich genau 10 LEDs pro komplette Umwicklung ergeben. Das macht die Ansteuerung als einfache 32x10 Matrix später möglich. Um einen sinnvollen Abstand der LEDs in jeder Richtung zu erreichen, wurden insgesamt 10m (*Hust*) dieses Streifens auf den Kern, der ziemlich genau 1m lang ist, aufgebracht.
Leider ist das innere Gestell der Lampe ziemlicher Schrott aus schlecht geschweißtem Stahldraht (kostete ja auch nix), und so musste der Innenteil mit Alustangen verstärkt werden. Jetzt ist es schon etwas stabiler. Beim Testbetrieb zeigte sich dann, dass der Widerstand des LED-Streifens nicht mehr vernachlässigbar ist, jedenfalls nicht nach 10m - hier waren von den ursprünglich eingespeisten 5V nur noch etwa die Hälfte übrig, wodurch bei voller weiß-Ansteuerung sich auch der Farbton sehr stark von weiß nach grün verschob. Daher kommt demnächst eine Einspeisung an mehreren Stellen hinzu, um die Situation zu entschärfen. Dann wird auch das testweise verwendete 5A-Netzteil nicht mehr sinnvoll sein und gegen ein stärkeres ersetzt.
Software
Als Webserver wird vermutlich lighttpd zum Einsatz kommen, das Webfrontend wird von jquery mobile gestützt. Entwicklungsschwerpunkt ist damit die Erzeugung der Animationen in C(++) sowie die Anbindung des Animationsprogrammes an das Webinterface. Die Idee ist bisher wie folgt:
- Webfrontend
- Zugriff über QR-Code, der an der Lampe hängt für jeden in der Nähe möglich
- lighttpd liefert eine Seite mit Schiebereglern (jQuery mobile basiert), wo man z.B. R/G/B-Werte sowie Animationseinstellungen machen kann
- Ein CGI nimmt veränderte Werte entgegen und sendet sie per TCP (oder UDP?) an das Animationsprogram
- Animationsprogram
- läuft dauernd im Hintergrund
- nimmt Anfragen über TCP oder UDP oder StdIn/Out oder noch was anderem hin und wieder entgegen
- ruft möglichst 60x pro Sekunde die Animationsprozedur auf
- Animationsprozedur
- berechnet das nächste Bild im Speicherarray
- holt gelegentlich geänderte Animationsparameter
- sendet das Speicherarray an den LPD8806-Streifen
- optional: baut die Animation auch in ein X-Fenster o.ä. auf
- Hardwarebackend
- Anschluss an Raspberry
- P1-19, GPIO 10 (MOSI), Daten zu LPD8806
- P1-23, GPIO 11 (SCLK), Takt zu LPD8806
- P1-25, Ground, GND an LPD8806
- SPI Zugriff und Timersachen über Library, zwei Varianten gibt es
- bcm2835 library - etwas älter, Programme müssen als root laufen
- wiringPi library - etwas moderner, Pin-Nummern neu sortiert (arg), an Arduino angelehnt
- Anschluss an Raspberry
Betrieb
Testbetrieb mit Arduino
Für einen ersten Test wurde der Lichtstreifen mit einem Arduino angesteuert. Darauf lief einfach eines der Beispielprogramme aus der LPD8806-Library von Adafruit. Das sah schon sehr beeindruckend aus, wie die folgende Fotokollage zeigt: