7” ekrany dotykowe na RPi 2B i nie tylko
W sierpniu zeszłego roku miałem okazję przetestować dotykowe ekrany LCD o przekątnej 7”. Opis wraz ze sposobem konfiguracji możecie znaleźć tutaj. Od tamtego czasu trochę się zmieniło. Największa zmianą jest nowe Raspberry Pi Model 2B.
Stary sposób instalacji nie jest już do końca poprawny, ale postanowiłem go pozostawić na blogu i dodać nowy, który w sporym stopniu bazuje na poprzednim. W zasadzie nowa metoda jest prostsza, bo nie wymaga już podmiany kernela. W zasadzie jeśli podmienimy obecnie używany kernel na ten z poprzedniego opisu, to nowa Malinka może się w ogóle nie uruchomić.
Rozwiązanie tego problemu jest banalnie proste i nie jest to ręczna i długotrwała kompilacja najnowszej wersji kernela ze sterownikami do ekranów dotykowych. Okazuje się, że najnowsza wersja(3.18.10-v7+) używana w RPi 2B wspiera takie ekrany domyślnie. Jedyne co musimy zrobić to upewnić się, że mamy najnowszą wersję kernela, a to banalnie proste i szybkie zadanie.
sudo apt-get update - na początku sprawdzamy czy lista repozytoriów jest aktualna.
sudo apt-get upgrade - aktualizujemy wszystkie zainstalowane pakiety.
sudo rpi-update - pobieramy najnowsza wersję firmware oraz kernela.
sudo reboot - restartujemy Malinkę. Teraz nasze Raspberry Pi 2B(ale nie tylko, starsze wersje również) wspiera ekrany dotykowe.
Poprzednim razem miałem okazję testować dwa ekrany, które od siebie różnią się rozdzielczością. Jeden ma rozdzielczość 800 na 480 pikseli(Model AT070TN92), a drugi 1024 na 600 pikseli(Model AT070TNA2). Oba ekrany dostępne są w sklepie botland.com.pl w cenach 299 zł za Ekran dotykowy TFT 7” 800x480 i 359 zł za Ekran dotykowy TFT 7” 1024x600 (ceny z dnia 30.03.2015).
Podobnie jak poprzednio instalację zaczynamy od wstępnej konfiguracji systemu oraz podłączenia ekrany do Maliny.
sudo raspi-config - wybieramy Enable Boot to Desktop/Scratch (3), a następnie Desktop Log in as user ‚pi’ at the graphic desktop. Dzięki temu przy każdym uruchomieniu się Malinki, system automatycznie uruchomi środowisko graficzne i zaloguje się na profil naszego użytkownika. Pozostaje nam zmienić jeszcze jedno ustawienie. W Advanced Options (8) zmieniamy Overscan (A1) na Disable. To wszytko.
sudo reboot
<img src="http://cluster003.ovh.net/~haetlpva/blazej/malinowepi/photos/EkranyDotyk1.jpg" width="3264" height="2448" alt="Panele dotykowe 7"" />
sudo apt-get install libx11-dev libxext-dev libxi-dev x11proto-input-dev xinput
wget http://github.com/downloads/tias/xinput_calibrator/xinput_calibrator-0.7.5.tar.gz
tar xvzf xinput_calibrator-0.7.5.tar.gz && rm xinput_calibrator-0.7.5.tar.gz
cd xinput_calibrator-0.7.5
./configure
make
sudo make install
sudo reboot - po ponownym uruchomieniu się Raspberry Pi, w środowisku graficznym(najlepiej za pomocą myszki, bo ekran dotykowy nie jest jeszcze skalibrowany) klikamy „Menu”(po lewej u góry), następnie na “Prefrances” i na aplikacji “Calibrate Touchscreen” klikamy prawym przyciskiem myszki i wybieramy „Properties”. Zmieniamy kartę na „Desktop Entry” i kopiujemy polecenie z okienka „Command”(/bin/sh -c „xinput_calibrator; cat”). Skopiowane polecenie wklejamy w Terminalu(LXTerminal) i zatwierdzamy enterem. Następnie musimy kliknąć na “[X]” w różnych miejscach naszego ekranu. Po tym pojawią się informacje o kalibracji ekranu. Spisujemy “Option “calibration” “Twoje koordynaty”“(W moim przypadku 70 1947 1825 149, ale różne ekrany mogą mieć różne koordynaty). Będzie to kilka liczb, które będą nam potrzebne za kilka chwil. Kolejne polecenia możemy wykonywać już z poziomy zdalnego ekranu(ssh).
sudo nano /usr/share/X11/xorg.conf.d/99-calibration.conf - w tym pliku wpisujemy informacje o naszym ekranie oraz spisane wcześniej koordynaty:
Section "InputClass" Identifier "calibration" MatchProduct "eGalax Inc. USB TouchController" Option "Calibration" "Twoje koordynaty" EndSection
sudo reboot - po restarcie pozostaje nam zmienić jeszcze jedną rzecz - rozdzielczość ekranu. Domyślnie nasz ekran będzie miał ustawioną 720x576, co nijak ma się do jego faktycznej rozdzielczości. Musimy ją zmienić ręcznie.
sudo nano /boot/config.txt - na końcu pliku dopisujemy
hdmi_group=1 hdmi_mode=4
Jeśli chcemy wybrać jakąś inną rozdzielczość(radzę tego nie robić, bo kalibracja znowu się nam rozjedzie. Inna rozdzielczość będzie pewnie konieczna przy ekranach o innej przekątnej), to lista dostępnych opcji znajduje się tutaj.
sudo reboot - po restarcie nasz ekran jest już w pełni skalibrowany i skonfigurowany. Jeśli mielibyśmy jakieś problemy, to możemy jeszcze dodać kilka opcji w pliku konfiguracyjnym
sudo nano /usr/share/X11/xorg.conf.d/99-calibration.conf
W przypadku odwrócenia osi Y(góra-dół), dopisujemy jeszcze: Option "InvertY" "TRUE" W przypadku osi X(prawo-lewo): Option "InvertX" "TRUE" Aby zamienić oś X z osią Y: Option "SwapAxes" "1"
Czasami może się zdarzyć, że rozdzielczość powróci do domyślnych 720x576 pikseli. W 99% przypadków spowodowane jest to tym, że zmieniliśmy coś w sudo raspi-config. Taka zmiana nadpisuje plik „/boot/config.txt”. Po czymś takim wystarczy go znowu edytować(sudo nano /boot/config.txt) i dopisać na końcu:
hdmi_group=1 hdmi_mode=4
OpenELEC oraz RaspBMC
W przypadku obu systemów sprawa wygląda podobnie jak wcześniej. Nie musimy nic robić z kernelem, ale musimy skalibrować nasz ekran i robimy to dokładnie tak samo jak wcześniej. Opis znajdziecie w poprzednim wpisie o 7” ekrany dotykowe pod Raspbianem i RaspBMC.
Na koniec chciałbym jeszcze raz podziękować sklepowi botland.com.pl za podesłanie ekranów do ponownego testu.
PS: Wyświetlacz na zdjęciu na naklejoną jeszcze folię ochronną.
Jeśli chcesz podyskutować lub wymienić się swoimi spostrzeżeniami i opiniami o Raspberry Pi, albo po prostu szukasz inspiracji w jaki sposób wykorzystać swoją Malinkę, zapraszamy do naszej grupy na FB! - facebook.com/groups/malinowepi i do polubienia naszego profilu na Facebooku - facebook.com/malinowepi oraz zapisania się na Malinowy Newsletter.













