Dans mon article précédent, je vous présentai la carte LILYGO T-Display. Je vous présente ici sa grande sœur, la LILYGO T-Display S3. Cette carte de développement basée sur un microcontrôleur ESP32-S3 est équipée d’un écran LCD de 1.9″ offrant une résolution de 170 x 320 pixels.
Voici un rapide comparatif entre ces deux cartes :
| LILYGO T-Display | LILYGO T-Display S3 | |
|---|---|---|
| Microcontrôleur | ESP32 (Tensilica Xtensa LX6) | ESP32S3 (Tensilica Xtensa LX7) |
| Écran | 135 x 240 | 170 x 320 |
| SRAM | 448 Ko | 512 Ko |
| FLASH | 4 Mo | 16 Mo |
| PSRAM | – | 8 Mo |
| TFT Driver | ST7789V | ST7789 |
| TFT Interface | SPI | SPI + Parallèle (8 bits) |
Schéma des broches
Voici la schéma des broches de la carte, qui met en évidence les broches utilisées la communication parallèle avec l’écran ST7789 (LCD_D0 à LCD_D7, LCD_WR et LCD_RD). La commande du rétroéclairage est contrôlée via la broche LCD_BL (GPIO38) et l’allumage de l’écran est contrôlé par la broche LCD_Power_On (GPIO15).

Installation du gestionnaire de cartes ESP32
La carte étant basé sur le microcontrôleur ESP32 il faut installer le support des cartes Espressif ESP32 dans l’IDE Arduino.
Dans le menu préférences de l’IDE Arduino, ajoutez l’URL suivante dans le gestionnaire de carte :
https://espressif.github.io/arduino-esp32/package_esp32_index.jsonVoici une capture d’écran des étapes à suivre :



Installez le paquet de gestion de cartes esp32 de Espressif Systems.


Une fois le gestionnaire de cartes installé, sélectionnez la carte ESP32S3 Dev Module dans la liste des cartes esp32 disponibles, et appliquer cette configuration :

Note : avec la configuration Lilygo T-Display S3, la PSRAM ne semble pas correctement configurée.
Installation des librairies pour l’écran LCD
Installer la librairie TFT_eSPI by Bodmer.


