niedziela, 27 listopada 2016

"Ambilight" własnej roboty na Raspberry PI

Opisaną w poniższym wpisie taśmę LED możesz zakupić na aliexpres. Poniższy link to link afiliacyjny. Skorzystanie z niego Ciebie nic dodatkowo nie kosztuje a ja otrzymam niewielką prowizję która wspomoże rozwój tego bloga. Dzięki!


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 libprotobuf10 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.

sobota, 26 listopada 2016

Lustro do makijażu



Niedawno żona zgłosiła zapotrzebowanie na toaletkę z lustrem do makijażu... Zaczęliśmy rozglądać się jakie rozwiązania są w ogóle dostępne, ale po tym jak zobaczyliśmy ceny samych luster, trochę miny nam zrzedły :)

Koszt samego lustra z odpowiednim oświetleniem w jakimś sensownym rozmiarze to minimum 600 - 700 zł.
Zacząłem trochę się nad tym zastanawiać i doszedłem do wniosku że zrobienie takiego lustra własnoręcznie nie powinno być jakoś szczególnie skomplikowane. Generalnie najtrudniejsze wydawało się zdobycie / zrobienie ramy w jakiejś akceptowalnej cenie. Po przeanalizowaniu różnych opcji doszedłem do wniosku że najprostsze i zarazem najtańsze będzie zrobienie całości z płyty MDF.

Zdecydowaliśmy, że rozmiar samej tafli lustra będzie miał 60x40 cm.

Dodatkowo wokół lustra będzie obramowanie w którym umieszczone zostaną żarówki. Założyłem że ramka będzie miała 10 cm z każdej strony.

Potrzebowałem zatem płyty MDF o wymiarach 80x60 cm.
Oprócz samej płyty na której umieszczone zostanie lustro potrzebowałem fragmentów płyty z których zrobiona zostanie tylna rama lustra, aby zakryć oprawki żarówek oraz przewody elektryczne.

Z tego co udało mi się ustalić, najłatwiej (i chyba nawet najtaniej) iść do marketu budowlanego, gdzie od razu dotną nam płyty na wymiar z dość dużą dokładnością (ja podawałem wymiary z dokładnością do 1 mm i praktycznie nic nie musiałem już w domu korygować).

Ja zrobiłem to akurat w Leroy Merlin, ale pewnie inne markety też mają taką usługę. W Leroy mieli akurat płytę o grubości 18mm która wydawała mi się rozsądnym rozwiązaniem.

Po docięciu płyty wyglądały tak:


Ustaliłem z żoną, że optymalne będzie umieszczenie w lustrze 10 żarówek - po 3 na dłuższych bokach i po dwie na krótszych. Nie chciałem żeby otwory i żarówki były zbyt wielkie, zdecydowałem się zatem na oprawki E14. Średnica oprawek które kupiłem to 28 mm. Rozmierzyłem dokładnie miejsca na oprawki i  łopatkowym wiertłem do drewna wywierciłem otwory o takiej średnicy:


Po wywierceniu otworów przystąpiłem do klejenia tylnej ramy. Jako że płyty były dokładnie przycięte, wystarczyło wszystko "poskładać do kupy" :)


Tak poskładaną ramę zostawiłem na 24h do wyschnięcia. Następnego dnia dodatkowo wzmocniłem konstrukcję blaszanymi kątownikami i wkrętami:


Jako że toaletka będzie stała w sypialni gdzie wszystkie meble mamy w kolorze wenge, w takim kolorze będzie również lustro. Kupiłem odpowiednią okleinę i razem z żoną przystąpiliśmy do dzieła. Tutaj zdecydowanie polecam kogoś do pomocy, ponieważ jednej osobie ciężko jest równo nałożyć okleinę. Efekt wyglądał następująco:


Okleina potrzebuje około 24h aby klej "złapał". Następnego dnia przystąpiłem do montażu oprawek.
Niestety wchodziły w otwory zbyt luźno. Okleiłem je po obwodzie czarną taśmą izolacyjną, i wtedy mogłem je montować "na wcisk", bez konieczności klejenia.
Po montażu całość wyglądała następująco:


