[Tutorial] Ambilight mit standard LED Strips

Heute ist Stammtischzeit:
Jeden Donnerstag 20:30 Uhr hier im Chat.
Wer Lust hat, kann sich gerne beteiligen. ;)
  • Hallo liebe Raspberry Pi Freunde,

    hier möchte ich Euch zeigen, wie sich auch mit standard LED Strips ein einfarbiges Ambilight mit Hyperion in Kombination mit Pi-Blaster umsetzen lässt.
    Alternativ könnt ihr hiermit auch den RPi dazu nutzen, Eure LED Strips mit dem Smartphone zu steuern (IOS/Android).

    Für dieses Tutorial setze ich kleinere Grundkenntnisse voraus. Ihr solltet zumindest wissen, wie ihr OSMC installiert und Euch per SFTP und ggf. per SSH mit Eurem RPi verbindet und configs bearbeiten könnt.
    Ebenfalls solltet ihr halbwegs mit einem Lötkolben umgehen können... ;)

    Viel Spaß beim schmöckern und basteln...

    1. Was wird benötigt / was geht / was geht nicht? (Stand: April 2015)

    "was geht / was geht nicht ?"


    Wie oben schon steht, ist mit dieser Variante "nur" ein einfarbiges Ambilight möglich.
    Heißt also, Hyperion wertet das Bild aus, berechnet eine Farbe aus dem gesamten Bild und gibt dieses an die LED's weiter.
    Auch Philips hat mal so angefangen... ;)

    Software:
    Als Plattform habe ich OSMC verwendet.
    OpenElec wäre mir zwar lieber, aber hier scheint es Probleme mit der aktuellen Version von Hyperion zu geben.
    Der v4l2-Grabber ließ sich bei mir nicht starten. Beim Aufruf von hyperion-v4l2 hatte ich einige Fehlermeldungen.

    pi-blaster ist NICHT zwischen den RPi B/B+ und RPi2 kompatibel.
    Es gibt für die beiden Modelle unterschiedliche pi-blaster Versionen, die ich hier, fertig kompiliert, zur Verfügung stellen werde.

    RPi B, B+ :
    Auf meinem B und B+ Modell habe ich es leider nicht geschafft, Hyperion mit einer externen Quelle zum laufen zu bekommen.
    Mir steht nur ein Grabber mit STK1160 Chipsatz zur Verfügung und hatte mit dem leidigen "Frame too small" Fehler zu kämpfen.
    Im Kodi funktioniert das ganz gut.
    Lediglich bei einem Film in 1080p mit DTSHD-MA (!) Audio hatte ich einige Ruckler bei der Wiedergabe.

    RPi2 :
    Auf meinem RPi2 war das alles kein Problem.
    Ich konnte Hyperion auch mit externen Quellen befeuern und Ruckler hatte ich auch keine. :)


    "was wird benötigt ?"


    - RaspberryPi B, B+ oder RPi2, ggf. USB Grabber + HDMI Splitter und HDMI2AV Konverter (siehe andere Ambilight Threads),
    Netzteil, HDMI Kabel, MicroSD Karte, Gehäuse und ggf Kühlrippen (eben alles was zum Betrieb für einen RPi benötigt wird)

    - LED Strips + passendes Netzteil und optional ein passender RGB-Controller
    Diese gibt es im 5m Set bei ebay oder Amazon [Anzeige] für ca. 15 Euro

    - Elektronik Kleinteile zum Aufbau einer einfachen Schaltung, wenn kein RGB-Controller vorhanden ist

    2. Technische Umsetzung bzw. Modifikation des vorhandenen RGB Controllers

    "Aufbau einer einfachen Schaltung :"

    Hierfür werden drei Transistoren (TIP120) benötigt und sieht folgendermassen aus :

    In einem Blog habe ich gelesen, dass auch IRLZ34N MOSFETs funktionieren sollen, habe ich selber jedoch nicht getestet.
    Wie ihr das ganze Aufbaut, bleibt euch überlassen.
    “Fliegende” Verkabelung, Steckbrett oder Lochraster sind einige Möglichkeiten.

    Ich habe mich für die Lochraster Variante entschieden und dabei Pin-Header und Schraubklemmen verwendet um etwas flexibler zu sein :





    Auf die GPIO Belegung am RPi werde ich später noch näher eingehen.

    oder alternativ :

    "Modifikation des vorhandenen RGB Controllers :"

    In den Gängigen Sets von ebay oder Amazon ist meistens folgender Controller mit dabei :

    Ansonsten gibt es den auch für ca. 2,50 Euro bei unseren Chinesichen Freunden bei ebay ;)
    Dieser lässt sich mit einem kleinen Schraubendreher sehr leicht aufhebeln.
    Hier kommt nun die Platine zum vorschein.
    Die drei weißen Kabel rechts gehen zum Infrarot Empfänger und die Farbigen zum LED-Strip Connector

    Um für Euch alles etwas übersichtlicher zu machen, habe ich alle kabel entfernt.
    Auf der linken Seite sieht man nun die drei Transistoren in SMD Bauweise.

    Des Weiteren müssen die beiden IC's entfernt werden, da es sonst zu sehr unschönem flackern der LEDs kommt.
    Entweder ablöten oder mit einem Seitenschneider die ICs von den Beinchen abknipsen.

    Es gibt nun je nach Lötskill :D drei Mögliche Varianten die Kabel in Richtung RPi auf die Platine zu löten. Ich habe die Stellen in den RGB Farben markiert und sind dann jeweils von oben nach unten zu verwenden.
    Für Masse (GND) eignet sich der Lötpunkt ganz links (schwarz markiert)

    Variante 1: die Kabel werden direkt an den jeweiligen Transistor gelötet (Punkte links)
    Variante 2: die Kabel werden an den Beinchen von dem abgeknipsten IC gelötet (Punkte rechts)
    Variante 3: an den drei mittleren Markierungen den grünen Schutzlack etwas abkratzen bis die Kupferleitung sichtbar wird und die Kabel dann direkt auf die freigekratzen Stellen auf die Platine löten.

    Ich habe mich für die Variante 3 entschieden, da diese für mich die einfachste war.

    Da der Controller in seiner ursprünglichen Funktion nicht mehr verwendet werden kann, habe ich den Infrarot-Empfänger abgelassen und das Loch im Gehäuse dazu benutzt, die Kabel zum RPi durchzuführen.
    Auch hier habe ich wieder Kabel mit Steckverbinder aus meiner Bastelkiste benutzt.


    Der übriggebliebene IR-Empfänger kann übrigens dann auch gleich an den RPi angebracht werden und ist mit Kodi und einer MCE Remote kompatibel ;)

    3. Der Anschluss des Controllers bzw. der einfachen Schaltung an den RPi

    "Funktionalität von pi-blaster und GPIOs :"

    Damit Hyperion die LED-Strips ansteuern kann, wird pi-blaster benötigt.
    Weitere Infos zu pi-blaster sowie den Quellcode gibt es bei github

    Pi-Blaster "reserviert" sich beim Start die folgenden GPIOs :

    Channel GPIO Nr. Pin in P1 header
    --- 0 ------ 4 ---------- P1- 7
    --- 1 ------ 17 --------- P1-11
    --- 2 ------ 18 --------- P1-12
    --- 3 ------ 21 --------- P1-13
    --- 4 ------ 24 --------- P1-18 (GPIO hab ich bewusst doppelt eingetragen!)
    --- 5 ------ 22 --------- P1-15
    --- 6 ------ 23 --------- P1-16
    --- 7 ------ 24 --------- P1-18
    --- 8 ------ 25 --------- P1-22

    Welche GPIOs ihr benutzt, bleibt Euch überlassen.
    Ihr müsst euch lediglich merken, welche Farbe an welchen Pin angeschlossen ist.
    Den dazugehörigen "Channel" benötigen wir später für die hyperion.config.json
    Ich verwende diese hier :

    GPIO17 für Rot (Channel 1)
    GPIO22 für Grün (Channel 5)
    GPIO24 für Blau (Channel 7)

    Für Masse könnt ihr euch einen der GND Pins aussuchen.
    Hier ist nochmal ein komplettes Pin-Out in dem ich meine drei Farben markiert habe :

    4. alles rund um die Software

    "Installation und Funktionstest von pi-blaster unter OSMC :"

    Zunächst möchte ich euch hier den kompilierten pi-blaster zur Verfügung stellen:

    pi-blaster für RPi B(+) und RPi2

    Aus dem Archiv wählt ihr den entsprechenden pi-blaster für euren RPi aus.

    Diese Datei kopiert ihr dann per SFTP auf den RPi in das Verzeichnis : /home/osmc/
    Anschließend muss diese noch ausführbar gemacht werden :

    Code
    chmod +x /home/osmc/pi-blaster

    Nun kann schon der erste Funktionstest erfolgen.
    Solltet ihr die Verkabelung nach meinem Beispiel vorgenommen haben, schaut das dann so aus :

    Als erstes starten wir pi-blaster

    Code
    sudo /home/osmc/pi-blaster

    Die GPIOs können jetzt direkt angesprochen werden.

    Code
    echo "17=1" > /dev/pi-blaster


    Nun sollten die LEDs rot leuchten ;)
    Die 17 steht für den GPIO der angesprochen werden soll und der Wert dahinter muss immer zwischen 0 (aus) und 1 (an) sein.

    Es sind auch nachkomma stellen möglich:

    Code
    echo "17=0.25" > /dev/pi-blaster


    Jetzt sollten die roten LEDs dunkler geworden sein

    Code
    echo "17=0" > /dev/pi-blaster


    schaltet die roten LEDs wieder aus

    Das ganze könnt ihr nun auch mit den GPIO 22 (Grün) und GPIO 24 (Blau) testen.
    Oder eben mit den von Euch gewählten GPIOs.
    Ihr könnt auch die Farben nach belieben mischen und damit ein bisschen herumspielen. ;)

    "Installation von Hyperion:"

    Da es hierzu schon diverse Themen gibt, werde ich das im Schnelldurchgang machen und dafür näher auf die Config eingehen.
    Weitere Infos und den Quellcode von Hyperion gibt es auf github

    Code
    cd /home/osmc
    sudo apt-get update
    sudo apt-get install libqtcore4 libqtgui4 libqt4-network libusb-1.0-0 ca-certificates
    wget -N https://raw.github.com/tvdzwan/hyperion/master/bin/install_hyperion.sh
    chmod +x /home/osmc/install_hyperion.sh
    sudo sh ./install_hyperion.sh

    Damit ist Hyperion installiert

    "unsere hyperion.config.json"

    Im Pfad /opt/hyperion/config befindet sich die Datei hyperion.config.json
    Am besten ersetzt ihr den Inhalt dieser Config mit folgendem code :

    "Erläuterung der hyperion.config.json"

    Im Gegensatz zu den anderen Hyperion Threads bleibt unsere Config sehr überschaubar :D

    Ein wichtiger Bestandteil ist die Zeile "assignment" und der Wert mit den dazugehörigen Leerzeichen !
    Hier kommen die Channels von pi-blaster ins Spiel.
    Jedes (Leer-)Zeichen im Wert, steht für den entpsrechenden Kanal bei 0 beginnend

    Zur Erinnerung :
    Channel GPIO Nr. Pin in P1 header
    --- 0 ------ 4 ---------- P1- 7
    --- 1 ------ 17 --------- P1-11
    --- 2 ------ 18 --------- P1-12
    --- 3 ------ 21 --------- P1-13
    --- 4 ------ 24 --------- P1-18 (GPIO hab ich bewusst doppelt eingetragen!)
    --- 5 ------ 22 --------- P1-15
    --- 6 ------ 23 --------- P1-16
    --- 7 ------ 24 --------- P1-18
    --- 8 ------ 25 --------- P1-22

    und zum Vergleich die Zeile aus der Config

    Code
    "assignment" : " r   g b "

    und hier nochmal meine Gewählten GPIOs

    GPIO17 für Rot
    GPIO22 für Grün
    GPIO24 für Blau

    Das r steht an zweiter Stelle und somit für Kanal 1 welcher GPIO 17 (Rot) entspricht
    Das g steht an sechster Stelle und somit für Kanal 5 welcher GPIO 22 (Grün) entspricht
    Das b steht an achter Stelle und somit für Kanal 7 welcher GPIO 24 (Blau) entspricht

    Des Weiteren waren mir die Farben insgesamt zu weiß.
    Ich habe deswegen den "whitelevel" bei "green" und "blue" etwas herabgesetzt.
    Das kann aber auch individuell angepasst werden.

    "hyperion.config.json für die Verwendung des v4l2 grabbers"
    "hyperion.config.json für die reine WLan Steuerung ohne Grabber"
    "abschließende Schritte"

    damit pi-blaster zusammen mit Hyperion startet, editieren wir die Datei /opt/hyperion/init.d/hyperion.init.sh und fügen oben folgendes ein :

    Code
    /home/osmc/pi-blaster

    der obere Teil der Config sollte nun so aussehen :

    Da die LEDs nicht alle Effekte wiedergeben können, empfiehlt es sich diese zu löschen.
    Die Dateien liegen im Ordner /opt/hyperion/effects
    Bis auf die beiden rainbow-mood und die strobe Dateien kann alles weg.

    Jetzt nur noch den RPi neustarten und dann kann es losgehen ;)

    Wer seine LEDs mit dem Smartphone steuern möchte kann über den App/Play Store die Hyperion App auf dem Smartphone installieren.
    In der App muss dann noch die Adresse des RPis eingetragen werden.

    "einige Beispielfotos und ein Video"

    Hier sind einige Beispielfotos.
    Die LED Strips sind nur provisorisch hinter dem TV gelegt, deswegen die schlechte Ausleuchtung.

    Download Trailer

    Changelog

    "Changelog"

    21.01.2016 - Downloadlink für pi-blaster aktualisiert
    12.04.2015 - Downloadlink für pi-blaster aktualisiert -> flackern bei RPi1 B/B+ gefixt
    06.04.2015 - Beispielfotos hinzugefügt
    02.04.2015 - Release des Tutorials

  • huhu

    heißt aber automatisch das ich entweder oder betreiben kann nicht beides gleichzeitig oder?!
    also "echtes" ambi + durschnittsambi(an der decke zb)


    noch eine frage

    sind das 12volt stripes/controller?

  • musste die Modifikation des Controllers ein wenig anpassen... :D
    Ich warte noch auf einen Spannungswandler der mir die 12V auf 5V reguliert um alles mit einem Netzteil betreiben zu können.

    polykoma
    Die Idee ist gut, aber kann mir nicht vorstellen, dass sich das umsetzen lässt.
    Hyperion müsste dafür in der Lage sein, zwei Configs parallel anzusteuern.
    Oder alternativ müssten zwei Hyperion instanzen parallel laufen, aber da weiß ich nicht, in weit sich das mit dem Grabber in die Quere kommt.

  • damit könnte es theoretisch funktionieren.
    .bismark nutzt allerdings, so weit ich weiss, eine ältere Hyperion Version.
    Diese funktioniert nicht mit dem aktuellem pi-blaster.
    Vor längerer Zeit war es so, dass pi-blaster mit den im Tutorial gennanten Channels angesprochen wurde und nicht mit den GPIOs direkt.
    Es könnte vielleicht gehen, wenn man eine ältere pi-blaster Version von 2013 benutzt.
    Diese ist dann aber wiederum nicht kompatibel mit dem RPi2.

  • hmmm tp
    ich hatte das so verstanden das dazu zwangsläufig openelec installiert sein muss ?!
    oder wäre das mit entsprechender modifikation auch bei sigi's ambi möglich ?!
    sorry manchmal stell ich mich echt blöd an -_-'

    @ feuer
    fazit pi b+ + ältere hyperion version (wo dann wieder fushicai probleme auftreten ?oder?) + pi-blaster2013

  • und wieder theoretisch :D funktioniert das mit pi-blaster auch unter openelec...
    Dafür waren auch ursprünglich die fertig kompilierten pi-blaster Dateien gedacht.
    ABER...die aktuelle Hyperion Version bockt bei der Installation auf OpenElec ganz schön rum.
    Der v4l2-grabber ließ sich nicht starten und die Configs sind irgendwie durcheinander.
    Darum hab ich das erstmal auf OSMC umgesetzt bzw. so veröffentlicht.

    Es gab hier im Februar/März schon mal ein Thread wo auf die Änderung im pi-blaster hingewiesen wurde.
    Ich hatte versucht den Threadersteller zu kontakieren, weil er es wohl hinbekommen hatte den "alten" pi-blaster zum laufen zu bringen.
    Hab aber keine Antwort bekommen und selbst hab ich es nicht hinbekommen.

  • Hallo habe mich hier extra angemeldet weil ich noch völlig neu auf dem Gebiet bin.
    Bekomme hoffentlich Samstag meinen ersten Raspberry Pi 2 nun meine erste Frage ist sind das dann wenn ich das nach baue aus Schaltung 2 brauche ich dann noch den Controller?
    habe noch einen Controller aber nur diesen hier: http://www.ebay.de/itm/neu-5m-RGB…=item2a4ddb7d7c

    Wenn ich die Schaltung nach baue sind das dann die richtigen teile??
    http://www.reichelt.de/TIP-J-Transist…1469&OFFSET=16&
    Danke schon mal im Voraus freue mich schon auf das Video und aufs basteln ;)

  • Schöne Anleitung.

    Zitat von Feuerpfeil


    .bismark nutzt allerdings, so weit ich weiss, eine ältere Hyperion Version.


    Genau, weil die aktuelle hyperion Version ne recht hohe Last in OE erzeugt. Irgendwann im Januar 2015 hatte der Entwickler was grundlegendes geändert.
    Ich könnte aber den pi-blaster Part in meiner angebotenen hyperion Version(09/2014) auf den aktuellsten Stand bringen, wenn gewünscht.


    .bismarck


  • Hallo habe mich hier extra angemeldet weil ich noch völlig neu auf dem Gebiet bin.
    Bekomme hoffentlich Samstag meinen ersten Raspberry Pi 2 nun meine erste Frage ist sind das dann wenn ich das nach baue aus Schaltung 2 brauche ich dann noch den Controller?
    habe noch einen Controller aber nur diesen hier: http://www.ebay.de/itm/neu-5m-RGB…=item2a4ddb7d7c

    Wenn ich die Schaltung nach baue sind das dann die richtigen teile??
    http://www.reichelt.de/TIP-J-Transist…1469&OFFSET=16&
    Danke schon mal im Voraus freue mich schon auf das Video und aufs basteln ;)

    zu dem Controller kann ich leider nichts sagen. Der sieht mir aber SEHR kompakt aus !
    Wenn Du auf nummer sicher gehen möchtest, würde ich den Aufbau auf Lochraster empfehlen.
    Die Transistoren von Reichelt sind die richtigen.
    Ich habe meine aus China kommen lassen und hab für 10 Stück keine 2 Euro bezahlt.

    .bismarck
    Danke ! :)
    Das wäre natürlich sehr schick, wenn Du das einbauen könntest.
    Würde dann sicherlich alles stabiler laufen.

    Hab versucht mal ein Video davon zu machen, aber das flimmert ohne Ende und mein Smartphone dunkelt bei hellen Szenen sofort ab.


  • Schöne Anleitung.


    Genau, weil die aktuelle hyperion Version ne recht hohe Last in OE erzeugt. Irgendwann im Januar 2015 hatte der Entwickler was grundlegendes geändert.
    Ich könnte aber den pi-blaster Part in meiner angebotenen hyperion Version(09/2014) auf den aktuellsten Stand bringen, wenn gewünscht.


    .bismarck


    das wär klasse !


    sorry für die komische frage aber wäre diese loopback funktion mit mehreren instanzen auch für z.b. sigi's ambi möglich?

    Einmal editiert, zuletzt von polykoma (3. April 2015 um 03:52)

  • polykoma,
    das dürfte problemlos funktionieren. Du musst Dir das Modul nur selber kompilieren.

    Ich habe hier mal die oben angekündigte hyperion Version aus 09/2014 mit aktuellem piblaster Modul zum testen im Angebot. Wenn die funktioniert packe ich die auch in meinen switcher_installer rein.

    Ich kann nur die CPU-Last sehen, da ich kein piblaster benutze:
    KODI:
    ohne Image processing:

    Code
    %CPU COMMAND
    8.7 /usr/lib/kodi/kodi.bin --standalone -fs --lircdev /run/lirc/lircd
    3.0 /storage/hyperion/bin/hyperiond /storage/.config/ambilight/hyperion.config_KODI_lpd8806.json

    mit Image processing:

    Code
    %CPU COMMAND
    16.7 /storage/hyperion/bin/hyperiond /storage/.config/ambilight/hyperion.config_KODI_lpd8806.json
    9.2 /usr/lib/kodi/kodi.bin --standalone -fs --lircdev /run/lirc/lircd

    VIDEOGRABBER(stk1160 in 240x192 Auflösung):
    mit Image processing:

    Code
    %CPU COMMAND
    10.2 /storage/hyperion/bin/hyperiond /storage/.config/ambilight/hyperion.config_VIDEOGRABBER_lpd8806.json
    6.7 /usr/lib/kodi/kodi.bin --standalone -fs --lircdev /run/lirc/lircd

    Download(hier nur die hyperiond, reicht zum testen)


    .bismarck


  • Ich habe hier mal die oben angekündigte hyperion Version aus 09/2014 mit aktuellem piblaster Modul zum testen im Angebot.

    Nun ja...was soll ich sagen...es funktioniert ! :)

    Ich hab jetzt Deine Variante auf meinem RPi B komplett neu installiert...
    ...die hyperiond ausgetauscht und die configs angepasst.

    Bei Benutzung des v4l2 grabbers pendelt die CPU immer so um die 90% und geht auch bis auf 100% rauf.
    Die Grabber-Einstellung hab ich nicht angefasst und so gelassen, wie sie aus Deinem installer kommt.
    Hab zum testen nur einen kleinen LED-Strip dran...aber da könnte ich jetzt nicht sagen, dass irgendwie was ruckelt oder die LEDs nicht mitkommen.

    Bei Benutzung der Kodi Config musste ich den frame grabber aber anpassen. Bei den default werten, war der Pi (Modell B) total überfordert.
    Hab die Werte auf 60x40 heruntergesetzt.

    Also...die Funktionalität ist gegeben... :)

    Vielen Dank !

    habe noch einen Controller aber nur diesen hier: http://www.ebay.de/itm/neu-5m-RGB…=item2a4ddb7d7c

    Hab mir den Controller aus reiner Neugier mal bestellt.
    Dauert aber bestimmt 3 Wochen bis der da sein wird.

  • Zitat


    Bei Benutzung des v4l2 grabbers pendelt die CPU immer so um die 90% und geht auch bis auf 100% rauf.


    Die CPU-Last ist definitiv viel zu hoch, da stimmt was nicht.
    Was genau meinst Du damit? Den aufruf von hyperion-v4l2 oder die Konfig Sektion?
    Ersteres erzeugt natürlich diese Last. Dazu brauchst du das komplette build.

    .bismarck

    Einmal editiert, zuletzt von .bismarck (5. April 2015 um 00:06)


  • Die CPU-Last ist definitiv viel zu hoch, da stimmt was nicht.
    Was genau meinst Du damit? Den aufruf von hyperion-v4l2 oder die Konfig Sektion?
    Ersteres erzeugt natürlich diese Last. Dazu brauchst du das komplette build.

    .bismarck

    Frohe Ostern alles zusammen !

    Ich meine die Konfig Sektion.
    Habe jetzt bei beiden Konfigs die Auflösung auf 240x192 geändert und nun folgende Werte:

    Die Werte sind im "leerlauf". Also ohne das im Kodi ein Video abgespielt wird

    Code
    %CPU COMMAND
    14.8  /usr/lib/kodi/kodi.bin --standalone -fs --lircdev /run/lirc/lircd
    14.3  /storage/pi-blaster
    11.4  /storage/hyperion/bin/hyperiond /storage/.config/ambilight/hyperion.config_KODI_blaster.json
    Code
    %CPU COMMAND
    21.4  /storage/hyperion/bin/hyperiond /storage/.config/ambilight/hyperion.config_VIDEOGRABBER_blaster.json
    16.8  /usr/lib/kodi/kodi.bin --standalone -fs --lircdev /run/lirc/lircd
    15.4  /storage/pi-blaster

Jetzt mitmachen!

Du hast noch kein Benutzerkonto auf unserer Seite? Registriere dich kostenlos und nimm an unserer Community teil!