Éditer le fichier User_Setup_Select.h qui se trouve dans le sous-répertoire Librairies du répertoire Arduino, et appliquer les modifications suivantes :
Commenter la ligne suivante :
//#include <User_Setup.h> // Default setup is root library folderEt dé-commenter la ligne suivante :
#include <User_Setups/Setup206_LilyGo_T_Display_S3.h> // For the LilyGo T-Display S3 based ESP32S3 with ST7789 170 x 320 TFTAfficher un texte sur l’écran du LilyGo T-Display
Pour vérifier que les bibliothèques et la configuration de la carte sont correctement installées, nous allons afficher sur l’écran la taille des mémoires Flash et PSRAM détectées :
// LilyGo T-Display S3
// Site : https://tutoduino.fr/
// Licence : Copyleft 2025
// Inclusion de la bibliothèque TFT_eSPI pour gérer l'affichage TFT
// Cette bibliothèque permet de contrôler les écrans TFT compatibles avec les contrôleurs comme le ST7789V
#include <TFT_eSPI.h>
// Création d'un objet TFT_eSPI nommé "tft" pour interagir avec l'écran
// Cet objet encapsule toutes les fonctions nécessaires pour dessiner sur l'écran
TFT_eSPI tft = TFT_eSPI();
// -----------------------------------------------------------------------------
// Mise en veille profonde de l'ESP32 et de l'ecran LCD
// -----------------------------------------------------------------------------
void enterDeepSleep() {
// Configure la sortie de veille par appui sur le bouton
esp_sleep_enable_ext0_wakeup((gpio_num_t)14, LOW);
// Éteindre écran et désactiver son alimentation
digitalWrite(38, LOW);
digitalWrite(15, LOW);
// Activer la veille profonde du microcontrolleur
esp_deep_sleep_start();
}
void setup() {
// Initialisation de l'écran TFT
// Cette fonction configure l'écran selon les paramètres définis dans le fichier de configuration de TFT_eSPI
tft.init();
// Rotation de l'écran (3 = 180 degrés)
// Cela permet d'orienter correctement l'affichage selon la position physique de l'écran
// 0 = pas de rotation, 1 = 90°, 2 = 180°, 3 = 270°
tft.setRotation(3);
// Effacer l'écran en le remplissant de noir
// Utile pour nettoyer l'écran avant d'afficher de nouveaux éléments
tft.fillScreen(TFT_BLACK);
// Configuration de la broche 38 (rétroéclairage) en sortie
// Cette broche contrôle le rétroéclairage de l'écran
pinMode(38, OUTPUT);
// Allumer le rétroéclairage (HIGH = allumé)
// Sans rétroéclairage, l'écran reste noir même s'il est actif
digitalWrite(38, HIGH);
// Configuration de la broche 15 (activation de l'écran) en sortie
// Certaines cartes nécessitent une broche dédiée pour activer l'écran
pinMode(15, OUTPUT);
// Activer l'écran (HIGH = activé)
// Cela permet de sortir l'écran du mode veille
digitalWrite(15, HIGH);
// Définir la couleur du texte en vert
// TFT_GREEN est une constante définie dans la bibliothèque TFT_eSPI
tft.setTextColor(TFT_GREEN);
// Définir la taille du texte (2 = taille moyenne)
// La taille 1 est la plus petite, 2 est moyenne, etc.
tft.setTextSize(2);
// Positionner le curseur à (10, 10) pour afficher le texte
// Les coordonnées (x, y) commencent en haut à gauche de l'écran
tft.setCursor(10, 20);
// Afficher "Hello World!" à la position définie
tft.println("https://tutoduino.fr");
// Changer la couleur du texte en magenta
tft.setTextColor(TFT_MAGENTA);
// Positionner le curseur à (10, 50) pour le prochain texte
tft.setCursor(10, 50);
// Afficher "Lilygo T-Display S3" à la position définie
tft.println("Lilygo T-Display S3");
// Lire et afficher la taille de la mémoire Flash
// ESP.getFlashChipSize() retourne la taille totale de la mémoire Flash en octets
uint32_t flashSize = ESP.getFlashChipSize();
// Changer la couleur du texte en orange pour la section Flash
tft.setTextColor(TFT_ORANGE);
// Positionner le curseur à (10, 80) pour afficher la taille de la Flash
tft.setCursor(10, 80);
// Afficher la taille de la Flash en Mo
tft.print("Flash: ");
tft.print(flashSize / (1024 * 1024)); // Conversion en Mo (1 Mo = 1024 Ko = 1024 * 1024 octets)
tft.println(" Mo");
// Vérifier si la PSRAM est présente
if (psramFound()) {
// Lire la taille de la PSRAM en octets
uint32_t psramSize = ESP.getPsramSize();
// Positionner le curseur à (10, 110) pour afficher la taille de la PSRAM
tft.setCursor(10, 110);
// Changer la couleur du texte en cyan pour la section PSRAM
tft.setTextColor(TFT_CYAN);
// Afficher la taille de la PSRAM en Mo
tft.print("PSRAM: ");
tft.print(psramSize / (1024 * 1024)); // Conversion en Mo
tft.println(" Mo");
} else {
// Si la PSRAM n'est pas détectée, afficher un message
tft.setCursor(10, 110);
tft.setTextColor(TFT_CYAN);
tft.println("No PSRAM detected");
}
}
void loop() {
// Attendre 1 minute et entrer en veille profonde
delay(60000);
enterDeepSleep();
}Si tout se déroule normalement, votre Lilygo T-Display S3 devrait afficher les messages suivants :

Tension de la batterie
Il est possible de mesurer la tension de la batterie via la broche LCD_BAT_VOLT (GPIO4).
