niedziela, 27 listopada 2016

"Ambilight" własnej roboty na Raspberry PI

Kodi


To rozwiązanie działa u mnie już od prawie roku, tylko jakoś nie mogłem się zebrać żeby je opisać i nagrać film z prezentacją działania.

Zacznijmy zatem od filmu, żeby wiadomo było o co chodzi w temacie:


Technologia Ambilight podobała mi się od dawna. Od dawna szukałem też  rozwiązań które pozwalałyby ten efekt osiągnąć  "domowymi" metodami. Na początku pojawiły się opisy urządzeń, ale działających wyłącznie dla filmów odtwarzanych z komputera, co nie było do końca satysfakcjonujące.
Jakiś czas temu natrafiłem w internecie na opis jak zrobić kompleksowe rozwiązanie, w którym oświetlenie działa dla każdego źródła wideo, podłączonego do telewizora za pośrednictwem przewodu HDMI.
Rozwiązanie oparte jest na platformie Raspberry PI i oprogramowaniu Hyperion.
Bardzo mi to odpowiadało, ponieważ miałem już Raspberry podłączone do telewizora i działające jako "centrum multimedialne", z aplikacją Kodi. Wystarczyło tylko podłączyć parę diód :D

Potrzebna do tego jest taśma LED RGB z chip'ami ws2801, dzięki którym każda dioda może być sterowana niezależnie, a co za tym idzie może świecić innym kolorem. 

Oświetlenie możemy zamontować w dowolnej konfiguracji, na jednym, dwóch, trzech, lub czterech bokach telewizora. Ja zdecydowałem się na opcję maksymalną :)

Jako że oświetlenie chciałem zamontować na 60'cio calowym telewizorze, potrzebowałem ponad 4 metry taśmy, musiałem zatem kupić całą 5-cio metrową rolkę. 

Po zakupie taśmy zabrałem się do naklejania jej na telewizor:







Naklejając taśmę, należy pamiętać, żeby naklejać ją przeciwnie do ruchu wskazówek zegara patrząc od tyłu telewizora. Zalecane jest aby zaczynać od prawego dolnego rogu (patrząc z tyłu), ja jednak zacząłem od lewego dolnego, ponieważ akurat tak pasowały mi podłączenia przewodów. Taka zmiana nie jest problemem, można to wszystko potem wykalibrować programowo.

Od taśmy odchodzą cztery przewody:
  1. VCC+
  2. CI
  3. DI
  4. GND
Wszystkie cztery musimy doprowadzić do Raspberry PI.
Problem jest jednak taki, że Raspberry PI nie ma odpowiedniej wydajności prądowej na wyjściach VCC+ i GND, zatem potrzebujemy dodatkowego źródła zasilania dla taśmy LED. Dlatego też do przewodów VCC+ i GND dolutowałem dodatkowe standardowe gniazdo zasilające, do którego podłączyłem zewnętrzny zasilacz DC 5V:




 Po odpowiednim przylutowaniu gniazda, można podłączyć przewody do złącza GPIO w Rasberry PI.
Schemat podłączenia wygąda następująco:



U mnie po podłączeniu wygląda to następująco:


W tym miejscu miałem sporo problemów. Podłączałem na podstawie opisu, który znalazłem w internecie. Okazało się że było tam napisane żeby podłączyć do pin'u SCL a nie do SCLK. Przez długi czas nie mogłem dojść dlaczego diody nie chcą się świecić :) W każdym razie, jeśli coś nie działa, upewnijcie się że jest dobrze podłączone do GPIO :)

I to jest praktycznie wszystko od strony sprzętowej co potrzebujemy, aby mieć działające oświetlenie dla wideo wyświetlanego z Kodi na Raspberry Pi. Pozostała kwestia oprogramowania.

Na moim Raspberry Pi zainstalowaną mam dystrybucję OSMC.
Aby na nim zainstalować Hyperiona, trzeba zalogować się po ssh, przejść na konto root'a poleceniem:

sudo bash

i wykonać następujące polecenia:

apt-get update

apt-get install libqtcore4 libqtgui4 libqt4-network libusb-1.0-0 libprotobuf9 ca-certificates

wget -N https://raw.github.com/tvdzwan/hyperion/master/bin/install_hyperion.sh

sh ./install_hyperion.sh

/etc/init.d/hyperion stop

Mamy już zainstalowanego hyperiona na naszym Raspberry PI.
Teraz trzeba przygotować plik konfiguracyjny.
Służy do tego aplikacja HyperCon, którą należy pobrać spod adresu:

https://sourceforge.net/projects/hyperion-project/files/hypercon/HyperCon.jar

Aplikacja napisana jest w Javie, więc do jej uruchomienia potrzebujemy JDK.

uruchamiamy ją poleceniem:

java -jar HyperCon.jar 

