Home > Allgemein > Ambilight mit dem Raspberry Pi selber bauen

Ambilight mit dem Raspberry Pi selber bauen

Ambilight ist eine von Philips entwickelte Technik welche das Bild auf dem Fernseher über an der Rückseite angebrachte RGB-LEDs auf der Wohnzimmerwand erweitert. Durch diese Hintergrundbeleuchtung des Fernsehers  erscheint das TV Bild optisch größer und  bringen den Kinoeffekt selbst in kleinste Wohnzimmer. Neben dem optischen Effekt soll das Ambilight für die Augen schonender sein wenn der Fernseher die einzige Lichtquelle im Raum ist. Ob das nun wirklich so ist wage ich nicht zu bewerten, der Effekt ist allerdings Sensationell. Wie du Ambilight selber bauen kannst, erfährst du nun hier!

Da es Ambilight nur für Philips Fernseher gibt und ich nicht unbedingt plane mir in nächster Zeit ein neues TV Gerät zuzulegen,  den Effekt aber unbedingt in den eigenen vier Wänden haben möchte, war ein wenig Gehirnschmalz erforderlich und am Ende kam mein DIY Ambilight zum einfachen nachrüsten an herkömmlichen Fernsehern heraus.

DIY Ambilight selber bauen

Da ich bereits einige Raspberry PI besitze welche unter anderem für die Heimautomatisierung und zum umgehen der Unitiymedia IP V6 Problematik im Einsatz sind, war di Entscheidung für die Basis meines Ambilights Projekt gefallen. Nach etwas Recherche bin ich bei Aliexpress.com, einem Chinesischen Amazon Double, auch auf die passenden WS2801 LED Stripes gestoßen. Warum ich mich für eine Bestellung direkt aus China entschlossen habe beschreibe ich im folgenden Absatz zur Hardware Beschaffung.

Benötigtes Werkzeug

DIY Ambilight WerkzeugFür den Bau des DIY Ambilight ist kein besonderes Werkzeug notwendig, jeder gut sortierte Heimwerker sollte über die folgenden Werkzeuge verfügen. Ein Werkzeug wie etwa eine Abisolierzange ist dabei optional da sich ein Kabel mit nahezu jedem Gegenstand irgendwie abisolieren lässt.

  • Lötkolben
  • Schere
  • Abisolierzange
  • Seitenschneider

 

Benötigte Hardware für das DiY Ambilight kaufen

Bei der Beschaffung der Materialien hat man zwei Optionen, zum einen der Kauf innerhalb Deutschlands welcher zwar schnell ist aber um einiges teurer als der Versand aus dem Ausland. Der Auslandsversand, in meinem Fall direkt aus China kostet zwar nur rund die Hälfte, doch die Lieferzeit beträgt in der Regel rund 4 Wochen! Besonders bei dem von mir verwendeten LED Stripe macht sich der Preisunterschied von 80 Euro bemerkbar!

Ich habe unten beide Varianten aufgelistet, die von mir verwendeten Komponenten direkt aus China und das deutsche Pendant von Amazon dazu.

Dennoch sollte man nicht vergessen das der Zoll auf die Bestellung Mehrwertsteuer erhebt welche nachzuzahlen ist. Trotzdem kann man grob sagen das man bei der Auslandsbestellung etwa 50% spart!

[vision_accordion_set] [vision_accordion title=“Aus Deutschland & schnell“ active=“yes“] [/vision_accordion] [vision_accordion title=“Aus China & billig“ active=“no“] [/vision_accordion] [/vision_accordion_set]

Montage der LED Stripes am Fernseher

Zur Montage der LED Stripes am TV-Gerät muss der, in meinem Fall 5 Meter lange, Streifen als erstes in für die Größe des Fernsehers zurecht geschnitten werden. Das ist mit einer handelsüblichen Schere an den dafür vorgesehenen Schnittpunkten machbar. Ich habe fünf kleiner Stripes erstellt, 2 Stripes mit a 16 LEDs für die Seiten, einen Mit 30 LEDs für den oberen Bereich und 2 Stripes mit jeweils 15 LEDs für den unteren Bereich welche jeweils von der Mitte wo sich der Standfuß befindet bis zu den Seiten reicht. Somit ist der Startpunkt für die Verkabelung in der Mitte und ich kann die Kabel hinter dem Standfuß unsichtbar wegleiten.

