Ambilight i XBMC na Raspberry Pi
Ponieważ RaspberryPi sprawdza się bardzo dobrze jako domowe centrum rozrywki, grzechem byłoby nie wykorzystać go do jeszcze jednego celu - a mianowicie dynamicznego podświetlania telewizora, reagującego na aktualnie wyświetlany obraz. Efekt jaki chcemy uzyskać ma być niemal identyczny do technologii Ambilight znanej w telewizorach Philips.
W sieci można znaleźć dziesiątki rozwiązań w większości wykorzystujące platformę Arduino i bibliotekę Boblight. Rozwiązanie już sprawdzone, ale ma zasadniczą wadę, jaką jest konieczność posiadania płytki Arduino i połączenia jej komputerem za pomocą USB. Drugim dość istotnym problemem jest wtyczka do XBMC do obsługi Boblight, która wymaga do działania X11, a jak wiadomo multimedialne dystrybucje z XBMC na pokładzie wykorzystują do wyświetlania obrazu framebuffer.
I tak dochodzimy do sedna problemu. Jak zmusić do działania bibliotekę Boblight na XBMC pod "maliną" oraz jak wyeliminować w naszym łańcuchu pośredniczące Arduino?
Podłączenie
Do naszego Ambilighta posłużymy się łańcuchem diod RGB z wbudowanymi już układami WS2801 z oferty polskiego sklepu Nettigo. Z jednej strony zasilimy naszą taśmę LED dodatkowym zasilaczem 5V. Z drugiej zaś strony łączymy naszą taśmę do pinów GPIO 10 i 11 oraz łączymy masę GND (-) z masą diod.
Instalacja Boblight na Raspbmc
Do naszego zadania wykorzystamy multimedialną odmianę Debiana - Rasbmc. Po nagraniu obrazu na kartę SD i uruchomieniu naszej "maliny", logujemy się do nej za pomocą SSH w celu przygotowania naszego domowego podświetlania obrazu;
Na początek zaktualizujemy repozytoria i pobierzemy niezbędne pakiety do kompilacji:
- sudo apt-get update
- sudo apt-get install make gcc g++ subversion
Następnie pobieramy i kompilujemy bibliotekę Boblight, która będzie sterowała naszą taśmą LED. Ponieważ nie korzystamy z X11 oraz USB wyłączymy zbędne opcje:
- cd ~
- svn checkout http://boblight.googlecode.com/svn/trunk/ boblight-read-only
- cd boblight-read-only/
- ./configure --prefix=/usr --without-portaudio --without-x11 --without-libusb
- make
- sudo make install
Proces instalacji potrwa około kwadransa, więc jeśli masz coś do roboty - zrób to :) Kiedy mamy już zainstalowaną bibliotekę, konieczne jest utworzenie pliku konfiguracyjnego. Jeśli posiadamy taśmę składającą się z 25 diod LED (ułożenie diod 5-8-5-7):
- sudo wget https://www.jarzebski.pl/files/ambilight/boblight-25-5-8-5-7.conf -O /etc/boblight.conf
Jeśli posiadamy taśmę składającą się z 50 diod LED (ułożenie diod 9-16-9-16):
- sudo wget https://www.jarzebski.pl/files/ambilight/boblight-50-9-16-9-16.conf -O /etc/boblight.conf
Następnie uruchamiamy boblighd:
- sudo boblightd -f
Powyższe polecenie możemy od razu dodać do skryptu starowego:
- sudo nano /etc/rc.local
dodając następującą linię przed "exit 0":
- /usr/bin/boblightd -f
- exit 0
Sprawdźmy jeszcze poprawność podłączenia naszej taśmy LED do Raspberry Pi zapalając diody na czerwono:
- boblight-constant ff0000
Podmiana XBMC
Jak już wiemy, XBMC do odtwarzania filmów wykorzystuje framebuffer i standardowo nie będziemy w stanie przekazać prawidłowego sygnału do boblightd. Na szczęście dostępne są już odpowiednie łatki do XBMC dodające natywną obsługę biblioteki Boblight z pominięciem wtyczki wymagającej X-ów. Po naniesieniu łatek możemy skompilować XBMC sami lub skorzystać z gotowych binarek:
- cd ~
- wget https://www.jarzebski.pl/files/ambilight/xbmc-ambilight-20130310.tar.gz
- sudo initctl stop xbmc
- sudo tar -xzf xbmc-ambilight-20130310.tar.gz -C /opt
- sudo cp /opt/xbmc-bcm/xbmc-bin/lib/libtinyxml.so* /usr/lib/
- wget https://www.jarzebski.pl/files/ambilight/boboptions.txt
Pozostaje nam już tylko restart i możemy cieszyć się naszym domowym kinem domowym z funkcją Ambilight
- sudo reboot
Jak to działa?
Wpisy na podobny temat
- 04 Dec 2012 » Raspberry Pi w roli Media Center? Raspberry Pi Hardware Dystrybucje
- 02 Jan 2013 » XBian 1.0 Alpha 4 już dostępny Software Raspberry Pi Dystrybucje
- 20 Mar 2013 » Jeszcze lepszy XBMC 12.1 Frodo Software
Komentarze
Zajefajna sprawa ;-)
Dziękuję za ten wpis. Jest bardzo inspirujący.
Ile takich łańcuchów poszło na taki efekt?
tylko 25 diod RGB
Nie uważasz czasem, że koszt takiej taśmy jest relatywnie duży? Pewnie dałoby się go zmniejszyć zwiększając tym samym nakład pracy.
Nie mniej fajny efekt.
Fakt, koszt taśmy jest spory. O ile z diodami RGB i podstawowymi elementami nie ma problemów, to chyba nie idzie dostać w Polsce układów WS2801. Na SparkFun są po 0.75$ (~60zł), diody RGB (~40zł) + oporniki, kondensatory, przewód + jakieś płytki + przesyłka.... Więc nie jest tak źle.
Hello guys,
will this work with RGB LED stripes using chip HL1606?
Thanks
Dodo
Will work with LPD8806, boblight probably does not support the HL1606
witam.
skąd można pobrać plik boblight.conf dla 25diod?
Dziękuję bardzo za szybką odpowiedź.
Mam problem jednak.
Wszystko ładnie działa do momentu testu wyświetlania jednego koloru.
Po ostatniej instalacji latki xbmc i restarcie system nie uruchamia sie do końca, tzn wyświetli sie na środku czerwone R, następnie tło Raspbmc i po chwili następuje restart. I tak w kółko.
Proszę o pomoc, co jest nie tak?
Witam ponownie.
Przeinstalowałem wszystko na nowo i jest tak samo.
Plik boblight-25-5-8-5-7.conf zmieniłem w ten sposób, proszę o sprawdzenie czy jest ok, ewentualnie co jeszcze mam sprawdzić.
-----
[global]
interface 127.0.0.1
port 19333
[device]
name ambilight
output /dev/spidev0.1
channels 75
type ws2801
interval 120000
rate 48000
debug off
[color]
name red
rgb FF0000
[color]
name green
rgb 00EE00
[color]
name blue
rgb 0000CC
[light]
name b01
color red ambilight 1
color green ambilight 2
color blue ambilight 3
hscan 35.72 50
vscan 87 100
[light]
name b02
color red ambilight 4
color green ambilight 5
color blue ambilight 6
hscan 21.44 35.72
vscan 87 100
[light]
name b03
color red ambilight 7
color green ambilight 8
color blue ambilight 9
hscan 7.16 21.44
vscan 87 100
[light]
name l01
color red ambilight 10
color green ambilight 11
color blue ambilight 12
hscan 0 13
vscan 80.00 100
[light]
name l02
color red ambilight 13
color green ambilight 14
color blue ambilight 15
hscan 0 13
vscan 60.00 80.00
[light]
name l03
color red ambilight 16
color green ambilight 17
color blue ambilight 18
hscan 0 13
vscan 40.00 60.00
[light]
name l04
color red ambilight 19
color green ambilight 20
color blue ambilight 21
hscan 0 13
vscan 20.00 40.00
[light]
name l05
color red ambilight 22
color green ambilight 23
color blue ambilight 24
hscan 0 13
vscan 0 20.00
[light]
name t01
color red ambilight 25
color green ambilight 26
color blue ambilight 27
hscan 0 12.50
vscan 0 13
[light]
name t02
color red ambilight 28
color green ambilight 29
color blue ambilight 30
hscan 12.50 25.00
vscan 0 13
[light]
name t03
color red ambilight 31
color green ambilight 32
color blue ambilight 33
hscan 25.00 37.50
vscan 0 13
[light]
name t04
color red ambilight 34
color green ambilight 35
color blue ambilight 36
hscan 37.50 50.00
vscan 0 13
[light]
name t05
color red ambilight 37
color green ambilight 38
color blue ambilight 39
hscan 50.00 62.50
vscan 0 13
[light]
name t06
color red ambilight 40
color green ambilight 41
color blue ambilight 42
hscan 62.50 75.00
vscan 0 13
[light]
name t07
color red ambilight 43
color green ambilight 44
color blue ambilight 45
hscan 75.00 87.50
vscan 0 13
[light]
name t08
color red ambilight 46
color green ambilight 47
color blue ambilight 48
hscan 87.50 100.00
vscan 0 13
[light]
name r01
color red ambilight 49
color green ambilight 50
color blue ambilight 51
hscan 87 100
vscan 0 20.00
[light]
name r02
color red ambilight 52
color green ambilight 53
color blue ambilight 54
hscan 87 100
vscan 20.00 40.00
[light]
name r03
color red ambilight 55
color green ambilight 56
color blue ambilight 57
hscan 87 100
vscan 40.00 60.00
[light]
name r04
color red ambilight 58
color green ambilight 59
color blue ambilight 60
hscan 87 100
vscan 60.00 80.00
[light]
name r05
color red ambilight 61
color green ambilight 62
color blue ambilight 63
hscan 87 100
vscan 80.00 100.00
[light]
name b04
color red ambilight 64
color green ambilight 65
color blue ambilight 66
hscan 85.72 100
vscan 87 100
[light]
name b05
color red ambilight 67
color green ambilight 68
color blue ambilight 69
hscan 71.44 85.72
vscan 87 100
[light]
name b06
color red ambilight 70
color green ambilight 71
color blue ambilight 72
hscan 57.16 71.44
vscan 87 100
[light]
name b07
color red ambilight 73
color green ambilight 74
color blue ambilight 75
hscan 42.88 57.16
vscan 87 1
Z tego co pamiętam XBMC musiał być z łatką, nie używam już tego więc nie wiem, czy nowsze wersje tej łatki nie wymagają
Bardzo fajny pomysł. Sam mam w domu telewizor Philipsa właśnie z ambilightem i muszę przyznać, że robi to sporą różnicę jeżeli oglądamy film, czy mecz. Ogólnie uważam, ze Philips z tym pomysłem spisał się świetnie.
No o czym że to świadczy, o kopiowaniu świetnych pomysłów. ;-)
Nie mniej Philips zrobił rewelacyjny patent i ja jestem nim zachwycony. Odnośnie Twojego wykonania, chapeau bas za chęci i wyśmienity efekt końcowy. :)
Taśmy led z układami WS2801 można stosunkowo tanio znaleźć na aliexpress.
Można użyć diody lpd 6803 ?
Akurat takie mam na stanie i chętnie bym je do tego wykorzystał.
Cześć. Mam pytanie. Robię sobie ambilampkę z 8 diodami LED. 4 kolory w tym samym czasie, na każdy po 2 diody. Nie chcę mieć limitu tylko do 7 różnych kolorów, więc potrzeba mi jakoś sterować tymi diodami. 4x WS2801 wziąć do tego, czy coś innego?
Możesz 1xTLC5940 lub 1xWS2803 + traznzystory. TLC ma na wyjście max 120mA, WS2803 30mA. Możesz tez bez, o ile na dwie diody zadowoli Cię 30mA. Innym wariantem jest 2x WS803 i każdą diodę z osobna (4 kolory po 3 szt)
Ok, wielkie dzięki. Jeszcze zajmę Ci moment, bo jestem amator jeśli o te sprawy idzie.
Aktualnie mam przygotowany na schemacie układ bez pwm, czyli maks 7 kolorów: ATtiny2313, do tego podłączone 2 układy Darlingtona, do 6 wyjść z każdego Darlingtona podłączone rezystory 220, a potem diody. Zasilane z konwertera rs232 usb. Coś takiego (schemat niedokończony):
Oryginalny obraz posiada rozmiar 923x445
Czyli jeśli bym użył tego TLC5940, to podłączyłbym go bezpośrednio do ATtiny, potem do niego dałbym te darlingtony, a potem diody? To by było ok? W specyfikacji pisze, że nie trzeba przy podłączaniu LEDów używać już rezystorów, ale możliwe, że nie obędzie bez tych dodatkowych rezystorów przy wyjściach z pwm, bym mógł podpiąć wszystkie 8 diód.
Jak testowałem na płytce wcześniej ile mi LED pobierze amperów, to przy 100R dla wszystkich 3 kolorów włączonych wyszło jakieś 60mA. Przy 220R spadło do ~30mA. Różnicy w świeceniu nie zaobserowałem, a dzięki temu mogę podpiąć te 8 diód, bo zżerają razem ~240mA, przy 100R by mi brakło, bo by wyszło 480mA, czyli sporo za dużo.
TLC daje radę przy 120mA na każdym z wyjść przy zasilaniu 5V, więc nie potrzebujesz tranzystorów. Rezystorów do diod również nie - możesz dobrać maksymalny prąd na wyjściu przy pomocy rezystora IREF.
Poczytaj tutaj:
http://starter-kit.nettigo.pl/2012/01/tlc5940-czyli-co-najmniej-16-dodatkowych-pinow-pwm-w-arduino/
Układ zaś dostaniesz tutaj:
Wielkie dzięki :)
Jakby co, tp tam przy wartościach wstawiłem tyldę, a wyświetla jak minus.
Czy możliwe jest uruchomnienie ambilighta albo boblight na układach ws2803??
Myślę, że tak. Pytanie Czy chcesz bezpośrednio sterować z RaspberryPI ,czy za pośrednictwem Arduino. WS2803 od WS2801 różni się jedynie kolejnością przekazania danych do kolejnego układu względem WS2801: http://www.jarzebski.pl/blog/2013/07/18/test-sterownika-led-ws2803.html
Witam,
Bardzo dobry projekt. Mam tylko pytanie, czy układ działa tylko przy obrazi z rasberry, czy można wykorzystać gniazdo HDMI jak "INPUT" i wykorzystać sygnał z dekodera.
Niestety RPi posiada tylko wyjście HDMI
To jak najtańszym sposobem puścić sygnał HDMI do RPi?
Jaka jest w ogóle zasada działania tego? Trzeba puszczać coś prze RPI czy stan jest jakoś zczytywnay z telewizora i na tej podstawie diody świecą?