ESP32 S3 - Écran tactile TFT LCD ILI9341 ILI9488 ST7789 interface SPI
Construisons un projet qui donne vie à un écran TFT SPI en couleurs complètes sur un ESP32 S3. L'ESP32 S3 est un microcontrôleur double cœur puissant avec Wi-Fi, Bluetooth et de nombreux GPIO — et son bus SPI matériel permet facilement de faire fonctionner un écran TFT haute vitesse aux pleines vitesses prises en charge par le panneau.
Ce que vous allez construire :
- Une connexion filaire entre un ESP32 S3 et un écran TFT SPI.
- Une démonstration de formes utilisant l'API de dessin Adafruit GFX.
- Un exemple d'affichage de texte et de nombres.
- Un visualiseur d'image bitmap lisant depuis la mémoire programme (PROGMEM).
- Un visualiseur d'image bitmap lisant des images depuis une carte SD.
- Une démonstration de police externe personnalisée.
- Un lecteur de coordonnées tactiles utilisant un contrôleur XPT2046.
- Une application de dessin tactile (peinture au doigt sur l'écran).
- Une interface de boutons tactiles interactive.
- Un outil de calibration d'écran tactile.
- Un exemple de bus SPI personnalisé utilisant un bus SPI secondaire sur l'ESP32 S3.
Ce projet couvre les écrans TFT LCD SPI tactiles et non tactiles. Il fonctionne avec des panneaux de 1,3, 1,54, 2,2, 2,4, 2,8, 3,2 et 3,5 pouces pilotés par des puces contrôleur ILI9341, ILI9488 ou ST7789.

Matériel requis
Ou vous pouvez acheter les kits suivants:
| 1 | × | Kit de Démarrage DIYables ESP32 S3 (ESP32 S3 inclus) | |
| 1 | × | Kit de Capteurs DIYables (18 capteurs/écrans) |
Qu'est-ce que l'écran TFT SPI ?
Un module TFT SPI associe un écran LCD couleur à un circuit intégré pilote qui accepte des commandes de dessin via un bus SPI à 4 fils. La bibliothèque DIYables_TFT_SPI prend en charge trois puces contrôleur courantes, chacune offrant une profondeur de couleur et des caractéristiques de vitesse différentes.
Caractéristiques principales
- ILI9341 - couleur RGB565 16 bits, jusqu'à 40 MHz SPI.
- ILI9488 - couleur RGB666 18 bits via SPI, jusqu'à 24 MHz.
- ST7789 - couleur RGB565 16 bits, jusqu'à 40 MHz SPI.
Recommandation : Si vous n'avez pas encore acheté d'écran, nous recommandons le pilote ST7789. Il est largement disponible, fonctionne à pleine vitesse SPI de 40 MHz, et constitue le choix le plus simple pour les nouveaux projets.
Le dessin est géré via l'API Adafruit GFX, qui inclut des formes, du texte, des polices personnalisées et une sortie bitmap.
Remarque : L'ESP32 S3 utilise une logique 3,3V. La plupart des modules TFT SPI fonctionnent en 3,3V. Vérifiez la spécification de tension de votre module avant de câbler.
Brochage
La plupart des écrans TFT LCD SPI exposent les broches suivantes, réparties entre le contrôleur d'affichage, le slot de carte SD optionnel et le contrôleur tactile XPT2046 optionnel.
Broches de l'écran :
| Broche | Fonction |
|---|---|
| VCC | Alimentation |
| GND | Masse |
| CS | Chip Select — mis à l'état bas pour sélectionner l'écran sur le bus SPI |
| DC / RS | Sélection Données / Commande — haut pour les données de pixel, bas pour les commandes |
| RST | Réinitialisation matérielle — optionnel ; relier à 3,3V si non utilisé |
| MOSI / SDI / SDA | Entrée de données SPI (MCU → écran) |
| SCK / CLK | Horloge SPI |
| MISO / SDO | Sortie de données SPI (écran → MCU) — optionnel pour un usage affichage seul |
| LED / BL / BLK | Alimentation du rétroéclairage — connecter à 3,3V ou à une broche PWM pour la gradation |
Broches de la carte SD (si votre application a besoin d'accéder à la carte SD) :
| Broche | Fonction |
|---|---|
| SD_CS / TF_CS | Chip Select de la carte SD |
| MOSI / SDI | MOSI — données du MCU vers la carte SD |
| SCK / CLK | SCK — horloge SPI |
| MISO / SDO | MISO — données de la carte SD vers le MCU |
Pour les écrans TFT qui prennent en charge le tactile, il existe des broches tactiles supplémentaires (si votre application utilise la fonction tactile et que l'écran la prend en charge) :
| Broche | Fonction |
|---|---|
| T_CS | Chip Select du contrôleur tactile |
| T_CLK | SCK — horloge SPI |
| T_DIN | MOSI — données du MCU vers le contrôleur tactile |
| T_DO | MISO — données du contrôleur tactile vers le MCU |
| T_IRQ | Interruption tactile — optionnel ; signale quand l'écran est touché |
Remarque : Certains modules d'affichage non tactiles exposent également des broches T_CS, T_CLK, T_DIN, T_DO et T_IRQ. Elles sont non fonctionnelles sur ces cartes — le circuit intégré du contrôleur tactile n'est pas monté. Elles apparaissent parce que le circuit imprimé réutilise la même disposition que la version tactile pour réduire les variantes de fabrication.

Schéma de câblage
Remarque — SDO (MISO) est optionnel : La ligne SDO (MISO) ne transporte que des données de l'écran vers la carte. Aucun exemple de code de ce tutoriel ne lit depuis l'écran, cette broche peut donc rester non connectée. Sur les modules où le contrôleur tactile partage le même bus SPI, une ligne SDO connectée peut interférer avec la communication, il est donc recommandé de la laisser non connectée.
Sans tactile
Connectez MOSI à GPIO11, SCK à GPIO12, MISO à GPIO13 sur l'ESP32 S3. CS, DC et RST peuvent être n'importe quel GPIO disponible — GPIO1, GPIO42, GPIO2 sont utilisés dans les exemples.
Écran :
| Broche TFT | Broche ESP32 S3 | Description |
|---|---|---|
| VCC | 3.3V | Alimentation (3,3V uniquement) |
| GND | GND | Masse |
| CS | GPIO1 | Chip Select |
| DC / RS | GPIO42 | Sélection Données / Commande |
| RST | GPIO2 | Réinitialisation (optionnel) |
| MOSI / SDI | GPIO11 | MOSI SPI matériel |
| SCK | GPIO12 | Horloge SPI matérielle |
| MISO / SDO | GPIO13 | MISO SPI matériel (optionnel) |
| LED / BL | 3.3V | Alimentation du rétroéclairage |
Carte SD (si votre application a besoin d'accéder à la carte SD) :
| Broche SD | Broche ESP32 S3 | Description |
|---|---|---|
| SD_CS / TF_CS | tout GPIO libre | Chip Select de la carte SD |
| MOSI / SDI | GPIO11 | Partagé avec le MOSI de l'écran (GPIO11) |
| SCK / CLK | GPIO12 | Partagé avec le SCK de l'écran (GPIO12) |
| MISO / SDO | GPIO13 | Partagé avec le MISO de l'écran (GPIO13) |

Cette image a été créée avec Fritzing. Cliquez pour agrandir l'image.
Avec tactile
Connectez le contrôleur tactile XPT2046 au bus SPI de l'ESP32 S3, en partageant GPIO11, GPIO12 et GPIO13 avec l'écran.
Écran :
| Broche TFT | Broche ESP32 S3 | Description |
|---|---|---|
| VCC | 3.3V | Alimentation (3,3V uniquement) |
| GND | GND | Masse |
| CS | GPIO1 | Chip Select |
| DC / RS | GPIO42 | Sélection Données / Commande |
| RST | GPIO2 | Réinitialisation (optionnel) |
| MOSI / SDI | GPIO11 | MOSI SPI matériel |
| SCK | GPIO12 | Horloge SPI matérielle |
| MISO / SDO | GPIO13 | MISO SPI matériel (optionnel) |
| LED / BL | 3.3V | Alimentation du rétroéclairage |
Contrôleur tactile (si votre application utilise la fonction tactile et que l'écran la prend en charge) :
| Broche tactile | Broche ESP32 S3 | Description |
|---|---|---|
| T_CS | GPIO21 | Chip Select tactile |
| T_IRQ | tout GPIO libre | Interruption tactile (optionnel) |
| T_DIN | GPIO11 | Partagé avec le MOSI de l'écran (GPIO11) |
| T_CLK | GPIO12 | Partagé avec le SCK de l'écran (GPIO12) |
| T_DO | GPIO13 | Partagé avec le MISO de l'écran (GPIO13) |

Cette image a été créée avec Fritzing. Cliquez pour agrandir l'image.
Si votre MCU possède deux interfaces SPI matérielles ou plus, vous pouvez assigner chaque périphérique (écran, carte SD, contrôleur tactile) à son propre bus SPI dédié. Si votre MCU ne possède qu'une seule interface SPI matérielle, les trois périphériques partagent les mêmes trois lignes de données (MOSI, SCK, MISO). Chaque périphérique possède sa propre broche CS, donc un seul est actif à la fois. La bibliothèque DIYables_TFT_SPI gère à la fois l'écran et le contrôleur tactile XPT2046 via une seule API — aucune bibliothèque SPI distincte n'est nécessaire pour le côté tactile.
Installation de la bibliothèque
- Connectez la carte ESP32 S3 à votre ordinateur via son port USB-C.
- Ouvrez Arduino IDE. Sélectionnez votre variante de carte ESP32 S3 dans le menu des cartes et choisissez le bon port COM.
- Ouvrez le panneau Libraries.
- Recherchez "DIYables_TFT_SPI". Repérez l'entrée DIYables.
- Cliquez sur Install et acceptez toutes les installations de dépendances.
- Search for DIYables TFT SPI created by DIYables.io and click the Install button.
Base du projet
Le code suivant fournit le croquis de base pour tout projet TFT ESP32 S3 avec cette bibliothèque. Il initialise l'écran sur le bus SPI matériel et définit l'orientation de l'écran avant que la boucle de dessin ne commence.
Construisons - Dessiner des formes
L'exemple DrawShapes dessine toute la gamme de primitives Adafruit GFX : cercles, triangles, rectangles, rectangles arrondis et lignes. Le code suivant parcourt chaque type de forme en utilisant des couleurs contrastées afin que vous puissiez vérifier chaque fonction de dessin d'un coup d'œil.
Téléverser et tester
- Câblez le module TFT à l'ESP32 S3 en utilisant le tableau ci-dessus.
- Branchez le câble USB-C.
- Dans Arduino IDE, sélectionnez la carte et le port, collez le code, et appuyez sur Upload.
- Après le téléversement, l'écran se remplit d'une boucle de formes colorées.
Référence de l'API de dessin
| Méthode | Objectif | Utilisation |
|---|---|---|
| begin() | Initialise l'écran. | TFT_display.begin(); |
| setRotation(r) | Définit l'orientation de l'écran de 0 à 3. | TFT_display.setRotation(1); |
| fillScreen(color) | Remplit tout l'écran d'une seule couleur. | TFT_display.fillScreen(BLACK); |
| colorRGB(r,g,b) | Construit une valeur de couleur 16 bits. | colorRGB(255,128,0) |
| fillCircle(x,y,r,color) | Cercle plein rempli. | TFT_display.fillCircle(120,160,60,RED); |
| fillRect(x,y,w,h,color) | Rectangle plein. | TFT_display.fillRect(0,0,100,50,BLUE); |
| drawLine(x0,y0,x1,y1,color) | Ligne droite entre deux points. | TFT_display.drawLine(0,0,320,240,WHITE); |
Construisons - Afficher du texte et des nombres
L'exemple ShowTextAndNumber utilise le moteur de texte Adafruit GFX pour afficher des chaînes et des valeurs numériques à des tailles et des couleurs réglables. Le code suivant montre plusieurs tailles de police et combinaisons de couleurs afin que vous puissiez créer des tableaux de bord lisibles à l'écran.
Téléverser et tester
- Câblez et téléversez comme ci-dessus.
- L'écran affiche plusieurs lignes de texte et de nombres dans différentes couleurs et tailles.
Référence de l'API de dessin
| Méthode | Objectif | Utilisation |
|---|---|---|
| setTextColor(color) | Définit la couleur de premier plan du texte. | TFT_display.setTextColor(WHITE); |
| setTextSize(size) | Met à l'échelle le texte. Taille 1 = 6×8 px, taille 2 = 12×16 px. | TFT_display.setTextSize(2); |
| setCursor(x, y) | Place le curseur de texte au pixel (x, y). | TFT_display.setCursor(10, 20); |
| print(value) | Affiche une chaîne ou un nombre au niveau du curseur. | TFT_display.print("ESP32 S3!"); |
| println(value) | Affiche puis fait avancer le curseur à la ligne suivante. | TFT_display.println(42); |
Construisons - Dessiner une image
Construisons un visualiseur d'image. L'exemple DrawImage charge un bitmap RGB565 en couleurs complètes depuis la flash programme de l'ESP32 S3 et le rend sur l'écran. Les données de pixel sont déclarées dans bitmap.h en tant que tableau const uint16_t avec PROGMEM. Sur l'ESP32 S3, les données PROGMEM sont mappées depuis la flash dans l'espace d'adressage virtuel, donc l'image se dessine sans consommer de RAM de tas.
Copiez bitmap.h dans le dossier du croquis avant de compiler.
Téléverser et tester
- Placez bitmap.h dans le même dossier que le croquis.
- Câblez le module TFT à l'ESP32 S3 comme indiqué ci-dessus (MOSI=GPIO11, SCK=GPIO12, MISO=GPIO13, CS=GPIO1, DC=GPIO42, RST=GPIO2). Utilisez 3,3V pour VCC.
- Branchez le câble USB-C.
- Dans Arduino IDE, sélectionnez la carte et le port, appuyez sur Upload.
- L'écran affiche l'image bitmap depuis la flash.
Référence de l'API de dessin
| Méthode | Objectif | Utilisation |
|---|---|---|
| drawRGBBitmap(x,y,bitmap,w,h) | Dessine un bitmap RGB565 PROGMEM avec son coin supérieur gauche en (x, y). | TFT_display.drawRGBBitmap(0, 0, myImage, 240, 320); |
| fillScreen(color) | Efface l'écran avant de dessiner l'image. | TFT_display.fillScreen(BLACK); |
Construisons - Dessiner une image depuis la carte SD
Construisons un visualiseur d'image sur carte SD. L'exemple DrawImageSDcard lit une image binaire RGB565 brute depuis une carte micro SD et transmet les données de pixel à l'écran par blocs. L'ESP32 S3 gère à la fois la carte SD et l'écran sur le même bus SPI, en commutant les lignes CS pour arbitrer entre eux.
Câblez le module SD sur GPIO11 (MOSI), GPIO12 (SCK), GPIO13 (MISO). Définissez une broche CS distincte pour le module SD sous le nom SD_CS_PIN dans le croquis.
Téléverser et tester
- Câblez le module SD au bus SPI de l'ESP32 S3. Partagez GPIO11/12/13 avec l'écran. Connectez le CS de la carte SD à la broche définie comme SD_CS_PIN.
- Copiez un fichier image binaire RGB565 brut à la racine de la carte SD. Les dimensions doivent correspondre à votre panneau.
- Branchez le câble USB-C.
- Dans Arduino IDE, sélectionnez la carte et le port, appuyez sur Upload.
- L'écran affiche l'image diffusée depuis la carte SD.
Référence de l'API de dessin
| Méthode | Objectif | Utilisation |
|---|---|---|
| startWrite() | Ouvre une session d'écriture SPI directe et active le CS de l'écran. | TFT_display.startWrite(); |
| setAddrWindow(x0,y0,x1,y1) | Définit la région rectangulaire d'écriture de pixels sur le panneau. | TFT_display.setAddrWindow(0, 0, 239, 319); |
| pushColors(buf, len) | Envoie un tampon de valeurs de pixel RGB565 à l'écran. | TFT_display.pushColors(buf, 512); |
| endWrite() | Ferme la session SPI et libère le CS de l'écran. | TFT_display.endWrite(); |
Construisons - Utiliser une police externe
Construisons un affichage de texte personnalisé. L'exemple UseExternalFont remplace la police par défaut de 5×7 pixels par une police contour plus nette compatible Adafruit GFX. Un seul appel à setFont() suffit pour améliorer la typographie. Appeler setFont(NULL) restaure la police intégrée d'origine à tout moment.
Téléverser et tester
- Câblez le module TFT à l'ESP32 S3 comme indiqué ci-dessus.
- Branchez le câble USB-C.
- Dans Arduino IDE, sélectionnez la carte et le port, appuyez sur Upload.
- L'écran affiche du texte dans la police personnalisée.
Référence de l'API de dessin
| Méthode | Objectif | Utilisation |
|---|---|---|
| setFont(&FontName) | Active une police personnalisée compatible GFX. Passez NULL pour restaurer la police intégrée 5×7. | TFT_display.setFont(&FreeSans12pt7b); |
| setCursor(x, y) | Positionne le curseur de texte à la coordonnée de pixel donnée. | TFT_display.setCursor(10, 40); |
| setTextColor(color) | Définit la couleur de premier plan pour le texte suivant. | TFT_display.setTextColor(WHITE); |
| print(text) | Affiche une chaîne au niveau du curseur en utilisant la police active. | TFT_display.print("ESP32 S3 Project"); |
Construisons - Obtenir un point tactile
Construisons un lecteur de coordonnées tactiles. L'exemple TouchGetPoint initialise le XPT2046 sur le bus SPI de l'ESP32 S3 et affiche les valeurs ADC brutes sur le moniteur série chaque fois que l'écran est pressé. C'est la première étape vers un projet sensible au tactile : comprendre la plage de valeurs brutes que produit votre panneau.
Câblage (tous les signaux en 3,3V) :
| Broche tactile | Broche ESP32 S3 | Description |
|---|---|---|
| T_CLK | GPIO12 | SCK — partagé avec l'écran |
| T_DIN | GPIO11 | MOSI — partagé avec l'écran |
| T_DO | GPIO13 | MISO — partagé avec l'écran |
| T_CS | GPIO21 | Chip Select tactile |
| T_IRQ | GPIO45 | Interruption tactile (optionnel) |
Téléverser et tester
- Câblez le XPT2046 au bus SPI de l'ESP32 S3, en partageant GPIO11/12/13 avec l'écran. T_CS→GPIO21, T_IRQ→GPIO45.
- Branchez le câble USB-C.
- Dans Arduino IDE, sélectionnez la carte et le port, appuyez sur Upload.
- Ouvrez le moniteur série à 9600 bauds. Touchez l'écran pour voir les valeurs brutes X, Y et Z affichées.
Référence de l'API de dessin
| Méthode | Objectif | Utilisation |
|---|---|---|
| initTouchSPI(cs, irq) | Initialise le XPT2046 sur le bus SPI partagé. Passez -1 pour irq si la broche d'interruption n'est pas connectée. | TFT_display.initTouchSPI(21, 45); |
| readTouchRaw(x, y, z) | Renvoie les valeurs ADC brutes du contrôleur sans calibration appliquée. Renvoie true en cas de pression. | TFT_display.readTouchRaw(x, y, z); |
Construisons - Dessin tactile
Construisons une application de peinture au doigt. L'exemple TouchDraw combine le contrôleur tactile XPT2046 avec l'API de dessin de l'écran. Chaque position tactile est convertie en une coordonnée de pixel calibrée et un petit cercle plein y est dessiné, créant un trait au fur et à mesure que le doigt se déplace.
Téléverser et tester
- Câblez le XPT2046 à l'ESP32 S3 comme décrit dans la section Obtenir un point tactile ci-dessus.
- Branchez le câble USB-C.
- Dans Arduino IDE, sélectionnez la carte et le port, appuyez sur Upload.
- Faites glisser un doigt sur l'écran pour peindre.
Référence de l'API de dessin
| Méthode | Objectif | Utilisation |
|---|---|---|
| initTouchSPI(cs, irq) | Initialise le XPT2046 sur le bus SPI partagé. | TFT_display.initTouchSPI(21, 45); |
| setTouchCalibration(minX,maxX,minY,maxY) | Convertit les valeurs ADC brutes en coordonnées de pixel d'écran. Obtenez les quatre valeurs depuis l'exemple TouchCalibration. | TFT_display.setTouchCalibration(200, 3800, 300, 3700); |
| setTouchInvertX(invert) / setTouchInvertY(invert) | Inverse l'axe tactile lorsque X ou Y est inversé sur votre panneau ou lot spécifique. Appelez AVANT setTouchCalibration(). | TFT_display.setTouchInvertY(true); |
| getTouch(x, y) | Renvoie les coordonnées tactiles calibrées en pixels d'écran. Renvoie true tant que l'écran est pressé. | if (TFT_display.getTouch(x, y)) { ... } |
| fillCircle(x, y, r, color) | Dessine un petit point à la position tactile pour construire le dessin. | TFT_display.fillCircle(x, y, 3, RED); |
Construisons - Bouton tactile
Construisons un panneau de boutons tactiles. L'exemple TouchButton dessine des boutons rectangulaires comme des régions colorées sur l'écran, puis interroge les coordonnées tactiles à chaque itération de boucle. Lorsqu'un point tactile tombe dans les limites d'un bouton, le bouton se met en surbrillance et l'action se déclenche — c'est le modèle central pour toute interface tactile ESP32 S3.
T_IRQ est optionnel. Passez -1 comme argument irq pour utiliser le mode d'interrogation sans la broche d'interruption.
Téléverser et tester
- Connectez T_CS à GPIO21. T_IRQ peut rester non connecté.
- Branchez le câble USB-C.
- Dans Arduino IDE, sélectionnez la carte et le port, appuyez sur Upload.
- Appuyez sur chaque bouton de l'écran et vérifiez qu'il se met en surbrillance et déclenche son action.
Référence de l'API de dessin
| Méthode | Objectif | Utilisation |
|---|---|---|
| initTouchSPI(cs, irq) | Initialise le XPT2046. Passez -1 pour irq afin de désactiver la broche d'interruption. | TFT_display.initTouchSPI(21, -1); |
| setTouchCalibration(minX,maxX,minY,maxY) | Applique la calibration afin que getTouch() renvoie des coordonnées de pixel précises. | TFT_display.setTouchCalibration(200, 3800, 300, 3700); |
| setTouchInvertX(invert) / setTouchInvertY(invert) | Inverse l'axe tactile lorsque X ou Y est inversé sur votre panneau ou lot spécifique. Appelez AVANT setTouchCalibration(). | TFT_display.setTouchInvertY(true); |
| getTouch(x, y) | Obtient la position tactile calibrée actuelle. Renvoie true tant que pressé. | if (TFT_display.getTouch(x, y)) { ... } |
| fillRect(x, y, w, h, color) | Dessine un bouton comme un rectangle plein rempli. | TFT_display.fillRect(10, 10, 120, 60, BLUE); |
Construisons - Calibration tactile
Construisons un outil de calibration. L'exemple TouchCalibration vous guide à travers la mesure des extrêmes ADC bruts de votre panneau XPT2046. Touchez chaque coin de l'écran comme demandé et notez les valeurs minimales et maximales X et Y affichées. Ces quatre nombres sont les constantes pour setTouchCalibration() dans tous vos autres projets tactiles.
Téléverser et tester
- Câblez le XPT2046 à l'ESP32 S3 comme décrit dans la section Obtenir un point tactile.
- Branchez le câble USB-C.
- Dans Arduino IDE, sélectionnez la carte et le port, appuyez sur Upload.
- Ouvrez le moniteur série à 9600 bauds. Suivez les invites à l'écran et touchez chaque coin.
- Notez les quatre valeurs affichées et utilisez-les dans setTouchCalibration() dans vos autres projets tactiles.
Référence de l'API de dessin
| Méthode | Objectif | Utilisation |
|---|---|---|
| initTouchSPI(cs, irq) | Initialise le contrôleur tactile XPT2046. | TFT_display.initTouchSPI(21, 45); |
| readTouchRaw(x, y, z) | Lit les valeurs ADC brutes pour déterminer la plage de calibration. | TFT_display.readTouchRaw(x, y, z); |
| setTouchCalibration(minX,maxX,minY,maxY) | Stocke les constantes de calibration afin que getTouch() convertisse correctement les valeurs brutes en coordonnées de pixel. | TFT_display.setTouchCalibration(200, 3800, 300, 3700); |
| setTouchInvertX(invert) / setTouchInvertY(invert) | Inverse l'axe tactile lorsque X ou Y est inversé sur votre panneau ou lot spécifique. Appelez AVANT d'exécuter la calibration afin que les valeurs stockées correspondent à votre panneau. | TFT_display.setTouchInvertY(true); |
Construisons - SPI personnalisé
Construisons sur un bus SPI personnalisé. L'ESP32 S3 prend en charge plusieurs contrôleurs SPI matériels. L'exemple CustomSPI montre comment créer une instance SPIClass pour un bus SPI secondaire et la passer au constructeur de l'écran. Cela libère le bus SPI principal pour d'autres périphériques comme des cartes SD ou des modules de capteur qui partagent le SPI.
Téléverser et tester
- Câblez l'écran TFT aux broches de l'ESP32 S3 correspondant au bus SPI personnalisé que vous définissez dans le croquis.
- Branchez le câble USB-C.
- Dans Arduino IDE, sélectionnez la carte et le port, appuyez sur Upload.
- L'écran démarre sur le bus SPI sélectionné et affiche un motif de barres colorées pour confirmer le succès.
Référence de l'API de dessin
| Méthode | Objectif | Utilisation |
|---|---|---|
| SPIClass myBus(HSPI) | Crée une instance SPIClass liée à un contrôleur SPI secondaire. | SPIClass SPI2_bus(HSPI); |
| DIYables_ILI9341_SPI(w,h,cs,dc,rst,spi) | Constructeur acceptant un pointeur vers n'importe quelle SPIClass. Par défaut &SPI si omis. | DIYables_ILI9341_SPI tft(240, 320, 10, 9, 8, &SPI2_bus); |
| begin() | Initialise l'écran sur le bus SPI configuré. | TFT_display.begin(); |
Étapes rapides
- Nouveau sur l'ESP32 S3 ? Suivez d'abord notre guide ESP32 S3 - Premiers pas.
- Installez la bibliothèque DIYables_TFT_SPI via le panneau Libraries de l'Arduino IDE.
- Câblez l'écran TFT aux broches SPI de l'ESP32 S3 en utilisant le tableau de câblage pour votre cas d'usage (avec ou sans tactile).
- Ouvrez le croquis du sous-projet que vous voulez construire et vérifiez que les définitions de broches correspondent à votre câblage.
- Sélectionnez la bonne ligne de constructeur pour votre puce pilote (ILI9341, ILI9488, ou ST7789) et commentez les autres.
- Sélectionnez la carte ESP32 S3 et le bon port COM dans Arduino IDE, puis appuyez sur Upload.
- Pour les projets tactiles, exécutez d'abord l'exemple TouchCalibration et notez les quatre valeurs affichées avant de charger votre croquis principal.
- Astuce pro : Partagez GPIO11, GPIO12 et GPIO13 entre l'écran, la carte SD et le contrôleur tactile — la bibliothèque gère automatiquement l'arbitrage du bus via des broches CS individuelles.
Sortie du moniteur série
Ouvrez le moniteur série à 9600 bauds pour les croquis avec tactile. Sortie attendue pendant une session tactile :
Applications
Les écrans TFT SPI associés à l'ESP32 S3 sont bien adaptés aux projets embarqués nécessitant une sortie visuelle compacte et en couleurs riches. Voici quelques usages pratiques :
- Tableau de bord : Affichez des relevés de capteurs en temps réel comme la température, l'humidité et la pression sur un écran de jauges à code couleur.
- Moniteur IoT : Affichez des données en direct depuis des sujets MQTT ou des API REST, en mettant à jour l'écran chaque fois que de nouvelles valeurs arrivent via Wi-Fi.
- Panneau de contrôle tactile : Créez une interface multi-boutons pour contrôler des relais, des moteurs, ou des appareils domotiques sans aucun bouton physique.
- Enregistreur portable : Combinez le lecteur de carte SD avec l'écran pour enregistrer et tracer des données de capteur sur une carte micro SD avec un graphique en direct à l'écran.
- Affichage numérique : Faites défiler des images bitmap stockées sur carte SD pour créer un affichage publicitaire ou d'information à basse consommation.
Vidéo
Regardez ci-dessous la vidéo pas à pas de ce projet ESP32 S3.
Défis
Poussez votre projet d'écran TFT ESP32 S3 plus loin en essayant ces extensions progressivement plus difficiles. Chaque défi renforce un aspect différent de la bibliothèque et du matériel.
- Débutant : Modifiez le croquis DrawShapes pour dessiner vos initiales en utilisant des lignes et des rectangles dans vos deux couleurs préférées.
- Débutant : Modifiez le croquis ShowTextAndNumber pour afficher un compteur de millisecondes en direct qui se met à jour toutes les 500 ms en utilisant millis().
- Intermédiaire : Combinez les exemples DrawImageSDcard et ShowTextAndNumber pour superposer une étiquette sur une image bitmap chargée depuis la carte SD.
- Intermédiaire : Créez une interface tactile à deux boutons qui bascule une LED connectée à une broche GPIO — un bouton ALLUMÉ, un bouton ÉTEINT — avec la couleur du bouton reflétant l'état actuel de la LED.
- Avancé : Créez une interface tactile multi-écrans avec un écran d'accueil et deux sous-écrans, en naviguant entre eux avec des boutons précédent et suivant à l'écran, chaque écran affichant des données de capteur différentes.
Dépannage
| Problème | Cause | Solution |
|---|---|---|
| Écran vide | Mauvaises broches SPI ou mauvaise alimentation | Utilisez les bonnes broches SPI matérielles pour votre variante d'ESP32 S3 ; vérifiez que VCC est à 3,3V |
| Image brouillée | Mauvais pilote actif | Décommentez uniquement le constructeur correspondant |
| Image décalée | Incohérence largeur/hauteur du constructeur | Faites correspondre les valeurs aux dimensions réelles de votre panneau |
| Pas de réponse tactile | Données de calibration manquantes | Exécutez l'exemple TouchCalibration et copiez les valeurs affichées |
| Port non visible | Pilote USB manquant | Installez le bon pilote USB pour votre carte ESP32 S3 |
Support de plateforme
La bibliothèque est construite sur l'API SPI standard d'Arduino et prend en charge toutes les variantes ESP32 S3 compatibles Arduino (architectures=*).