An der Rückseite der LED Stripes befindet sich eine Klebefolie mit welche die Stripes sich bequem auf glatten Oberflächen montieren lassen. Beim aufkleben muss man darauf achten das man die Stripes in Richtung des aufgedruckten Pfeils aufbringt, das ist die „Flussrichtung“ des Stroms.

DIY Ambilight LED Stripes anbringen

Beim anbringen der Stripes ist es ratsam diese jeweils mit gleichem Abstand zum Rand des TV-Geräts zu montieren, dadurch leuchtet es hinterher im Betrieb gleichmässig.

LED Stripes verlöten

Um die fünf kleinen LED Stripes wieder zu verbinden kommt nun der Lötkolben zum Einsatz. Es gibt zwar auch Eckverbinder für LED Stripes auf welche ich allerdings bewusst verzichtet habe, beim Einsatz der Eckverbinder ist es nicht oder zumindest nur schwer möglich die Ecken des TV Bildes zu beleuchten. Beim verlöten der aufgeklebten Stripes ist es ratsam die Lötstellen mit Kork oder ähnlichem zu unterlegen. Dadurch bleibt die Kunststoffrückseite des Geräts unversehrt. Passt beim verlöten auf das ihr keinen Kurzschluss durch sich untereinander berührende Lötpunkte verursacht. Die LED Stripes gehen dadurch zwar nicht unbedingt kaputt, aber die Fehlersuche ist mehr als aufwändig.

Testen der Verkabelung (optional)

Wer einen Arduino sein Eigen nennt, kann ganz einfach testen ob seine Lötkünste für dieses Projekt ausreichend sind. Ladet euch hierfür die WS2801 LED Library herunter und importiert diese in eure Arduino Entwicklungsumgebung. Mit dem folgenden Beispiel-Code welcher ebenfalls von Github stammt kann man auf die schnelle testen ob alle LEDs funktionieren und die Lötstellen sauber sind.

#include "Adafruit_WS2801.h"
#include "SPI.h" // Comment out this line if using Trinket or Gemma
#ifdef __AVR_ATtiny85__
 #include <avr/power.h>
#endif

/*****************************************************************************
Example sketch for driving Adafruit WS2801 pixels!


  Designed specifically to work with the Adafruit RGB Pixels!
  12mm Bullet shape ----> https://www.adafruit.com/products/322
  12mm Flat shape   ----> https://www.adafruit.com/products/738
  36mm Square shape ----> https://www.adafruit.com/products/683

  These pixels use SPI to transmit the color data, and have built in
  high speed PWM drivers for 24 bit color per pixel
  2 pins are required to interface

  Adafruit invests time and resources providing this open source code, 
  please support Adafruit and open-source hardware by purchasing 
  products from Adafruit!

  Written by Limor Fried/Ladyada for Adafruit Industries.  
  BSD license, all text above must be included in any redistribution

*****************************************************************************/

// Choose which 2 pins you will use for output.
// Can be any valid output pins.
// The colors of the wires may be totally different so
// BE SURE TO CHECK YOUR PIXELS TO SEE WHICH WIRES TO USE!
uint8_t dataPin  = 2;    // Yellow wire on Adafruit Pixels
uint8_t clockPin = 3;    // Green wire on Adafruit Pixels

// Don't forget to connect the ground wire to Arduino ground,
// and the +5V wire to a +5V supply

// Set the first variable to the NUMBER of pixels. 25 = 25 pixels in a row
Adafruit_WS2801 strip = Adafruit_WS2801(25, dataPin, clockPin);

// Optional: leave off pin numbers to use hardware SPI
// (pinout is then specific to each board and can't be changed)
//Adafruit_WS2801 strip = Adafruit_WS2801(25);

// For 36mm LED pixels: these pixels internally represent color in a
// different format.  Either of the above constructors can accept an
// optional extra parameter: WS2801_RGB is 'conventional' RGB order
// WS2801_GRB is the GRB order required by the 36mm pixels.  Other
// than this parameter, your code does not need to do anything different;
// the library will handle the format change.  Examples:
//Adafruit_WS2801 strip = Adafruit_WS2801(25, dataPin, clockPin, WS2801_GRB);
//Adafruit_WS2801 strip = Adafruit_WS2801(25, WS2801_GRB);

void setup() {
#if defined(__AVR_ATtiny85__) && (F_CPU == 16000000L)
  clock_prescale_set(clock_div_1); // Enable 16 MHz on Trinket
#endif

  strip.begin();

  // Update LED contents, to start they are all 'off'
  strip.show();
}


void loop() {
  // Some example procedures showing how to display to the pixels
  
  colorWipe(Color(255, 0, 0), 50);
  colorWipe(Color(0, 255, 0), 50);
  colorWipe(Color(0, 0, 255), 50);
  rainbow(20);
  rainbowCycle(20);
}

void rainbow(uint8_t wait) {
  int i, j;
   
  for (j=0; j < 256; j++) {     // 3 cycles of all 256 colors in the wheel
    for (i=0; i < strip.numPixels(); i++) {
      strip.setPixelColor(i, Wheel( (i + j) % 255));
    }  
    strip.show();   // write all the pixels out
    delay(wait);
  }
}

// Slightly different, this one makes the rainbow wheel equally distributed 
// along the chain
void rainbowCycle(uint8_t wait) {
  int i, j;
  
  for (j=0; j < 256 * 5; j++) {     // 5 cycles of all 25 colors in the wheel
    for (i=0; i < strip.numPixels(); i++) {
      // tricky math! we use each pixel as a fraction of the full 96-color wheel
      // (thats the i / strip.numPixels() part)
      // Then add in j which makes the colors go around per pixel
      // the % 96 is to make the wheel cycle around
      strip.setPixelColor(i, Wheel( ((i * 256 / strip.numPixels()) + j) % 256) );
    }  
    strip.show();   // write all the pixels out
    delay(wait);
  }
}

// fill the dots one after the other with said color
// good for testing purposes
void colorWipe(uint32_t c, uint8_t wait) {
  int i;
  
  for (i=0; i < strip.numPixels(); i++) {
      strip.setPixelColor(i, c);
      strip.show();
      delay(wait);
  }
}

/* Helper functions */

// Create a 24 bit color value from R,G,B
uint32_t Color(byte r, byte g, byte b)
{
  uint32_t c;
  c = r;
  c <<= 8;
  c |= g;
  c <<= 8;
  c |= b;
  return c;
}

//Input a value 0 to 255 to get a color value.
//The colours are a transition r - g -b - back to r
uint32_t Wheel(byte WheelPos)
{
  if (WheelPos < 85) {
   return Color(WheelPos * 3, 255 - WheelPos * 3, 0);
  } else if (WheelPos < 170) {
   WheelPos -= 85;
   return Color(255 - WheelPos * 3, 0, WheelPos * 3);
  } else {
   WheelPos -= 170; 
   return Color(0, WheelPos * 3, 255 - WheelPos * 3);
  }
}

 

Die Verkabelung des Stripes mit dem Arduino ist 5V an 5V, Grnd an Grnd, Data => Pin2, Clock => Pin3. Wenn ihr alles richtig verkabelt habt und den Sketch startet solltet ihr in etwa folgendes Bild vor euch haben

Setup des Raspberry PI

Das Herzstück des DIX Ambilight Clones ist natürlich der Raspberry PI, unser kleiner schlanker Einplatinenrechner. Hier beginnen wir mit der Installation des Grundsystems, in meinem Fall Die Distribution RASPBMC welche neben dem Raspbian Betriebsystem das XBMC Mediacenter mitbringt. Wie man RaspBMC installiert brauche ich hier nicht nochmal zu beschreiben, hierfür gibt es genügend Anleitungen im NetzZ. Ich empfehle diese hier.

Nachdem RASPBMC installiert ist, navigiert man in as „Settings“ Menü und setzt dort den Haken bei „enable Bloblight Support“. Euer Raspberry ist nun bereit für die Boblight Konfiguration! Die Konfiguration lässt sich auch it der Hand durchführen aber bei in meinem Fall 92 verbauten LEDs, bietet sich die Verwendung des Boblight Config Makers, einem Programm zu Erstellung der Konfigurationsdateien förmlich an.

Die fertige Datei welche bei mir im Einsatz ist, sieht wie folgt aus:

# config file created with BobLight Config Maker v.1.0
# (C) Hans Luijten - http://www.tweaking4all.com
# Orientation naming as seen from the REAR of the TV
# Date: 17-11-14 18:22:09

[global]
interface 127.0.0.1
port      19333

[device]
name            AmbiLight
type            ws2801
output          /dev/spidev0.0
channels        276
prefix          41 64 61 00 18 4D
interval        20000
rate            115200
debug           off
delayafteropen  100000

[color]
name            red
rgb             FF0000
adjust          0.7
blacklevel      0.0
gamma           1.0

[color]
name            green
rgb             00FF00
adjust          0.5
blacklevel      0.0

[color]
name            blue
rgb             0000FF
adjust          0.3
blacklevel      0.0

# Bottom Start

[light]
name s01
color red AmbiLight 1
color green AmbiLight 2
color blue AmbiLight 3
hscan 46.7 50
vscan 95 100

[light]
name s02
color red AmbiLight 4
color green AmbiLight 5
color blue AmbiLight 6
hscan 43.3 46.7
vscan 95 100

...

[light]
name e14
color red AmbiLight 271
color green AmbiLight 272
color blue AmbiLight 273
hscan 53.3 56.7
vscan 95 100

[light]
name e15
color red AmbiLight 274
color green AmbiLight 275
color blue AmbiLight 276
hscan 50 53.3
vscan 95 100

Die hinterlegten Farbwerte sind die, welche ich durch ausprobieren als am natürlichsten empfinde, hierbei kann es von Installation zu Installation natürlich immer Unterschiede geben.

LED Stripe am Raspberry anschließen

Bei der Verkabelung hat man zwei Möglichkeiten, einmal kann man LED Stripe und Raspberry über das gleiche Netzteil mit Strom versorgen oder zwei getrennte Netzteile verwenden. Bei mir kam die erste Variante zum Einsatz, diese wird wie auf dem folgenden Bild verkabelt

Raspberry PI LED Stripe anschliessen

LED Stripe am Raspberry PI anschliessen © adafruit

Bei dieser Variante bezieht der Raspberry seinen Strom anstatt über den Micro-USB Eingang über den GPIO Pin 2. Wer lieber auf zwei Netzteile setzen möchte, verkabelt den LED Stripe mit dem Raspberry genau wie oben auf dem Bild zu sehen, verzichtet jedoch darauf Pin2 zu belegen. Über die schwarze Masseleitung sollten Stripe und Raspberry trotzdem miteinander verbunden sein, das verhindert ein flackern der LEDs.

diy-ambilight1

Fertig!

Das war es auch schon! Jetzt steht einem TV-Abend nichts mehr im Wege! Ich werde die Kabel in nächster Zeit noch etwas eleganter verschwinden lassen und meinen Fernseher an der Wand montieren

 

12 Kommentare
  1. Hey ich hab da mal ne Frage, wo genau befindet sich denn der Menüpunkt wo man „enable Bloblight Support“ einstellen kann, ich habe das ganze System durchsucht und finde diese funktion nicht. Ich hoffe du kannst mir da weiterhelfen.

  2. Schöne Bastelei 🙂

    Ich habe noch zwei Fragen:
    1) Die Verbindung vom Raspberry zum Fernseher läuft über ein HDMI-Kabel?
    2) Für welche Inhalte funktioniert dann das Licht? Nur Sachen die über das XBMC laufen oder auch für andere Siganle wie z.B. von einem Receiver?
    LG
    Richard

  3. Das ist ja wirklich eine klasse Idee. Momentan habe ich noch normale LED-Strips hinter dem TV, aber so ein DIY-Ambilight ist natürlich schon sehr cool. Ich werde mir alle Benötigte mal bestellen und dann das basteln anfangen.

  4. Geil, danke fürs Tutorial. Werde mich definitiv dran versuchen!
    Vielen Dank und viel Grüße

    Thorsten

  5. Tolles Tutorial, gehört geteilt!

  6. hi ! Ja ich hab da mal ne Frage: wo soll das mit dem boblight eingeschaltet werden? hab nix gefunden wo man einen haken machen müsste etc. muss man das installieren und wenn ja wie und wo und woher? ach ja und wo soll die konfigurationsdatei abgelegt werden? einfach auf die karte kopieren?

Schreib einen Kommentar

Deine eMail-Adresse wird nicht veröffentlicht! Pflichtfelder sind markiert *

Kommentare mit einer Domain deren Endung auf -test.tld oder -vergleich.tld enden werden gelöscht! Hört auf damit die Leute mit euren Pseudotests zu verarschen!

*