Jak ożenić wyświetlacze WaveShare z Raspberry Pi 2 ?
Kiedy wymieniłem swoją "malinę| na Raspberry Pi 2, pojawił się problem z uruchomieniem popularnych wyświetlaczy TFT 3.5" / 4" od WaveShare z rezystancyjnym panelem dotykowym. Producent, pomimo już dawnej premiery Rasperry Pi 2, nie przygotował stosownych instrukcji lub odpowiednich obrazów systemu. Po kilku eksperymentach, udało mi się w końcu ożenić te wyświetlacze z RPi2.
Zapraszam zatem do małego how-to na przykładzie świeżej instalacji dystrybucji Raspbian (2015-05-05).
W pierwszej kolejności musimy zmienić wyjście sygnału z HDMI na szynę SPI. W tym celu edytujemy plik /usr/share/X11/xorg.conf.d i zmieniamy urządzenie framebuffera z fb0 na fb1:
- sudo nano /usr/share/X11/xorg.conf.d/99-fbturbo.conf
Zmiany zapisujemy wciskając CTRL-X, następnie Y i zatwierdzamy enterem.
Ekran dotykowy również korzysta z magistrali SPI do komunikacji z procesorem, jest ona jednak domyślnie wyłączona, dlatego musimy ją najpierw włączyć. Wydajemy polecenie:
- sudo raspi-config
Przechodzimy do pozycji "Advanced Options" i włączamy SPI (Enable/Disable automatic loading of SPI kernel module), zatwierdzając dwa kolejne pytania przyciskiem Yes.
Możemy wyjść z konfiguracji wybierając opcję Finish i zresetować urządzenie.
Jeśli korzystasz z wersji Rasbiana 2015-05-05, możesz pominąć kolejny krok, jeśli natomiast używasz wersji sprzed 31 stycznia 2015, konieczne będzie jeszcze za komentowanie na czarnej liście modułu spi-bcm2708 w pliku /etc/modprobe.d/raspi-blacklist.conf
- sudo nano /etc/modprobe.d/raspi-blacklist.conf
W przypadku świeżego Rasbiana (2015-05-05), plik powinien być pusty. Gdyby jednak znajdował się w nim zapis "blacklist spi-bcm2708", usuń go lub za komentuj linię dodając na jej początku znak # i zapisz zmiany.
W kolejnym kroku musimy pobrać i zainstalować sterowniki dla ekranu LCD oraz panelu dotykowego.
- sudo REPO_URI=https://github.com/notro/rpi-firmware rpi-update
Nastąpi ściąganie paczek jądra, firmware oraz odpowiednik modułów (~45MB). Kiedy paczki zostaną pobrane, powinna nastąpić ich instalacja.
Kiedy proces dobiegnie końca, restartujemy malinę:
- sudo reboot
Mamy już zaktualizowane sterowniki, więc musimy odpowiednio skonfigurować moduły jądra, edytując plik:
- sudo nano /etc/modules
Pod linią zawierającą snd-bcm2835 dodajemy:
- flexfb width=480 height=320 regwidth=16 init=-1,0xb0,0x0,-1,0x11,-2,250,-1,0x3A,0x55,-1,0xC2,0x44,-1,0xC5,0x00,0x00,0x00,0x00,-1,0xE0,0x0F,0x1F,0x1C,0x0C,0x0F,0x08,0x48,0x98,0x37,0x0A,0x13,0x04,0x11,0x0D,0x00,-1,0xE1,0x0F,0x32,0x2E,0x0B,0x0D,0x05,0x47,0x75,0x37,0x06,0x10,0x03,0x24,0x20,0x00,-1,0xE2,0x0F,0x32,0x2E,0x0B,0x0D,0x05,0x47,0x75,0x37,0x06,0x10,0x03,0x24,0x20,0x00,-1,0x36,0x28,-1,0x11,-1,0x29,-3
oraz
- fbtft_device debug=3 rotate=0 name=flexfb speed=16000000 gpios=reset:25,dc:24
Dodajmy również odpowiednią konfigurację dla panelu dotykowego:
- ads7846_device model=7846 cs=1 gpio_pendown=17 speed=1000000 keep_vref_on=1 swap_xy=1 pressure_max=255 x_plate_ohms=60 x_min=200 x_max=3900 y_min=200 y_max=3900
Następnie edytujemy parametry bootowania:
- sudo nano /boot/cmdline.txt
i po "rootwait" doklejamy:
- fbtft_device.custom fbtft_device.name=flexfb fbtft_device.gpios=dc:24,reset:25 fbtft_device.bgr=1 fbtft_device.speed=16000000 fbcon=map:10 fbcon=font:ProFont6x11 logo.nologo dma.dmachans=0x7f35 console=tty1 consoleblank=0 fbtft_device.fps=50 fbtft_device.rotate=0
Kolejny restart:
- sudo reboot
Po ponownym uruchomieniu, ekran powinien już działać prawidłowo, pokazując proces ładowania jądra:
Jeśli chcemy, aby od razu startował serwer X, edytujemy plik:
- sudo nano /etc/rc.local
i nad "exit 0" dodajemy linię:
- su -l pi -c startx
Kolejny restart i już mamy malinę z "iksami":
- sudo reboot
Prawie gotowe! Na zakończenie musimy jeszcze "aktywować" nasz panel dotykowy:
- sudo nano /usr/share/X11/xorg.conf.d/99-calibration.conf
gdzie dodajemy nową sekcję:
- Section "InputClass"
- Identifier "calibration"
- MatchProduct "ADS7846 Touchscreen"
- Option "Calibration" "3900 240 3900 240"
- EndSection
oraz dodajmy do konfiguracji config.txt odpowiednie zapisy:
- sudo nano /boot/config.txt
- dtoverlay=ads7846,speed=500000,penirq=17,swapxy=1
Zapisujemy, restartujemy:
- sudo reboot
i gotowe :)
Touchscreen do góry nogami?
W przypadku 4" ekranu praktycznie nic nie musimy robić, ale okazuje się, że w przypadku wersji 3.5" ekran dotykowy interpretowany jest "góry nogami". Aby temu zaradzić, musimy doinstalować paczki xinput oraz evtest:
- sudo apt-get -y install xinput evtest
oraz odwrócić oś Y w, edytując odpowiedni plik:
- sudo nano /etc/X11/xinit/xinitrc
dodając przed . /etc/X11/Xsession linię:
- DISPLAY=:0 xinput --set-prop 'ADS7846 Touchscreen' 'Evdev Axis Inversion' 0 1
Po zapisaniu i ponownym uruchomieniu RaspberryPi 2, wszystko będzie jak należy.
Gdzie kupić wyświetlacze?
Wyświetlacze WaveShare 3.5" oraz WaveShare 4" kupicie spokojnie w sklepie elty.pl
Wpisy na podobny temat
-
21 Jun 2015 »
Test 7" wyświetlaczy TFT oraz IPS z wejściem ...
Raspberry Pi
Hardware
-
15 Nov 2012 »
Przymierzasz się do ODROID-X? Lepiej poczekaj!
Hardware
Android
-
14 Jul 2014 »
Odświeżony RaspberryPI Model B+ za 35$
Raspberry Pi
Hardware
Komentarze

Witam!
Opis super i oszczędza szas i nerwy... ;-)
Mam pytanie... jak wyłączyć wygaszacz ekranu? Standardowe zabiegi nie działąją.
Pozdrawiam
DJ

Hej,
Zrobiłem wszystko jak w Twoim poradniku i nie smiga :<
Jakieś pomysły ? Będę wdzięczny za pomoc :)

U mnie również nie śmiga, dalej czarny ekran po resecie

Tez czarny ekran po 1 restarcie - mam pi 3. Sprobuje zaraz jeszcze raz ale cos mi sie wydaje ze cos nie dziala.

Witam, probuje odpalic 4" na najnowszym raspi Pixar. Wiem ze sterownik fturbo zostal zimtegrowany teraz, mimo wszystkich tutoriali nadal sie nie odpala LCD. Moze ktos z Was podrzucic czysty obraz karty sd z dzialajacymi sterownikami? Albo jakies podpwiedzi jak go odpalic wkoncu?
Pozdrawiam

Ja odpaliłem 4.3" na malinie 3 według instrukcji od producenta.
Warto napisać, że ta na tej stronie jest już przestarzała i nie będzie działać.