Elektroda.pl
Elektroda.pl
X

Wyszukiwarki naszych partnerów

Wyszukaj w ofercie 200 tys. produktów TME
Kategoria: Kamery IP / Alarmy / Automatyka Bram
Montersi
Proszę, dodaj wyjątek elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

Symulator kominka na Raspberry Pi

ghost666 08 Sty 2017 19:24 10347 8
  • Symulator kominka na Raspberry Pi
    Autor poniższego projektu żyje w Teksasie - przez znaczą większość roku temperatura powietrza przekracza tam 35°C, więc klasyczny kominek w domu zupełnie by się nie sprawdzał. Mimo tego autor chciał mieć w swoim domu coś tego rodzaju, co produkuje miły efekt wizualny - kominek sprawia ładne wrażenie i zawsze dobrze wygląda.

    Pewnego dnia, siedząc w salonie, autor spostrzegł, że jego kominek jest w zasadzie tej samej wielkości co stary telewizor. Po kilku szybkich pomiarach okazało się, że istotnie tak jest i można połączyć telewizor z kominkiem, aby stworzyć wirtualny kominek. Do tego celu autor wykorzystał (oprócz telewizora) Raspberry Pi, które generować ma obraz i dźwięk kominka. Poniżej znajdziemy opis w jaki sposób skonfigurować Raspberry Pi do pracy jaki wirtualny kominek. Opis umieszczenia telewizora w kominku został pominięty - zależny będzie od kształtu kominka i użytego telewizora, więc każdy musi dostosować te elementy we własnym zakresie.

    Konfigurację systemu rozpoczynamy od gołej instalacji Raspbiana Jessie w pełnej wersji na Raspberry Pi (a najlepiej Raspberry Pi 2; RPi Zero nie nadaje się do tego zadania - ma za małą wydajność do płynnego odtwarzanai wideo). Pierwszą rzeczą jaką musimy zrobić, po instalacji jest rozszerzenie systemu plików. W tym celu w konsoli wpisujemy:

    Kod: bash
    Zaloguj się, aby zobaczyć kod


    W tym menu wybierz “Expand Filesystem”. Następnie musimy wymusić, aby system ładował się do konsoli po resecie, a nie na pulpit. Aby było to możliwe w raspi-config, w którym już jesteśmy w menu “Boot Options” wybieramy opcję “B2 Console Autologin”. Dodatkowo można w tym menu wyłączyć overscan, jeśli nasz telewizor tego wymaga. W menu “Advanced Options” wybieramy “Overscan” i wyłączamy tą opcję.

    Dalej, przydatne może być zwiększenie dostępnej pamięci wideo, jako że komputer będzie głównie odtwarzał film. Ponownie w “Advanced Options” wybieramy menu “Memory Split” i ustawiamy np. na 128. Możemy teraz nacisnąć Finish, potwierdzić to i komputer zresetuje się z nowymi ustawieniami.

    Problemem jest także uruchamianie interfejsu HDMI podczas załączania komputera. Włączy się on jedynie gdy telewizor będzie załączony. W naszym projekcie jedynym zadaniem 'Maliny' jest odtwarzanie filmu w pętli, więc może ładować się gdy telewizor jest wyłączony, zatem konieczne jest wymuszenie startu interfejsu HDMI niezależnie od wszystkiego. Realizacja tego może trochę zależeć od posiadanego telewizora.

    Ale po kolei - najpierw musimy otworzyć w edytorze plik config.txt:

    Kod: bash
    Zaloguj się, aby zobaczyć kod


    W pliku tym musimy wymusić podłączanie na gorąco HDMI, tak aby działało ono nawet gdy telewizor jest wyłączony. Odkomentowujemy (kasujemy kratkę) linię #hdmi_force_hotplug=1, aby w pliku wyglądała tak:

    Kod: bash
    Zaloguj się, aby zobaczyć kod


    Następnie, aby odtwarzacz wideo mógł poprawnie używać HDMI przy poprawnej rozdzielczości musimy zapisać ustawienia telewizora dot. rozdzielczości etc. W ten sposób będą one poprawne, nawet gdy telewizor nie będzie widoczny w systemie. Wartości te podajemy jako zmienne hdmi_group oraz hdmi_mode. W dokumentacji tego pliku konfiguracyjnego znajdziemy dokładne informacje.

    Autor projektu używa 1080p przy 60 Hz, typowych wartości dla większości telewizorów. Jego parametry wyglądają następująco:

    Kod: bash
    Zaloguj się, aby zobaczyć kod


    Tera można zapisać plik i wyjść z edytora. Kolejnym krokiem jest skonfigurowanie odtwarzacza filmów. Musimy najpierw stworzyć folder dla naszych skryptów:

    Kod: bash
    Zaloguj się, aby zobaczyć kod


    Musimy odtwarzać film w pętli. Sam film pobieramy np. z YouTube (ale można z innego miejsca. Autorowi spodobał się ten film:



    Aby pobrać go ze strony korzystamy z youtube-dl. Instalujemy ten program komendą:

    Kod: bash
    Zaloguj się, aby zobaczyć kod


    Teraz aby pobrać film wpisujemy:

    Kod: bash
    Zaloguj się, aby zobaczyć kod


    Uwaga - ten konkretny film ma około 3 gb, więc trzeba mieć dostateczną ilość miejsca w systemie. Pobranie pliku zajmie chwilę. Po jego zakończeniu możemy zmienić nazwę pliku, na coś łatwiejszego do użycia. Wpisujemy:

    Kod: bash
    Zaloguj się, aby zobaczyć kod


    I możemy zobaczyć, że plik nazwany został “Burning Fireplace with Crackling Fire Sounds (Full HD)-0fYL_qiDYf0.mp4”. Zmieniamy nazwę np. na "fireplace.mp4". Wpisujemy (pamiętając o dodaniu \ przed spacjami w linii komend):

    Kod: bash
    Zaloguj się, aby zobaczyć kod


    Teraz możemy stworzyć skrypt zapętlający nasz filmik:

    Kod: bash
    Zaloguj się, aby zobaczyć kod


    W pustym pliku wpisujemy:

    Kod: bash
    Zaloguj się, aby zobaczyć kod


    Zapisujemy i wychodzimy. Skrypt sprawi, że plik będzie odtwarzał się w pętli, a audio odtwarzane będzie także przez HDMI.

    Musimy jeszcze nadać naszemu skryptowi prawo do uruchamiania się:

    Kod: bash
    Zaloguj się, aby zobaczyć kod


    I możemy przetestować jego działanie.

    Kod: bash
    Zaloguj się, aby zobaczyć kod


    Film powinien rozpocząć się odtwarzać na TV w pętli. Możemy ją przerwać naciskając ctrl+c. Teraz musimy jeszcze sprawić, aby uruchamiał się on automatycznie po uruchomieniu komputera. W tym celu skorzystam z crontaba:

    Kod: bash
    Zaloguj się, aby zobaczyć kod


    Crontab zapyta nas o preferowany edytor tekstowy - autor projektu używa nano, ale każdy się nada. Po ustaleniu edyora możey dopisać do otwartego pliku następujący tekst na końcu:

    Kod: bash
    Zaloguj się, aby zobaczyć kod


    Zapisujemy i wychodzimy. Teraz po restarcie systemu uruchomi się automatycznie nasz skrypt. Możemy więc zresetować komputer:

    Kod: bash
    Zaloguj się, aby zobaczyć kod


    Po ponownym uruchomieniu powinniśmy zobaczyć na ekranie telewizora (o ile jest włączony) obraz i usłyszeć dźwięk kominka. Jeśli podczas ładowania systemu TV jest wyłączony, to po jego uruchomieniu obraz powinien pojawić się automatycznie w dobrych już ustawieniach.

    W ten oto sposób nasz kominek - Pireplace - jest gotowy do działania.

    Źródło: https://oshlab.com/raspberry-pi-fireplace-video-looper/

    Fajne!
  • #3 09 Sty 2017 01:09
    davidosos
    Poziom 9  

    Chyba autor coś pomylił, bo od połowy postu jest wszędzie tylko i wyłącznie komenda "sudo nano /boot/config.txt" ;)

    EDIT. W starym wyglądzie problem nie występuje

  • #4 09 Sty 2017 12:58
    deus.ex.machina
    Poziom 31  

    Szczerze mówiąc spodziewałem się jakiejś proceduralnej symulacji ognia a nie odtwarzacza video.

  • #5 10 Sty 2017 13:34
    JanuszArtur
    Poziom 14  

    Napisanie symulacji ognia jest dosyć kłopotliwe. Kiedyś pisałem taki 'kominek' na Nokię N8. Okazało się, że leciwy telefon nie obsługuje aż tak zaawansowanego flasha (choć dzisiaj nawet najnowszy ma z flash kłopoty), więc dałem sobie spokój. Jednak efekt ognia okazał się najlepszy spośród mi znanych :). Choć go nigdy nie zbyłem udostępniam go tutaj w celach edukacyjnych.
    Dorzucam dwie paczki - podgląd oraz plik źródłowy z zaznaczonymi parametrami do zabaw (za 1,5 punktu).
    Szczerze polecam SwishMax, bo producent padł i udostępnia za free generator kodu odblokowania. Oprogramowanie można zassać z polskiej strony forum swishmax a generator nadal (choć nie wiem jak długo) z www.swishzone.com..
    Miłej zabawy!!!!

  • #6 10 Sty 2017 13:57
    Freddy
    Poziom 43  

    Echhhh ... kiedy będzie symulator RPi na Raspberry Pi ... :D
    Szczerze ... to tak - najpierw był modny (i jest dalej w niektórych krajach) Arduino, teraz RPi (znacznie lepszy zresztą).
    Czyżby ludzie bali się coś samemu zaprojektować?

  • #7 10 Sty 2017 18:24
    kowal011
    Poziom 14  

    Mógłby chociaż zamontować matrycę w tych cegłach a nie stawiać cały odbiornik przed...
    Freddy... nie kracz :D

  • #8 10 Sty 2017 19:29
    deus.ex.machina
    Poziom 31  

    Nikt nie mówi ze to łatwe i właśnie dlatego ucieszyłem się mając nadzieje ze ktoś użył RPi by to zrobić.

    http://webgl-fire.appspot.com/html/fire.html
    https://www.youtube.com/watch?v=jKRHmQmduDI

    Freddy napisał:
    Czyżby ludzie bali się coś samemu zaprojektować?

    Problemem nie jest zaprojektowanie ale realizacja projektu - problem z dostępnością specyfikacji (NDA i do tego konieczność wykupienia np licencji) również nie pomaga... Malo kto może sobie w domu złożyć projekt z PCB 4 czy 6 warstw i układami w obudowach np BGA672.

  • #9 11 Sty 2017 12:00
    JanuszArtur
    Poziom 14  

    Ładne ale 140kb to troszkę sporo jak na tak niewielka animację. Szkoda że uwalili flasha - 691 bajtów animacja zabiera...

Szybka odpowiedź lub zadaj pytanie
Dziękuję Ci. Ta wiadomość oczekuje na moderatora.
 Szukaj w ofercie
Wyszukaj w ofercie 200 tys. produktów TME