Pour créer un jeu (style Memory) avec un vieux Raspberry Pi et un écran tactile j’ai opté pour cet écran Waveshare 4 pouces résistif qui a une résolution de 800×480 pixels. Il se connecte directement à la prise HDMI d’un Raspberry Pi 3 ou Pi 4 ce qui facilite le montage et le paramétrage.
Au sommaire :
Ce tutoriel ne décrit pas en détail toutes les étapes de la mise en œuvre. Si vous débutez, sachez qu’il faudra utiliser un certain nombre de commandes et sans doute chercher un peu si certaines choses ne sont pas claires.
[stextbox id=’warning’ caption=’Connexion Internet’]Pour les différentes manips (mise à jour et installation du logiciel de calibration, il faudra connecter le Raspberry Pi à Internet.[/stextbox]
Déballage du produit
L’écran arrive dans une boîte en carton épais. La boîte n’a pas souffert du voyage.
A l’ouverture on trouve une plaque de mousse découpée. En haut de l’image les deux adaptateurs HDMI / HDMI et HDMI / Micro HDMI qui permettent d’utiliser l’écran avec un Raspberry Pi ancienne génération (prise HDMI) ou un Raspberry Pi 4 (micro HDMI). Au centre, le stylet et les entretoises en laiton avec leurs vis. En bas on aperçoit la prise du connecteur GPIO du clavier.
Une fois enlevés le premier adaptateur on découvre le second.
Sous la première plaque, on découvre la partie inférieure de l’écran. Une plaque de mousse au fond de la boîte assure la protection de l’écran lui-même.
Tout le contenu de la boîte est prêt pour le montage
Les deux adaptateurs HDMI que vous pourrez utiliser en fonction de votre modèle de Raspberry Pi.
Juste pour la photo voici l’adaptateur HDMI/HDMI en place sur l’écran. Ne le connectez pas tout de suite, il faut d’abord configurer le Raspberry Pi avant de connecter l’écran LCD.
On va d’abord modifier la configuration du système. Vous pouvez mettre l’écran en place sur le Raspberry Pi mais connectez toujours la sortie HDMI du Raspberry Pi sur un écran « normal ».
Commencez par créer votre carte SD à partir d’une distribution Raspberry Pi OS avec Raspberry Pi Imager. Mettez la distribution à jour.
Activez dans le menu de configuration : VNC et SSH si vous en avez besoin. J’active VNC pour faciliter les copies d’écran lors de la rédaction des articles. De plus j’ai fait la configuration depuis VNC pour ne pas être embêté par la sortie HDMI.
Mettre le Raspberry Pi sous tension. L’écran démarre mais affiche plusieurs fois une partie de l’image.
Sous VNC l’écran s’affiche en 640×480…
Pour adapter la sortie HDMI à l’écran, on va modifier le fichier /boot/config.txt
Ouvrez le fichier config.txt avec nano
1 |
sudo nano /boot/config.txt |
Ajoutez à la fin du fichier
1 2 3 4 5 6 7 |
hdmi_group=2 hdmi_mode=87 hdmi_timings=480 0 40 10 80 800 0 13 3 32 0 0 0 60 0 32000000 3 dtoverlay=ads7846,cs=1,penirq=25,penirq_pull=2,speed=50000,keep_vref_on=0,swapxy=0,pmax=255,xohms=150,xmin=200,xmax=3900,ymin=200,ymax=3900 display_rotate=3 hdmi_drive=1 hdmi_force_hotplug=1 |
Avec un Raspberry Pi 4 il faut décommenter (enlever le #) de la ligne
1 |
#dtoverlay=vc4-fkms-V3D. |
Lorsque ces modifs sont faites, enregistrez le fichier config.txt (CTRL+X) ajoutez le pilote de la partie tactile de l’écran. Ouvrez un terminal et entrez :
1 2 3 4 |
git clone https://github.com/waveshare/LCD-show.git cd LCD-show/ chmod +x LCD4-800x480-show ./LCD4-800x480-show |
Après redémarrage, la partie tactile de l’écran fonctionnera.
Tourner l’image sur l’écran LCD tactile
Une fois le driver installé, l’orientation de l’image sur l’écran peut être modifiée avec ces commandes :
Rotation de 0 degré (si on le lance au début… on ne change rien en fait 😛 mais ça permet de faire revenir l’affichage dans sa position de départ… )
1 2 |
cd LCD-show/ ./LCD4-800x480-show 0 |
Rotation de 90 degrés
1 2 |
cd LCD-show/ ./LCD4-800x480-show 90 |
Rotation de 180 degrés
1 2 |
cd LCD-show/ ./LCD4-800x480-show 180 |
Rotation de 270 degrés
1 2 |
cd LCD-show/ ./LCD4-800x480-show 270 |
En fonction de l’utilisation que vous allez faire de votre écran et de son positionnement, vous pourrez tourner l’affichage.
Calibrer l’écran tactile LCD
Cet écran LCD tactile peut être calibré avec l’utilitaire xinput-calibrator. Pensez bien à connecter le Raspberry Pi à Internet avant de lancer l’installation.
Ouvrez un terminal et exécutez la commande suivante :
1 |
sudo apt-get install xinput-calibrator |
Lorsque l’installation est finie, vous trouvez dans le menu « Préférences » Calibrate Touchscreen » qui va servir à calibrer l’écran tactile. Cliquez dessus pour ouvrir le logiciel de calibration.
Le logiciel affiche une croix dans un angle. utilisez le stylet pour cliquer sur le cercle au centre de la cible. Vous aurez à répéter cette opération pour les 4 angles de l’écran. Le logiciel peut ainsi savoir exactement où les croix sont affichées et quelles sont les éventuelles corrections à apporter.
Au centre de l’écran un timer défile. Si pour une raison quelconque l’écran tactile ne perçoit pas vos appuis avec le stylet, a la fin du temps, le programme se fermera.
Vous obtenez alors le résultat de la calibration. La partie entourée en jaune est celle qui nous intéresse. copiez la et collez la dans un fichier /etc/X11/xorg.conf.d/99-calibration.conf. S’il n’existe pas créez le ainsi que le répertoire qui le contient.
1 2 |
sudo mkdir /etc/X11/xorg.conf.d sudo nano /etc/X11/xorg.conf.d/99-calibration.conf |
et collez dans le fichier le texte récupéré lors de la calibration.
Vos paramètres seront différents car ils dépendent de l’écran et sont personnalisés. Redémarrez le Raspberry Pi pour prendre les modifications en compte.
Installer un clavier virtuel
Installer matchbox
Conformément au choix du fabricant je vous propose d’installer le clavier virtuel matchbox. Je vous avais présenté ce clavier et expliqué comment le passer en AZERTY dans un article du blog fin 2016.
Exécuter dans un terminal la ligne de commande suivante pour installer le logiciel du clavier.
1 |
sudo apt-get install matchbox-keyboard |
A la fin de l’installation faites un reboot et vous trouverez maintenant une entrée « Keyboard » dans le menu Accessoires.
Si vous cliquez sur Keyboard vous ouvrez le clavier virtuel qui est en QWERTY. Je vous explique comment le mettre en français dans cet article. Mais on va le voir plus loin dans cet article.
Créer un script pour démarrer le clavier
Ouvrez un terminal et tapez en ligne de commande
1 |
sudo nano /usr/bin/toggle-keyboard.sh |
Copier dans le fichier les lignes suivantes :
1 2 3 4 5 6 7 8 9 10 |
#!/bin/bash PID=`ps -eaf | grep matchbox-keyboard | grep -v "grep" | awk '{print $2}'` echo $PID if [[ "" != "$PID" ]]; then #echo "killing $PID" kill -9 $PID else #echo "Demarrage clavier" matchbox-keyboard fi |
Enregistrez le fichier et fermez nano. Rendez le fichier exécutable. Ce fichier teste si matchbox tourne. Si c’est le cas, il le supprime, sinon il le lance. Je vous laisse décortiquer ces quelques lignes, c’est toujours instructif 😉 Le script diffère d’ailleurs de ce qu’il y a dans le Wiki et dans ce que j’ai trouvé sur certains forums… Sinon ça ne fonctionnait pas.
1 |
sudo chmod +x /usr/bin/toggle-keyboard.sh |
Créez un fichier toggle-matchbox-keyboard.desktop
1 2 |
sudo mkdir /usr/local/share/applications sudo nano /usr/local/share/applications/toggle-matchbox-keyboard.desktop |
Copiez les ligne suivantes dans toggle-matchbox-keyboard.desktop, enregistrez le fichier et sortez de nano.
1 2 3 4 5 6 7 8 |
[Desktop Entry] Name=Toggle Matchbox Keyboard Comment=Toggle Matchbox Keyboard` Exec=toggle-keyboard.sh Type=Application Icon=matchbox-keyboard.png Categories=Panel;Utility;MB X-MB-INPUT-MECHANSIM=True |
Exécutez la commande suivante. Attention : il faut l’exécuter en étant connecté comme utilisateur « pi ». Si vous faites cette commande comme administrateur, le fichier ne sera pas trouvé.
1 |
sudo nano /etc/xdg/lxpanel/LXDE-pi/panels/panel |
Dans le fichier, trouvez le code ci-dessous (il peut différer selon la version de l’OS).
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
Plugin { type=launchbar Config { Button { id=lxde-x-www-browser.desktop } Button { id=pcmanfm.desktop } Button { id=lxterminal.desktop } } } |
Ajoutez le code d’un nouveau bouton, comme ci-dessous
1 2 3 |
Button { id=/usr/local/share/applications/toggle-matchbox-keyboard.desktop } |
Vous obtenez ceci
Redémarrez le Raspberry Pi pour prendre toutes les modifications en compte. Vous devriez maintenant avoir un écran comme celui-ci
Pour appeler/fermer le clavier virtuel à l’écran, il suffit de cliquer sur l’icône du clavier. En même temps vous avez la méthode pour créer une bascule/toggle pour une application et pour la ranger dans la barre des tâches.
Franciser le clavier
Quand on a l’habitude d’utiliser un clavier QWERTY, on n’y fait même plus attention, à part pour quelques caractères spéciaux qu’il faut chercher un peu.
L’idée c’est de franciser le clavier et de le transformer en AZERTY. La description du clavier est contenue dans un fichier xml. Jean-Jacques a modifié ce fichier pour qu’il corresponde à nos habitudes. Certaine touches, ont du rester à la même place que sur la config de départ comme « Alt Gr » , en bas à gauche du clavier, juste à coté de la touche « Ctrl« , et la touche « * » également, elle est située à coté de la touche « $« .
Ce clavier affiche soit les caractères minuscules (mode normal), soit les caractères majuscules (appui sur la touche « Shift » pour un seul caractère ou sur « Caps Lock » pour rester en majuscules jusqu’à nouvel appui) soit les caractères spéciaux (appuis sur la touche « AltGr« ). Ces touches se déverrouillent par un nouvel appui.
Le clavier modifié est disponible en cliquant sur ce lien. Le fichier est au format .zip il faudra le dézipper pour l’utiliser.
Avant de faire quelque modification que ce soit, faites une sauvegarde du fichier keyboard.xml d’origine. En cas de problème, ce fichier vous permettra de revenir à la situation de départ. C’est d’ailleurs une bonne habitude à prendre 😉
Dans mon cas le fichier keyboard.xml a été téléchargé puis dézippé sur le Bureau de Raspbian. Vous adapterez les commandes à votre propre cas. Ce fichier est à insérer dans le répertoire /usr/share/matchbox-keyboard.
Dans cet exemple, j’ai renommé le fichier d’origine en keyboard.xml.org, puis j’ai copié le fichier keyboard.xml depuis le bureau vers le dossier /usr/share/matchbox-keyboard. La dernière ligne matchbox-keyboard lance le clavier virtuel depuis le terminal.
1 2 3 4 5 6 |
pi@raspberrypi:~ $ cd Desktop pi@raspberrypi:~/Desktop $ ls keyboard.xml pi@raspberrypi:~/Desktop $ sudo mv /usr/share/matchbox-keyboard/keyboard.xml /usr/share/matchbox-keyboard/keyboard.xml.old pi@raspberrypi:~/Desktop $ sudo cp keyboard.xml /usr/share/matchbox-keyboard/keyboard.xml pi@raspberrypi:~/Desktop $ matchbox-keyboard |
Matchbox : le clavier AZERTY
Voilà, vous disposez maintenant d’un clavier virtuel, bien pratique pour certaine applications utilisant un écran tactile, mais ne comportant ni clavier ni souris.
Pendant que la souris est encore connectée, faites un clic droit sur la barre en haut du clavier et configurez le pour qu’il reste au premier plan. C’est plus pratique 🙂
Conclusion
J’ai trouvé cet écran sur Amazon (pub gratuite – lien non affilié). il a été livré rapidement, en quelques jours.
En intérieur la qualité est tout à fait exploitable et l’utilisation avec le stylet ne pose pas de problème. La fixation est costaude avec d’un côté le connecteur GPIO et de l’autre le connecteur HDMI. Les deux cartes restent stables l’une par rapport à l’autre.
Si vous utilisez cet écran et que vous voulez faire des remarques, sur l’écran lui-même ou sur le contenu de cet article, utilisez les commentaires ci-dessous.
Vidéo
Sources
- https://www.waveshare.com/wiki/4inch_HDMI_LCD
- https://www.waveshare.com/4inch-hdmi-lcd.htm
- https://github.com/xlab/matchbox-keyboard
Bonjour, et encore une fois merci pour cet article.
Juste pour dire que j’ai eu un problème avec le clavier Matchbox sur un écran officiel Raspberry et un vieux raspi : après une utilisation du clavier, j’ai une bande blache à gauche de l’écran (grosso modo de la largeur du menu quand on l’ouvre), que je ne peux plus faire disparaître, même en rebootant. Pour le moment j’ai supprimé le logiciel de clavier virtuel.
Bonjour,
Merci pour le travail que vous effectuez pour la communauté pi.Je réalise un projet Diy (lecteur réseau) à base d’un raspberry pi 3B+,D’un écran tactile Waveshare 4 pouces 800×480 pixel sur Raspberry Pi, d’un DAC AUDIOPHONICS DAC I-Sabre ES9038Q2M Raspberry Pi / I2S & SPDIF / PCM DSD Alimentation USB-C le tout sur une base du logiciel Volumio. Tout se passe bien jusqu’au moment ou je mets l’ensemble sous tension.L’écran ne fait que clignoter sans aucun affichage. Est il nécessaire d’ajouter des drivers et lesquels ou d’autres manipulations?Je compte beaucoup sur votre retour car mon projet est en phase finale.
Cdt
Fabrice DURAND
Logiciel Volumio 3.175-2021-12-13-pi.img installé sur une carte durand
Bonjour Fabrice
effectivement pour ce genre d’écran il y a souvent des drivers à installer
les infos sont ici (vérifiez bien si c est le même type d’écran !)
https://www.waveshare.com/wiki/4inch_HDMI_LCD?Amazon
Après ça va dépendre aussi de la distribution sur laquelle volumio tourne…
pour vos tests si vous avez une carte SD qui fonctionne avant install des drivers et de l’écran Waveshare, je vous conseille de la cloner et de ne travailler que sur la copie
ça vous permet de faire les tests avec l’âme en paix, même si ça plante vous avez ce qu’il faut pour redémarrer…
tenez moi au courant
cdt
françois