Raspberry Pi mit Touchscreen LCD

Wenn man ein LCD Display an den Raspberry Pi anschließen will hat man viele Möglichkeiten: HDMI, DSI, SPI, I2C. Bei SPI hat sich in der letzten Zeit aber einiges getan, so dass viele der im Netz zu findenden Anleitungen nicht mehr funktionieren. 

Raspbian und NOOBS wie auch viele andere Distributionen haben auf Kernel >= 4.4 gewechselt und damit auch Device Tree eingeführt. Device Tree erlaubt die Konfiguration von Treibern und Einstellungen über sogenannte Overlays welche auf der SD Karte im Ordner Overlays abgelegt und über die config.txt eingebunden werden.

Setup

Installation

TFT

Rasbian bring für viele SPI Displays schon Treiber mit aber es gibt auch für Displays die dort nicht enthalten schon viele Quellen auf GitHub. So z.B. auch für die günstigen KeDai TFTs die man häufig bei Aliexrpess finden und auch für das SpotPear von Waveshare.

$ git clone https://github.com/swkim01/waveshare-dtoverlays.git
$ sudo cp waveshare-dtoverlays/waveshare32b-overlay.dtb /boot/overlays/waveshare32b.dtbo

Und anschließend noch den folgenden Eintrag in /boot/config.txt anhängen:

dtoverlay=waveshare32b:rotate=270

Nach einem Neustart wird das Display nun initialisiert und steht unter /dev/fb1 zur Verfügung.

Touchscreen

Um den Touchscreen auch ohne XOrg für schlanke Touch-Interfaces verwenden zu können gibt es die tslib. Diese wird z.B. auch von pygame verwendet Eingaben entgegen zu nehmen. Die Ausführlich Beschreibung findet sich im Repository von notro.

Um einen eindeutigen Pfad (/dev/input/touchscreen)  zum Touchcontroller zu haben muss folgende udev-Regel angelegt unter /etc/udev/rules.d/95-ads7846.rules werden:

SUBSYSTEM=="input", KERNEL=="event[0-9]*", ATTRS{name}=="ADS7846*", SYMLINK+="input/touchscreen"

Natürlich braucht man noch die tslib und die zugehörigen Tools:

$ sudo apt-get install -y tslib libts-bin

Um die Umgebungspfade noch korrekt zu setzen muss folgendes ausgeführt werden:

# tslib environment variables

cat <<EOF | sudo tee /etc/profile.d/tslib.sh
export TSLIB_TSDEVICE=/dev/input/touchscreen
export TSLIB_FBDEVICE=/dev/fb1
EOF

cat <<EOF | sudo tee /etc/sudoers.d/tslib
Defaults env_keep += "TSLIB_TSDEVICE TSLIB_FBDEVICE"
EOF

sudo chmod 0440 /etc/sudoers.d/tslib


# SDL environment variables

cat <<EOF | sudo tee /etc/profile.d/sdl.sh
export SDL_VIDEODRIVER=fbcon
export SDL_FBDEV=/dev/fb1
if [[ -e /dev/input/touchscreen ]]; then
    export SDL_MOUSEDRV=TSLIB
    export SDL_MOUSEDEV=/dev/input/touchscreen
fi
EOF

cat <<EOF | sudo tee /etc/sudoers.d/sdl
Defaults env_keep += "SDL_VIDEODRIVER SDL_FBDEV SDL_MOUSEDRV SDL_MOUSEDEV"
EOF

sudo chmod 0440 /etc/sudoers.d/tslib

Nach einem weitern Neustart kann man mittels:

sudo ts_calibrate

den Touchscreen kalibrieren.

Ein Test der Kalibrierung ist mittels:

sudo ts_test

möglich.

Ein Gedanke zu „Raspberry Pi mit Touchscreen LCD“

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.