Po zamontowaniu oprawek zabrałem się za okablowanie. Tutaj jedna istotna uwaga. Pamiętać należy, żeby żarówki montować równolegle, a nie szeregowo. Wtedy ewentualne przepalenie jednej żarówki nie spowoduje że całe lustro przestanie świecić. Po montażu przewodów całość wyglądała tak:


I teraz kwestia samego lustra. Tutaj miałem sporo problemów. Znaleźliśmy w Leroy'u gładkie lustro 60x40 z frezowanymi krawędziami za około 50 zł, doszliśmy do wniosku że to dobra cena, więc je kupiliśmy. Dopiero w domu zorientowałem się że to lustro ma z tyłu przyklejone uchwyty do powieszenia go na ścianie, których nijak w prosty sposób nie dało się usunąć. Znaleźliśmy różne metody w internecie, próbowaliśmy nawet żyłką wędkarską, ale miałem zbyt cienką i co chwilę się przerywała :). W końcu stanęło na tym że najlepiej rozgrzać trochę te uchwyty suszarką i próbować dość mocno podcinać klej pomiędzy wieszakiem a lustrem starą kartą płatniczą, albo jakąś inną plastikową :) Trzeba jednak robić to bardzo czujnie, ponieważ łatwo zarysować tylną powłokę lustra. Ja niestety zrobiłem jedną rysę. Szczęście w nieszczęściu, że rysa jest bardzo mała i już mamy pomysły na jej zamaskowanie :) Zastanawiam się czy nie lepszym rozwiązaniem byłoby znalezienie lokalnego szklarza i zamówienie takiej tafli lustra na wymiar... Może następnym razem :)

Gdy już uporaliśmy się z uchwytami, przystąpiłem do klejenia lustra. Na początku nakleiłem lustro bezpośrednio na okleinę. Okazało się jednak że klej który miałem nie trzymał się dobrze i pomimo że czekałem 2 dni nie zasechł odpowiednio i tafla lustra się przesuwała. Odkleiłem ją, wyciąłem prostokątny fragment okleiny w miejscu na lustro tak, żeby lustro przylegało bezpośrednio do płyty MDF i nakleiłem lustro ponownie. Teraz klej trzyma zdecydowanie lepiej. Myślę że to również może zależeć od rodzaju zastosowanego kleju.

Wahaliśmy się czy postawić lustro na biurku/toaletce, czy też powiesić na ścianie. Po przymiarkach wygrała druga opcja. Przykręciłem zatem haczyki, podłączyłem przewód z przełącznikiem:


Pozostała jeszcze kwestia żarówek. Podobno do tego typu luster najlepsze jest światło o barwie naturalnej. Wybór takich żarówek jest zdecydowanie mniejszy, ale da się je znaleźć. Są to żarówki o barwie od 4000k do 4500k. Ja zdecydowałem się na "kulki" LED'owe o mocy 4W każda.

Po powieszeniu lustra i wkręceniu żarówek efekt końcowy jest taki:





Na koniec czas na podsumowanie kosztów lustra:


  • Płyta MDF razem z wycięciem 26 zł
  • kątowniki metalowe do wzmocnienia ramy - 9 zł
  • okleina - 30 zł z przesyłką
  • oprawki E14 10 sztuk z przesyłką - 22 zł
  • żarówki LED E14 4W 4000k z przesyłką - 70 zł za 12 sztuk (2 zapasowe)
  • Lustro 50 zł
  • Przewód z przełącznikiem 15 zł
  • moja praca - bezcenna :D
Razem daje to  222 zł. 

Nie liczę kosztów przewodu, kleju, haczyków, które miałem w warsztacie, ale one nie mają jakiegoś większego wpływu na koszt całościowy.

Reasumując, koszt całości wyszedł całkiem znośnie, efekt - pewnie kwestia gustu, żonie się podoba, a wiadomo że jak żona zadowolona to i mąż ma w życiu łatwiej :)

Co bym poprawił... Być może zwęziłbym trochę boczną ramę. Teraz ma 10 cm, myślę że zupełnie wystarczyłoby 5-6 cm, Boczną ramę można zrobić z cieńszego MDF, 10mm chyba by wystarczyło. Zmniejszyłoby trochę wagę lustra, bo cała konstrukcja jest dość ciężka. Z drugiej strony klej pewnie trzymałby słabiej, więc nie wiem czy warto. W każdym razie ogólnie z efektu jestem zadowolony :).