Elektroda.pl
Elektroda.pl
X
Proszę, dodaj wyjątek www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

LCD4Linux na E2 - wlasny rodzaj wyswietlacza

oloam 31 Gru 2018 20:14 2910 16
  • LCD4Linux na E2 - wlasny rodzaj wyswietlacza

    Witam

    Ostatnio kupilem nowy odbiornik satelitarny oparty na Enigma2. O ile co do dzialania odbiornika nie mam zarzutu (pewnie DDR3 1GB RAM robi swoje), to brak wyswietlacza juz mnie irytuje. Kupujac odbiornik wiedzialem, ze nie jest wyposazony w wyswietlacz, jednak nie myslalem, ze bedzie mi go tak brakowalo... W szegolnosci nie do zaakceptowania byl brak zegarka, gdzie na starym odbiorniku byl to jedyny wyswietlacz (w sypialni), ktory pokazywal czas 24h na dobe.

    Na poczatku myslalem zeby zrobic prosty zegarek na mikrokontrolerze na jakims lcd alfanumerycznym. Na panelu przednim odbiornika znajduje sie sie wystarczajacco duze 'okienko' aby umiescic wyswietlacz wewnatrz odbiornika. Zaczalem szukac w internecie czy ktos wczesniej robil podobne zadanie. Pojawilo sie kilka linkow, ktore zawieraly projekty wykorzystujace LCD4Linux. Po przyjrzeniu sie tej wtyczce stwierdzilem, ze ma bardzo duze mozliwosci konfiguracyjne co do zawartosci wyswietlanej na LCD i ze obsluguje wyswietlacze graficzne. Bylo jedno 'ale', wyswietlacze obslugiwanie przez ta wtyczke to wyswietlacze dedykowane, po czesci juz niedostepne, po czesci nieodpowiadajace moim zalozeniom. Zostalo tylko jedno - zmusic wtyczke do dzialania z wlasnym wyswietlaczem.

    Na wstepie powiem, ze powstal dzialajacy prototyp (inny wyswietlacz, inny mikrokontroler sterujacy)
    W oryginale kontroler bedzie oparty na STM32f042 w wersji TSSOP i wyswietlacz (na ktory wciaz czaekam) ips 240x240( na sterowniku st7789) zamowiony na aliexpress:
    LCD4Linux na E2 - wlasny rodzaj wyswietlacza
    Prototyp powstal na lpcxpresso i wyswietlaczu 128x160 (st7735):
    LCD4Linux na E2 - wlasny rodzaj wyswietlacza


    Sprawdzajac dzialanie wtyczki zauwazylem, ze jezeli w ustawieniach wybierzmy LCD jako custom size, wtyczka zapisuje w katalogu tmp grafike w formacie .png z zawartoscia tego co chcemy aby znalazlo sie na wyswietlaczu i w rozidzielczosci taka jaka ustawilismy w konfiguracji - bingo !!!, teraz wystarczy wyslac grafika do uc i wyswietlic ja na LCD.





    Po stronie uc prosty program w ktorym znajduje sie obsluga wyswietlacza (inicjalizacja), oraz wlaczony usb device w trybie bulk. Mikrokontroler odbiera paczki 4KB (uint16_t x 2048). Kazda paczka zawiera na poczatku 'rozkaz' mowiacy mikrokontrolerowi co ma zrobic z danymi w paczce. Tak oto narazie sa trzy rodzaje rozkaow
    - inicjujacy ramke wyswietlacza: uc ustawia okno wyswietlania i zaczyna wysylac dane z odebranego pakietu do wyswietlacz
    - drugi rozkaz mowi ze wszystkie dane z odebranego pakietu maja isc bezposrednio na wyswietlacz
    - trzeci rozkaz informuje ze jest to ostatni pakiet danych. W drugim slowie pakietu wartosc wskazuje ilosc danych , ktore maja zostac wyslane do wyswietlacza.
    Jak widac bardzo proste...

    Po stronie wtyczki sprawa jest dla mnie bardziej skompilkowana, gdyz to bylo moje pierwsze starcie z python.
    We wtyczce plugin.py w miejscu, w ktoym nastepuje zapis do .png dodalem wywolanie wlasnego skryptu:

    Kod: python
    Zaloguj się, aby zobaczyć kod

    Jak widac, wtyczka najpierw konwertuje .png do RAW RGB.

    Jako, ze w prototypie zastosowalem 'zwykly' wyswietlacz tft a odbiornik satelitarny znajduje sie na tv podwieszonym prawie pod sufitem - wyswietlacz musi znajdowac sie pod pewnym katem , zeby wyraznie widac wyswietlany obraz. Poradzilem sobie z tym drukujac obudowe tego wyswietlacza:
    LCD4Linux na E2 - wlasny rodzaj wyswietlacza

    Jedyny problem jaki zostal to backlight wyswietlacza. Co prawda wtyczka generuje emulowane przyciemnienie juz w grafice .png, to fizycznie wyswietlacz nie moze byc w nocy na 100% gdyz swieci za mocno (podswietlenie przebija przez kolor czarny). Jezeli na wyswietlaczu docelowym bedzie taki efekt, to dodam jeszcze fizyczne sterowanie podswietleniem.

    Prawgopodobnie i tak zrobie wiekszy wyswietlacz 3.5'' (moze wiekszy), ktory bedzie znajdowal sie na gornej krawedzi tv, a sam odbiornik satelitarny schowam za tv.

    Kilka zdjec (nie najlepszej jakosci ale robione z reki przy niewlasciwym swietle. Nie moglem uzyc flash poniewaz matryca odbija swiatlo i nic nie bylo widac). Wyswietlacz ustawiony na picon kanalu + zegarek. Zdjecie tytulowe to odbiornik w trybie standby (tylko przyciemniony zegarek)
    LCD4Linux na E2 - wlasny rodzaj wyswietlacza
    LCD4Linux na E2 - wlasny rodzaj wyswietlacza
    LCD4Linux na E2 - wlasny rodzaj wyswietlacza


    Fajne! Ranking DIY
    Potrafisz napisać podobny artykuł? Wyślij do mnie a otrzymasz pendrive 32GB.
  • #2 31 Gru 2018 22:15
    Janusz_kk
    Poziom 17  

    1.Czyli tłumacząc na nasze, kupiłeś odbiornik satelitarny do odbioru kanałów na tv i on nie ma wyświetlacza?
    2. włamałeś się do odbiornika aby mu pogmerać w scrypcie pytona aby móc podłączyć wyświetlacz?

  • #3 31 Gru 2018 23:15
    oloam
    Poziom 20  

    Janusz_kk napisał:
    1.Czyli tłumacząc na nasze, kupiłeś odbiornik satelitarny do odbioru kanałów na tv i on nie ma wyświetlacza?

    Dokkladnie
    Janusz_kk napisał:
    2. włamałeś się do odbiornika aby mu pogmerać w scrypcie pytona aby móc podłączyć wyświetlacz?

    Nie wlamalem. Enigma2 to system oparty na linuksie. Odbiornik ten posiada specjalnie zaprojektowany mikrokontroler pod katem odbioru tv satelitarnej (sprzetowe dekodery strumieni video i audio). Jest on na tyle wydajny, ze udzwignie dystrybucje linuksa (rowniez androida). Enigma2 to chyba najbardziej popularna dystrybucja w swiecie odbiornikow satelitarnych. Pluginy to, jak sama nazwa wskazuje rozszezenia, pozwalajace na rozbudowe podstawowych funkcji systemu. Analogicznie jak w PC masz goly windows, to programy wykonywalne potrafia dodawac funkcjonalnosc i mozliwosc zrobienie czegos, czego na golym windowsie nie zrobisz. Do odbiornika nie trzeba sie wlamywac. Dostep do plikow mozesz miec przez FTP a linie komend przez TELNET.
    LCD4Linux dla E2 potrafi wyswietlac na zewnetrznym wyswietlaczu (dzialajacym niezaleznie od wyswietlanego obrazu na tv) prawie wszystko co zwiazane z :
    - odbiornikiem: np. zegar, poziom sygnalu sat, ikony danego kanalu, prace dysku twardego, a nawet transmisje strumienia mjpeg
    - poza odbiornikiem: np. wiadomosci o pogodzie (w formie graficznej), obsluga email i jeszcze kilka innych rzeczy.
    Problem polega na tym, ze wtyczka obsluguje tylko wbudowane wyswietlacze dla jednego, moze dwoch konkretnych odbiornikow oraz kilka rodzajow wyswietlaczy (wlasciwie ramek foto) opartych na ax206 (juz od dlugiego czasu nie produkuja tych ramek) i kilka ramek foto samsunga. Jak widac nie ma zbytnio pola do popisu....
    Nawiasem mowiac sam projekt LCD4Linux jest bardziej popularny na urzadzeniach typu router czy maly serwer celem biezacego monitorowania parametrow tych urzadzen.

    Moj projekt opisuje mozliwosc podlaczenia DOWOLNEGO wyswietlacza jaki sobie wymyslimy (i potrafimy go wysterowac) do kazdego odbiornika wyposazonego w E2 (lub obslugujacego ta wtyczke)

  • #4 31 Gru 2018 23:20
    Janusz_kk
    Poziom 17  

    Oki, dzięki za wyjaśnienia, nie zajmuję się sprzętem satelitarnym więc nie wiedziałem, mam typowy odbiornik który ma zwykły wyświetlacz
    7 segmentowy, który jak widzę po zdjęciach wyświetla to samo co Twój czyli czas lub kanał :)
    Ale mam pytanie dlaczego używasz niezależnego odbiornika?
    Sam kiedyś używałem fergusona ale to więcej problemów niż zysków było.

  • #5 31 Gru 2018 23:35
    oloam
    Poziom 20  

    Janusz_kk napisał:
    mam typowy odbiornik który ma zwykły wyświetlacz
    7 segmentowy, który jak widzę po zdjęciach wyświetla to samo co Twój czyli czas lub kanał :)

    No wlasnie nie bardzo. Akurat mam tak skonfigurowany wyswietlacz. Tu masz pelna liste mozliwych ustawien wyswietlanej zawartosci:
    LCD4Linux na E2 - wlasny rodzaj wyswietlacza
    Co wiecej, kazda funkcje mozesz wyswietlac na osobnej scenie (moze byc kilka funkcji w scenie), ktorej czas wyswietlania ustawiasz osobno dla kazdej sceny. Maksymalna ilosc scen to 9
    Janusz_kk napisał:
    Ale mam pytanie dlaczego używasz niezależnego odbiornika?

    Nie mieszkam w Polsce. A odbiornik sluzy jeszcze jako odbiornik iptv. odtwarzcz czy serwer dlna

  • #6 31 Gru 2018 23:54
    simw
    Poziom 19  

    Janusz_kk napisał:
    Sam kiedyś używałem fergusona ale to więcej problemów niż zysków było.

    Spróbuję odpowiedzieć za autora, jeśli błądzę to pewnie mnie poprawi :)
    Ferguson to nie to samo co odbiornik oparty na enigmie, jego zła sława ciągnie się od lat.
    Co do enigmy, wg mnie, nie wymyślono jeszcze sensowniejszej obsługi telewizji w odbiornikach niż właśnie enigma2 - ta dwójka nie jest przypadkowa, bowiem enigma w pierwszej swojej wersji nie była dopracowana.
    Sama enigma2 pochodzi z odbiorników marki dreambox, który długo był wyznacznikiem jakości wśród odbiorników satelitarnych opartych na enigma2. We wczesnej fazie było dużo odbiorników, które próbowały działać na enigmie, ale było niestety wiele niedopracowanych modeli, jak niesławny Ipbox 910, który do swej "medialnej śmierci" nie doczekał się sensownej wersji enigmy 1 i 2, tzn pozbawionej wielu przykrych wad, gdzie najczęstszą był "zielony ekran śmierci" :) Główną przyczyną były zamknięte, niedopracowane sterowniki do tunera. Nieco lepiej zachowywały się odbiorniki marki Kathrein, ale też to nie był żaden cud.
    Dopiero później przyszła era na dobre odbiorniki choćby marki VU+, a obecnie jest to niezły biznes, odbiorniki z obsługą 4k też można już kupić.
    Ogromną popularyzację enigmie przyniósł nc+ z jej odbiornikami marki nbox, które właśnie były oparte na enigma2 i charakteryzowały się dopracowany interfejsem i stabilną pracą i dostępem do dużej ilości wtyczek, co jest właśnie charakterystyczne dla enigmy w wersji 2.

  • #8 01 Sty 2019 12:51
    Janusz_kk
    Poziom 17  

    oloam napisał:
    Nie mieszkam w Polsce. A odbiornik sluzy jeszcze jako odbiornik iptv. odtwarzcz czy serwer dlna

    Ok, dzięki za wyjaśnienia Tobie i Simw, nie śledzę postępów w technice satelitarnej więc przydadzą się mam nadzieję że nie tylko mnie.

  • #9 12 Sty 2019 10:17
    bfksoql
    Poziom 3  

    Dzięki - mega pomysł i wczoraj usiadłem i zrobiłem na wemos d1 + wyświetlacz 480x320 od rpi wersję co poprostu ściąga ten obrazek z webif po http i wyświetla- działa spoko. Co prawda wemos rysuje jpega 0,5sek na tym wyświetlaczu ale przy mało zmieniających się obrazkach wygląda to spoko. Mam pytanko czy wiesz, która opcja zmienia layout tych ekranów ? Bo jak zmniejszam na np 128x128 (chciałbym zobaczyć jak to wygląda na innym wyświetlaczu) to poprostu dostaję obciętego jpeg a u ciebie widzę jakby uboższą wersję layoutu - sam pickon itp.

  • #10 12 Sty 2019 16:40
    oloam
    Poziom 20  

    bfksoql napisał:
    Dzięki-mega pomysł i wczoraj usiadłem i zrobiłem na wemos d1 + wyświetlacz 480 × 320 od rpi wersję co po prostu ściąga ten obrazek z webif po http i wyświetla- działa spoko.


    Heh wczoraj kupiłem D1 mini. Będę robił na 2 wyświetlacze. Jeden mały (1.3'' 240 × 240) wewnątrz odbiornika (raczej tylko na zegarek, ewentualnie jakiś inny screen informacyjny b. rzadko) i jeden 3.5'' 320 × 480 zewnętrzny (tu chciałbym zastosować esp8266) z większą ilością informacji (pewnie zegarek, picon, postęp programu, pogoda), zamówiłem również czujnik natężenia światła, żeby sterować podświetleniem LCD w zależności od światła dostępnego w pomieszczeniu.

    Zmieniając rozdzielczość w ustawieniach, tylko nie rob podglądu przez fizyczny LCD, ale przez przeglądarkę internetową albo bezpośrednio na odbiorniku.
    bfksoql napisał:


    U ciebie widzę jakby uboższą wersję layoutu-sam pickon itp.

    Taka sobie ustawiłem. Na włączonym odbiorniku mam picon, zegarek i postęp programu. Na wyłączonym tylko zegarek (zdjęcie tytułowe).

    Jak możesz/chcesz, to umieść proszę kod do obsługi poprzez ESP. Będę miał mniej roboty :)

  • #11 12 Sty 2019 23:47
    bfksoql
    Poziom 3  

    Kod to straszna składanka robiona na prędce i napewno jest tam dużo niepotrzebnego kodu i wogóle sporo do poprawy. Ale działa. Masz hardcode na url z którego pobierany jest jpg (w konfiguracji lcd4linux trzeba zmienić z png na jpg). Wemos raczej nie da rady z png - nawet jpg jest na moim 480x320 renderowane pół sekundy i nie wygląda to rewelacyjnie - wydaje mi się, że na wemos i takiej rozdzielczości lepiej nie będzie. Próbowałem przerabiać na BMP ale ta z kolei za dużo zajmuje.

    Obrazek jest pobierany i zapisywany w pamięci SPDIFS czy jakoś tak. Akurat pod ręką miałem wemos pro i nie wiem czy lite ma tą pamięć ale chyba tak. I to jedna z rzeczy, która nie jestem 100% pewny, że jest potrzebna - chyba da się plik zapisać tylko do pamięci układu i pominąć. Ale na ten moment z tego korzystam i musisz inicjalnie coś tam wrzucić (załączyłem jakiś pliczek). Bo kod go szuka i podmienia.

    Mój wyświetlacz to 480x320 od raspberry pi - klon waveshare 3.5'' - biblioteka którą użyłem to tft_espi i ona obsługuje sporo wyświetlaczy.

    Jakby co to chętnie pomogę jak będą problemy. LCD4Linux na E2 - wlasny rodzaj wyswietlacza

  • #12 13 Sty 2019 11:46
    homer2009
    Poziom 1  

    Witam bardzo ciekawy temat. Czy dałoby radę zrobić, żeby cały układ komunikował się z odbiornikiem poprzez USB tak jak ramki samsunga i ramka Pearl LCD? Chciałbym podłączyć do tunera wyświetlacz 3,5 bądź 4 cale.

  • #13 13 Sty 2019 12:28
    bfksoql
    Poziom 3  

    Na pewno się da, tylko dla mnie to już jest trochę więcej roboty. A wemos daje to samo i mam go rozpracowanego :) wersja USB wymagałaby trochę cudowania po stronie tunera. Niby to linux, jednak trochę okrojony. Nawet z konwersja na BMP się męczyłem.

    Btw wczoraj myślałem, że niegłupim pomysłem byłoby zrobienie tego na starym telefonie z androidem. Duża rozdzielczość. Dobre kąty widzenia itp.

  • #14 13 Sty 2019 12:47
    oloam
    Poziom 20  

    Ale przecież pierwszy post jest o wyświetlaczu podłączonym przez USB. Nawet podałem kompletny kod w Python do wysyłania RAW RGB przez USB.

    bfksoql napisał:
    Nawet z konwersja na BMP się męczyłem.

    Wystarczy, że w plugin.py w odpowiednim miejscu zmienisz dosłownie 3 znaki PNG na BMP i już masz zapisaną grafikę w formacie bmp.

    Nie przeglądałem jeszcze twojego projektu, ale czy dekompresja z JPEG następuje na ESP? Jeżeli tak to nie wiem, czy nie szybciej byłoby, wysyłanie RAW RGB bezpośrednio z odbiornika.

  • #15 13 Sty 2019 12:55
    bfksoql
    Poziom 3  

    Tak. Decoding JPEG jest na wemosie. To jest coś, co robiłem w 30 min i na pewno jeszcze nad tym posiedzę. Ale z tego, co widzę po twoich innych projektach, to podejrzewam, że zrobisz to o wiele lepiej :). Na razie zamówiłem sobie różne wyświetlacze na ali bo ten mój ma fatalne kąty widzenia..

    Dodano po 5 [minuty]:

    Btw mógłbyś wrzucić schemat jak połączyłes wyswietlacz z usb ?

  • #16 13 Sty 2019 14:34
    oloam
    Poziom 20  

    LCD mam ips 1.3'' z interfejsem SPI. Czekam na drugi ips 3.5'' również z interfejsem spi. Zamówię jeszcze jeden z interfejsem równoległym. Wyświetlacze (te po SPI) będą sterowane za pomocą stm32f042 (1.3 240x240 juz działa). W nadchodzącym tygodniu powinienem otrzymać resztę komponentów, aby złożyć działający prototyp na finalnych komponentach. Jak wszystko będzie już działać, to opublikuje schemat i wsad do uc. Później wezmę się za wyświetlacz sterowany esp i komunikacja WiFi.

  • #17 14 Sty 2019 19:23
    bfksoql
    Poziom 3  

    Dzisiaj mi przyszedł 320x240 TFT - zamawiany wogóle nie z myślą o tym projekcie. Odpaliłem na nim - wydaje mi się, że sens to będzie miało dopiero na IPS bo tu też kąty takie sobie - ale załączam poprawiony programik - bo tamten nie miał wogóle połączenia do wifi - nie przekopiowałem jak "czyściłem" kod. Autor pewnie sobie poradzi bez tego ale może przyda się innym.