Post

_Raspberry TFT LCD ili9341 Utilisation du module adafruit

_Raspberry TFT LCD ili9341 Utilisation du module adafruit

_Raspberry TFT LCD ili9341 Utilisation du module adafruit

Utilisation du module adafruit

Chargement module

Raspbian Stretch intègre nativement le module fbtft
Problème: le module fbtft_device ne se charge pas au démarrage

Solution: Modifier le fichier /etc/rc.local pour y ajouter le chargement du module (avant exit 0)
et une autre commande pour éviter la mise en veille de l’afficheur

Ajouter les lignes suivantes au fichier /etc/rc.local sur la ligne avant la sortie finale ( exit 0)

1
2
3
#exec /sbin/modprobe fbtft_device name=adafruit28 speed=48000000 rotate=90 verbose=1
exec /sbin/modprobe fbtft_device name=adafruit28 gpios=reset:25,dc:24,led:23 speed=48000000 rotate=90 verbose=1
sudo sh -c "TERM=linux setterm -blank 0 >/dev/tty0" # pour éviter le passage en veille

Description:

  • name permet de préciser le module suivant le modèle d’écran
    • TFT 2”2 ILI9340 module adafruit22a
    • TFT 2”8 ILI9341 + touch screen module adafruit28
  • gpios désigner les ports du raspberry pour reset dc et led
  • verbose=1 indique que des informations complémentaires doivent être retournées
  • La vitesse du bus SPI (32Mhz par défaut) a été augmentée en ajoutant l’option speed au module fbtf_device (ex: 48000000 pour 48Mhz) : fbtft_device name=adafruit22a speed=48000000
  • Le passage du mode portrait 240x320 en mode paysage 320x240 avec l’option rotate=90 :

Redémarrer

1
sudo reboot

Le système utilise un mécanisme appelé “framebuffer” qui est une représentation mémoire des pixels qui compose l’écran.
Le raspberry Pi dispose déjà d’un périphérique de ce type /dev/fb0 , l’affichage connecté à la prise HDMI de la carte.
fbset nous retourne ses caractéristiques

1
$ fbset
1
2
3
4
5
mode "656x416"
    geometry 656 416 656 416 32
    timings 0 0 0 0 0 0 0
    rgba 8/16,8/8,8/0,8/24
endmode

Nous pouvons faire la même opération pour notre afficheur /dev/fb1

1
$ fbset -fb /dev/fb1
1
2
3
4
5
6
mode "320x240"
    geometry 320 240 320 240 16
    timings 0 0 0 0 0 0 0
    nonstd 1
    rgba 5/11,6/5,5/0,0/0
endmode

Avec la philosophie UNIX qui nous dit que “tout est fichier” , on peut tester de façon simple le fonctionnement de l’écran
Comme le “framebuffer” est un fichier (/dev/fb1) ,il suffit d’y écrire des données aléatoires pour qu’une myriade de pixels de couleurs variables s’affiche:

1
2
$ cat /dev/urandom > /dev/fb1
   cat: erreur d'écriture: Aucun espace disponible sur le périphérique

On prend des données aléatoires (générateur sans fin /dev/urandom) pour les copier dans l’afficheur (/dev/fb1) et quand l’afficheur est rempli , on sort en erreur.

Ecran TFT LCD comme écran du système

Pour que Linux affiche les informations de démarrage et une console sur l’écran , nous devons regarder le fichier cmdline présent sur la partition FAT de la carte SD.
Editer le fichier /boot/cmdline.txt

1
$ sudo nano /boot/cmdline.txt 

Ajouter les options en fin de ligne

1
fbcon=map:10 fbcon=font:VGA8x8

On précise que l’on souhaite une console et une police de caractères avec ce nouveau framebuffer
Redémarrage , pour voir s’afficher les messages à l’écran

1
sudo reboot

Les options font pour la police et map pour la correspondance

L’option map permet d’établir la correspondance entre le terminal tty et le périphérique “framebuffer” , nous avons choisi 10

  • premier terminal tty1 –> fb1
  • second terminal tty2 –> fb0 (sortie HDMI)
  • pour le reste on boucle :
    • tty3 –> fb1 , tty4 –> fb0 , etc…

Si l’on ne veut pas de la sortie HDMI (fb0) ,positionner l’option map:1 et tous les terminaux tty seront associés au mini-écran (la bascule entre tty se fait par Alt+[F1],Alt+[F2],etc…)
L’option rotate ne concerne que la rotation de la console et non du framebuffer qui est géré par le pilote

Améliorer la résolution écran

Reconfigurer le paquet “console-setup”

1
sudo dpkg-reconfigure console-setup
  • UTF-8
  • Choix automatique du jeu de caractères adapté
  • OK
  • Terminus
  • 6x12 (uniquement tampon vidéo (« framebuffer »))

Redémarrer le système

1
sudo reboot

Interface graphique sur Raspbian Lite (xorg+RPD)

Raspbian Lite with RPD/LXDE/XFCE/MATE/i3/Openbox/X11 GUI

