Raspberry Pi Zero, podłączenie i konfiguracja wyświetlacza ILI9341.

Raspberry Pi Zero, podłączenie i konfiguracja wyświetlacza ILI9341.

Kilka miesięcy temu wyszła nowa wersja popularnej “Malinki” – Raspberry Pi Zero. Minikomputer ten ma kosztować docelowo 5$ (Aktualnie jest mało dostępny, a w sklepach jeśli dodać wysyłkę kosztuje jakieś ~47 zł). Ta wersja RPi jest kierowana do zastosowań, gdzie procesory AVR(np.: Arduino) nie dają rady, z powodu niskiej wydajności. Malinka pobiera mało prądu ~110mAh(to dalej wiele więcej od AVR), i pozwala na zasilanie ze zwykłem bateri(Jeżeli użyjemy konwertera STEP-UP, pozwala na zasilanie z 3V. U mnie na ogniwie 500mah 3.7V, malinka wytrzymała 3,5 godziny). Jeżeli dodamy wyświetlacz, można stworzyć np. przynośny emulator konsol retro (RetroPie). W tym poradniku opiszę podłączenie i konfigurację wyświetlacza na sterowniku ILI9341. Opis działa także z innymi wersjami Raspberry Pi.


Raspberry pi z wyświetlaczem
Raspberry pi z wyświetlaczem

Potrzebne przedmioty:

 

Podłączanie wyswietlacza

Wyświetlacz działa na magistrali SPI. Wszystkie wyprowadzenia powinny być opisane na wyświetlaczu.

Nazwa wyprowadzenia Pin Maliny Opis
VCC +3V (!) Zasilanie wyświetlacza
GND GND Uziemienie
CS Pin CE0 *(Pod GPIO 25) “Chip Select”
RESET GPIO 25 Pin reset magistrali SPI
D/C GPIO24
SDI(MOSI) Pin MOSI Pin MOSI magistrali SPI
SCK SCLK Pin SCK magistrali SPI
LED GPIO18 Podświetlenie
SDO(MISO) Dodatkowy pin karty SD

 

Pinout

Konfiguracja wyświetlacza

Po podłączeniu wyświetlacza uruchamiamy naszą malinę. Należy wejść do linii komend (połączyłem się po SSH, można także podpiąć klawiaturę).

  1. Aktualizujemy system komendą:

     
  2. Tymczasowo ładujemy sterowniki:

    W tym miejscu, podświetlenie wyświetlacza, powinno sie zapalić
  3. Teraz możemy uruchomić “Okienka” na wyświetlaczu lub linie komend. Aby uruchomić środowisko graficzne:

    Aby uruchomić linię komend:

     
  4. Aby system ładował sterowniki przy starcie, w /etc/modules dopisujemy:

     

(Opcjonalne)Wyświetlanie /dev/fb0 (RetroPie / Emulation Station)

Kopiowanie framebuffera /dev/fb0 do /dev/fb1 jest przydatne, gdy chcemy uruchomić środowisko, którego nie da się uruchomić bezpośrednio na framebufferze /dev/fb1 (Np.: EmulationStation/RetroPie). Aby to ominąć, program fbcp kopiuje zawartość /dev/fb0 do /dev/fb1. Niestety, nie jest to rozwiązanie idealne: obraz jest lekko opóźniony.

  1. Aktualizujemy system (Jeżeli robiłeś to niedawno, nie musisz tego wykonywać):
  2. Instalacja RPI-FBCP:

     
  3. fbcp uruchomimy komendą:

     

W tym miejscu obraz powinien pojawić się na wyświetlaczu.

Mam nadzieję że poradnik się spodobał. Pozdrawiam.

Ocena: 4.24/5 (głosów: 37)

Podobne posty

