Comment Configurer un Écran LCD TFT pour Raspberry Pi

Partagez votre affection

Pour les ingénieurs en logiciel embarqué, les bidouilleurs de matériel et les architectes de l'IIoT industriel, le Raspberry Pi est le roi incontesté du prototypage rapide. Dans son état par défaut “ sans tête ” (accessible via SSH), c'est un cheval de bataille silencieux et invisible. Mais dès que vous avez besoin d'une Interface Homme-Machine (IHM) – que vous construisiez un thermostat domotique, un pupitre de commande d'atelier ou un prototype d'appareil médical sur mesure – vous devez combler le fossé entre le code et l'interaction physique.

L'intégration d'un écran LCD TFT pour Raspberry Pi est souvent le rite de passage le plus frustrant du développement matériel. Si vous avez déjà branché un écran sur les connecteurs GPIO de votre Pi pour être accueilli par le tristement célèbre “ Écran Blanc de la Mort ”, vous savez exactement à quel point cette intégration peut être complexe.

Ce guide technique complet et étape par étape vous expliquera les connexions matérielles précises, les overlays du Device Tree Linux sous-jacents et les configurations logicielles modernes Wayland/X11 nécessaires pour déployer avec succès un écran LCD TFT sur un Raspberry Pi.

1. Triage architectural : Comprendre votre interface d'affichage

Avant de toucher un seul câble Dupont ou de taper sudo nano, vous devez comprendre comment comment votre écran communique avec le Raspberry Pi. La méthode de connexion dicte entièrement la fréquence d'images, la charge processeur et les pilotes logiciels requis.

Il existe quatre principales façons de connecter un écran LCD TFT pour Raspberry Pi.

A. L'interface SPI (Serial Peripheral Interface)

C'est l'interface la plus courante pour les petits écrans (1,5″ à 3,5″). Ces écrans se placent directement sur le connecteur GPIO 40 broches.

  • La réalité : Le SPI est un protocole série. Il envoie les données pixel par bit. Il est intrinsèquement lent.
  • Cas d'utilisation : Parfait pour les interfaces utilisateur statiques, les affichages de capteurs ou les tableaux de bord riches en texte.
  • Limites : N'espérez pas lire une vidéo à 60 FPS sur un écran SPI. Vous êtes physiquement limité par la vitesse du bus SPI (généralement plafonnée entre 32 MHz et 48 MHz), ce qui donne un maximum de 15 à 25 FPS sur un écran de résolution 320×480. Une charge processeur élevée est nécessaire pour envoyer les pixels.

B. L'interface MIPI DSI (Display Serial Interface)

Celle-ci utilise le connecteur à ruban dédié sur la carte Raspberry Pi (étiqueté “ DISPLAY ” ou “ MIPI ” sur les modèles Pi 5).

  • La réalité : Le DSI est une interface différentielle à haute vitesse qui accède directement au GPU Broadcom du Raspberry Pi.
  • Cas d'utilisation : L'option absolument optimale pour des interfaces utilisateur fluides, la lecture vidéo et les graphiques complexes. Elle libère entièrement le CPU et laisse vos broches GPIO disponibles pour d'autres capteurs.
  • Limites : Les écrans DSI sont généralement limités aux écrans officiels Raspberry Pi ou à des modèles tiers spécifiques avec des puces pont personnalisées.

C. L'interface DPI (Display Parallel Interface)

