Écran Adafruit 2.8 pouces TFT

De knowledge
Aller à la navigation Aller à la recherche

Installation du PiTFT capacitif Adafruit sur Raspberry Pi

Présentation

Ce module PiTFT 2.8" d’Adafruit combine :

  • Un écran TFT ILI9341 (320×240)
  • Un contrôleur tactile capacitif FT5x06 ou FT6206
  • Une interface GPIO directe pour Raspberry Pi B+, Pi 2, Pi 3

Préparation du système

  • OS recommandé : Raspberry Pi OS Lite ou Desktop
  • Mise à jour :
sudo apt update && sudo apt full-upgrade

Activation du tactile capacitif

Ajouter dans /boot/firmware/config.txt :

dtoverlay=pitft28-capacitive,rotate=90,speed=64000000,fps=30,drm

Si besoin de GPIO personnalisés :

dtoverlay=pitft28-capacitive,touch-reset=5,touch-int=17

Ruse HDMI pour éviter la perte de framebuffer

Sans écran HDMI, le Pi peut désactiver /dev/fb0. Pour forcer sa création :

hdmi_force_hotplug=1
hdmi_group=2
hdmi_mode=87
hdmi_cvt=320 240 60 1 0 0 0

Tests post-installation

  • Vérifier le périphérique tactile :
cat /proc/bus/input/devices
dmesg | grep ft5
sudo evtest /dev/input/eventX
  • Vérifier l’affichage :
sudo cat /dev/urandom > /dev/fb0

Reboot

sudo reboot

Dépannage

GPIO bloqués

Utiliser gpiod pour tester :

gpioset gpiochip0 5=1
gpioget gpiochip0 5

FT5x06 actif mais dalle muette

  • Vérifier la nappe tactile
  • Tester le registre 0x02 via I²C :
sudo i2cget -y 1 0x38 0x02

Utilisation des 4 boutons physiques

Objectif

Utiliser les 4 boutons physiques à gauche de l’écran Adafruit PiTFT comme des touches clavier virtuelles : `1`, `2`, `3`, `4`.

Matériel

  • Raspberry Pi avec écran Adafruit PiTFT 2.8" capacitif
  • Boutons connectés aux GPIO : 17, 22, 23, 27

Méthode

Ajouter les lignes suivantes dans /boot/firmware/config.txt :

dtoverlay=gpio-key,gpio=17,keycode=2,label="BTN1"   # KEY_1
dtoverlay=gpio-key,gpio=22,keycode=3,label="BTN2"   # KEY_2
dtoverlay=gpio-key,gpio=23,keycode=4,label="BTN3"   # KEY_3
dtoverlay=gpio-key,gpio=27,keycode=5,label="BTN4"   # KEY_4

Explication Chaque ligne:

  • Configure le GPIO en entrée avec pull-up
  • Associe un keycode Linux standard
  • Crée un périphérique /dev/input/eventX géré par le noyau

Codes clavier utilisés

Touche simulée Code Linux GPIO utilisé
1 2 (KEY_1) GPIO 17
2 3 (KEY_2) GPIO 22
3 4 (KEY_3) GPIO 23
4 5 (KEY_4) GPIO 27

Test

Lancer :

sudo evtest

Appuyer sur les boutons : chaque pression génère un événement EV_KEY correspondant à la touche simulée.

Utilisation dans un script

Exemple en shell :

read -n1 key
case "$key" in
  1) echo "Bouton 1 pressé" ;;
  2) echo "Bouton 2 pressé" ;;
  3) echo "Bouton 3 pressé" ;;
  4) echo "Bouton 4 pressé" ;;
esac

Cohabitation entre ecran LCD Adafruit et HDMI

Une page spécifique concerne ce point.

Le rétro-éclairage

Après pas mal de bidouillage (même mon ami copilot y a perdu son latin) j'ai trouvé le mécanisme. Je ne suis pas du tout certain que ca marche sur tous les modèles pareil!

Moi j'ai un écran Adafruit 2.8 pouces capacitif qui date de presque dix ans qui tourne sur un Raspberry PI2.

Dans ce cas c'est GPIO 18 qui gère le rétro-éclairage.

Les GPIO sont gérés par un gpiochip512.

Les sudo sont saoulant avec les redirections je conseille de faire les tests en tant que root. sudo su -

cat /sys/class/gpio/gpiochip512/label

Nous donne pinctrl-bcm2835 qui est le gestionaire de GPIO du SoC bcm2835 (c'est un PI2 donc ca devrait être un bcm2836 mais c'est le contrôleur de GPIO qui est resté basé sur la version précédente) On regarde ensuite les caractéristiques :

cat /sys/class/gpio/gpiochip512/base
cat /sys/class/gpio/gpiochip512/ngpio

Nous donne respectivement 512 et 54.

Donc, le gestionnaire de GPIO possède 54 lignes numérotées à partir de 512. La plage est alors de 512 à 566.

Notre GPIO 18 est dont repéré 512+18 = 530

echo 530 > /sys/class/gpio/export
echo out > /sys/class/gpio/gpio530/direction
echo 1 > /sys/class/gpio/gpio530/value   # Allumé
echo 0 > /sys/class/gpio/gpio530/value   # Éteint