Ik heb op het internet al vaker iets voorbij zien komen over mensen die hun eigen Ambilight maakten. Ik vond dit altijd al een tof idee maar het is er al die tijd niet van gekomen. Laatst begon het toch weer te kriebelen en heb ik besloten er zelf ook een te bouwen.
Nadat ik alle spullen binnen had ben ik begonnen met het aansturen van de Leds. Dit lukte vrij snel. Ik kon met behulp van de FastLed library makkelijk wat simpele effecten maken op de led strip.
Mijn TV is aan de achterkant niet mooi vlak. Ik heb daarom een frame gemaakt van aluminium strips met een randje voor extra stevigheid. Het frame heb ik op maat gezaagd en toen aan elkaar gelijmd met secondelijm. Het resultaat is een mooi stevig maar toch licht frame.
Nu was het tijd om de leds op maat te knippen en de stekkertjes er aan te solderen. Omdat ik weinig soldeer ervaring had ging het eerste stukje ging wat lastig maar daarna ging het erg gemakkelijk.
Vervolgens een laagje isolatietape aangebracht op mijn frame omdat ik niet zou willen dat de leds maar op een of andere manier contact zouden maken met het aluminium. Nadat ik de horizontale strips geplaatst had heb ik bij de soldeerpunten nog een stukje tape er overheen geplakt en toen de verticale strips aangebracht.
Daarna twee gaatjes geboord in het frame en met twee M6 bouten gemonteerd aan mijn tv met een PVC koppelstukje er tussen om het frame op zijn plaats te houden. De Arduino zit links in de hoek gemonteerd met een paar tie-wraps. Vanaf die hoek worden ook de leds gevoed / aangestuurd. Inmiddels is de blauwe USB kabel vervangen door een zwarte van 1~1.5 meter. Ik heb nu dus maar twee kabels naar mijn TV lopen, de voeding van de leds en de USB voor de Arduino. De rest van alle spullen kan ik mooi 1.5e meter verder verstoppen.
Close-up van de Arduino. Ik heb nog een simpele case besteld uit China dus de Arduino gaat straks nog wat mooier weggewerkt worden.
Dit is de rest van de opstelling (voor nu). De Pi2 word gevoed door mijn 5v voeding. Mijn oude Pi1 voeding gaf te weinig power en dit is toch weer een stekker minder. Ik heb een 100watt 16A voeding maar volgens mijn energiemeter was dat toch wel overkill. Met 4 meter leds (60 leds p.m.) kwam ik op 40 watt uit (volledige sterkte wit licht, zonder Pi). Ik heb nu 3 meter leds en met de Pi + AV-grabber, etc straks zal ik ook wel weer rond de 40 watt maximaal uit komen. De dikke zwarte kabel gaat dus naar de leds toe. In de Pi zit een netwerkkabel en de USB kabel naar de Arduino.
En dit is hoe het er nu uitziet. Ik moet de kleuren wel nog wat bij stellen omdat ze niet helemaal overeenkomen met de kleuren van de TV maar het systeem werkt echt fantastisch. Ben er echt super blij mee. Ik was toch redelijk verbaast hoe goed het werkt.
Klik verder voor een installatie handleiding die ik geschreven heb mocht je zelf ook interesse gekregen hebben om zelf een Ambilight TV te knutselen. Er zijn tegenwoordig ook meer klant en klaar oplossingen zoals Ambivision en Lightberry.
Handleiding
Lees deze handleiding helemaal door voor je gaat beginnen en kijk ook of je behoefte hebt aan de extra mogelijkheid om niet alleen via Kodi gebruik te kunnen maken van Ambilight.
Hardware
Om zelf een Ambilight te bouwen heb je het allerei hardware nodig. De volgende onderdelen heb je minimaal nodig. Voor het gemak heb ik links er onder geplaatst naar de onderdelen die ik gebruikt heb.
- WS2812B Led strip (30 of 60 leds p.m.)
- Raspberry Pi 2
- MicroSD kaart
- MicroUSB kabel
- 5v 2A USB voeding (optioneel)
- Arduino Uno R3 of beter (incl. USB A→B kabel)
- Weerstand 470 ohm (lokale electronica zaak)
- Condensator 6.3v 1000uf (lokale electronica zaak)
- Jumper cables
- HDMI kabel
- Led kabeltjes
- 5v voeding 10A+ (die ik hier link is overkill)
- UTP kabel (cat 5e)
- Diverse kabeltjes, gereedschap e.d.
Het volgende gereedschap is ook handig om in huis te hebben:
- Soldeerbout
- Kabelstripper
- Kniptang
Hardware installatie
Installeer de hardware zoals op onderstaand schema. Plaats de weerstand vlak voor de ledstrip, het zelfde geld voor de condensator. De led strip kan op meerdere plekken gevoed worden. Voor een goede kleur weergave is het van belang elke +/- 2 meter de ledstrip te voeden. Als je dit niet doet word de weerstand in de strip te groot wanneer de stroom 4 meter naar de laatste led moet en weer 4 meter terug. Hierdoor kun je kleurafwijkingen krijgen. Ik vond het voldoende om het begin en het eind van de strip te voeden. Let bij het aansluiten van de led strips op de richting van de data! De data loopt maar een kant uit.
Wanneer je alles aangesloten hebt kun je gaan testen of de led strip het doet. Voor de veiligheid had ik zelf een stukje van 4 leds afgeknipt om daar mee te testen. Mocht er iets fout gaan dan verlies je hoogstens vier leds en kun je nooit de hele strip stuk maken. Om te testen sluit je de Arduino aan op je PC in plaats van aan de Raspberry Pi. Voor verdere info zie het kopje “Arduino software intstalleren”.
Er zijn verschillende manieren om de led stip op je TV te monteren. Je kan ze direct tegen je TV plakken met de plakstrip die achterop zit of je kan een frame maken waar je de leds aan monteert. Ik heb zelf gekozen voor dat laatste.
Software installatie
Arduino
Installeer eerst de Arduino IDE en download daarna de FastLed library. Koppel je Arduino vervolgens aan je PC en start de IDE. Importeer nu de library via het menu “Sketch → Import library → Add library”. Selecteer nu het zip bestand wat je gedownload hebt. Als dit niet goed werkt kun je het zip bestand ook uitpakken naar de sketchbook/libraries/ map die de IDE aanmaakt. Vervolgens kopieer je de volgende code in je sketch en drukt op compile. Als het goed is zouden je leds het nu moeten doen als je alles goed aangesloten hebt. Werkt alles? Dan kun je de initiele test kleuren uit de code halen.
#include "FastLED.h" // How many leds in your strip? #define NUM_LEDS 186 // For led chips like Neopixels, which have a data line, ground, and power, you just // need to define DATA_PIN. For led chipsets that are SPI based (four wires - data, clock, // ground, and power), like the LPD8806 define both DATA_PIN and CLOCK_PIN #define DATA_PIN 6 #define CLOCK_PIN 13 #define COLOR_ORDER GRB // Adalight sends a "Magic Word" (defined in /etc/boblight.conf) before sending the pixel data uint8_t prefix[] = {'A', 'd', 'a'}, hi, lo, chk, i; // Baudrate, higher rate allows faster refresh rate and more LEDs (defined in /etc/boblight.conf) #define serialRate 460800 // Define the array of leds CRGB leds[NUM_LEDS]; void setup() { FastLED.addLeds<WS2812B, DATA_PIN, COLOR_ORDER>(leds, NUM_LEDS); // initial RGB flash, comment out if your setup works. LEDS.showColor(CRGB(255, 255, 255)); delay(1000); LEDS.showColor(CRGB(100, 0, 0)); delay(1000); LEDS.showColor(CRGB(0, 100, 0)); delay(1000); LEDS.showColor(CRGB(0, 0, 100)); delay(1000); LEDS.showColor(CRGB(0, 0, 0)); // start listening on serial port Serial.begin(serialRate); Serial.print("Ada\n"); // Send "Magic Word" string to host } void loop() { // wait for first byte of Magic Word for(i = 0; i < sizeof prefix; ++i) { waitLoop: while (!Serial.available()) ;; // Check next byte in Magic Word if(prefix[i] == Serial.read()) continue; // otherwise, start over i = 0; goto waitLoop; } // Hi, Lo, Checksum while (!Serial.available()) ;; hi=Serial.read(); while (!Serial.available()) ;; lo=Serial.read(); while (!Serial.available()) ;; chk=Serial.read(); // if checksum does not match go back to wait if (chk != (hi ^ lo ^ 0x55)) { i=0; goto waitLoop; } memset(leds, 0, NUM_LEDS * sizeof(struct CRGB)); // read the transmission data and set LED values for (uint8_t i = 0; i < NUM_LEDS; i++) { byte r, g, b; while(!Serial.available()); r = Serial.read(); while(!Serial.available()); g = Serial.read(); while(!Serial.available()); b = Serial.read(); leds[i].r = r; leds[i].g = g; leds[i].b = b; } // shows new values FastLED.show(); }
Credits: RanzQ
OpenElec
Zorg er eerst voor dat je OpenElec op je Raspberry Pi 2 geïnstalleerd hebt. Hoe je dat het beste kan doen vind je hier op de wiki van OpenElec. Zorg er voor dat je tijdens de eerste keer opstarten van OpenElec aangeeft dat SSH en eventueel Samba aan staan.
Hyperion
Daarna moet Hyperion geïnstalleerd worden. Met Hyperion wordt het ambilight effect gecreërd. Hyperion installeren doe je als volgt. Zoek het IP adres op van je Raspberry Pi. Log daarna in via op je Pi via SSH. Onder Windows kan dit met Putty. Linux en OSX hebben standaard een Terminal applicatie. De inloggegevens zijn standaard “root” met het wachtwoord “openelec”. Hierna voer je de volgende code uit:
curl -L --output install_hyperion.sh --get https://raw.githubusercontent.com/tvdzwan/hyperion/master/bin/install_hyperion.sh sh ./install_hyperion.sh
Hyperion is nu geïnstalleerd. Klik hier voor meer informatie over de installatie van Hyperion.
Hyperion configureren
Nu moeten we Hyperion nog configureren. Dit kan met HyperCon. HyperCon is een Java applicatie waarmee je makkelijk een configuratie bestand kan maken. Wanneer je HyperCon opstart kun je aangeven hoeveel leds je waar overal hebt. Een aantal dingen zijn belangrijk om in te stellen:
Onder Device:
- Type: Adalight
- Output: /dev/ttyACM0
- Baudrate: 460800
Onder het tabblad External, Effects Engine:
- Directory: /storage/hyperion/effects
Device → Output kan verschillen. Om zeker te weten dat je de goede hebt hier haal je de Arduino uit je Raspberry Pi en type je: ls /dev/tty*, plug de Arduino nu in en voer het commando nogmaals uit, nu is er een device bij gekomen. Dit is degene die je moet gebruiken.
Nadat je het configuratie bestand gemaakt hebt moet het nog op de Raspberry pi gezet worden. Deze staat op de volgende locatie: /storage/.config/hyperion.config.json. Vervang dit bestand met je eigen configuratie en start de Raspberry Pi opnieuw op.
Als alles goed gaat zou het nu moeten werken. Voor je smartphone kun je ook de Hyperion app downloaden waarmee je wat met de kleurtjes kan spelen en effecten kan starten.
Extra’s voor ambilight op alle aparaten
Hardware
Wil je niet alleen ambilight vanuit OpenElec (Kodi) maar ook vanuit je andere apparaten zoals een game console, Horizon box of iets anders wat een HDMI aansluiting heeft dan heb je nog de volgende onderdelen nodig:
- HDMI splitter (deze ondersteunt ook CEC)
- HDMI2AV (Er zijn 3 versies, ik heb de beste ervaring met de “better” 1080p, de “best” gaf bij mij wat problemen)
- AV-grabber (UTV007)
- RCA-kabel / connectors
Let op: zorg dat je HDMI splitter en HDMI2AV minimaal 1080p, 3D en CEC ondersteunen. Bij HDMI is het zo dat wanneer een van de apparaten een bepaalde feature niet ondersteunt dit overal wegvalt. Ondersteunt je splitter geen CEC? Dan werkt dat niet meer. Ondersteunt je HDMI2AV alleen 720p? Dan zul je alleen in 720p content op je TV kunnen kijken.
Hardware installatie
In de simpele versie worden de beelden van Kodi gebruikt om de leds aan te sturen. Om ambilight voor alle aparaten te kunnen gebruiken moeten we eerst het HDMI signaal splitsen. Een kabel gaat naar de TV de ander naar het HDMI2AV kastje. Dit audio/video signaal wordt dan weer via de AV-grabber op de Raspberry pi aangesloten. Zie ook onderstaand schema. Het HDMI2AV kastje moet overigens op NTSC staan.
Let op: de HDMI2AV en de AV-grabber hebben allebei female RCA aansluitingen. Hier moet dus nog een kabel of connector tussen.
Hyperion configuratie
In het configuratie bestand van Hyperion moet het volgende gedeelte toegevoegd worden. Wanneer je alleen gebruik wil maken van de AV-grabber is het aan te raden het framegrabber en xbmcVideoChecker gedeelte uit te commenten.
"grabber-v4l2" : { "device" : "/dev/video0", "input" : 0, "standard" : "NTSC", "width" : 1, "height" : 1, "frameDecimation" : 2, "sizeDecimation" : 4, "priority" : 800, "mode" : "2D", "cropLeft" : 10, "cropRight" : 8, "cropTop" : 12, "cropBottom" : 19, "redSignalThreshold" : 0.4, "greenSignalThreshold" : 0.2, "blueSignalThreshold" : 1.0 },
Reboot je Rasberry Pi en als het goed is zou alles moeten werken.
Meer guides die je kunnen helpen: