SantyagoSantyago
Avatar

Witaj!
Blog archiwalny. Już niebawem nowy serwis!

YouTube RSS Facebook GitHub

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:

  1. sudo apt-get update
  2. 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:

  1. cd ~
  2. svn checkout http://boblight.googlecode.com/svn/trunk/ boblight-read-only
  3. cd boblight-read-only/
  4. ./configure --prefix=/usr --without-portaudio --without-x11 --without-libusb
  5. make
  6. 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):

  1. 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):

  1. sudo wget https://www.jarzebski.pl/files/ambilight/boblight-50-9-16-9-16.conf -O /etc/boblight.conf

Następnie uruchamiamy boblighd:

  1. sudo boblightd -f

Powyższe polecenie możemy od razu dodać do skryptu starowego:

  1. sudo nano /etc/rc.local

dodając następującą linię przed "exit 0":

  1. /usr/bin/boblightd -f
  2. exit 0

Sprawdźmy jeszcze poprawność podłączenia naszej taśmy LED do Raspberry Pi zapalając diody na czerwono:

  1. 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:

  1. cd ~
  2. wget https://www.jarzebski.pl/files/ambilight/xbmc-ambilight-20130310.tar.gz
  3. sudo initctl stop xbmc
  4. sudo tar -xzf xbmc-ambilight-20130310.tar.gz -C /opt
  5. sudo cp /opt/xbmc-bcm/xbmc-bin/lib/libtinyxml.so* /usr/lib/
  6. 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

  1. sudo reboot

Jak to działa?

Komentarze Komentarze
Avatar 1
frk Linux / Safari 537.31
10 March 2013 - 12:14 Brak informacji

Zajefajna sprawa ;-)

Avatar 1
PanArtur83 Linux Ubuntu / Mozilla Firefox 19.0
11 March 2013 - 23:09 Brak informacji

Dziękuję za ten wpis. Jest bardzo inspirujący.

Ile takich łańcuchów poszło na taki efekt?

Avatar 2
Korneliusz Linux x86_64 / Mozilla Firefox 19.0
11 March 2013 - 23:32 Bytom

tylko 25 diod RGB

Avatar 1
Krystek Linux x86_64 / Safari 537.22
20 March 2013 - 00:50 Poznań

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.

Avatar 2
Korneliusz Linux x86_64 / Mozilla Firefox 19.0
20 March 2013 - 06:58 Bytom

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.

Avatar 1
dodo Windows 7 / Mozilla Firefox 20.0
15 April 2013 - 09:59 Brak informacji

Hello guys,

will this work with RGB LED stripes using chip HL1606?

Thanks
Dodo

Avatar 2
Korneliusz Linux x86_64 / Mozilla Firefox 19.0
17 April 2013 - 00:40 Bytom

Will work with LPD8806, boblight probably does not support the HL1606

Avatar 1
kwoka Windows 7 / Safari 537.36
09 January 2015 - 20:29 Brak informacji

witam.
skąd można pobrać plik boblight.conf dla 25diod?

Avatar 2
Korneliusz Linux x86_64 / Mozilla Firefox 34.0
10 January 2015 - 04:39 Bytom
Avatar 1
kwoka Windows 7 / Safari 537.36
10 January 2015 - 10:49 Brak informacji

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?

Avatar 1
kwoka Windows 7 / Safari 537.36
10 January 2015 - 14:14 Brak informacji

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

Avatar 2
Korneliusz Linux x86_64 / Mozilla Firefox 34.0
11 January 2015 - 14:08 Bytom

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ą

Avatar 1
Maurycy Windows 7 / Safari 537.31
15 May 2013 - 18:08 Warszawa

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.

Avatar 1
Mihster Windows 7 / Safari 537.36
31 May 2013 - 23:05 Brak informacji

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. :)

Avatar 1
Pwl Windows XP / Mozilla Firefox 23.0
31 August 2013 - 13:16 Brak informacji

Taśmy led z układami WS2801 można stosunkowo tanio znaleźć na aliexpress.

Avatar 1
iborkim Windows 7 / Mozilla Firefox 24.0
17 October 2013 - 22:14 Jaworzno

Można użyć diody lpd 6803 ?
Akurat takie mam na stanie i chętnie bym je do tego wykorzystał.

Avatar 2
Korneliusz Linux x86_64 / Mozilla Firefox 24.0
18 October 2013 - 00:59 Bytom
Avatar 1
troll Windows 7 / Mozilla Firefox 23.0
23 October 2013 - 22:49 Gliwice

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?

Avatar 2
Korneliusz Linux x86_64 / Mozilla Firefox 24.0
25 October 2013 - 07:08 Bytom

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)

Avatar 1
troll Windows 7 / Mozilla Firefox 23.0
26 October 2013 - 21:27 Warszawa

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.

Avatar 2
Korneliusz Linux x86_64 / Mozilla Firefox 24.0
27 October 2013 - 01:42 Bytom

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:

http://nettigo.pl/products/50

Avatar 1
troll Windows 7 / Mozilla Firefox 23.0
27 October 2013 - 09:33 Brak informacji

Wielkie dzięki :)

Avatar 1
troll Windows 7 / Mozilla Firefox 23.0
26 October 2013 - 21:29 Warszawa

Jakby co, tp tam przy wartościach wstawiłem tyldę, a wyświetla jak minus.

Avatar 1
Piotr Windows XP / Mozilla Firefox 25.0
07 November 2013 - 09:59 Warszawa

Czy możliwe jest uruchomnienie ambilighta albo boblight na układach ws2803??

Avatar 2
Korneliusz Linux Ubuntu / Mozilla Firefox 25.0
07 November 2013 - 11:33 Katowice

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

Avatar 1
Jakub Windows 7 / Safari 537.36
16 January 2015 - 10:46 Brak informacji

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.

Avatar 2
Korneliusz Linux x86_64 / Mozilla Firefox 34.0
16 January 2015 - 20:34 Bytom

Niestety RPi posiada tylko wyjście HDMI

Avatar 1
Chriso Windows / Safari 537.36
12 November 2015 - 22:39 Warszawa

To jak najtańszym sposobem puścić sygnał HDMI do RPi?

Avatar 1
Robert Windows / Mozilla Firefox 56.0
13 October 2017 - 13:17 Warszawa

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ą?