Le DPI utilise presque toutes les broches GPIO (jusqu'à 24 broches pour la couleur RGB888, plus les signaux de synchronisation) pour piloter un panneau LCD brut.

  • La réalité : Il offre des vitesses similaires au HDMI et une charge processeur nulle sans utiliser l'encombrant port HDMI.
  • Cas d'utilisation : Bornes d'arcade personnalisées ou constructions industrielles où le port HDMI est bloqué ou nécessaire pour un écran secondaire.
  • Limites : Vous perdez presque toutes vos broches GPIO. Vous ne pouvez pas facilement ajouter de capteurs I2C ou de boutons SPI.

D. Le Combo HDMI / USB

Les grands écrans LCD TFT pour Raspberry Pi (5 pouces à 10 pouces) utilisent souvent le HDMI standard pour le signal d'affichage et un câble USB pour l'interface tactile.

  • La réalité : Simplicité du plug-and-play. Le Pi le traite comme un moniteur de bureau standard.
  • Limites : Câblage encombrant. Il est difficile de l'intégrer proprement dans un boîtier de produit sur mesure et fin.

Pour les besoins de ce guide pratique, nous nous concentrerons sur l'intégration la plus notoirement difficile : l' écran GPIO basé sur SPI, car elle nécessite la compréhension la plus approfondie du noyau Linux.


2. Assemblage matériel : Câblage de l'écran SPI

Si votre écran SPI ne s'enclenche pas directement sur les connecteurs GPIO comme un “ HAT ” (Hardware Attached on Top), vous devrez le câbler manuellement.

La Règle d'Or du Matériel

Ne jamais câbler un écran lorsque le Raspberry Pi est sous tension. Le branchement à chaud des broches GPIO peut provoquer une surtension qui détruira instantanément le circuit intégré pilote de l'écran LCD ou, pire, griller le SoC Broadcom du Raspberry Pi.

Anatomie du brochage SPI

Pour faire fonctionner un écran LCD TFT pour Raspberry Pi standard en SPI, vous devez connecter l'alimentation, le bus SPI (MOSI, SCLK, CE) et les broches de contrôle (DC, Reset).

Voici le mapping standard que vous devez exécuter à l'aide de câbles Dupont femelle-femelle :

Broche de l'ÉcranFonctionBroche Physique Raspberry PiBroche BCM GPIO Raspberry Pi
VCC/5VPuissanceBroche 2 ou 4Alimentation 5V
GNDMasse (GND)Broche 6 (ou toute GND)Masse (GND)
MOSI (SDI)Données vers l'ÉcranBroche 19GPIO 10 (SPI0_MOSI)
SCLK (SCK)Horloge SPIBroche 23GPIO 11 (SPI0_SCLK)
CS / CE0Sélection de Puce (Chip Select)Broche 24GPIO 8 (SPI0_CE0)
DC / RSDonnées/CommandeBroche 22 (Valeur par défaut courante)GPIO 25
RST / RESRéinitialisationBroche 18 (Valeur par défaut courante)GPIO 24
BLK / LEDRétro-éclairageBroche 12 (PWM) ou 3.3VGPIO 18 (PWM0)

Conseil technique : Les DC (Données/Commande) La broche DC est cruciale. Le SPI ne transmet que des 1 et des 0. Le contrôleur d'affichage (comme l'ILI9341) doit savoir si ces 1 et 0 représentent des données de couleur de pixel ou des commandes système (comme “allumer l'écran”). La broche DC bascule à l'état haut ou bas pour indiquer au contrôleur comment interpréter les données SPI entrantes.


3. Configuration du noyau : La superposition de l'arborescence de périphériques (Device Tree Overlay)

Vous avez câblé l'écran. Vous allumez le Pi. L'écran s'illumine, mais il est entièrement blanc. C'est l'Écran Blanc de la Mort.. Cela signifie que le rétroéclairage est alimenté, mais que le noyau du Raspberry Pi ne sait pas que l'écran existe, donc il n'envoie aucune donnée de pixel.

Nous devons indiquer au noyau Linux comment communiquer avec l'écran. Dans les versions modernes de Raspberry Pi OS (Bookworm et ultérieures), cela se fait via des superpositions de l'arborescence de périphériques (dtoverlay).

Étape 3.1 : Activer le bus SPI

Tout d'abord, vous devez déverrouiller le matériel SPI sur le Pi.

  1. Connectez-vous en SSH à votre Raspberry Pi.
  2. Exécutez l'outil de configuration :Bashsudo raspi-config
  3. Naviguez jusqu'à Options d'interface -> SPI -> Sélectionnez Oui pour activer.
  4. Redémarrez le Pi.

Étape 3.2 : Identifier votre contrôleur d'affichage (le pilote)

Les panneaux LCD TFT sont des plaques de verre passives. Ils sont pilotés par une micropuce collée à l'arrière du verre (ou sur le PCB). Les contrôleurs les plus courants sur les marchés de fabricants européens/américains sont :

  • ILI9341 (Très courant pour les écrans de 2,4″ à 2,8″)
  • ST7789 (Courant pour les écrans IPS de 1,3″ à 2,0″)
  • ILI9486 (Courant pour les écrans de 3,5″)

Vous devez devez savoir quel contrôleur votre écran utilise. Consultez la fiche technique du fabricant.

Étape 3.3 : Modifier config.txt

Dans les versions modernes de Raspberry Pi OS, le fichier de configuration de démarrage a été déplacé.

Ouvrez-le à l'aide de l'éditeur de texte nano :

Bash

sudo nano /boot/firmware/config.txt

(Remarque : Sur les anciennes versions du système d'exploitation Bullseye, le chemin est simplement /boot/config.txt)

Descendez en bas du fichier et ajoutez la superposition spécifique pour votre pilote. Par exemple, si vous utilisez un écran ILI9341 câblé exactement comme dans le tableau ci-dessus :

Ini, TOML

# Activer le SPI

Pour un affichage ST7789 (couramment utilisé dans les Adafruit PiTFT) :

Ini, TOML

dtoverlay=adafruit-st7789v-hAT,fps=30

Enregistrez le fichier (Ctrl+O, Entrée) et quittez (Ctrl+X).

Redémarrez le Raspberry Pi : sudo reboot.

Si la configuration est correcte, l'écran blanc deviendra noir pendant le démarrage, et vous finirez par voir le texte de la console Linux défiler sur le petit écran.


4. Architectures graphiques modernes : FBCP vs. DRM/KMS

C'est là que de nombreux tutoriels de 2020 vous induiront en erreur.

Historiquement, si vous vouliez refléter votre bureau HDMI principal vers un petit écran SPI TFT LCD sur Raspberry Pi, vous utilisiez un outil appelé fbcp (Copie du framebuffer). Il a pris un instantané du framebuffer principal du GPU (fb0) et l'a copié de manière agressive dans le framebuffer de l'écran SPI (fb1).

).

La réalité de Wayland À partir de Raspberry Pi OS Bookworm, le système de fenêtrage X11 et l'architecture héritée du framebuffer ont été abandonnés. Le Pi utilise désormais Wayland (spécifiquement le compositeur Wayfire) et l'architecture DRM/KMS.

fbcp (Direct Rendering Manager / Kernel Mode Setting).

ne fonctionne plus sur le Raspberry Pi OS moderne.

Comment piloter l'interface utilisateur aujourd'hui :.

Si vous construisez une IHM industrielle ou un appareil personnalisé, vous ne devriez de toute façon pas essayer d'exécuter une interface graphique de bureau complète sur un écran de 3,5 pouces. Vous devriez plutôt écrire une application qui s'affiche directement sur la couche DRM/KMS à l'aide de bibliothèques accélérées par le matériel.

  • La pile professionnelle : LVGL (Light and Versatile Graphics Library) :.
  • Une bibliothèque C open source qui écrit directement dans le sous-système DRM de Linux. Elle est incroyablement légère et parfaite pour les écrans SPI. Qt / PyQt : Vous pouvez configurer les applications Qt pour qu'elles s'exécutent en utilisant les plugins ou eglfs ou.
  • linuxfb , contournant ainsi complètement le bureau Wayland et dessinant votre interface directement sur l'écran LCD TFT.

Mode Kiosk :

Si vous devez absolument utiliser des technologies web (HTML/CSS/JS), vous pouvez configurer Wayfire pour démarrer directement dans un navigateur Chromium en plein écran pointant vers un serveur Node.js local.

5. Calibration de l'interface tactile

  • Si votre écran LCD TFT pour Raspberry Pi possède une couche tactile, faire afficher une image n'est que la moitié de la bataille. Vous devez maintenant vous assurer que lorsque vous appuyez sur le coin supérieur gauche, le curseur de la souris se déplace réellement vers le coin supérieur gauche. Tactile résistif vs capacitif.
  • Résistif (Contrôleur XPT2046) : Nécessite une pression. Très courant sur les écrans SPI bon marché de 3,5″. Nécessite une calibration intense car la résistance analogique varie selon la température et le lot de fabrication.

Capacitif (Contrôleurs FT6236 / Goodix) :

Comme un smartphone. Généralement ne nécessite aucune calibration car la grille est numériquement mappée sur les pixels en usine. Utilise le bus I2C au lieu du SPI. Calibration d'un écran résistif XPT2046 sous Wayland/Libinput Étant donné que X11 est obsolète, l'ancien outil xinput_calibrator et est désuet. Aujourd'hui, les écrans tactiles sont gérés par libinput.

  1. et les règles udev.Tout d'abord, assurez-vous que le pilote tactile est chargé dans
  2. /boot/firmware/config.txt:Ini, TOML
  3. dtoverlay=ads7846,cs=1,penirq=17,penirq_pull=2,speed=1000000,keep_vref_on=1 Redémarrez et installez l'outil de calibration libinput :Bash sudo apt install weston Wayfire (le compositeur par défaut) utilise un fichier de configuration spécifique pour les périphériques d'entrée. Vous devez modifier la configuration de Wayfire pour mapper correctement la matrice tactile.Ouvrez ~/.config/wayfire.ini.et localisez la section 1 0 0 0 1 0.)

