Oz
Just the technical details? See the repo here. There you’ll find
The following is an explanation of the technical side of the project as well as a short reflection on the artistic background and the goals of the project.
Dieser LED-Cube hing auf dem Easterhegg 2023, einer Veranstaltung des Chaos Computer Clubs im Hamburger Theater Kampnagel. Es ist ein anspruchsvolles Projekt und ich habe es bei Weitem nicht alleine durchgeführt, sondern von vielen Hacker*innen Unterstützung bekommen, ohne die es nicht möglich gewesen wäre. Besonders codename, mad und blinry dürfen hier genannt werden.
Hardware⌗
Der Rahmen besteht aus 2m langen Multiplex-Latten, die in der Form einer Sieben-Segment-Anzeige angeordnet sind, sodass er zirka 2m tief und 4m lang ist. Die mittlere Latte liegt doppelt, weil sie die Netzteile und die Microcontroller trägt. An den langen Seiten sind momentan acht Hängepunkte mit Ringmuttern; diese sind üblicherweise mit Stahlseilen am Deckenaufbau aufgehängt, dafür ist die jeweilige Haustechnik zuständig.
Parallel zur langen Seite sind sieben Trimmleinen gespannt, die die einzelnen LED-Ketten tragen.
Die insgesamt 140 LED-Ketten sind jeweis 2,5m lang; deren LEDs sind 10cm voneinander entfernt. Ich habe sie als 20m-Streifen bei aliexpress bestellt, in je acht Streifen aufgetrennt und (mit Hilfe) an ein Custom-PCB, genannt „Wäscheklammer“, gelötet. Zwanzig dieser Ketten klemmen in einem Abstand von 20cm an einer Trimmleine und bilden so eine Art Vorhang – insgesamt sind also, in einer Matrix von 20*25*7 Voxeln, in den LED-Ketten 3500 RGB-LEDs einzeln ansteuerbar.
Jeder der Vorhänge wird durch eine modular getrennte Einheit angesteuert. Diese besteht aus einem Netzteil und dem Microcontroller (Wiznet W5100S-EVB-PICO, der einem Raspberry Pi Pico mit Ethernet entspricht: „basically works the same as Raspberry Pi Pico board but with additional Ethernet”). Der Microcontroller ist zusammen mit Ausgangstreibern ebenfalls auf ein Custom-PCB gelötet. Diese „Knoten“ werden vom Zuspielrechner über den Ethernetswitch auf der Mittellatte mit Pixel- und weiteren Steuerungsdaten versorgt.
Die LEDs sind mit einem WS2812-kompatiblem Protokoll (vgl. Adafruits NeoPixel) einzeln adressierbar. Jedoch kennt die hier verwendete Art LEDs ihre absolute Position im Streifen und funktioniert nicht wie die üblichen LED-Streifen als Schieberegister. 1
Da ich die LEDs aus 20m-Streifen ausgeschnitten habe, war dieses Verhalten ein Problem: Manche der 2,5m-Ketten, die ich verwende, fangen beim Index 0 an, manche bei Index 25, 50, 75, etc. Dies musste durch einen Offset in der Software aufgefangen werden. Auch Produktionsfehler mit falschen LED-Positionen waren ein Problem, so fiel ein Streifen dadurch auf, dass er ab Werk an Position 11, 12, und 13 die Position 3, 4 und 5 wiederholt. Wenige andere dagegen hatten einzelne defekte LEDs. Insgesamt waren die Fehler jedoch so selten, dass sie mit Überprüfung im Vorfeld kein Problem darstellten und in den Animationen nicht groß aufgefallen sind.
Versorgung⌗
Da die Strom- und Datenverteilung durch die Hardware auf dem Rahmen übernommen wird, braucht es nur eine Schuko-Steckdose und eine Ethernet-Verbindung. Das Ethernet sollte direkt zum steuernden PC laufen; der Betrieb des Cubes benötigt kein Internet.
Firmware und Software⌗
Die Firmware der Knoten ist in C geschrieben, was vollständig codename übernommen hat. Damit die Picos Daten vom Zuspielrechner empfangen können, müssen auf diesem erstens die Farbwerte der einzelnen Voxel in den Animationen errechnet werden und zweitens diese dem Protokoll entsprechend zum jeweils richtigen Pico gesandt werden. Die einzelnen Animationsprogramme generieren pro Zeitframe eine Liste von Tupeln mit Koordinaten und RGB-Werten, die an den jeweiligen Knoten gehen. Diese beiden Aufgaben übernimmt die Software auf dem Zuspielrechner, die in Python geschrieben ist.
Für das Testen und Debuggen existieren mehrere Programme:
rig/cli.py
ermöglicht eine direkte Steuerung über die Kommandozeile.rig/statusgui.py
zeigt tabellarisch die Betriebsmetriken und gesetzten Parameter aller Knoten an.rig/scene.py
zeigt eine simulierte Ansicht des Cubes an, sodass Animationen auch ohne den Cube oder sonstige Hardware ausgetestet und betrachtet werden können.
Was daraus entstanden ist⌗
Auf dem Easterhegg 2023 haben mehrere Personen eigene Animationen beigesteuert: Simon hat eine Animation, die ursprünglich für eine andere 3D-Umgebung gebaut wurde, für den Cube angepasst.
blinry, Kiki und Moritz haben eine Fairy-Dust-Rakete (eines der Wahrzeichen des CCC) animiert.
Lena und Kiki haben es geschafft, das VR-Spiel Moon Rider mit dem Cube zu verknüpfen, sodass die Objekte, die das Spiel für das VR-Headset generiert, live auf dem Cube angezeigt werden können.
Noch einmal vielen Dank an alle, die mitgeholfen haben!
Ziele⌗
Der eigentliche Einsatzzweck des Cubes ist ein Bühnenbild für eine Musiktheater-Performance. Im Cube soll eine Figur angezeigt werden, mit der die Performer*innen auf der Bühne interagieren können. Diese Figur soll durch Machine-Learning-Algorithmen gesteuert werden, sodass sie für die Performer*innen nicht ganz vorhersehbar, sozusagen ‚eigenwillig‘ ist und damit von einer komplizierten Kulisse zu einer Mitspielerin wird. Die nächsten Schritte im Projekt sind demnach, Motiontracking-Daten im Cube als humanoide Form anzuzeigen.
Außerdem gab es auf dem Easterhegg viele Anregungen für Ausstellungsorte für den Cube, der dann – so wie er auch auf dem Easterhegg war – als Kunst-Installation und nicht als Bühnenbild dient. Besonders die GPN – eine CCC-Veranstaltung, die im ZKM in Karlsruhe stattfindet – wäre sehr passend; leider wird das frühestens 2024 möglich sein.
-
Genaueres zur Funktionsweise der einzel adressierbaren LEDs findet sich hier im Blog und hier. ↩︎