Cette partie suivante se concentre sur l’installation d’une interface graphique sur Raspbian Lite. Afin d’avoir une interface graphique, nous avons besoin de ces 4 choses :

  1. Serveur d’affichage
  2. Environnement de bureau
  3. Gestionnaire de fenêtres
  4. Gestionnaire de connexion

Puisque nous avons besoin de 4 choses, pour nous faciliter la vie, ces 4 choses sont :

  1. Serveur d’affichage Xorg
  2. Raspberry Pi Desktop (RPD) ou Lightweight X11 Desktop Environment (LXDE) ou XFCE Desktop Environment (XFCE) ou MATE Desktop Environment (MATE)
  3. Openbox Window Manager (RPD/LXDE) ou XFWM Window Manager (XFCE) ou Marco Window Manager (MATE)
  4. Gestionnaire de connexion LightDM

Pour ceux qui connaissent Linux, vous vous demandez peut-être pourquoi le gestionnaire de connexion choisi ici est LightDM. Pour la plupart, il est léger et il a l’air joli. Mais une fonctionnalité qui, je crois, se distingue des autres gestionnaires de connexion est la possibilité d’exécuter le client Synergy sans erreurs. Synergy est un utilitaire qui vous permet d’utiliser la souris et le clavier d’un ordinateur (Windows, Mac, ou Linux) et de le partager avec un autre ordinateur, dans ce cas, un Raspberry Pi. Bien sûr, vous pouvez installer un autre gestionnaire de connexion si vous ne voulez pas de LightDM.

Certains utilisateurs peuvent ne pas vouloir de gestionnaire de connexion. Cela dépend de l’utilisation que vous ferez de votre Raspberry Pi. Par exemple, nous pouvons vouloir que le Pi démarre toujours dans la ligne de commande et s’il est nécessaire de lancer un environnement de bureau, une simple commande vous permettra de le lancer. Poursuivez votre lecture pour en savoir plus.

Puisque nous nous concentrons sur Raspbian Lite, alors l’interface graphique installée sera aussi “lite”. Je comprends que “lite” peut avoir différentes significations, mais les débutants sont ici au centre de l’attention. L’important ici est que les utilisateurs personnalisent leur Pi, sans se fier au Raspbian pré-construit. Je crois que ce sont les meilleures options d’interface graphique. Comme toujours, vous êtes libre d’utiliser ce que vous voulez. À l’avenir, nous allons installer le noyau de RPD, LXDE, XFCE, ou MATE. Cela nous donnera seulement l’interface graphique. Il n’y aura pas d’autres applications installées que les composants PIXEL, LXDE, XFCE ou MATE requis tels qu’un gestionnaire de fichiers, un terminal et des paramètres.

  1. Allumez votre Pi et connectez-vous. Nous allons installer Xorg. Pour ce faire, tapez :

    sudo apt-get install –no-install-recommends xserver-xorg

et appuyez sur Entrée. Il y aura beaucoup de paquets dépendants à installer mais ceux-ci doivent être installés pour que l’interface graphique fonctionne. Installez les paquets.

Si vous installez xserver-xorg uniquement, vous n’aurez pas la possibilité de lancer le serveur d’affichage Xorg depuis la ligne de commande. Ce serait un problème si vous ne prévoyez pas d’installer un gestionnaire de connexion. Sinon, vous n’avez pas besoin de le faire. Si c’est le cas, vous pouvez également installer xinit en tapant :

1
sudo apt-get install --no-install-recommends xinit

et appuyez sur Entrée. Il y aura plus de paquets dépendants à installer mais ceux-ci doivent être installés pour que vous puissiez démarrer le serveur Xorg Display Server depuis la ligne de commande si aucun gestionnaire de connexion n’est installé. Installez les paquets.

  1. Interface graphique RPD (Raspberry Pi Desktop)

RPD est un environnement de bureau conçu par la Raspberry Pi Foundation. Il est conçu pour être facile à utiliser, c’est pourquoi il semble simple. Le backend de RPD est LXDE, qui est un excellent choix car il est connu pour sa faible utilisation de mémoire. Pour cet environnement de bureau, vous avez deux choix. Vous pouvez installer l’environnement de bureau RPD de base ou une version dépouillée de celui-ci. L’environnement de bureau RPD de base est le même que celui inclus dans la distribution Raspbian régulière, mais sans applications préinstallées. Les éléments essentiels tels que les paramètres, le gestionnaire de tâches, le terminal et le gestionnaire de fichiers sont inclus. Pour installer l’environnement de bureau RPD de base, tapez :

1
sudo apt-get install raspberrypi-ui-mods

et appuyez sur Entrée. Il y aura beaucoup de paquets dépendants à installer mais ceux-ci doivent être installés pour que l’interface graphique fonctionne. Installez les paquets.

La version dépouillée de l’environnement de bureau RPD ne contient que le gestionnaire de fichiers et les paramètres d’apparence, audio, réseau et Bluetooth. Il n’y a pas de prise en charge de la corbeille, pas de montage de lecteurs, ni de terminal inclus puisque les composants requis ne sont pas installés par défaut. Aucune autre application n’est incluse non plus. Cependant, vous pouvez ajouter ces composants plus tard si vous le souhaitez. Si vous voulez installer la version dépouillée de l’environnement de bureau RPD, tapez :

1
sudo apt-get install --no-install-recommends raspberrypi-ui-mods lxsession

et appuyez sur Entrée. Il y aura beaucoup de paquets dépendants à installer mais ceux-ci doivent être installés pour que l’interface graphique fonctionne. Installez les paquets.

Maintenant, voici une liste de paquets que vous voudrez peut-être installer si vous installez la version dépouillée de RPD :

pi-greeter : The Raspberry Pi LightDM login theme
rpd-icons : The Raspberry Pi Desktop icon theme
gtk2-engines-clearlookspix : GTK Theme Engine (used to render Raspberry Pi LightDM login/desktop theme properly)

Openbox Window Manager est installé par défaut lorsque vous installez RPD.

Ecran tactile (Xorg uniquement)

Les paramètres de l’écran tactile (TouchScreen SPI TFT LCD 2.8p ILI9341 avec cint XPT2846 compatible ADS7846)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
Name:   ads7846
Info:   ADS7846 Touch controller
Load:   dtoverlay=ads7846,<param>=<val>
Params: cs                       SPI bus Chip Select (default 1)
        speed                    SPI bus speed (default 2MHz, max 3.25MHz)
        penirq                   GPIO used for PENIRQ. REQUIRED
        penirq_pull              Set GPIO pull (default 0=none, 2=pullup)
        swapxy                   Swap x and y axis
        xmin                     Minimum value on the X axis (default 0)
        ymin                     Minimum value on the Y axis (default 0)
        xmax                     Maximum value on the X axis (default 4095)
        ymax                     Maximum value on the Y axis (default 4095)
        pmin                     Minimum reported pressure value (default 0)
        pmax                     Maximum reported pressure value (default 65535)
        xohms                    Touchpanel sensitivity (X-plate resistance)
                                 (default 400)

        penirq is required and usually xohms (60-100) has to be set as well.
        Apart from that, pmax (255) and swapxy are also common.
        The rest of the calibration can be done with xinput-calibrator.
        See: github.com/notro/fbtft/wiki/FBTFT-on-Raspian
        Device Tree binding document:
        www.kernel.org/doc/Documentation/devicetree/bindings/input/ads7846.txt

Ajouter prise en charge de l’écran tactile en utilisant ads7846-overlay.dtb dans les “overlays” du dossier /boot/overlays/

1
sudo nano /boot/config.txt
1
2
3
[...]
dtoverlay=ads7846,cs=1,penirq=26,xmin=200,xmax=3900,ymin=200,ymax=3900,xohms=60,pmax=255,swapxy
[...]

Après reboot

1
dmesg |grep ads
1
2
[   23.711354] ads7846 spi0.1: spi0.1 supply vcc not found, using dummy regulator
[   23.724141] ads7846 spi0.1: touchscreen, irq 169

Etalonnage

Touchscreen calibration with GUI
https://learn.adafruit.com/adafruit-pitft-28-inch-resistive-touchscreen-display-raspberry-pi/resistive-touchscreen-manual-install-calibrate

Vérifier la prise en charge du module basé sur la puce ADS7843 (compatible avec ads7846)

1
2
lsmod |grep hwmon
    hwmon                  16384  2 rtc_ds1307,ads7846

Ce module fournit les informations au système /dev/input/event0 ,on peut tester

1
sudo cat /dev/input/event0

Puis toucher l’écran tactile avec un stylet, des éléments binaires sont générés sur l’écran.Ctrl C pour arrêter le test

tslib est une bibliothèque qui sert de couche d’abstraction commune pour les événements sur écran tactile. Il comprend des filtres (par exemple pour lisser les événements et calibrer).
Installation des utilitaires de l’écran tactile

1
sudo apt -y install libts-bin

Pour utiliser ts_calibrate et ts_test, vous devez définir des variables d’environnement.
On passe en mode su (sudo)

1
2
3
sudo -s
export TSLIB_TSDEVICE=/dev/input/event0
export TSLIB_FBDEVICE=/dev/fb1

Cela va créer une configuration sur la console courante.
Ensuite, lancez le processus d’étalonnage:

1
ts_calibrate

Cela affichera un écran avec un réticule et des instructions.
Touchez le centre de la croix avec votre stylet. Répétez la procédure jusqu’à la sortie du logiciel.
Tester l’étalonnage

1
ts_test

Cela affichera une croix que vous pouvez déplacer et glisser autour. Vous pouvez également passer en mode dessin .

N’oubliez pas de configurer les variables d’environnement, si vous exécutez la commande à partir d’une autre console.

Additifs

Cet article est sous licence CC BY 4.0 par l'auteur.