In deze tutorial ga ik beschrijven hoe je met behulp van (RGB) led lampjes je tv kunt voorzien van achtergrondverlichting zoals Philips dat bij zijn Ambilight tv's gebruikt. Om dit voor elkaar te krijgen heb ik zelf van veel verschillende bronnen op internet gebruik gemaakt. Mijn doel is echter om van deze tutorial een zo compleet, maar toch overzichtelijk geheel te maken.
Boodschappenlijstje
Ik ben zelf uitgegaan van de tutorial van Adafruit. Op die pagina staat aan de rechterkant een overzicht van onderdelen. Ik licht ze hieronder nog eens toe. Het is aan te raden om ze niet via Adafruit te kopen maar even wat langer te zoeken waar je het goedkoper kunt krijgen. Bij elk item vermeld ik een of meer links naar een webwinkel. Als je ze zelf ergens anders nog goedkoper kunt krijgen, dan zou het wel aardig zijn wanneer je dit in de comments vermeldt.
- Een computer van waar je beeldmateriaal afspeelt! Besef dat deze methode dus niet met alle tv beeld werkt, maar alleen met datgene wat vanaf een pc (zoals bijvoorbeeld een mediacenter) wordt afgespeeld. De software scant de kleuren van de pixels aan de rand en stuurt deze waarden door naar de led lampjes.
Mijn besturingssysteem is Ubuntu 12.04. In dit artikel ga ik niet uitleggen hoe het bij een ander OS werkt. - Een of meerdere strengen van 25 led pixels. Wanneer je niet zo'n grote tv hebt (tot een beeldschermdiagonaal van ongeveer 70 cm) volstaat een streng van 25 ledjes. Een beetje overkill kan geen kwaad en dus heb ik 50 ledjes gebruikt bij mijn scherm van 68 cm. De afstand tussen de ledjes is dan ongeveer 3,5 cm. De meeste software en configuratiebestanden zijn standaard geschreven voor 25 lampjes, dus bij een ander aantal zul je meer aanpassingen moeten doen. Verderop zal ik beschrijven hoe dat in zijn werk gaat.
http://www.ledsee.com/index.php/new-products/25-x-12mm-diffused-digital-rgb-led-pixels-ws2801-detail
http://www.adafruit.com/products/322 - Een Arduino microprocessor bordje. Ik gebruik de Arduino UNO en ik kan niets zeggen in hoeverre een ander type wel of niet zou werken.
http://arduino.cc/en/Main/Buy - Kabeltjes zoals deze: http://www.oomlout.co.uk/breadboard-jumper-wires-70-pieces-p-181.html Je hebt er hier echter maar 3 van nodig. Zorg wel dat ze lang genoeg zijn; toch wel minstens 15 cm. Korter kan natuurlijk, maar dan heb je minder vrijheid.
- Een 5 volt voedingsadapter. Bij 25 lampjes is een adapter van 2 ampère voldoende. Als je meer leds hebt, moet de adapter ook meer stroom kunnen leveren. Elk lampje gebruikt 0,06 A, dus bij 50 lampjes heb je dus een adapter van minstens 3 A nodig.
http://dx.com/p/eu-charger-power-adapter-for-psp-1000-2000-slim-3000-100-240v-ac-27167
http://www.pieterfloris.nl/shop/product.php?id_product=854 - Een verbindingsstuk waarmee je de voedingsadapter op twee stroomkabeltjes van de streng led lampjes kunt aansluiten. Er zijn vast betere oplossingen om die twee op elkaar aan te sluiten, maar ik heb deze besteld:
http://dx.com/p/male-female-dc-power-converter-connector-adapters-w-terminal-blocks-for-cctv-camera-pair-105084
Deze pasten helaas niet op mijn voedingsadapter. Maar indien je zowel een mannetje als een vrouwtje hebt, kun je het stekkertje van de voedingsadapter afknippen en ze als volgt toch nog op elkaar aansluiten:
- Een stevig stuk karton, waar je de ledjes aan vast moet maken. Tevens bevestig je hier de Arduino aan. Dat heb ik met tie-wraps gedaan. Hier alvast een paar foto's van hoe het er uiteindelijk uit zou kunnen komen te zien:
- Schroefjes en ringetjes waarmee je het karton aan de achterkant van je tv bevestigt. Wanneer je tv op een kastje staat, kun je de gaatjes gebruiken die bedoeld zijn voor de ophangbevestigen aan de muur.
Dit is dan het eindresultaat......maar zo ver zijn we nog lang niet!
- Gereedschap:
- Een perforator om gaatjes in het karton te knippen.
- Schroevendraaier
- Potlood, lineaal, hobbymesje om het karton op maat te maken.
- Software:
- Op de Arduino:
- de Arduino IDE
- de Arduino sketch LEDstream.pde
- Op de computer die het beeld levert:
- het programma Processing
- de Processing sketch Colorswirl.pde om te testen.
- de Processing sketch Adalight.pde, die ervoor zorgt dat de de kleuren van de rand van het beeldscherm naar de Arduino worden doorgestuurd.
- Omdat de Adalight.pde sketch de computer ontzettend vertraagt - de mijne wel althans - gebruik ik de Boblight plugin van XBMC media Center. Nadeel: de lampjes werken alleen wanneer je een film met XBMC afspeelt, maar dan zou je ook een voordeel kunnen noemen. Het installeren en instellen is wat ingewikkelder, dus dat verdient een paragraafje verderop.
- Op de Arduino:
Leds aansluiten op de Arduino en testen
Eigenlijk zou ik het niet beter kunnen doen dan de mensen bij Adafruit. Dus volg hun tutorial hier en kom dan weer terug, want dan leg ik uit hoe je Boblight aan de praat krijgt. Adalight legt namelijk te veel beslag op je systeembronnen, waardoor het afspelen van films erg schokkerig verloopt.
Boblight installeren en instellen
Boblight is zoals gezegd een plugin voor XBMC media center. Daardoor werken de lampjes alleen maar als je met XBMC een video afspeelt. De boblight plugin is beschikbaar bij de standaard plugins van XBMC, via het onderdeel Services of Diensten.
De Arduino sketch die je moet gebruiken is gewoon die van Adalight. Als het goed is heb je die al naar de Arduino geupload wanneer je de eerder genoemde tutorial van Adafruit hebt doorlopen.
Daarnaast moet je echter wel nog het programma boblightd op de achtergrond mee laten lopen. boblightd heeft het configuratiebestand /etc/boblight.conf nodig, waarin je o.a. beschrijft hoeveel lampjes je hebt en op welke positie ze zich bevinden.
- boblightd compileren en installeren
- Installeer de benodigde dependencies:
sudo apt-get install libx11-dev libgl1-mesa-dev libxrender-dev libxext-dev portaudio19-dev libavcodec-dev libavformat-dev libswscale-dev libavdevice-dev
- Download de source met Subversion:
cd ~ sudo apt-get install subversion svn checkout http://boblight.googlecode.com/svn/trunk/ boblight-read-only
- Compileren:
cd boblight-read-only/
./configure
make
sudo make install
Bij het configure commando kreeg ik overigens de volgende foutmelding:
checking for libusb_error_name in -lusb-1.0... no checking libusb-1.0/libusb.h usability... no checking libusb-1.0/libusb.h presence... no checking for libusb-1.0/libusb.h... no configure: error: Missing a required header, please install it
Dit heb ik opgelost door van het onderdeel dat ontbreekt (in dit geval libusb-1.0), het -dev pakket te installeren:
sudo apt-get install libusb-1.0-0-dev
Wanneer er andere onderdelen ontbreken, installeer dan ook de bijbehorende -dev pakketen. Een handig hulpmiddel om de naam van het juiste pakket te vinden is het gebruik van de tab toets:
Typ eerst sudo apt-get install en druk daarna enkele malen op tab. Er verschijnt dan een lijst van pakketten, waaruit je de juiste (degene die op -dev eindigt) kunt kiezen. - Testen via de commandline
Metboblightd
kun je de boblight daemon starten. Vervolgens kun je (in een ander tabblad van de terminal) de commando's
boblight-constant FF0000
boblight-constant 00FF00
en
boblight-constant 0000FF
gebruiken om de kleuren rood, groen en blauw te testen.
Wanneer je de foutmeldingERROR: libboblight.so: cannot open shared object file: No such file or directory
krijgt, voer dan
ldconfig
uit en probeer het nog eens met boblight-constant.
- Automatisch starten bij aanmelden Gebruik het programma Opstarttoepassingen van Ubuntu om ervoor te zorgen dat boblightd automatisch wordt uitgevoerd bij het opstarten van de computer.
Je ziet dat het uit te voeren commando (boblightd) de optie -f meekrijgt. Dat zorgt ervoor dat boblightd op de achtergrond draait.
- Installeer de benodigde dependencies:
- B. Boblight instellen
In het coniguratiebestand boblight.conf leg je vast op welke plek de leds zitten, of eigenlijk: wat de coördinaten op het beeldscherm zijn waar elke led zijn kleur op moet baseren. Die coördinaten worden uitgedrukt in percentages. Voorbeeld: wanneer je voor een led insteltname light1 hscan 10 20 vscan 80 90
dan betekent dit dat de kleur van lampje 1 wordt gebaseerd op de kleuren van de rechthoek die zich 10% tot 20% van de linkerkant en 80% tot 90% van de bovenkant van het beeldscherm bevindt.
Mijn versie van boblight.conf kun je hier vinden. Hierin staan je juiste instellingen voor 50 leds (18 verticaal, 10 horizontaal) waarbij ik aan de onderkant van tv er 2 in het midden heb weggelaten; in verband met de voet van de tv heeft het namelijk geen zin om daar leds te plaatsten. Zie de foto hierboven.
Het bestand moet je opslaan onder /etc/boblight.conf
De leds achter de tv monteren
Zoals je op de foto kon zien, heb ik mijn leds aan een stuk stevig, mooi wit karton vastgemaakt. Van te voren moet je goed bedenken wat de afmetingen van het karton moeten worden. Zorg dat het niet even groot als de tv wordt, want het is lelijk als je de lampjes kunt zien zitten.
Het is natuurlijk ook mogelijk om de leds op andere manieren aan de tv vast te maken. Ieder zal hier waarschijnlijk een andere keuze in maken; hangt er van af hoe creatief je bent.
Tot slot
Dit zou het dan moeten zijn. Ik heb geprobeerd heb alles zo duidelijk mogelijk te beschrijven. Hopelijk zijn de details die ik heb weggelaten vanzelfsprekend genoeg om zelf te bedenken. Uiteraard zijn tips van harte welkom.
Veel plezier en succes!
Als je aan de zijkant van het scherm een RGB detector of whatever zou plaatsen zou je hem in principe kunnen gebruiken zonder XBMC en dus nederland 1 ermee kijken..
Ligt er natuurlijk wel aan hoe gevoelig ze zijn en hoeveel je erop hangt wat het resultaat word maar dat doet er niet toe ..
Leuk project ! Er zijn gewoon te veel mogelijkheden met Arduino.
Inderdaad, zo zou het ook wel kunnen werken. Maar die RGB detector vangt dan natuurlijk ook veel ruis (licht van de omgeving dat niet van het tv beeld afkomstig is), dus ik denk niet dat dit de kwaliteit ten goede komt. Verder was het mijn bedoeling om alles zo onopvallend achter de tv weg te werken.
Ook kijk ik nooit zo vaak live tv, dus ik vind het niet zo'n probleem dat het daar niet bij werkt. Sterker nog: eigenlijk gebruik ik de tv helemaal niet zo vaak; ik heb dan ook meer plezier beleefd aan het maken, dan aan het gebruik ervan 🙂
Kan iemand me helpen?
Ik loop vast bij het "boblightd compileren en installeren".
In welk programma wordt de opdracht "sudo" in gegeven?
Alvast bedankt,
Rene
In de terminal! Ctrl+Alt+t is de snelste manier op die op te roepen.
Ik kan me best voorstellen dat best ingewikkeld vind om voor de eerste keer in de terminal te werken, zeker als je ook nog eens zelf een programma moet compileren. En zonder ervaring is het best moeilijk om te achterhalen hoe je problemen oplost als er iets mis gaat.
En zijn uiteraard heel veel tutorials over de terminal te vinden, maar de volgende vond ik zelf wel een goed voor beginners: Unix for the Beginning Mage
Succes ermee!