SantyagoSantyago
Avatar

Witaj!
Blog archiwalny. Już niebawem nowy serwis!

YouTube RSS Facebook GitHub

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:

  1. 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:

  1. 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

  1. 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.

  1. 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ę:

  1. sudo reboot

Mamy już zaktualizowane sterowniki, więc musimy odpowiednio skonfigurować moduły jądra, edytując plik:

  1. sudo nano /etc/modules

Pod linią zawierającą snd-bcm2835 dodajemy:

  1. 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

  1. fbtft_device debug=3 rotate=0 name=flexfb speed=16000000 gpios=reset:25,dc:24

Dodajmy również odpowiednią konfigurację dla panelu dotykowego:

  1. 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:

  1. sudo nano /boot/cmdline.txt

i po "rootwait" doklejamy:

  1. 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:

  1. 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:

  1. sudo nano /etc/rc.local

i nad "exit 0" dodajemy linię:

  1. su -l pi -c startx

Kolejny restart i już mamy malinę z "iksami":

  1. sudo reboot

Prawie gotowe! Na zakończenie musimy jeszcze "aktywować" nasz panel dotykowy:

  1. sudo nano /usr/share/X11/xorg.conf.d/99-calibration.conf

gdzie dodajemy nową sekcję:

  1. Section "InputClass"
  2.  Identifier "calibration"
  3.  MatchProduct "ADS7846 Touchscreen"
  4.  Option "Calibration" "3900 240 3900 240"
  5.  EndSection

oraz dodajmy do konfiguracji config.txt odpowiednie zapisy:

  1. sudo nano /boot/config.txt
  1. dtoverlay=ads7846,speed=500000,penirq=17,swapxy=1

Zapisujemy, restartujemy:

  1. 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:

  1. sudo apt-get -y install xinput evtest

oraz odwrócić oś Y w, edytując odpowiedni plik:

  1. sudo nano /etc/X11/xinit/xinitrc

dodając przed . /etc/X11/Xsession linię:

  1. 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

Komentarze Komentarze
Avatar 1
dj Windows 7 / Mozilla Firefox 41.0
22 October 2015 - 10:03 Mikołów

Witam!

Opis super i oszczędza szas i nerwy... ;-)

Mam pytanie... jak wyłączyć wygaszacz ekranu? Standardowe zabiegi nie działąją.

Pozdrawiam
DJ

Avatar 2
Korneliusz Linux Ubuntu / Mozilla Firefox 41.0
24 October 2015 - 02:34 Bytom

Odinstaluj :)

Avatar 1
ppaciek Windows 7 / Safari 537.36
21 March 2016 - 18:40 Brak informacji

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

Avatar 1
pawel Windows 7 / Safari 537.36
11 May 2016 - 17:58 Łódź

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

Avatar 1
dawid Windows 7 / Safari 537.36
21 August 2016 - 16:30 Brak informacji

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

Avatar 1
cr3x Linux Ubuntu / Mozilla Firefox 49.0
01 November 2016 - 18:57 Brak informacji

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

Avatar 1
Loki Windows 7 / Safari 537.36
23 February 2017 - 14:42 Brak informacji

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ć.