Lilygo T-Display S3 sous IDE Arduino

0
(0)

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-DisplayLILYGO T-Display S3
MicrocontrôleurESP32 (Tensilica Xtensa LX6)ESP32S3 (Tensilica Xtensa LX7)
Écran135 x 240170 x 320
SRAM448 Ko512 Ko
FLASH4 Mo16 Mo
PSRAM8 Mo
TFT DriverST7789VST7789
TFT Interface SPISPI + 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 :

Plaintext
https://espressif.github.io/arduino-esp32/package_esp32_index.json

Voici 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 :

C++
//#include <User_Setup.h>           // Default setup is root library folder

Et dé-commenter la ligne suivante :

C++
#include <User_Setups/Setup206_LilyGo_T_Display_S3.h>     // For the LilyGo T-Display S3 based ESP32S3 with ST7789 170 x 320 TFT

Afficher 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 :

C++
// 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).

How useful was this post?

Click on a star to rate it!

Average rating 0 / 5. Vote count: 0

No votes so far! Be the first to rate this post.

We are sorry that this post was not useful for you!

Let us improve this post!

Tell us how we can improve this post?