DIY Ambilight voor je XBMC HTPC

Door mrwolf op zaterdag 11 februari 2012 20:16 - Reacties (21)
Categorie: -, Views: 16.299

Aanleiding
In december zag ik bij toeval dit topic op Tweakers, en mijn interesse was gewekt. Hoe cool zou je eigen Ambilight-installatie zijn? Het leek me een mooi projectje voor de donkere wintermaanden, en tegelijkertijd ook een uitdaging, want ik heb geen soldeerervaring, geen elektrotechnische achtergrond en eigenlijk ook geen programmeerervaring. So bring it on!

Idee
Amblight is een product van Philips, dat op bepaalde TV's te verkrijgen is. Het is een mooi sfeerverhogend effect, en het heeft natuurlijk een behoorlijk Tweakersgehalte als je dit zelf maakt.



Het grote verschil met het Philips-product is dat het echte Ambilight op alle beeldbronnen werkt, en het signaal direct van de TV uitleest en vertaalt in kleuren. De Tweakers-oplossing gaat helaas iets minder ver, deze heeft namelijk een PC nodig om het beeld te analyseren en de LED's aan te sturen. Hierdoor werkt het (in mijn geval) alleen bij beeld dat ik kijk op mijn HTPC, een eenvoudige Asrock Ion 330 met OpenElec. Maar het werkt, en ik ben helemaal om! Wat mij betreft is het effect minimaal zo goed als bij een 'echte' Amblight TV. Als basis voor deze post is de tutorial van Adafruit gebruikt.

Opstelling
Zoals genoemd heb ik als hardware een Asrock Ion 330 staan, waarop OpenElec draait met XBMC (Pre-)Eden. XBMC ondersteunt sinds Eden een goed werkende add-on, genaamd boblight, die de LED's out-of-the-box aanstuurt. Daarnaast heb ik een 42" Panasonic plasma-TV (TH-42PX80) op een TV-meubel.

Hardware
Je hebt LED-lampen nodig, duh. In principe heb je twee keuzes, LED-strips of een string van LED-lampen. De voordelen van strips zijn dat de lampjes dicht op elkaar zitten (vaak 3cm), en dat dit geheel wat compacter is en mooier oogt. De meeste strips zijn op te knippen in stukken, zodat dit perfect passend te maken is. Echter, er zijn veel verschillende strips, waarbij ze niet allemaal schijnen te werken voor een Ambilight-systeem, of de LED's zijn niet per stuk aan te sturen. Ik heb dus gekozen voor de RGB-LED strings van Adafruit. Sterker nog, ik heb het startpakket gekocht van die site, waarvan ik zeker wist dat het zou moeten werken. Daarnaast heb ik het volgende gekocht:

- Startpakket Adalight
- Arduino Uno Board
- Extra LED's
- USB-kabel om de Arduino aan de HTPC te verbinden
- Amerikaanse stekker-adapter
- Wat draden en krimpkousen bij de elektronicazaak

De totale kosten zijn iets opgelopen omdat de douane mijn pakket van Adafruit had onderschept, en ik BTW en inklaringskosten mocht betalen (§ 35 totaal). In totaal komt het geheel, inclusief de douane-verrassing, op 160 euro uit.

Software
XBMC Eden (OpenElec), met de volgende addons:
- boblightd
- boblightXBMC

Ik kan dus niet zeggen of en hoe het werkt onder Windows of een andere XBMC-distro. Het moet allemaal wel kunnen, maar ben speciaal voor dit project overgestapt van XBMCLive naar OpenElec omdat de boblight-addon hier in de beta-versies van XBMC Eden al goed werkte. Daarnaast is OpenElec een heerlijk snelle en lichte distro, dus sowieso een goede keuze voor een HTPC wat mij betreft.

Configuratie
De configuratie is hetgeen wat het meest tijd kost. Je moet een aantal dingen namelijk goed op een rijtje zetten voor jezelf. Hoeveel LED's wil ik hebben, en waar wil ik ze hebben? Voor een 23" monitor heb je wellicht aan 25 LED's genoeg, voor een 50" LCD heb je er echt meer nodig. Voor mijn Panasonic 42" heb ik gekozen voor 50 LED's. Omdat deze TV een brede voet heeft komt dit op zich mooi uit, en zitten de LED's op gemiddeld 5cm van elkaar, en dat is prima. Bedenk dus goed voor jezelf wat je wil, en wat je belangrijk vindt. Bekijk ook mijn filmpjes, en je ziet of een afstand van 5cm goed genoeg is voor je.

Je hebt besloten hoeveel LED's je gaat kopen, mooi. Nu moet je de boblight-software gaan vertellen waar ze zitten, en welke LED wanneer welke kleur moet weergeven.

In mijn opstelling heb ik gekozen voor een raster van 20x13, waarbij er links- en rechtsonder 4 LED's zijn (in verband met de brede voet van de TV), aan de zijkanten 13 LED's, en aan de bovenkant 20. Let wel, ik reken de hoek-LED's voor het gemak even dubbel. Zie onderstaand plaatje voor mijn setup ter verduidelijking.

http://i42.tinypic.com/f4dyrp.jpg


boblight.conf
Dit is het bestand dat de boblight addon vertelt hoeveel LED's je hebt, en waar ze zitten. De configuratie rekent met horizontale (hscan) en verticale (vscan) percentages. Je geeft dus voor een LED in de linkeronderhoek bijvoorbeeld aan dat deze 0-5% van het horizontale gedeelte van het beeld moet 'scannen', en 92,28-100% van het verticale gedeelte. Je rekent hierbij altijd vanuit de linkerbovenhoek, waar punt 0,0 ligt voor zowel horizontaal als verticaal. Zie ook bovenstaand plaatje voor de percentages die in mijn geval gelden. De getallen geven per LED het beginpunt aan. Dus LED25 scant 45-50% horizontaal, en 0-7,69% verticaal.

De volgende stap is het plaatsen van de juiste getallen in boblight.conf volgens de volgende setup. Ik heb het geheel in Excel gedaan, en met wat handige formules kom je een heel eind. Je wil niet voor 50 LED's alles handmatig doen lijkt me. De boblight-wiki helpt je ook aardig op weg.


code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
#config file for adalight from http://www.ladyada.net/make/adalight/

[global]
interface 127.0.0.1
port         19333

[device]
name           device1
type             momo
output          /dev/ttyACM0
channels     150 #wijzig dit naar je aantal LED's
prefix      41 64 61 00 31 64 #prefix voor 25 LED's is 41 64 61 00 18 4D
interval        10000
rate             115200
debug          off #turn this on to see what it's doing with the serial port
delayafteropen  1000000


[color]
name          red
rgb             FF0000

[color]
name          green
rgb             00FF00

[color]
name          blue
rgb             0000FF

#Het benoemen en configureren van de LED's:

[light]
name        light1
color       red     device1 1
color       green  device1  2
color       blue       device1    3
hscan       15 20
vscan       92.28 100

[light]
name        light2
color       red     device1 4
color       green  device1  5
color       blue       device1    6
hscan       15 20
vscan       91.67 100



name: light1,light2,..., light50
color: red device1 1,4,7, ...,148
color: green device1 2,5,8, ...,149
color: blue device1 3,6,9,...,150
hscan: horizontaal begin- en eindpunt (let op, decimalen scheiden met punten!)
vscan: verticaal begin- en eindpunt (let op, decimalen scheiden met punten!)

Let op: device1 bij de color-regels blijft dus altijd device1, je hebt namelijk maar 1 Ambilight-device. Als referentie is mijn volledige boblight.conf hier te vinden.

Sla dit bestand op als boblight.conf op je OpenElec-pc in de map \\openelec\Userdata\addon_data\service.multimedia.boblightd\

Arduino
De Arduino Uno (of een andere versie) is een programmeerbaar ontwikkelbord, dat de communicatie tussen de boblight plugin en de LED's verzorgt. Om deze te programmeren en te testen heb je twee programma's en een losse ZIP met zogenaamde sketches nodig:

- Processing
- Arduino IDE
- Adafruit sketches

Let op, de interface van deze programma's lijkt veel op elkaar, dus voer de volgende stappen in het juiste programma uit. Scheelt je heel wat frustratie kan ik je uit ervaring vertellen...
  • Verbind de Arduino met je (Windows) pc d.m.v. de USB-kabel
  • De driverinstallatie loopt vast, kijk hier voor een oplossing
  • Open Arduino IDE en laadt de sketch LEDstream.pde uit de Adafruit Sketches map (Arduino\LEDstream\LEDsream.pde)
  • Selecteer in Arduino IDE onder tools het juiste board (Uno R3 in mijn geval)
  • Kies Upload om de sketch te compilen en naar de Arduino te uploaden
  • Sluit Arduino IDE
Testen
De volgende stappen zijn niet noodzakelijk, maar wel aanbevolen. Als de test slaagt, dan weet je in ieder geval dat je hardware in orde is.
  • Open de Processing-tool (met de Arduino nog steeds verbonden)
  • Open de sketch Colorswirl.pde uit de Adafruit sketches map (Processing\Colorswirl\Coorswirl.pde)
  • Run de sketch
  • Als het goed is gaan nu alle LED's een voor een branden, telkens met een andere kleur. Ja? Gefeliciteerd, je hardware werkt. Nee, ga terug naar 'start' :)
LED's en draden
Hier staat het verhaal rondom het monteren van de juiste draden op de juiste plek, maar ik vind het toch nog wat verwarrend. Als je voor exact dezelfde setup als ik kies, dan is het vrij simpel. Zorg wel dat je aan de juiste kant van de LED's begint, dus aan de INPUT-kant.
http://www.ladyada.net/wiki/_media/tutorials/products/pixel12mm/12mminput.jpg
Verbind vervolgens draden op de volgende manier op de Arduino:
- groene draad op 13 (clock)
- gele draad op 11 (data)
- zwarte draad via de power-adapter (min aansluiting) op een van de GND's
- rode draad van de LED's naar de power-adapter (plus aansluiting)

Het vastmaken van de draden op de Arduino heeft me ook nog wel wat moeite gekost. Ik wilde het niet direct vastsolderen, en bovendien is de kans dat dat misgaat erg groot. Ik heb op Ebay deze jumper wires gekocht, en daar wacht ik nog op.

Bevestigen
Het monteren van de LED's heeft me wel wat hoofdbrekens bezorgd. Mijn TV heeft aardig wat ventilatiegaten aan de achterkant, en er op vasttapen met DUCT-tape vond ik niet echt een charmante oplossing. Na wat pogingen heb ik het als volgt opgelost. Ik heb met tiewraps de afstand tussen de LED's verkleint tot de gewenste afstand, en vervolgens beide stringen in een kabelorganiser gestopt. Dit vind ik er net wat netter uitzien, en het heeft als voordeel dat de string wat stugger is en dus rechter blijft. Het geheel heb ik wederom met tiewraps zo ver mogelijk aan de bovenkant/zijkant van de TV vastgemaakt. Uiteraard wel op zo'n manier dat de LED's zelf niet zichtbaar zijn. Het zit niet strak en even netjes, maar voor de werking is het prima. Het is ambient light, geen spotlight :)

Om de afstand tussen de LED's te berekenen moet je wel rekening houden met de 'hoek'-LED's. Het is bij het berekenen heel makkelijk om deze dubbel te tellen, en dan kom je dus niet goed uit! De afstand tussen mijn LED's aan de onderkant is ongeveer 6 cm, aan de zijkanten 5 cm, en aan de bovenkant 4,5 cm. Nogmaals, dit is voor iedereen anders, dus aan mijn voorbeeld heb je niet zoveel.
http://i41.tinypic.com/evcajo.jpg
http://i44.tinypic.com/1z4wc2p.jpg


XBMC
Zit alles vast? Mooi! Start OpenElec op en installeer de boblightd en boblightXBMC addons (te vinden onder services), en gaan! Je kunt de addon nog configureren als je wilt, maar ik heb de standaard movie-instellingen gebruikt op 'slow'. Als je 'fast' gebruikt wisselen de kleuren razendsnel, maar het kijkt heel onrustig. Kijk maar in de showcase voor wat voorbeelden!

Veel plezier met je el-cheapo Tweaker-Ambilightsysteem! Voor vragen kun je hieronder terecht, of in dit topic op GoT. Let wel, ik ben geen techneut, en heb ook maar handleidingen en mijn gezonde verstand gebruikt.

