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

  1. „Durch die geringe Anzahl von LEDs wird auch kein zusätzliches Netzteil benötigt.“

    Bevor du solchen BS verzapfst, solltest du mal die Spezifikationen lesen. Ab 8 LEDs =480mA) muss man beim Player S ein externes NT verwenden. Du belastest den Player dezent um 2,2A dauerhaft über und verbreitest solchen Stuss auch noch an nichtsahnende Nachbauer im Internet.

    • @somium
      Immer mit der Ruhe und doch nicht gleich so aggressiv! Immerhin stellt sich Gamadril hin und erbringt in stundenlanger Kleinarbeit einen Artikel, der anregen soll, aber lange keine fertige Bauanleitung ist. Netzteil ist in der Tat ein Knackpunkt, aber im ganzen Projekt eher ein Nebenschauplatz. Zumal es Netzteile preiswert gibt, gut verfügbar und schnell eingebaut sind. Wünschenswert wäre als Kommentar eine pfiffige Lösung mit AHA-Effekt. Eine Idee? Dann her damit!

  2. Hallo somium,
    „Bull Shit“ ist ein starkes Wort, aber du hast Recht – Lesen ist wichtig. Im Datenblatt steht:
    – „soll“ nicht „muss“. Oder hast du ein anderes Datenblatt?
    – 60 mA pro RGB bei 100%, heißt weiße Farbe – volle Helligkeit. Das wird man im Normallfall mit Ambilight nie erreichen. Was bedeutet also „dauerhaft“?
    – Der Player zieht selbst 30 mA. Den Rest ziehen die LEDs. Inwiefern wird der Player selbst also „dauerhaft“ belastet?

    Du hast aber insofern Recht, dass falls es nicht funktionieren sollte (das merkt man ja schnell), ein externes Netzteil für die Versorgung der LEDs benötigt wird.

  3. Ich habe mir just genau wegen diesem Blogpost einen LED-Player bestellt 😉

    Ich musste noch einige Kleinigkeiten anpassen:

    colorOrder musste ich auf gbr setzen.

    Außerdem noch etwas, was aber nichts mit dem LED-Player im speziellen zu tun hat. Im neuen OpenELEC muss man das Framegrabber Device anpassen (https://github.com/tvdzwan/hyperion/issues/298):

    „framegrabber“ :
    {
    „width“ : 64,
    „height“ : 64,
    „frequency_Hz“ : 10.0,
    „device“: „/dev/fb1“
    },

  4. Hast du auch eine cubox-i? Ob der colorOrder Wert stimmt, kannst Du mit der remote App mal testen. Dass die Farben beim Grabben nicht stimmen, hängt mit der Umstellung des Format beim Framebuffer zusammen. Hatte eigentlich auch einen Patch dafür gepusht, weiß allerdings nicht ob er im aktuellen Build schon drin ist. Die Sache mit der Video Ausgabe auf dem zweiten Framebuffer kam auch irgendwann unerwartet mit einem Update. Ein Patch dafür kommt besiltimm auch irgendwann…

  5. Jip, hab eine CuboxTV (4 core, 1GB). In der App sind blau und rot getauscht, also zumindest in der Filmwiedergabe auf fb1. Wenn ich hingegen vorgefertigte Effekte abspiele, passt es. Drehe ich das so, dass es während der Videowiedergabe passt, ist der Knight Rider Effekt zum Beispiel blau statt rot. Aber egal, das Ding macht jetzt was es soll.

  6. Hallo Gamadrill, vielen Dank für die sehr gute Anleitung. Ich bin durch Zufall hierauf gestoßen und habe bereits ein Hyperion-System auf RasPi mit Grabber am Laufen. Allerdings bin ich verzweifelt auf der Suche, um eine Möglichkeit zu finden, Hyperion unter OpenWRT zu installieren. Mein Router erledigt schon viele andere Aufgaben und Dein Hinweis, dass bei Dir eben diese Konfiguration läuft, lässt mich hoffen ihm auch noch diese Sache „aufzudrücken“. Leider ist der angekündigte Beitrag von Dir dazu wohl noch nicht erschienen 🙁
    Es wäre toll, wenn Du mir einige Infos geben könntest, wie man zu einem Hyperion-OpenWRT-Paket kommt.

  7. Hallo Gamadril, das geht ja fix – vielen Dank für Deine schnelle Reaktion. Für mich wäre wichtig zu erfahren, wie Du Hyperion auf OpenWRT (ich nutze 14.07 Barrier Breaker auf TP-Link 4300) zum Laufen bekommen hast. Ich möchte gerne den RasPi eliminieren, da auf ihm halt nur der hyperiond läuft. Die Basisinstallation wäre da schon vollkommen ausreichend. Viele Grüße und schon einmal einen guten Rutsch!
    P.S. kann man Dich auch anders erreichen – das hier ist ja eigentlich OT

Schreibe einen Kommentar