Écran Tactile et Raspberry Pi

image principale Écran Tactile et Raspberry Pi

Difficulté:

Installer un écran tactile sur son Raspberry Pi.



Ce tutoriel vous apprend de maniére détaillée à installer un écran tactile sur un Raspberry Pi 2.


Je ne décrit pas l’installation du systéme d’exploitation Raspbian, des dizaines de tutoriels existent déjà sur le sujet :



Matériel :

Budget : Non défini

  • Un raspberry Pi 2 — avec son alimentation : Disponible ici
  • Connexion internet — par câble c’est le plus simple.
  • Carte micro-SD de 4Go — pour l’installation du systéme : Disponible ici
  • Un écran tactile TFT Tontec 3″5 (480×320 pixels) — cette taille permet de couvrir entièrement le Raspberry PI avec sa diagonale de 8,9 cm : Disponible ici

Etape 1 : Les branchements


Il s’agît simplement d’enficher la prise de l’écran sur les GPIO. La photo ci-dessus montre le boitier assemblé avec son couvercle écran tactile. Celui indiqué est livré avec un boitier plexiglass 🙂 De plus, son niveau de performance est bon par rapport à la concurrence : https://github.com/notro/fbtft/wiki/Performance

Etape 2 : Mise à jour des pilotes


Nous allons mettre à jour le systéme d’exploitation et les pilotes pour l’écran. J’utilise la Raspbian standard.

$ sudo apt-get update
$ sudo apt-get upgrade
$ sudo reboot

On met à jour les pilotes.
Important : Assurez-vous que la version des pilotes supporte toujours l’écran !

Fil de conversation sur une imcompatibilité avec le firmware 4.0 : https://www.raspberrypi.org/forums/viewtopic.php?f=29&t=113753
 Firmwares : https://github.com/notro/rpi-firmware

Le passage en rpi-udate 4 casse effectivement le pilote MZ61581 de mon Tontec. Pour y remédier, il faut :

sudo REPO_URI=https://github.com/notro/rpi-firmware rpi-update
reboot

Sinon, pour les anciennes Raspbian on se contentera de faire :

sudo rpi-update
sudo reboot
Etape 3 : Activation de l’écran au démarrage.


Éditez /boot/config.txt et y ajouter les lignes suivantes à la fin :

dtparam=spi=on
dtoverlay=mz61581

Comme j’utilise le boitier posé sur sa tranche, j’opère une rotation de l’écran et un petit boost de performance au passage :

dtparam=spi=on
dtoverlay=mz61581,fps=50,rotate=90

La valeur 90 retourne l’image, ne me demandez pas pourquoi. Pour le mode portrait on a les valeurs 180 et 270. Tout ceci figure dans la documentation /boot/overlays/README.

Pour finir cette étape, ajoutez fbcon=map:10 à la fin de la ligne dans /boot/cmdline.txt.

Etape 4 : Affiner la police


Les caractères affichés en console sont plutôt épais. Heureusement, il est possible de changer la police pour afficher 80 colonnes de texte. Lancer la commande sudo dpkg-reconfigure console-setup pour obtenir le menu afficher dans la première image. Suivez les autres images de cette étapes pour achever la configuration.

Etape 5 : Empêcher la mise en veille


Pour réduire la consommation, et ne pas trop fatiguer l’écran, activons la mise en veille automatique et son réveil tactile par un toucher sur l’écran. Il suffit d’installer le paquet gpm par la commande sudo apt-get install gpm.

Si vous voulez complétement empêcher la mise en veille, éditez la configuration avec sudo nano /etc/kbd/config pour changer la ligne BLANK_TIME=30 en BLANK_TIME=0.

Etape 6 : Une interface graphique


Je vous propose d’installer le minimum afin de laisser un maximum de ressources aux programmes. Nous allons installer Openbox et le faire démarrer automatiquement à la connexion de l’utilisateur (ici il s’appelle pi).

Configuration

On va envoyer la sortie vidéo sur l’écran tactile. Changez la ligne Option "fbdev" "/dev/fb0" par Option "fbdev" "/dev/fb1" en éditant le fichier par la commande sudo nano /usr/share/X11/xorg.conf.d/99-fbturbo.conf.

Calibrage de l’écran

Pour que l’écran tactile conserve sa précision, il faut le calibrer. Cette opération s’effectue une seule fois et les données de calibrage seront chargées à chaque démarrage de l’interface graphique.

Installation de xinput_calibrator
$ sudo apt-get install libtool libx11-dev xinput autoconf libx11-dev libxi-dev x11proto-input-dev -y

$ git clone https://github.com/tias/xinput_calibrator
$ cd xinput_calibrator/
$ ./autogen.sh
$ make
$ sudo make install

$ cd ~
$ wget http://s3.amazonaws.com/ttbox/xinput_calibrator_pointercal.sh
$ sudo cp ~/xinput_calibrator_pointercal.sh /etc/X11/Xsession.d/xinput_calibrator_pointercal.sh
Charger les données de calibrages