[input].


. Vous devrez ajouter une matrice de calibration.

(Note : La matrice exacte dépend si votre écran est en mode paysage ou portrait. Une matrice identité par défaut est.

1 0 0 0 1 0 udev ). vitesse Si vos axes tactiles sont inversés (déplacer votre doigt vers le haut déplace la souris vers le bas), vous devez inverser les valeurs de la matrice. Par exemple, pour inverser l'axe Y, votre règle udev ou la matrice de configuration Wayfire devrait changer le multiplicateur d'échelle Y en une valeur négative.

Ini, TOML

6. Overclocking du bus SPI (À la poursuite des images)

Si votre interface utilisateur semble lente, vous pouvez tenter d'overclocker le bus SPI pour extraire quelques images par seconde supplémentaires de votre écran LCD TFT Raspberry Pi.

Avertissement : Ouvrez.


/boot/firmware/config.txt

et localisez la ligne de votre overlay de pilote. Ajoutez le paramètre.

speed.


Foire aux questions (FAQ)

(mesuré en Hz).

A : dtoverlay=rpi-display,speed=48000000.

  1. Cela demande une horloge SPI de 48 MHz. Vérifiez les broches MOSI, SCLK, et spécifiquement les broches CS (Chip Select) et DC (Data/Command).
  2. Vérifiez la configuration : Garantir dtparam=spi=on est actif dans votre udev.
  3. Vérifiez le pilote : Assurez-vous de charger le bon dtoverlay pour la puce contrôleur spécifique de votre écran (par exemple, ILI9341 vs. ST7789).

Q2 : Puis-je exécuter une interface graphique de bureau standard (comme Chromium ou VLC) sur un écran SPI de 3,5 pouces ?

A : Techniquement oui, mais pratiquement non. Le bus SPI n'a tout simplement pas la bande passante nécessaire pour transmettre 320×480 pixels à 60 images par seconde. La lecture vidéo entraînera un déchirement d'écran important, et l'interface utilisateur du bureau sera extrêmement lente. Pour les environnements de bureau ou la vidéo, vous devez utiliser un écran MIPI DSI ou HDMI. Les écrans SPI sont destinés à des interfaces graphiques simples, statiques, à des boutons et à des affichages de texte.

Q3 : Les clics de mon écran tactile sont enregistrés, mais le curseur de la souris se déplace vers le côté opposé de l'écran. Comment résoudre ce problème ?

A : Vos axes tactiles sont inversés par rapport aux axes d'affichage. Cela se produit si vous faites pivoter l'affichage dans le logiciel (par exemple, display_lcd_rotate=2) mais ne faites pas pivoter la matrice tactile. Vous devez appliquer une matrice de transformation via est désuet. Aujourd'hui, les écrans tactiles sont gérés par des règles ou dans votre configuration Wayfire/X11 pour permuter les axes X et Y ou les inverser.

Q4 : L'ajout d'un écran LCD surchargera-t-il l'alimentation de mon Raspberry Pi ?

A : Cela peut arriver, selon le modèle de Pi et la taille de l'écran. Un Raspberry Pi 4 ou 5 nécessite une alimentation robuste de 5,1 V / 3 A à 5 A. Un écran SPI de 3,5 pouces consomme environ 100 mA à 150 mA pour son rétroéclairage LED, ce que les broches GPIO 5 V peuvent gérer en toute sécurité. Cependant, un écran de 7 pouces ou 10 pouces peut consommer jusqu'à 500 mA à 1 A. Pour les écrans de plus de 5 pouces, vous devez alimenter l'écran à partir d'une alimentation USB externe dédiée, et non à partir des broches GPIO du Pi, pour éviter la limitation due à une sous-tension (indiquée par l'icône d'éclair jaune).

Q5 : Je souhaite développer un produit commercial utilisant un module Compute de Raspberry Pi. Dois-je utiliser le SPI ?

A : Non. Si vous passez à un produit commercial utilisant un module Compute 4 (CM4) ou CM5, vous devez router les lignes MIPI DSI ou utiliser l'interface DPI (parallèle) sur votre carte support personnalisée. Cela décharge le rendu de l'affichage sur le GPU matériel, libérant le CPU pour exécuter la logique réelle de votre application et garantissant des animations fluides et de qualité professionnelle à 60 FPS.