20 komentarzy do “Raspberry Pi Zero, podłączenie i konfiguracja wyświetlacza ILI9341.

  • Fajny artykuł… Byłby, gdyby był napisany po polsku. Nie udało się jednego zdania napisać bez błędów interpunkcyjnych albo literówek.

    I zanim usłyszę, że się czepiam: dbałość o formę powinna przejawiać się wszędzie. Jak ktoś stawia przecinki losowo, a “miliamperogodziny” zapisuje jako mah, a nie mAh, to jest duże ryzyko, że np. w opisie wyprowadzeń pomylił linię danych z zasilaniem (na przykład).

    Z drugiej strony, jeśli tekst jest poprawny językowo, to znaczy że autor przyłożył się do publikacji i prawdopodobieństwo błędów jest niższe.

    A zatem: 5 za staranie, pała za formę. Na szczęście formę łatwiej poprawić niż brak starania, więc początek jest to obiecujący :)

    Odpowiedz
    • z tym mah to mógł być jeszcze inny błąd – może chodziło o MACH – układ testowano przy prędkości 500 machów, muszę przyznać, że dość sporej.

      A tak serio – samo podłączenie jakoś nie pasuje mi na projekt – jakbyś go rozszerzył o uruchomienie czegoś fajnego, żeby go w pełni wykorzystać to byłoby super, więc tymczasowo się wstrzymam z oceną.

      Odpowiedz
  • “Malinka pobiera mało prądu ~110mah”
    raczej ~110 mA (mAh to miara pojemności ;) )

    myślę, że w porównaniu z procesorami AVR użytymi w Arduino to jednak całkiem sporo i nie mogę się zgodzić ze stwierdzeniem “mało prądu” chyba, że porównujemy z innymi “malinami”.

    Odpowiedz
  • Kolejny artykuł typu ctrlC, ctrlV. Pokopiować komendy i wkleić w odpowiedniej kolejności.
    Nic się nie dowiedziałem co z czym i dlaczego tak, a nie inaczej.
    Jak zwykli ludzie mają się nauczyć tego cholernego Linuxa!!!!

    Odpowiedz
    • Co do Linuksa, to nie całkiem wiem, czego oczekujesz, ale spróbuję wyjaśnić, co się tutaj dzieje:

      sudo modprobe fbtft_device custom name=fb_ili9341 gpios=reset:25,dc:24,led:18 speed=16000000 rotate=90 bgr=1

      -> jako root (sudo) ładujemy sterownik (modprobe) o nazwie fbtft_device – reszta to parametry dla sterownika, name to zapewne typ wyświetlacza TFT, gpios wskazuje po których pinach odbywa się sterowania, speed to zapewne prędkość komunikacji, rotate to orientacja obrazu, bgr to pewnie wskazówka, czy podświetlenie odbywa się stanem wysokim czy niskim

      FRAMEBUFFER=/dev/fb1 startx

      -> startx uruchamia serwer X (czyli środowisko graficzne), przy czym wcześniej ustawiamy zmienną środowiskową FRAMEBUFFER tak, żeby “celowała” na ekran TFT (pewnie domyślnie pisze po HDMI), dostępny jako urządzenie /dev/fb1. Framebuffer, czyli ramka obrazu, to obszar pamięci w którym zapisujemy dane do wyświetlania

      con2fbmap 1 1

      -> zgaduje, że nazwa polecenia to skrót od “console to framebuffer mapper”, czyli że dane graficzne konsoli będziemy kopiować do bufora ramki “1”.

      /etc/modules -> lista sterowników (modułów) ładowanych przy starcie systemu.

      A tak w ogóle, to Linuksa można się nauczyć na 3 sposoby:
      – bierzesz cegłę o budowie systemów operacyjnych, w szczególności Linuksa, albo podobny kurs akademicki – potem sporo stanie się jasne
      – odpalasz Linuksa, próbujesz sobie coś grzebać i zrozumieć co się dzieje
      – czytasz taki artykuł jak ten i każde nieznane sobie pojęcie wrzucasz do Google i czytasz, czytasz, czytasz.

      Sposób trzeci jest względnie najwygodniejszy, sposób pierwszy daje największą wiedzę w paradoksalnie względnie krótkim czasie, sposób drugi jest dla hardkorowców :-)

      Odpowiedz
      • Dziękuję za dodatkowe wyjaśnienia. Trochę się wyjaśniło. Ja akurat uczę się tym drugim sposobem, bo w przypadku pierwszego nie bardzo wiem jaka byłaby dobra lektura tzn. nie chce się uczyć “jąder systemów” itp ale obsługi Linuxa tak aby można było korzystać swobodnie z komputera, coś DIY zrobić itp.

        W związku z powyższym metoda 3 nie jest dobra, bo jak nie znasz podstaw to można czytać i czytać a to dalej czarna magia :)

        Odpowiedz
        • Wiesz, wydaje mi się, że demonizujesz “jądra systemów” itp., to są rzeczy – jak już się otrząśniesz – intuicyjnie proste.

          Ale tak czy inaczej: metoda 3 jest całkiem niezła, wiedza ma to do siebie, że przy pierwszym przejściu nie wiesz w jakim języku czytasz, przy drugim nie wiesz o czym czytasz, przy trzecim nie wiesz o co chodzi, a przy czwartym myślisz “no tak, to oczywiste” :-) I nie mówię, że trzeba czytać ciągle to samo :-) Coś jak z nauką obcego języka – na początku nic nie kumasz.

          Odpowiedz
    • Jeżeli ktoś kupuje RPI, to raczej powinien znać przynajmniej podstawy(apt-get, modprobe itp). Wydaje mi się, że artykuł jest przydatny, musiałem dość długo szukać w google konfiguracji i obejścia problemu ze złym framebufferem.

      Odpowiedz
      • Pewnie powinien, ale jest taki hype na RPi, że ludzie to kupują, a potem się zastanawiają po co :-)

        I tak, artykuł jest przydatny.

        Odpowiedz
        • Odpowiem Ci na swoim przykładzie, po co ludzie kupują malinę.
          Najpierw kupiłem Arduino i dosyć szybko, tylko z guglem udało się opanować podstawy, prosty język, jakieś proste programy i trochę elektroniki. Tak mi się to spodobało, że postanowiłem podnieść poprzeczkę, kupić malinę i dodatkowo nauczyć się właśnie tego cholernego Linuxa :)

          Udało mi się mn. skonfigurować ją do Flightradara24.

          Ale muszę też przyznać, ze właśnie w przypadku RPi nie odbieram tej wiedzy podanej w sposób jak do Arduino tj. w sposób usystematyzowany, z prostymi przykładami pozwalającymi wgryzać się w temat i uczyć samodzielnie.
          Większość tutoriali to takie właśnie kopiuj/wklej. A użytkownik nadal nie może poznać zasad ,co z czy i dlaczego.
          Tak to odbieram.

          Odpowiedz
  • Dosyć słaby tutorial. Nie dowiedziałem, się na przykład jak sterować tym wyświetlaczem z poziomu programu. Albo jakie funkcje ma biblioteka do jego obsługi. A to raczej jest potrzebne. I powinno się tutaj znaleźć.

    Odpowiedz
  • Próbuję zrobic według tego poradnika i nie działa – pomijając fakt, że wcześniej trzeba zrobić expand karty, uruchomić spi i kilka innych rzeczy o których tu nie ma mowy po inicjalizacji lcdka faktycznie się zapala, a przy startx (oczywiście trzeba uruchomić z sudo co nie jest wspomniane) wyskakuje “modprobe: FATAL: Module g2d_23 not found.”, na innych forach piszą, że to jest ok i przechodzi dalej, jednak u mnie się na tym zawiesza, czy po prostu trzeba czekać parę minut na to?

    Odpowiedz
  • Cześć.
    Mam problem z framebufferem, chcę odpalić sobie apkę która działa tylko na fb0, więc kopiuje sobie do fb1 ale aplikacja jest nie do użytku ponieważ zawsze jak kliknę gdzieś na apkę to ekrane w tle czyli fb1 się uaktywnia i wchodzi mi na pierwszy plan. Da się jakoś temu zaradzić?

    Odpowiedz

Odpowiedz

anuluj

Masz uwagi?