W aplikacji Hyperion wybieramy liczbę diód w poziomie, liczbę w pionie, oraz offset pierwszej diody. Generalnie po każdej zmianie w polach liczbowych odświeża nam się widok diod na rysunku telewizora i musimy pilnować żeby było to zgodne ze sposobem w jaki naklejaliśmy taśmę, pamiętając że  dioda numer zero to pierwsza  dioda przy złączce. U mnie wyszło 130 diod. 42 w poziomie i 23 w pionie:

Na zakładce Grabber, zaznaczamy Internal Frame Grabber":



Na zakładce "External" zaznaczamy "Kodi Checker"


Klikamy "Create Hyperion Configuration" i otrzymujemy plik "hyperion.config.json", który musimy przekopiować do katalogu /etc na Raspberry PI.

Należy jeszcze wystartować Hyperiona komendą:

/etc/init.d/hyperion start

i to wszystko... Filmy odtwarzane z Kodi powinny pięknie świecić :)

Przejdźmy teraz do wersji trochę bardziej rozbudowanej, pozwalającej na działanie oświetlenia dla każdego źródła wideo.

Do tego celu potrzebujemy dodatkowo:

konwertera HDMI2AV, splitera HDMI (rozdziela jedno źródło HDMI na dwa wyjścia)


oraz grabbera Video



Taki grabber można kupić za około 30 złotych, trzeba jednak zwrócić uwagę na chipset jaki posiada. Generalnie najłatwiej je wyszukać jako EasyCap Grabber, ale najlepiej żeby działał na chipsecie UTV007 (Fushicai), ponieważ taki działa na raspberry praktycznie "out of the box". Z innymi mogą być problemy.


Schemat połączenia w moim przypadku wygląda następująco:


Po podłączeniu w ten sposób należy jeszcze zmodyfikować konfigurację hyperiona. Można do zrobić ponownie za pomocą programu HyperCon, ale szybciej jest odnaleźć we wcześniej wygenerowanym pliku sekcję:

"grabber-v4l2" :
    {
        "device" : "/dev/video0",
        "input" : 0,
        "standard" : "PAL",
        "width" : 640,
        "height" : 480,
        "frameDecimation" : 2,
        "sizeDecimation" : 8,
        "priority" : 1000,
        "mode" : "2D",
        "cropLeft" : 36,
        "cropRight" : 37,
        "cropTop" : 30,
        "cropBottom" : 30,
        "redSignalThreshold" : 0.0,
        "greenSignalThreshold" : 0.0,
        "blueSignalThreshold" : 0.0
    },
i ją odkomentować,
następnie znaleźć w pliku sekcję:

"framegrabber" : 
{
"width" : 64,
"height" : 64,
"frequency_Hz" : 10.0
}

i ją zakomentować.

Pozostaje jeszcze restart hyperiona (a najlepiej całego Raspberry PI) i oświetlenie powinno działać dla wszystkich źródeł wideo.

Generalnie w telegraficznym skrócie to już wszystko, aczkolwiek temat jest dużo bardziej rozległy. Jest mnóstwo opcji konfiguracyjnych w samym HyperCon'ie, mamy bardzo szerokie możliwości kalibrowania oświetlenia, dostępne są opcje wykrywania czarnych ramek wokół obrazu i wiele, wiele innych. Warto również pobrać aplikację Hyperion na telefon, dzięki której możemy sterować oświetleniem (przykład pokazałem na filmie). Jest wiele miejsc w których można utknąć, natrafić na różnego rodzaju problemy, ale w sieci jest mnóstwo przykładów i poradników jak z takimi problemami sobie radzić.

Światełka działają u mnie już ponad rok i są praktycznie bezawaryjne. Sporadycznie zdarza się jakieś "zawieszenie" samego hyperiona, ale wtedy wystarcza komenda "/etc/init.d/hyperion restart" i wszystko wraca do normy.

Czy warto? Według mnie zdecydowanie tak. Satysfakcja ze zrobienia tego samemu jest na prawdę duża a i otrzymany efekt jest rewelacyjny.

Może na koniec spróbuję podsumować koszty:

W moim przypadku było to:
5m taśmy LED - kupiłem na znanym chińskim portalu :) - około 180 zł. Można kupić w Polsce, ale koszt 1 metra to około 60 zł, czyli 300 zł za 5m. Wg mnie warto poczekać na przesyłkę z Chin :)

Zasilacz 5V akurat miałem w domu, jeśli ktoś nie ma, to pewnie jakieś 20 zł.

Ja Raspberry PI już miałem działające... Jeśli ktoś nie ma, to pewnie za komplet około 200 zł (Rasbperry + obudowa + karta pamięci + zasilacz micro USB)

Do wersji "podstawowej", czyli odtwarzanie tylko z Kodi to wystarczy.

jeśli chcemy mieć światełka ze wszystkich źródeł video to dodatkowo:

30 zł za grabber
32 zł za splitter HDMI (w Chinach, w Polsce pewnie drożej)
31 zł za konwerter HDMI2AV - również w Chinach

czyli około 100 zł dodatkowo.

Brak komentarzy:

Prześlij komentarz