Showcase
De volgende filmpjes zijn om een impressie te krijgen van het Ambilight-effect.

Eenvoudige testvideo met wisselende kleuren:


Eenvoudige testvideo met snel wisselende kleuren, gebruik makend van de 'fast'-setting in de boblight addon:


Zelfde video als hierboven, maar nu met de 'slow'-setting:


ScŤnes uit Up!, Captain America en Jonathan Ross:

Reacties


Door Tweakers user Snuffel, zaterdag 11 februari 2012 21:13

Nice! Al zie ik wel dat hij een beetje paarsig is daar waar het niet nodig is. Is dat af te stellen?

Zelf ben ik erg lui geweest en heb een Ambx van Philips aan mijn HTPC geknoopt en achter de TV verstopt. Geeft hetzelfde effect, en ik ben er erg tevreden mee :)

Maar dit is natuurlijk wel de betere tweakers oplossing :)

Door Tweakers user Damic, zaterdag 11 februari 2012 22:01

Ziet er goed uit, kun je dat niet maken met en fpga? Dat is een pc op zijn eigen en kan redelijk snel alles verwerken?

Door Tweakers user wheez50, zaterdag 11 februari 2012 22:14

Ik heb zitten kijken, zitten lezen en ben zwaar onder de indruk. Dank je wel!

Overigens: In het codeblokje: light 2 vscan is anders dan bij light 1. In je pastebin voorbeeld van je code is het wel hetzelfde. On purpose om mensen in verwarring te brengen? ^^

Door Tweakers user Paul - K, zaterdag 11 februari 2012 22:23

Onwijs gaaf! Als ik eens wat geld over heb ga ik zeker ook zoiets proberen te doen :p

Door Tweakers user SeatRider, zondag 12 februari 2012 00:04

Ik heb 2 RGB PARs, die je via DMX kunt aansturen, eentje links en eentje rechts van het beamerscherm. Daar moet je ook wel wat mee kunnen, toch?

Door Tweakers user Snippo, zondag 12 februari 2012 00:16

Er is/komt ook een kant-en-klaar DIY ambilight pakket: zie http://forum.xbmc.org/sho...21201&highlight=paintpack

Door Tweakers user Chesta, zondag 12 februari 2012 00:29

Oeh eindelijk een goede vervanging voor mijn ambx systeem gevonden :) Hoop alleen dat dit onder Windows ook goed werkt.

Door Tweakers user Hakker, zondag 12 februari 2012 00:51

enige nadeel is dat een 60 led versie je toch wel 100-110 euro achteruit zet en daarnaast maximaal schermen van 52" tot nu toe ondersteund.

Door Tweakers user mrwolf, zondag 12 februari 2012 10:23

Snuffel schreef op zaterdag 11 februari 2012 @ 21:13:
Nice! Al zie ik wel dat hij een beetje paarsig is daar waar het niet nodig is. Is dat af te stellen?

Zelf ben ik erg lui geweest en heb een Ambx van Philips aan mijn HTPC geknoopt en achter de TV verstopt. Geeft hetzelfde effect, en ik ben er erg tevreden mee :)

Maar dit is natuurlijk wel de betere tweakers oplossing :)
Je kunt in de boblight plugin de kleuren, reactiesnelheid etc. bijstellen, maar hier heb ik me nog niet in verdiept.

Door Tweakers user mrwolf, zondag 12 februari 2012 10:24

Die kende ik niet, maar ziet er goed uit. Nu maar afwachten op de compatibiliteit met XBMC etc. Iets om in de gaten te houden!

Door Tweakers user Belial_666, zondag 12 februari 2012 12:27

Wie heeft een idee of dit voor OSX ook al werkend te krijgen is. Ik zie tal van mogelijkheden voor Win en Linux maar voor OSX heb ik nog geen goede optie gezien.

Heeft iemand een idee icm XBMC ?

Door Tweakers user himlims_, zondag 12 februari 2012 18:51

Belial_666 schreef op zondag 12 februari 2012 @ 12:27:
Wie heeft een idee of dit voor OSX ook al werkend te krijgen is. Ik zie tal van mogelijkheden voor Win en Linux maar voor OSX heb ik nog geen goede optie gezien.

