Ambilight mit hyperion und LED-Player

Jeder hat bestimmt schon mal die Hintergrundbeleuchtung bei einigen der Fernseher von Philips gesehen. Die Beleuchtung erweitert subjektiv den sichtbaren Bereich und beleuchtet schön die Raumumgebung. Es ist daher nicht verwunderlich, dass es viele Projekte gibt, die diese Funktion nachbauen. Hyperion ist eins davon.

Hyperion

Ursprünglich für den Raspberry Pi entwickelt, läuft es inzwischen auch auf vielen anderen Linux/Unix Plattformen und unterstützt eine Vielzahl an LED Geräten, was nicht zuletzt der Open Source Community zu verdanken ist. Außerdem kann es über eine „Konstruktion“ aus HDMI Splitter, HDMI zu Composite Video Konverter und einem USB-Video Grabber auch externe Videoquellen anzapfen. Im Netz sind sehr viele Anleitungen zu finden, wie die Hardware zusammengebaut und Hyperion installiert wird (Die Projekt-Wiki-Seiten sind zudem sehr ausführlich, was die Installation und die Konfiguration angeht), daher werde ich hier nur auf die Verwendung vom LED-Player mit Hyperion angehen…

Mein Aufbau

Bei mir ist der Aufbau recht simpel. Ich habe insgesamt 44 ws2812b LEDs (20 oben, je 12 links und rechts). Angedacht waren noch 20 unten, da mein Fernseher jedoch auf dem Standfuß steht, kommen sie momentan nicht zum Einsatz. Angeschlossen sind die LEDs an den LED-Player-S und per USB an die Cubox-i2 (vorher war ein RPi 1 B im Einsatz). Ist meiner Meinung nach vom Anschluss viel einfacher, als andere Lösungen mit Ws2801 über SPI oder ws2812 über PWM direkt am Raspberry Pi.
Da ich Filme mit der Cubox-i2  schaue und TV oder andere Quellen mir nicht so wichtig sind, habe ich keinen zusätzlichen Video-Grabber. Das Bild wird direkt beim Abspielen abgegriffen und nach der Transformation werden die LEDs entsprechend angesteuert. Durch die geringe Anzahl von LEDs wird auch kein zusätzliches Netzteil benötigt.

Konfiguration

In der hyperion.config.json Konfigurationsdatei werden folgende Werte für den LED-Player-S (ebenfalls für LED-Player-M im tpm2 Modus) eingetragen:

{
    "name"       : "LED-Player"
    "type"       : "tpm2",
    "output"     : "/dev/ttyACM0",
    "rate"       : 115200,
    "colorOrder" : "grb"
}

Der Parameter name  ist optional und wird intern nicht verwendet. type  bestimmt den Gerätetyp. output  gibt den Pfad für den Zugriff auf das Gerät. Momentan wird
tpm2 automatisch als serielles Device behandelt, was nicht ganz richtig ist, da tpm2 an sich nur das Übertragungsprotokoll bestimmt – das wird mal später korrigiert. Auf Linux Systemen ist der Gerätepfad in der Regel /dev/ttyACM0 , auf OSX ist es z.B. /dev/tty.usbmodem1421. rate  gibt die Baudrate an, dieser Wert hat beim LED-Player aber keine Auswirkung, da er automatisch mit der höchstmöglichen Geschwindigkeit die Daten überträgt. Manche Systeme haben jedoch Probleme mit krummen Werten beim Öffnen des seriellen Ports, daher sollte man es auf 115200 lassen. colorOrder  gibt die Reihenfolge der Farben an. Beim LED-Player bzw. den WS2812 LEDs kommt zuerst grün, dann rot und am Ende blau.

Das war es dann auch schon. Der LED-Player hat bis jetzt gute Dienste geleistet und funktioniert ohne Probleme. In den kommenden Beiträgen zeige ich, wie man Hyperion selbst kompilieren kann, wie die Struktur des Programms aus der Programmiersicht aussieht und wie man das Projekt von der Abhängigkeit von der Qt Bibliothek befreit, um es letztendlich für viele andere Plattformen zu kompilieren. Es läuft z.B. bei mir auch auf meinem WLAN Router TP-Link TL-WR1043ND v1 mit OpenWrt.

10 Gedanken zu „Ambilight mit hyperion und LED-Player