Freenerding: Tally lights und Neopixel Status-LEDs am stick-pi

in #deutsch3 years ago

Die Idee kam mir, als ich mit einem Kunden zusammen ein Setup von TallyArbiter mit einigen Tally lights mit Wemos D1 minis implementiert habe. "Tally" wird das rote Licht an Studiokameras genannt, das anzeigt, welche Kamera gerade auf Sendung ist (und ggf. auf welche als nächstes geschnitten werden soll). Das ist wichtig, dass alle Mitwirkenden vor und hinter der Kamera wissen, wohin sie schauen und sprechen sollen, ob sie gerade "dran" sind oder ihren Bildausschnitt ändern können usw. Somit ist das Tally ein wertvolles addon zum Intercom.
Der TallyArbiter ist opensource und ermöglicht, verschiedene Studiosysteme wie Bildmischer, Softwarelösungen wie OBS Studio und vMix sowie Kameras und Tally Lights zu verbinden und die Tally an/aus Signale zu routen. Das Angehme ist, dass mit einem raspberry pi oder ESP Chip und Neopixel LEDs für sehr wenig Geld ansprechende und funktionelle Tally lights selbst bauen können. Und genau das haben wir gemacht. Am Ende blieben vom LED-Streifen noch 4 Neopixel übrig und ich dachte mir: die nutze ich für ein rudimentäres Status-Display für mein täglich genutztes Lieblings pi: den WLAN-Stick!

ledstrip.jpg

Das ist das Thema des heutigen Freenerdings. Ziel ist, dass das stickpi über die 4 LEDs rudimentäre Statusinfos (z.B. WLAN verbunden; aber auch komplexe Sachen wir icinga/check_mk notifications und Erinnerungen) anzeigen kann.
Frisch im Thema drin und mit Lust auf nodejs gebastel mache ich mich ans Werk.

Als erstes brauche ich das pinout: einen freien GPIO Pin, einen 5V VCC und einen GND. Ich wähle Pins 14 (GND), 40 (GPIO 21) und den 5V out der kleinen Stratux Sensorplatine, die bereits teil meines Stickpi-Setups ist.

Nun brauche ich eine nodejs library für die Neopixel. Am Besten gleich eine, die mit node-red zusammenarbeitet. Und die ohne einen Microcontroller wie dem facecandy oder einem arduino für die LEDs auskommt und statt dessen direkt mit dem GPIO Pin arbeitet.
Eine google Suche bringt ziemlich viel Zeug, was ich aber nicht brauchen kann. Dann stoße ich auf rpi-ws281x-native und NeoPixelRpiWebServer, was sich gut liest. Ich scheitere an der ranzig uralten nodejs Version auf dem stickpi (raspbian 9 von 2019), das möchte ich auch gerade nicht updaten.

Also gehe ich den Weg des geringsten Widerstands und mache, was ich schon immer gemacht habe, um NeoPixel am pi zu betreiben:
sudo pip3 install adafruit-circuitpython-neopixel
Wie sich herausstellte, war auch meine python3 Version und alles drumrum zu ranzig, ich musste erst mal updaten.
sudo python3 -m pip install -U pip
sudo python3 -m pip install -U setuptools

Dann warf das install Script immer noch Fehler, die könnte ich aber ignorieren, der sample code von hier bringt die LEDs zum leuchten/blinken.

piwithledstrip.jpg

Den LED-Streifen klebe ich mit Sekundenkleber einfach auf das 3D gedruckte Gehäuse. Damit die LEDs nicht blenden, reicht ein Stück normales Druckerpapier als Diffusor.

piwithledstripdiffusor.jpg

Die Anbindung des Streifens aus node-red raus muss ich dann wohl doch mit einem tcp socket und einem python server machen. Oder das OS updaten.

bis zum nächsten Freenerding...