Elektroda.pl
Elektroda.pl
X
Please add exception to AdBlock for elektroda.pl.
If you watch the ads, you support portal and users.

Ambilight oparty na Raspberry Pi i WS2801

ghost666 01 Apr 2016 17:07 20187 7
Wago
  • Ambilight oparty na Raspberry Pi i WS2801
    W ostatnim czasie pojawiło się wiele alternatyw do stworzenia oświetlenia typu ambilight do telewizora/monitora. Pod Windowsem korzystać możemy z Atmowin, a pod Linuxem z Bibilight. Pojawiła się jednak nowa alternatywa - Hyperion - która pracuje pod oboma tymi systemami. Poniższy artykuł opisuje, jak uruchomić tego rodzaju układ.

    Pod Windowsem i Linuxem oprogramowanie to ma swoje dedykowane pluginy, póki co na Raspberry Pi pluginy Kodi nie działają.

    Hyperion umożliwia przejmowanie z dowolnych źródeł sygnału HDMI, co oznacza, że można dopasować ambilight tak do oglądanych filmów, jak i gier czy nawet konsoli w Linuxie.

    Plugin AtmoLight wspiera Hyperiona, więc nie jest potrzebny żaden dodatkowy sprzęt do przechwytywania ścieżki wideo - jest ona wysyłana bezpośrednio do Hyperiona poprzez sieć.

    Konfiguracja Hyperiona na Raspberry Pi wymaga pewnych podstawowych umiejętności konfigurowania Linuxa, takich jak łączenie się po SSH, ale ponadto jest niezwykle prosta.

    Możliwości Hyperiona

    * Ambilight dla sygnału HDMI z dowolnego źródła
    * Współpraca z wieloma platformami
    * Kontrola LED także z poziomu Androiida
    * Szybki i precyzyjny pomiar kolorów diod
    * Duża ilość opcji konfiguracyjnych
    * Wspiera Arduino (Adalight)

    Wymagania

    Podstawowe:
    * Raspberry Pi B+ (inne modele także powinny działać bez problemu)

    Ambilight oparty na Raspberry Pi i WS2801


    * Diody LED - mogą to być najpopularniejsze WS2801, ale np. WS2812B są o wiele lepsze, gdyż są gęściej umieszczone na taśmie i mają lepsze parametry. Wsparcie dla diod WS2811/12 wymaga dodatkowych zabiegów, co opisano w rozdziale "dodatkowa konfiguracja".

    Ambilight oparty na Raspberry Pi i WS2801


    * Zasilacz 5 V o wydajności prądowej co najmniej 5 A. Do zasilania 218 diod autor projektu zastosował zasilacz 7 A.

    Opcjonalnie:

    * Szyny do zamocowania diod do telewizora
    * Taśma klejąca z rzepem do zamocowania diod do szyn.

    Przechwytywanie strumienia wideo

    Podczas konfiguracji przechwytywania strumienia wideo skorzystać można z tego poradnika: Link. Warto jednakże zmienić Video Grabber USB na lepszy, na przykład EasyCap Video USB Grabber Fushicai UT007, jest on wspierany przez wszystkie najnowsze wersje OpenElec.

    Uwaga

    Gdy włączone jest przechwytywanie wideo, ograniczeni jesteśmy technicznie do 50/60 Hz - aby to obejść, można odłączać zasilanie od konwertera HDMI->Composite, gdy nie jest odtwarzany sygnał wideo.

    Podłączenie

    Jakkolwiek w linkowanych tutorialach opisano, jak zrealizować podłączenia, to autor opisuje, jak zrealizował to w swoim przypadku.

    Dla samego Raspberry Pi z WS2801:

    LED data -> Raspberry Pi connectors
    Zasilanie LED -> zasilacz 5 V, tylko masa łączona jest z masą Raspberry Pi.
    Raspberry Pi -> sieć i zasilanie

    Raspberry Pi z WS2801/WS2812 i Arduino

    LED data -> Arduino
    Zasilanie LED -> Zasilacz 5 V, tylko masa łączona jest z masą Raspberry Pi
    Arduino -> kabel USB -> Raspberry Pi
    Raspberry Pi -> sieć i zasilanie

    Raspberry Pi z WS2801/WS2812 i Arduino z przechwytywaniem obrazu na RP

    LED data -> Arduino
    Zasilanie LED -> zasilacz 5 V, tylko masa łączona jest z masą Raspberry Pi.
    Arduino -> kabel USB -> Raspberry Pi
    Raspberry Pi -> połączenie USB do stosu przechwytywanego sygnału wideo
    Raspberry Pi -> sieć i zasilanie

    W żadnym z tych przypadków nie jest wymagane fizyczne podłączenie układu do komputera PC, gdyż wszystkie komendy do Ambilighta nadawane są poprzez sieć (TCP) i/lub przechwytywanie strumienia HDMI.

    Wstępna konfiguracja

    Korzystamy z OpenElec 4.2, jako że wersja 5.0 nie posiada żadnych dodatkowych funkcji, jakie przydałyby się w konfiguracji Hyperiona.

    Krok 1

    Jeśli chcemy korzystać z innych diod LED, jak WS2811/12 to musimy wykonać kroki podane niżej i przejść do kroku 2, w innym przypadku podłączamy naszą taśmę LED zgodnie z opisem podanym tutaj: http://techtalk.christian-moser.ch/wordpress/?p=427 (poza krokami 1-3, gdzie opisana jest instalacja Rasbmc, którą lepiej zrealizować korzystając z jednego z tych poradników: http://raspberry-at-home.com/hyperion-on-openelec-it-works lub https://github.com/tvdzwan/hyperion/wiki/Installation-on-RPi-with-OpenELEC

    Następnie tworzymy nową konfigurację Hyperiona, korzystając z opisu tutaj: https://github.com/tvdzwan/hyperion/wiki/configuration

    Krok 2

    Jeśli nie potrzebujemy możliwości przechwytywania strumienia wideo, to możemy opuścić ten krok i przejść dalej. Jeśli chcemy zaimplementować taką funkcję, to możemy skorzystać z opisu tutaj: http://techtalk.christian-moser.ch/wordpress/?p=562, pamiętając aby skorzystać z EasyCap Video USB Grabber Fushicai UT007 zamiast opisanego w poradniku urządzenia.

    Krok 3

    Opcja 1 - nazwa hosta (łatwiejsza)

    W AtmoLight 1.15 dodano możliwość wykorzystywania nazwy hosta Raspberry Pi, dzięki czemu można mieć dostęp do RPi w sieci lokalnej niezależnie od jego IP, które nie musi być statyczne. Na Windowsie wykorzystać do tego można oprogramowanie Apple Bonjour: http://support.apple.com/kb/DL999. Nazwa hosta mDNS podawana jest w formacie: <nazwa>.local

    Na przykład domyślna nazwa hosta OpenElec to Openelec.local, dzięki czemu gdy IP się zmieni to AtmoLigh automatycznie uzyska nowe po nazwie hosta.

    Opcja 2 - statyczny numer IP.

    Upewniamy się, że nadaliśmy RPi statystyczny numer IP, najprościej wykorzystać do tego interfejs XBMC OpenElec: http://wiki.openelec.tv/index.php/OpenELEC_Configuration_Addon#tab=Network

    Krok 4

    Gdy zainstalowaliśmy Hyperiona i przetestowaliśmy jego działanie, możemy przystąpić do instalacji pluginu AtmoLight dla Mediaportal. Instalujemy go poprzez Mediaportal Extension Manager (wersja 1.14.0.0 i wyżej wspiera Hyperiona ). Po instalacji możemy przystąpić do konfiguracji Mediaportalu i ustawieniu Atmolighta. Naciskamy AtmoLight i wybieramy Config.

    Ambilight oparty na Raspberry Pi i WS2801 Ambilight oparty na Raspberry Pi i WS2801 Ambilight oparty na Raspberry Pi i WS2801


    W Hyperionie w odpowiedniej zakładce zmieniamy adres IP lub nazwę hosta tak, aby odpowiadała naszemu Rasoberry Pi i zapisujemy. Teraz możemy odtworzyć jakiś film w Mediaportalu i światła powinny się włączyć.

    Dodatkowa konfiguracja

    Wymagana jest tylko, gdy korzystamy z LEDów innych niż WS2801. Domyślnie oprogramowanie wspiera jedynie układy WS2801 - jeśli chcemy podłączyć inne do naszego Raspberry Pi, musimy dokonać kilku zmian. Jeśli zamierzamy wykonać podobną operację z Arduino, potrzebujemy Arduino Uno R3 lub szybszego (chodzi o prędkość transmisji - musi być wyższa niż 115200 baud). Pełną listę diod, jakie wspierane są przez system znajdziemy tutaj: https://github.com/FastLED/FastLED#supported-led-chipsets

    Istnieje wiele poradników, jednakże na początek ten jest bardzo dobry (dla Arduino): http://www.tweaking4all.com/hardware/arduino/arduino-ws2812-led/

    Po podłączeniu diod wykonujemy kilka prostych kroków:

    1. Instalujemy Ardino IDE (http://arduino.cc/en/main/software)
    2. Pobieramy bibliotekę FastLed (https://github.com/FastLED/FastLED/archive/master.zip)
    3. Wypakowujemy FastSPI do biblioteki Arduino (w folderze My Documents/Arduino/Libraries)
    4. Importujemy do Arduino IDE odpowiedni skecz i zmieniamy w nim ustawienia - rodzaj LEDów, kanały, kolory etc (http://pastebin.com/zhQCRFhd)
    5. W niektórych przypadkach zwiększyć musimy wielkość bufora szeregowego w Arduino (opis tutaj: http://www.hobbytronics.co.uk/arduino-serial-buffer-size)
    6. Ładujemy sketch na Arduino i sprawdzamy, czy wyświetla wszystkie kolory podczas uruchamiania.
    7. Teraz musimy upewnić się, czy prędkość transmisji jest wystarczająca. Najpierw zwiększamy prędkość transmisji na Raspberry Pi, podłączamy go do monitora i włączamy SSH (http://www.htpcbeginner.com/ssh-into-raspberry-pi-for-remote-administration/)
    8. Nie ma się co przejmować wykorzystaniem XBMC/Kodi, nie będzie nam ono potrzebne do użytkowania programu.
    9. Logujemy się do RPi.
    10. Montujemy partycję:

    mount -o remount,rw /flash


    11. Otwieramy konfigurację ładowania systemu:

    nano -w /flash/config.txt


    12. Dodajemy w configu:

    #Increase UART speed
    init_uart_clock=14745600


    13. Zapisujemy naciskając F2 i resetujemy RPi.
    14. Teraz możemy zainstalować Hyperiona, korzystając z poradnika (http://raspberry-at-home.com/hyperion-on-openelec-it-works lub https://github.com/tvdzwan/hyperion/wiki/Installation-on-RPi-with-OpenELEC)
    15. Tworzymy bazową konfigurację Hyperiona, jakw kroku 4 tutaj: https://christianmoser.me/how-to-build-your-own-tv-ambilight-with-raspberry-pi-and-xbmc/ lub tutaj https://github.com/tvdzwan/hyperion/wiki/configuration.
    16. Teraz, jeśli podpięliśmy RPi prawidłowo musimy dokonać podobnych ustawień w pliku konfiguracyjnym Hyoperiona:

    \\openelec\Configfiles\hyperion.config.json
    lub:
    \\<Raspberry IP address>\Configfiles\hyperion.config.json


    Ambilight oparty na Raspberry Pi i WS2801


    W pliku hyperion.config.json zmieniamy następujące linijki:

    Code (Winbatch):
    "name"  : "MyPi",
    "type"  : "adalight",
    "output"  : "/dev/ttyACM0",
    "rate"  : 460800,
    "colorOrder" : "grb"


    /dev/ttyACM0 nie zawsze jest domyślne, możemy sprawdzić jaki port działa domyślnie w naszym przypadku korzystając z komendy lsubs na Raspberry Pi.

    17. Na tym etapie możemy wyłączyć XBMC.
    18. Podłączamy Arduino do 'maliny' i resetujemy Hyperiona.

    Gotowe!

    Źródło: Link

    Cool? Ranking DIY
    Do you have a problem with Arduino? Ask question. Visit our forum Arduino.
    About Author
    ghost666
    Translator, editor
    Offline 
    Fizyk z wykształcenia. Po zrobieniu doktoratu i dwóch latach pracy na uczelni, przeszedł do sektora prywatnego, gdzie zajmuje się projektowaniem urządzeń elektronicznych i programowaniem. Od 2003 roku na forum Elektroda.pl, od 2008 roku członek zespołu redakcyjnego.
    ghost666 wrote 11579 posts with rating 9788, helped 157 times. Live in city Warszawa. Been with us since 2003 year.
  • Wago
  • Wago
  • #3
    Ayala73
    Level 11  
    Witam
    Bardzo zainteresował mnie Twój temat i stąd mam do Ciebie prośbę. Nic a nic nie znam angielskiego a mam taśmę WS 2812B czy mógłbyś łopatologicznie i przede wszystkim w naszym języku powiedzieć co muszę zrobić aby ją uruchomić na Raspberry Pi3 B ? Z góry dzięki za pomoc
  • #4
    marko888
    Level 17  
    Ambilight oparty na Raspberry Pi i WS2801

    Czy może ktoś przełożyć ten schemat do taśmy led na 3-piny ?
  • #5
    Freddy
    Level 43  
    marko888 wrote:
    Czy może ktoś przełożyć ten schemat do taśmy led na 3-piny ?
    Możesz jaśniej, do jakiej taśmy?
  • #6
    marko888
    Level 17  
    Taśma led WS2812B, ale chyba bardziej odpowiednia będzie konstrukcja oparta na ARDUINO UNO R3 ATmega 328 do tej taśmy:

    "It is possible to run these 3 wire chips at the pwm pin of your Pi, but it is not recommended, so it could work, but you may run into issues. the problem is that the the 3 wire chips need the same amount of data like the 4 wire. To squash this information in 1 wire is very timing critical and the pi cpu can't handle it that good like a cheap arduino.
  • #7
    Freddy
    Level 43  
    ghost666 wrote:
    Wsparcie dla diod WS2811/12 wymaga dodatkowych zabiegów, co opisano w rozdziale "dodatkowa konfiguracja".
  • #8
    marus18
    Level 10  
    Witam
    Zainteresowałem się zrobieniem ambilight we własnym telewizorze. Ktoś mi powie czy warto, czy opóźnienie jest wystarczająco duże, żeby zniechęciło do oglądania? Chodzi mi o przechwytywanie obrazu przez USB grabber HDMI tak aby każde urządzenie wyświetlane na telewizorze szczególnie obraz z PS4, czy jest to możliwe do zrobienia bez widocznych opóźnień?