Heeft iemand een idee icm XBMC ?
virtueel machientje, of osx vervangen voor linux ;-)

Door Tweakers user PoweRoy, maandag 13 februari 2012 13:20

Ligt het aan mij of bij het laatste filmpje bij 40s de kleuren fout? Ik zie een witte lucht maar ambilight is oranje en paars?

Door Tweakers user sys64738, dinsdag 14 februari 2012 17:11

Mooie post. Had al een keer een vergelijkbaar recept gezien op MakeZine maar dit is zeker ook een mooie uitvoering.

De kleuren zijn inderdaad wel wat paarser dan het beeld dus enig tweaken kan geen kwaad.

Daarnaast had ik ook nog nooit van OpenELEC gehoord maar dat ziet er ook nice uit. Met Windows 7 duurt het nu toch wel 45 seconden a een minuut voor ik in XBMC zit. Dus ik ga dit zeker ook even uitproberen.

Door Tweakers user Kdekraker, zondag 10 juni 2012 21:55

De leds zijn tevens verkrijgbaar via SamenKopen.net.
Ik heb er 50 aan een 32" Samsung TV gehangen.

Ik draai XBMC Eden op Windows 7 (32-bit) op een Asrock ION330.
De boblight client zit als addon in XBMC, de deamon die ik draai is boblightd r416.
Alles werkt prima en zonder enige moeite.

Enige probleem is dat na opstart de deamon geen verbinding kan maken met de Arduino Uno.
Eerst moet ik Processing starten en de colorswirl runnen. Vervolgens verbind de deamon zonder problemen. Ook uit slaapstand werkt het systeem prima. Er bestaat ook een keymap file zodat boblight vanuit de videoplayer bedient kan worden.

Kortom het systeem werkt ook op Windows 7 !

Door Tweakers user Kdekraker, zondag 10 juni 2012 22:04

De kosten voor dit systeem vallen nog mee.
In mei 2012 heb ik de volgende spullen gekocht.

50 leds adafruit (samenkopen.net) EUR 30,- (+6,- EUR verz.kosten)

5V - 3000mA stekkernetadapter (conrad.nl) EUR 11,99
Arduino Uno SMD + USB kabel (conrad.nl) EUR 28,99
Single row jumper pins (drbit.nl) EUR 0,89 (+3,- verz.kosten)

Voor totaal 80 euro was ik klaar.
Heb bij de Pipoos (hobbywinkel) zwart karton gehaald van 50 bij 70 cm.
Alles zit vast op het karton en het karton zit aan de tv bezel vast met tesa powerstrips (laten geen lijmresten achter).

Door Tweakers user Paradox, dinsdag 11 december 2012 22:20

Zojuist zon zelfde soort set besteld naar aanleiding van jou post. Is je huidige boblight nog steeds actueel?

Door Tweakers user mrwolf, dinsdag 11 december 2012 22:39

Ja hoor, bij mij werkt alles nog steeds vlekkeloos, inmiddels op OpenElec 2.0

Door Tweakers user koen_84, zondag 10 maart 2013 22:02

Hoi,

mooi project en goed beschreven, ik heb zelf een gelijke opstelling gebouwd met 75 leds. Maar zodra er veel kleur wisseling plaats vindt worden alle leds rood/oranje en dat blijft dan zo voor zo'n 30 seconden.

heeft iemand een idee wat daar de oorzaak van kan zijn?

Alvast bedankt!

(ik gebruik openelec ION I386 build, met boblighthd, XBMC boblight)

Door Tweakers user koen_84, maandag 11 maart 2013 22:05

oorzaak inmiddels gevonden, ik gebruik een 5v 2a adapter voor 75 RGB leds. Zodra er veel stroom verbruikt wordt flitsen de LEDs ook een beetje en de Arduino start vervolgens opnieuw (dat verklaart het rode licht).

Tijdelijke work around: adjust op 0.5 gezet voor alle kleuren in boblight.conf

Nu maar een nieuwe adapter kopen ;-)

Door Tweakers user Eewokney, vrijdag 6 september 2013 11:43

Heb het volgende lijstje gemaakt om dit in elkaar te zetten:
http://pastebin.com/qmWX7PNm

kan iemand controleren of ik onderdelen mis?

Reageren is niet meer mogelijk