Écran Tactile et Raspberry Pi

Medium ojqjeswif1p9b0urabws

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 :


  • Guide officiel (anglais) : https://www.raspberrypi.org/documentation/installation/installing-images/

  • En français : http://raspbian-france.fr/installer-raspbian-premier-demarrage-configuration/
  • Matériel

    Budget:

    1 €

  • Un raspberry Pi 2 — avec son alimentation : Disponible ici
  • 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
  • Connexion internet — par câble c’est le plus simple.

    Etape 1 : Les branchements

    Medium jphwfjuq9unjisu2hgyz


    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

    Medium wiu2qnemvsbmny7h2mpp


    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

    Medium zjq0pnm9bg62z7juuo3o


    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 ?

    Vous aimez ce tutoriel ?


    Ipxav

    07 juil. 2016 à 10:23

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

    yar0d

    07 juil. 2016 à 10:23

    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.

    PatrickH

    07 juil. 2016 à 10:25

    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 !)

    yar0d

    07 juil. 2016 à 10:25

    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 ?

    yar0d

    07 juil. 2016 à 10:25

    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 …

    PatrickH

    07 juil. 2016 à 10:25

    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)

    PatrickH

    07 juil. 2016 à 10:26

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

    PatrickH

    07 juil. 2016 à 10:26

    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

    PatrickH

    07 juil. 2016 à 10:26

    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



    Légendaire

    + de 10 000 vues pour Écran Tactile et Raspberry Pi


    S'inscrire:


    • Vues: 17404
    • J'aime: 7