Computer, OpenSource

CompanionPi mit Waveshare PoE-Hat (B) mit Display

CompanionPi mit PoE-Hat und Ausschalter (hier noch mit Stromkabel)

Bei „meinem“ Projekt Kirche.plus arbeiten wir in der Livestreamsteuerung mit einem Streamdeck – allerdings ohne die Standard-Software von Elgato. Stattdessen benutzen wir Bitfocus Companion. Das ist sehr viel vielseitiger und kann sehr vieles, was man wirklich braucht, zumindest wenn man auf Spielereien wie Livevideo auf den Tasten verzichten kann. Da Companion netzwerkbasiert arbeitet, haben findige Menschen eine Lösung entwickelt, mit der man noch flexibler ist: Companion auf einem Raspberry Pi 4 mit Stromversorgung durch PoE (Power over Ethernet). Damit braucht man nur ein Netzwerkkabel, auf dem PoE aktiv ist und kann ohne alles weitere einen ganzen Livestream steuern. Oder ein Ton-Mischpult. Oder die Songtextsoftware OpenLP. Oder MQTT-Nachrichten verschicken. Oder, oder, oder….

So weit, so einfach. Will man das allerdings in einer schicken und portablen Lösung, braucht man noch ein passendes Gehäuse dazu und ein PoE-Hat für den Raspberry Pi – am besten mit Display. (Naja, Letzteres ist mit den eingeführten Variablen in Companion weniger wichtig geworden, aber dazu vielleicht ein anderes Mal.) Im Folgenden nun mein Setup, meine Bauteile, und eine Anleitung für das Display – denn die Anleitung von Waveshare ist irgendwie etwas durcheinander.

Mein Setup

  • Raspberry Pi 4 mit 4 oder 8GB
  • PoE-HAT (B) mit Display von Waveshare
  • ein kurzes LAN-Kabel
  • ein kurzes USB-A auf USB-C Kabel
  • Zwölf 5mm x 2mm Magnete
  • RJ45 Kupplungsadapter
  • Wippschalter 1cm x 1,5cm
  • einen 3D-Drucker (oder jemanden, der jemanden kennt,…)
  • diese STL-Datei
  • und natürlich ein Elgato Streamdeck XL

Das Image von CompanionPi wird auf eine SD-Karte geflashed und nach dem ersten Booten kann es per ssh/putty oder mit Bildschirm und Tastatur weiter gehen.

Display zum Laufen bringen

Das Display zeigt die aktuelle IP und auf Wunsch noch mehr an.

Als erstes mit $sudo raspi-config -> Interface Options das I2C-Kernel Modul/ ARM I2C Interface aktivieren, denn an diesem Anschluss hängt das Display dran. Dann in einem Terminal folgende Befehle abarbeiten, um die entsprechende Bibliothek herunterzuladen, zu kompilieren und zu installieren.

cd
wget http://www.airspayce.com/mikem/bcm2835/bcm2835-1.60.tar.gz
tar zxvf bcm2835-1.60.tar.gz 
cd bcm2835-1.60/
sudo ./configure
sudo make && sudo make check && sudo make install

Dann holt ihr euch den Beispielcode von Waveshare:

cd
sudo apt-get install p7zip-full
wget https://www.waveshare.com/w/upload/b/b7/PoE_HAT_B_code.7z
7z x PoE_HAT_B_code.7z -r -o./PoE_HAT_B_code

Nun müsst ihr ein wenig programmieren, oder mit der Standardanzeige leben. Aber vorher ändert im Makefile die Bibliothek in die eben installierte. Dafür öffnet ihr das Makefile mit eurem Lieblingseditor (zum Beispiel vi oder nano)…

cd ~/PoE_HAT_B_code/c/
nano Makefile

… und ändert

# USELIB = USE_BCM2835_LIB
# USELIB = USE_WIRINGPI_LIB
USELIB = USE_DEV_LIB

in

 USELIB = USE_BCM2835_LIB
# USELIB = USE_WIRINGPI_LIB
# USELIB = USE_DEV_LIB

Nach dem Speichern modifiziert ihr je nach Können den Code oder eben nicht, kompiliert ihn und könnt ihn nun auch als root testweise ausführen. Mit der letzten Zeile und einem beherzten Druck auf die Entertaste sollte sich also auf eurem Display etwas tun.

cd ~/PoE_HAT_B_code/c/
make clean 
make
sudo ./main

Wenn ihr das Display in dieser Weise bei jedem Systemstart bestücken möchtet, dann könnt ihr in der /etc/rc.local vor dem „Exit 0“ am Ende der Datei noch ein

sudo /home/pi/PoE_HAT_B_code/c/main &

eintragen. Ich hatte noch keine Zeit mich in den Code zu vertiefen. Wenn ihr z.B. die 180° Wende schneller hinkriegt als ich, kommentiert bitte.

Gehäuse

Dank netten Menschen gibt es auf den Portalen mit 3D-Modellen genug Ausgangsmaterial, um arbeiten zu können – und dieses Mal gab es sogar richtig gute Vorlagen. Allerdings musste ich am Ende doch noch selbst ein wenig basteln, um alle meine Wünsche unter zu bringen. Ich wollte gerne einen separaten Lan-Anschluss verbauen, um die Buchse des Raspberrys nicht unnötig bei jedem Einsatz zu belasten. Hinzu kam der PoE-Hat, für den ich kein passendes Case gefunden habe und der Wunsch nach einem Ausschalter (den man nicht versehentlich betätigt).

Ausschalter

Da ich um die SD-Karte besorgt bin, habe ich auch direkt einen Ausschalter eingebaut, der den Pi regulär herunterfährt. Da mir die Taster zu fehleranfällig für einen hektischen Livebetrieb waren, wurde es ein schwergängiger Wippschalter. Um ihn als Ausschalter zu nutzen, muss der Bootloader auf dem neuesten Stand sein und folgendes in die /boot/config.txt eingetragen werden:

# Off-Button 
dtoverlay=gpio-shutdown,gpio_pin=17, active_low=1,gpio_pull=up

In den gängigen Anleitungen steht Pin 3. Das ist normalerweise auch die beste Wahl, weil der auch den Pi aus dem heruntergefahrenen (nicht ganz ausgeschalteten) Zustand wieder anwerfen kann. Aber: Pin 3 ist gleichzeitig vom Shield genutzt und deshalb taugt er nicht zum Ausschalten. Pin 17 hat keine Doppelfunktion und liegt direkt neben einem Ground-Pin, den man für das zweite Kabel braucht… Leider geht damit die Wieder-Anschaltfunktion flöten, allerdings könnte man einen Doppelwippschalter verbauen, der nach oben ausschaltet und nach unten wieder einschaltet (eben durch eine Verbindung an Pin 3). Getestet habe ich das aber nicht, weil ich ja durch herausziehen und wieder einstecken des PoE-Kabels nur einen billigen Buchse-Buchse-Adapter zerstören kann. Hätte ich das PoE-Kabel direkt im Pi, würde ich mir das aber ernsthaft überlegen.

Loslegen

Spätestens jetzt kann es endlich daran gehen Companion euren Vorgaben entsprechend zu konfigurieren. Ihr erreicht Companion standardmäßig über einen Browser im selben Netzwerk unter http://IP_VOM_PI:8000. Glücklicherweise habt ihr ja ein Display, das euch die korrekte IP-Adresse anzeigt 🙂