Pour Openbox : sudo sh -c 'echo "sudo /bin/sh /etc/X11/Xsession.d/xinput_calibrator_pointercal.sh" >> /etc/xdg/openbox/autostart'
 Si vous avez opté pour LXDE : sudo sh -c 'echo "sudo /bin/sh /etc/X11/Xsession.d/xinput_calibrator_pointercal.sh" >> /etc/xdg/lxsession/LXDE-pi/autostart'

Démarrer automatiquement

Éditez ~/.bash_profile pour y ajouter les lignes de lancement de serveur Xorg :

[[ -f ~/.bashrc ]] && . ~/.bashrc

if [ -n "$SSH_CLIENT" ] || [ -n "$SSH_TTY" ]; then
  SESSION_TYPE=remote/ssh
# many other tests omitted
else
  case $(ps -o comm= -p $PPID) in
    sshd|*/sshd) SESSION_TYPE=remote/ssh;;
  esac
fi

[[ -z $SESSION_TYPE ]] && exec startx

La subtilité est de ne pas démarrer le serveur graphique si on fait une connexion distante via SSH.

Éditez ~/.xinitrc pour y mettre le lancement de Openbox :

exec openbox-session

Et pour finir un reboot. La calibration devrait se déclencher car nous nous n’en avons pas encore faite !

Etape 7 : Connexion automatique


Pour connecter automatiquement un utilisateur au démarrage du boîtier, Le plus simple, est d’utiliser raspi-config comme sur les photos.

Si vous voulez faire ça comme un vrai Geek, éditez le fichier /etc/inittab et modifiez la ligne 1:2345:respawn:/sbin/getty --noclear 38400 tty1 comme suit :

…
#1:2345:respawn:/sbin/getty --noclear 38400 tty1
1:2345:respawn:/bin/login -f pi tty1 /dev/tty1 2>&1
…

Voilà, l’utilisateur pi sera automatiquement connecté sans mot de passe à saisir !

Etape 8 : Utilisation


Nous voilà avec une bonne base pour construire de petits serveurs autonomes. Voici quelques idées pour aller plus loin :

  • Créer un routeur wifi sur batteries. Il pourrait sécuriser (parefeu) et anonymiser (réseau Tor) les connexions faites par son intermédiaire,
  • Un boîtier de partage de fichiers par OwnCloud, On lui adjoint un disque dur externe et hop !
  • Un dépôt Git ambulant. Ça c’est ce que j’en ai fait. Une clé USB 32 Go pour le stockage et une interface à la Gitlab. De quoi ravir les développeurs 🙂
  • Un boîtier Framasoft – Dégooglisé : Consultez leur site https://degooglisons-internet.org/.
  • …et vous ? des idées ?

Sympa ! As-tu testé des applications ou des jeux pour voir la réactivité du tactile ?

Le tactile n'est pas capacitif, c'est un film. C'est réactif dans les interfaces graphiques mais pas d'une précision extrême.

Merci pour ce tuto
J'ai acquis un afficheur similaire de chez TONTEC (celui sans la nappe avec connexion directe sur le GPIO du Raspberry) tout fonctionne a merveille sauf la calibration qui m'indique a chaque fois “Miss Click detected” et qui du coup ne fini jamais le calibrage. As tu déjà observé un comportement similaire ? as tu des recommandations (j'ai bien suivi la procédure mentionnée avec l'ecran !)

Je n'ai jamais de souci de calibrage.
Avec quoi appuis-tu sur l'écran ? (J'utilise un vieux stylet de nokia 770)
Quelle est la référence de ton écran ?

La calibration est faite avec xinput_calibrator (http://manpages.ubuntu.com/manpages/saucy/man1/xinput_calibrator.1.html). Ton message d'erreur semble indiquer un manque de précision pour viser le centre des croix.

Le script de calibrage /etc/X11/Xsession.d/xinput_calibrator_pointercal.sh peut être modifié. L'option –misclick XX, avec XX remplacé par le nombre de pixels de précision (par défaut 15), sera ajoutée à la ligne contenant CALDATA=`xinput_calibrator –misclick 32 …

Voici la référence de mon écran http://www.amazon.fr/dp/B013W3NK26/ref=pe_386181_40444391_TE_item et j'ai utilisé le stylet qui était fourni avec. De même j'ai suivi à la lettre l'installation du logiciel de calibrage (qui s'affiche bien à l'écran)

Merci pour cette précision, je vais essayer de modifier ce parametre et voir ce que cela donne

En modifiant ce paramètre (à une valeur de 35) j'arrive bien au bout du process de calibration néanmoins la précision obtenue n'est pas idéale sur les bords. La dalle résistive n'est peut être pas tout a fait linéaire !
Merci pour ton aide

Ces tutoriels devraient vous plaire

vignette Fabriquer une lampe à lave
Fabriquer une lampe à lave
vignette Connecter un  écran LCD en I2C
Connecter un écran LCD en I2C
vignette Montez facilement votre console de jeu rétrogaming avec RECALBOX !
Montez facilement votre console de jeu rétrogaming avec RECALBOX !

Découvrez tous les tutoriels partagés sur Oui Are Makers

Powered by Oui Are Makers