AmbiPi : Ambilight z Raspberry Pi, Boblight in XBMC
Ko sem pred kakim mesecem (ali dvema) videl tole, sem takoj vedel da bom tako stvar imel tudi sam. Vse skupaj je bilo samo vprašanje časa. Zakaj? Ker sem tehno geek in se rad ukvarjam z novotarijami, pri katerih se še kaj naučim.
Ker je moj TV zgolj 40" sem se odločil, da bo 50 pikslov dovolj. Naročil sem torej WS2801 piksle iz Amerike in čakal. Medtem sem si pripravil ostale HW stvari, potrebne za dokončanje projekta:
- Raspberry Pi (ki sem ga že imel viška),
- SD kartico z Raspbian ali Occidentalis OS za RPi,
- 2-3A 5V napajalnik za napajanje LEDic in RPi,
- breakout konektor za RPi (kabel za disketno enoto iz starega računalnika),
- spajkalnik, klešče, nekaj dodatnih konektorjev in kablov.
Ko so piksli končno prišli (banda carinska mi je pri odpiranju paketa izgubila konektor, ki sem ga naročil poleg) sem jih takoj priklopil na RPi in želel sprobati ali delajo. Pa nisem vedel kako.
Zato sem se odločil, da kar zgradim sistem kot je opisan na tej spletni strani in se ukvarjam z morebitnimi težavami kasneje.
Konfiguracija Raspberry Pi
Najprej sem se lotil Raspberry Pi dela celotnega sistema. Naložil sem Raspbian, ga posodobil z apt-get update in namestil Boblight. Boblight se nahaja v source kodi in ga je potrebno buildati za vsako napravo posebej.
$ sudo apt-get update
$ sudo apt-get install make gcc g++ subversion
$ svn checkout http://boblight.googlecode.com/svn/trunk/ /home/pi/boblight_source
$ cd /home/pi/boblight_source/
$ ./configure --without-portaudio --without-x11 --without-libusb
$ make && sudo make install
$ sudo reboot
Sledi še konfiguracija Boblighta in prvi test prižiganja LEDic.
$ sudo wget http://dl.dropbox.com/u/6885567/boblight_50xWS2801.conf -O /etc/boblight.conf
# oziroma
$ sudo cp /home/pi/boblight-read-only/conf/LPD8806.conf /etc/boblight.conf
$ sudo boblightd -f > /dev/null
$ sudo boblight-constant FFFFFF
Žal se ni zgodilo nič. Že zagon boblightd je javil napako, da ne more odpreti /dev/spidev0.0, zato sem se zapodil v Google in našel morebitni vzrok - privzeto onemogočen SPI vmesnik (Occidentalis ga ima privzeto omogočenega!). Težavo dokaj enostavno odpravim s komentiranjem (#) vrstice blacklist spi-bcm2708 v datoteki /etc/modprobe.d/raspi-blacklist.conf.
$ sudo nano /etc/modprobe.d/raspi-blacklist.conf
#blacklist spi-bcm2708
Če se upre tudi boblight-constant poženemo še ldconfig, pred tem pa preverimo ali je pot do Boblight knjižnice (/usr/local/lib) nastavljena v /etc/ld.so.conf
$ sudo nano /etc/ld.so.conf
$ sudo ldconfig
In končno se LEDice pržgejo!
Da se boblightd zažene ob vsakem zagonu RPi, je potrebno v datoteko /etc/rc.local pred exit 0 dodati zgornjo vrstico za zagon:
$ sudo nano /etc/rc.local
...
/usr/local/bin/boblightd -f
exit 0
Konfiguracija XBMC
Sam uporabljam Mac mini za medijski PC in na njem teče zadnja verzija XBMC (12.2), vse kar rabimo narediti je namestitev XBMC Boblight plugina (najdemo ga med Services). Le ta tudi poskrbi za namestitev ustrezne knjižnice, ki nudi podporo za zajem slike in komunikacijo z Boblight demonom na Raspberry Pi. Žal morajo uporabniki Linuxa knjižnico namestiti ročno (po možnosti jo celo buildati), Windows in OSX uporabnikom pa se namesti samodejno ob prvem zagonu plugina.
Privzeta nastavitev v pluginu pričakuje lokalno delujoč Boblight demon, kar pa enostavno spremenimo v nastavitvah: vpišemo IP naslov Raspberry Pi, port pa lahko pustimo privzet, razen, če ga nismo spremenili v boblight.conf.
Prvi test predvajanja Lion King-a potrdi, da vse deluje brezhibno. Edino kar opazim je to, da sta strani zamenjani - LEDice na levi strani svetijo v barvah desne strani zaslona in obratno. Ker LEDic še nisem imel pritrjenih na TV (sem jih samo obesil okoli TVja) je bila to zgolj ugotovitev in ko sem se lotil pritrjevanja sem to upošteval. LEDica, ki je najbližja RPi, se nahaja v spodnjem levem kotu zaslona, ostale ji sledijo v smeri urinega kazalca - zadnja je na desnem spodnjem kotu zaslona.
Montaža
Predzadnja stvar, in hkrati tudi najtežja oz. najbolj zoprna, je bila pritrditev LEDic na TV. Na netu je cel kup variant, ko jih pritrdijo na karton in nato karton pričvrstijo na TV. Pri meni to, žal, odpade, ker imam TV z nosilcem pritrjen na zid in ni prostora za kartonsko ploščo. Zato sem se odločil, da jih enostavno prilepim na ohišje TV. Vzel sem pištolo z lepilom (kot jo uporabljajo v cvetličarnah za arnžmaje) in se lotil dela. Kmalu sem ugotovil, da brez ustreznega načrta ne bo dobrih rezultatov. Označil sem si položaje posameznih LEDic in pričel z lepljenjem. Smola pa hoče, da je ohišje LEDic iz nekakšne silikonske gume, ki jo lepilo nikakor ne drži. Zato sem improviziral in lepil kabel. Ostalo je vprašanje, kam skriti RPi in k sreči je v ohišju mojega TV ravno prav velika udrtina, kamor sem ga z dvema vijakoma pritrdil, tako da je skrit za televizorjem.
Sledilo je le še kalibriranje svetlosti LEDic in hitrost reagiranja na spremembe zaslona v samem XBMC pluginu. Privzeti vrednosti (Slow in Fast) sta bili za moje razmere presvetli in preobčutljivi zato sem v Custom nastavitvah ustrezno popravil, da je učinek najboljši.
Ugotovitve
Ko sem se lotil izdelave AmbiPi, nisem imel pojma v kaj se podajam in tudi nisem vedel na kaj vse moram biti pozoren. A k sreči sem za vsako težavo kmalu našel rešitev.
Število LED pikslov
LED piksle lahko kupimo že zvezane v verigo po 25 kosov, ki jih enostavno s spajanjem konektorjev podaljšujemo (maksimum je 255) ali rezanjem krajšamo. Pri daljših verigah moramo biti posebej pozorni na napajanje, saj vsaka LED porabi 60mA, kar pomeni, da veriga s 100 LEDicami potrebuje napajalnik s 6A nazivnega toka (+800mA za Raspberry Pi).
Od števila pikslov je odvisna tudi konfiguracija Boblight demona (boblightd), saj moramo vsak piksel vpisati v boblight.conf. Zakaj? Zato, da boblightd ve, kateri del zaslona vpliva na posamezni piksel. Ker je to opravilo zelo zoprno, če se ga lotimo na roke, obstaja na internetu cel kup kalkulatorjev oz. konfiguratorjev za Boblight. Google je vaš najboljši prijatelj.
Svetlost in občutljivost pikslov
Svetlost in občutljivost pikslov nastavljamo na dveh mestih. Ena je v že omenjeni boblight.conf, druga v nastavitvah XBMC plugina v custom nastavitvah. Vsaka barva v boblight.conf ima tudi parametra gamma in adjust, s katerima uravnavamo gamo in multiplikator svetlosti. Pri meni sta se obnesli vrednosti 2.2 in 0.7.
V XBMC pluginu sem s poskušanjem ugotovil, da so za moje razmere najboljše naslednje nastavitve:
- saturation=1.5
- value=1
- treshold=20
- speed=67
Priklapljanje kablov na Raspberry Pi
Najprej sem uporabil flat kabel za disketno enoto iz odsluženega računalnika, pa se izkaže, da potrebujemo vsega 3 žice, ki jih spojimo na LED trak (pini: 19-rumena, 23-zelena in 25-modra), zato sem poiskal 4 polni konektorček (za zvočnik iz odsluženega računalnika) in nanj pritrdil LED trak. Pomembno je, da sta GND na LED traku in GND (pin 25) na RPi spojena, v nasprotnem primeru LEDice nekontrolirano žmigajo oz. ne delujejo pravilno.
Še koristne povezave
Boblight konfiguracijska datoteka
http://www.raspberrypi.org/phpBB3/viewtopic.php?f=63&t=5201