Raspberry Pi + OSMC + Hyperion = Ambilight TV
29.03.2016 | aktual.: 29.03.2016 19:37
Widząc po raz pierwszy wynalazek Philipsa - Ambilight (ambient lighting), czyli efekt świetlny wokół odbiornika TV korespondujący z zawartością ekranu, byłem pod niemałym wrażeniem. Pomyślałem sobie, że fajnie byłoby rozszerzyć doznania podczas oglądania filmu czy telewizji i sprawić sobie coś takiego, tylko... jak to zrobić tanim kosztem? Z pomocą idzie Raspberry Pi wraz ze swoją wszechstronnością w wykorzystaniu.
Hardware
Zatem, co będzie nam potrzebne do wykonania naszego oświetlenia Ambilight? Do płynnej i w miarę mało denerwującej obsługi centrum multimedialnego OSMC (OSMC bazuje na Kodi, dawniej XBMC), będziemy potrzebować Raspberry Pi w (przynajmniej) wersji 2 wyposażoną w kartę pamięci microSD. Źródłem światła Ambilight będzie 5V taśma ledowa oparta o WS2801. Do "owinięcia" 42 calowego telewizora potrzebowałem 3 metry takiej taśmy. Na 3 metrach taśmy z WS2801 znajduje się około 100 diod. Do zasilenia taśmy takiej długości wraz z Raspberry, wykorzystałem zasilacz od adaptera USB do dysków SATA/ATA, który maksymalnie jest w stanie zapewnić 35W. Podczas normalnego użytkowania, nie zarejestrowałem jednak większego zapotrzebowania na moc niż 13,5W. Zaletą tego zasilacza jest kompletny brak wentylatorów i co się z tym wiąże, cisza.
Software
Aby móc cieszyć się w pełni, potrzebujemy oprogramowanie które da nam możliwość odtwarzania zawartości multimedialnej z różnych źródeł oraz które oczywiście zapewni obsługę naszego oświetlenia Ambilight. Po niedługich poszukiwaniach stwierdziłem, że najlepiej nadawać się będzie do tego celu OSMC dla Raspberry Pi 2, wraz z oprogramowaniem obsługującym (m.in.) taśmę na WS2801 - Hyperion. Do łatwej konfiguracji oświetlenia Ambilight wykorzystałem wtyczkę do Kodi/OSMC - Hyperion Config Creator.
Montaż
W celu łatwiejszego montażu taśmy do odbiornika TV, wybrałem podklejaną taśmę ledową z WS2801. Klej na taśmie nie jest zbyt mocny, bo taśma zaczęła się odklejać, ale i tak ułatwia montaż. Zapewne nie odklejałaby się, gdybym montaż wykonał poprawnie, tzn. odcinkami na każdym brzegu telewizora - ja taśmy postanowiłem nie rozdzielać i położyłem ją w jednym kawałku owijając cały telewizor (to przez moje lenistwo). Taśma jest na tyle sztywna, że przy zawijaniu jej na narożnikach nie przylega do powierzchni obudowy, przez co musiałem posiłkować się dodatkowo klejem - mimo tego, wszystko działa poprawnie, a ja zaoszczędziłem pracy przy lutowaniu odcinków taśmy ze sobą ;)
Ważną informacją może okazać się początek montażu taśmy. Jeśli bezproblemowo będziemy chcieli skonfigurować oprogramowanie obsługujące nasz Ambilight dzięki wtyczce Hyperion Config Creator, trzeba pamiętać aby montaż taśmy rozpocząć od jednego z dolnych narożników telewizora i prowadzić ją najpierw krawędzią do góry, albo zacząć od środka dolnej krawędzi, prowadząc taśmę na lewo bądź prawo (oczywiste). Rozpatrując to, warto pod uwagę wziąć możliwość doprowadzenia zasilania do taśmy oraz podłączenia jej do portu GPIO w Raspberry Pi.
Jeżeli taśma już przymocowana, nadeszła pora aby ją podpiąć odpowiednio do zasilania oraz portu GPIO w Raspberry. Na szczęście, zarówno taśma jak i Raspberry są zasilane prądem o napięciu 5V, toteż nie będzie potrzeby martwić się o dodatkowe zasilenie samego Raspberry - do Maliny prąd doprowadzimy z zasilacza przeznaczonego do taśmy ledowej także poprzez port GPIO. Ja całość podpiąłem według tego schematu:
Do pinu 2 GPIO doprowadziłem zasilanie +5V, do pinu 6 podpiąłem masę. Podobnie do taśmy led doprowadzam +5V oraz GND i w ten sposób mam zasiloną taśmę oraz Raspberry z jednego zasilacza. CI taśmy podpinam do GPIO SCLK (Pin 23 GPIO), a DI na taśmie łączę z GPIO MOSI (Pin 19 GPIO). To wszystko.
Pobranie i konfiguracja oprogramowania
Zabawę z Ambilight musimy rozpocząć od pobrania obrazu z oprogramowaniem centrum multimedialnego OSMC dla Raspberry Pi 2 i wgrania go na katrę MicroSD - jak wgrać obraz ISO na kartę, opisałem kiedyś tutaj. Po wgraniu oprogramowania, wkładamy kartę SD do slotu w Raspberry i uruchamiamy. Rozpocznie się wstępna konfiguracja. Po podaniu nazwy hosta urządzenia (np. osmc), zostaniemy zapytani o język, strefę czasową, wybór skórki, itp.
Kiedy już OSMC jest uruchomione, a Raspberry jest podłączone do naszego domowego routera, patrzymy jaki adres IP otrzymało nasze centrum multimedialne. Najłatwiej ustalić to patrząc do System -> O Systemie, gdzie znajdziemy wypisany Adres IP, jaki otrzymało Raspberry. Z innego komputera z konsoli (linux), albo puttiego (windows), łączymy się przez ssh z OSMC:
ssh nazwa_użytkownika@adres_ip_raspberry
czyli w moim przypadku:
ssh osmc@10.10.10.101
podajemy hasło (domyślnie osmc) i jesteśmy zalogowani do konsoli OSMC. Tworzymy katalog hyperion w lokalizacji domowej i przechodzimy do niego:
mkdir hyperion && cd hyperion
i pobieramy skrypt instalacyjny hyperion:
wget -N https://raw.githubusercontent.com/tvdzwan/hyperion/master/bin/install_hyperion.sh
Następnie nadajemy skryptowi prawa do wykonywania:
sudo chmod +x install_hyperion.sh
pobieramy resztę zależności:
sudo apt-get update && sudo apt-get install libqtcore4 libqtgui4 libqt4-network libusb-1.0-0 libprotobuf9 ca-certificates
a następnie uruchamiamy skrypt instalacyjny:
sudo sh ./install_hyperion.sh
Trzeba się upewnić, że w System -> My OSMC -> Ustawienia Pi -> Hardware Support, Enable SPI support jest włączone.
Pobieramy wtyczkę konfiguratora Hyperion:
cd ~ && mkdir hyperion_conf && cd hyperion_conf && wget -N https://github.com/LightberryEu/plugin.program.hyperion.configurator/archive/master.zip
Mając już wtyczkę zapisaną na karcie SD Raspberry, w Centrum Multimedialnym przechodzimy do System -> Dodatki -> Zainstaluj z pliku zip, wybieramy lokalizację Folder domowy -> hyperion_conf -> master.zip. Będąc w dodatkach przechodzimy do Moje dodatki -> Programy -> Hyperion Config Creator - dajemy Otwórz. Konfigurator Hyperion rozpocznie pracę. Najpierw zapytani zostaniemy o ilość diód w poziomie, potem w pionie, a następnie początek taśmy (prawy, lewy dolny róg telewizora, lub środek dolnej krawędzi telewizora idąc na prawo, lewo). Zostanie utworzony plik konfiguracyjny hyperion.config.json w lokalizacji /opt/hyperion/config.
Uruchamiamy serwis hyperion:
sudo service hyperion start
Prawdopodobnie kolory nie będą się zgadzać z rzeczywistością - czaka nas żmudna praca do wykonania, a mianowicie dostosowanie ustawień w pliku konfiguracyjnym hyperiona. Z pomocą przychodzi nam tu kilka komend:
hyperion-remote --priority 50 --color red --duration 5000
wyświetli przez 5 sekund czerwone światło tła. Jeśli się zgadza, sprawdzamy kolejne kolory zastępując kolor czerwony (red) kolorem zielonym (green) i niebieskim (blue). W moim przypadku okazało się, że kolor zielony był zamieniony z niebieskim.
Aby naprawić powiązanie kolorów, modyfikujemy plik hyperion.config.json:
sudo nano /opt/hyperion/config/hyperion.config.json
szukamy sekcji device oraz linii zawierającej mniej więcej to: "colorOrder": "rgb", Ja musiałem zamienić zielony (g) z niebieskim (b), czyli linia u mnie wygląda teraz tak: "colorOrder": "rbg", Zapisujemy plik konfiguracyjny, restartujemy serwis hyperion i badamy poprawność konfiguracji:
sudo service hyperion restart
Teraz testując kolejno kolory red, green, blue komendą hyperion-remote powinno się nam wszystko zgadzać. Następnym (trudniejszym) krokiem jest ustawienie koloru bieli. Zerknijmy, jak wygląda kolor biały:
hyperion-remote --priority 50 --color white --duration 5000
Jeśli kolor biały okazał się różowym, to znaczy że mamy za dużą domieszkę czerwonego. Żeby pomniejszyć intensywność koloru czerwonego ponownie musimy wyedytować plik konfiguracyjny. Tym razem szukamy linijki w sekcji color, transform, red zawierającej mniej więcej to: "whitelevel": 1.2, Zmniejszamy ilość czerwonego operując parametrem whitelevel, np. w tym przypadku do 0.8 i zapisujemy plik konfiguracyjny. Restartujemy serwis hyperion i sprawdzamy, jak wyświetla się kolor biały. Analogicznie postępujemy, jeśli kolor biały ma inne odcienie, np. zielony (zmniejszamy whitelevel w sekcji green), czy fioletowy (zmniejszamy równocześnie niebieski i czerwony w odpowiednich sekcjach dla nich), itd.
Gotowy plik konfiguracyjny, działający u mnie, na 100 diod (telewizor 42 cale) udostępniam tutaj.
Efekt końcowy
Uzbrajając nasze centrum multimedialne w odbiornik DVB‑T na USB, instalując w nim wtyczki ze strumieniami serwisów video (np. YouTube), wskazując OSMC lokalizację z zasobami multimedialnymi w domowej sieci, można na telewizorze z tak wykonanym Ambilight odkrywać i przeżywać film, pobyt z wakacji, zabawy z kotami, na nowo - ja przypomniałem sobie, jak to było na koncercie Royal Blood ;)
Na prośbę publikuję kolejną próbkę: