LILYGO TTGO T-Display : l’ESP32 qui affiche le résultat tout de suite
Une carte de développement ordinaire sait faire beaucoup de choses, mais elle parle au développeur surtout par des lignes dans le Serial Monitor. La LILYGO TTGO T-Display a une manière plus convaincante de s’y prendre : un écran couleur intégré. Vous branchez un capteur et vous voyez aussitôt les mesures. Vous recevez des données par Wi‑Fi et vous affichez une courbe ou un état. Vous assemblez un instrument autonome et il n’y a plus d’écran séparé à ajouter, ni son alimentation à router, ni de place à lui trouver dans le boîtier.
C’est précisément pour cela que la T-Display est plus intéressante qu’une simple « carte ESP32 de plus ». C’est presque une face avant d’appareil toute faite : un microcontrôleur, un écran, deux boutons, l’USB‑C et la charge d’un accumulateur Li‑Po d’un élément, sur un seul circuit imprimé étroit.

De quelle carte il est question exactement
Le nom T-Display est devenu toute une famille, et le premier piège technique est donc de prendre les caractéristiques du mauvais modèle. Il est ici question de la LILYGO/TTGO T-Display classique sur l’ESP32 d’origine, avec un écran de 1,14 pouce et une définition de 135 × 240 points. Ce n’est pas la T-Display-S3 : la S3 a un autre processeur, un écran de 1,9 pouce, une autre connexion d’écran, d’autres GPIO et de la PSRAM.
La documentation LILYGO actuelle indique pour la carte classique le SoC ESP32-D0WDQ6. La taille de la Flash et la puce USB–UART peuvent différer d’un lot à l’autre : la description du vendeur ou l’exemple de code d’un tiers ne remplacent donc pas la vérification de la carte que vous avez en main.
Caractéristiques techniques
| Élément | Caractéristique | Ce que cela change en pratique |
|---|---|---|
| Microcontrôleur | ESP32-D0WDQ6 | L’ESP32 classique, pas un S2/S3/C3 |
| Processeur | 2 cœurs Xtensa LX6, jusqu’à 240 MHz | De quoi faire tourner ensemble le Wi‑Fi, l’interface, les capteurs et la logique de fond |
| Mémoire | 520 Ko de SRAM intégrée, pas de PSRAM | Les grandes images et le double tampon demandent de compter la mémoire |
| Flash | En général 4 Mo ; une version 16 Mo existe | La taille est à vérifier avant de choisir une table de partitions |
| Liaison sans fil | Wi‑Fi 2,4 GHz 802.11 b/g/n ; Bluetooth 4.2 BR/EDR et BLE | Convient à MQTT, HTTP, ESP‑NOW, aux balises BLE et au dialogue avec un téléphone |
| Écran | TFT IPS 1,14″, contrôleur ST7789V | Un écran couleur aux bons angles de vue |
| Définition | 135 × 240 en portrait ; le plus souvent 240 × 135 en paysage | Pratique pour une grande valeur, quelques états ou un petit graphique |
| Interface de l’écran | SPI 4 fils ; le profil TFT_eSPI d’origine le pilote à 40 MHz | L’écran est rapide, mais il occupe plusieurs GPIO |
| Commandes | Deux boutons : GPIO0 et GPIO35 | De quoi faire un menu, feuilleter des écrans, confirmer ou réveiller |
| Alimentation | USB‑C ou Li‑Po d’un élément ; charge intégrée | La base d’un instrument portable sans module de charge séparé |
| Suivi de la batterie | ADC sur GPIO34, circuit de mesure activé par GPIO14 | La charge peut s’afficher directement dans l’interface |
| USB | USB‑C via un pont USB–UART | L’ESP32 d’origine n’a pas d’USB Device intégré ; le port sert à l’alimentation, au flashage et à la liaison série |
| USB–UART | CH9102 dans le commerce actuel ; les anciennes révisions utilisaient des CP210x | En cas de souci de pilote, regardez le VID/PID réel plutôt que de deviner d’après le nom de la carte |
| Niveaux logiques | 3,3 V ; les GPIO ne tolèrent pas le 5 V | Un signal 5 V demande une adaptation de niveau |
| Dimensions | Environ 51,5 × 25 mm | La carte est nettement plus étroite que la plupart des montages « DevKit + TFT séparé » |
| Environnements de développement | Arduino IDE, PlatformIO, ESP-IDF ; MicroPython est possible | Arduino pour démarrer vite, ESP-IDF pour un projet plus rigoureux |
Deux chiffres aident à saisir l’échelle. Une image complète au format RGB565 occupe 135 × 240 × 2 = 64 800 octets, soit environ 63,3 Kio. Deux tampons d’image, c’est déjà près de 126,6 Kio, sans compter la pile Wi‑Fi, les tâches et les données de l’application. C’est pourquoi le redessin partiel, les sprites de taille modérée et l’affichage des seules zones modifiées sont particulièrement utiles sur cette carte.
Pourquoi l’écran intégré a vraiment de la valeur
Ici l’écran sert d’outil de développement, pas de décoration. Il raccourcit le chemin qui va du prototype à un objet utilisable sans ordinateur.
- Un retour immédiat. L’appareil montre lui-même s’il s’est connecté au Wi‑Fi, quelle adresse IP il a reçue, ce qu’a renvoyé le capteur et pourquoi l’actionneur n’a pas réagi.
- Une interface locale. Deux boutons et un écran couleur suffisent à faire un menu, plusieurs pages, des avertissements et des réglages simples, sans application mobile.
- Un diagnostic sur place. Si le capteur est installé dans un tableau électrique, une serre ou sur une machine, les paramètres clés se lisent à côté de l’équipement et pas seulement dans le nuage.
- Un prototype compact et fini. Une fois l’accumulateur et le boîtier ajoutés, la T-Display ressemble déjà à un appareil de poche, à une télécommande ou à un panneau de supervision miniature.
- Une démonstration rapide de l’idée. Un client ou un collègue juge plus facilement un écran vivant d’états qu’un flot de nombres dans un terminal.
Mais l’écran impose aussi des limites. Il est petit et non tactile, et six signaux de l’ESP32 sont déjà pris par l’affichage. Un rétroéclairage allumé en permanence pèse nettement sur l’autonomie. Pour du graphisme complexe, la PSRAM manque : la T-Display donne donc le meilleur d’elle-même non pas comme un « micro-smartphone », mais comme une interface claire faite de quelques indicateurs bien choisis.
Ce qui est déjà relié à l’ESP32
| Fonction sur la carte | GPIO | Ce qu’il faut savoir |
|---|---|---|
| TFT MOSI | 19 | Données vers le ST7789V |
| TFT SCLK | 18 | Ligne d’horloge de l’écran |
| TFT CS | 5 | Sélection de l’écran ; en même temps broche de strapping au démarrage de l’ESP32 |
| TFT DC | 16 | Bascule « commande/données » |
| TFT RESET | 23 | Réinitialisation matérielle du contrôleur d’écran |
| Rétroéclairage TFT | 4 | Peut être allumé, éteint et réglé en PWM |
| Bouton sur GPIO0 | 0 | Aussi BOOT/strapping : le maintenir pendant un reset met l’ESP32 en bootloader |
| Deuxième bouton | 35 | Entrée seulement ; GPIO35 n’a pas de résistances de tirage internes |
| Mesure du Li‑Po | 34 | ADC1, entrée seulement |
| Activation du circuit de mesure | 14 | Avant de lire la batterie, GPIO14 est généralement mis à l’état haut |
Il est raisonnable de considérer ces broches comme prises. Le SPI autorise en théorie le partage des lignes MOSI/SCLK entre plusieurs périphériques, mais pour un premier projet il est plus sûr de laisser GPIO18 et GPIO19 à l’écran et de sortir le SPI externe sur des broches libres.
Les connecteurs : le détail des broches
Orientation retenue dans les tableaux : l’écran face à vous, l’USB‑C en bas.
Rangée de gauche, de haut en bas
| Broche | Possibilités | Limites et bons usages |
|---|---|---|
| GND | Masse | Deux broches à la suite |
| GND | Masse | — |
| GPIO21 | Entrée/sortie numérique | Le SDA recommandé pour l’I²C |
| GPIO22 | Entrée/sortie numérique | Le SCL recommandé pour l’I²C |
| GPIO17 | Entrée/sortie numérique | L’un des GPIO libres les moins problématiques ; convient pour UART TX ou PWM |
| GPIO2 | ADC2, Touch2, E/S numérique | Broche de strapping : le circuit externe ne doit pas imposer un mauvais niveau au démarrage |
| GPIO15 | ADC2, Touch3, E/S numérique | Strapping et JTAG ; à utiliser avec précaution |
| GPIO13 | ADC2, Touch4, E/S numérique | Recoupe le JTAG, mais reste généralement utilisable après le démarrage |
| GPIO12 | ADC2, Touch5, E/S numérique | Strapping et JTAG ; une charge externe active pendant le reset est ici particulièrement malvenue |
| GND | Masse | Deux broches à la suite |
| GND | Masse | — |
| 3V3 | Alimentation 3,3 V | Pas un GPIO |
Rangée de droite, de haut en bas
| Broche | Possibilités | Limites et bons usages |
|---|---|---|
| 3V3 | Alimentation 3,3 V | Pas un GPIO |
| GPIO36 / SVP | ADC1_CH0, entrée numérique | Entrée seulement, pas de résistance de tirage interne |
| GPIO37 | ADC1_CH1, entrée numérique | Entrée seulement, pas de résistance de tirage interne |
| GPIO38 | ADC1_CH2, entrée numérique | Entrée seulement, pas de résistance de tirage interne |
| GPIO39 / SVN | ADC1_CH3, entrée numérique | Entrée seulement, pas de résistance de tirage interne |
| GPIO32 | ADC1_CH4, Touch9, E/S numérique | Excellent GPIO polyvalent et entrée analogique qui fonctionne même avec le Wi‑Fi actif |
| GPIO33 | ADC1_CH5, Touch8, E/S numérique | Excellent GPIO polyvalent et entrée analogique qui fonctionne même avec le Wi‑Fi actif |
| GPIO25 | ADC2_CH8, DAC1, E/S numérique | Un vrai CNA 8 bits ; pratique en sortie, en PWM ou comme SCK d’un SPI externe |
| GPIO26 | ADC2_CH9, DAC2, E/S numérique | Le second vrai CNA 8 bits ; pratique comme MOSI d’un SPI externe |
| GPIO27 | ADC2_CH7, Touch7, E/S numérique | GPIO polyvalent ; pratique comme MISO d’un SPI externe |
| GND | Masse | — |
| 5V | Rail d’alimentation 5 V | Pas un GPIO, et pas le signe d’une logique 5 V |
SVP et SVN sont les noms historiques des entrées analogiques SENSOR_VP et SENSOR_VN, c’est-à-dire GPIO36 et GPIO39. Ce ne sont pas des broches d’alimentation.
Comment choisir ses GPIO sans mauvaise surprise
Pour des entrées et sorties numériques ordinaires, les premiers candidats sont GPIO17, 21, 22, 25, 26, 27, 32 et 33. Il est logique de garder GPIO21/22 pour l’I²C.
Pour un second bus SPI, l’exemple d’usine officiel de LILYGO utilise un groupe commode :
| Signal du SPI externe | GPIO |
|---|---|
| SCK | 25 |
| MOSI | 26 |
| MISO | 27 |
| CS | 33 |
Pour des capteurs analogiques avec le Wi‑Fi activé, il faut choisir l’ADC1 : GPIO32, 33, 36, 37, 38 ou 39. Sur l’ESP32 classique, l’ADC2 partage une ressource avec le Wi‑Fi : lire GPIO2/12/13/15/25/26/27 comme entrées analogiques pendant que la radio tourne peut tout simplement ne pas marcher. Les GPIO36–39, eux, ne servent qu’en entrée et demandent une résistance de tirage externe si le capteur ou le bouton en a besoin.
Il y a encore trois règles qui font gagner particulièrement beaucoup de temps :
- GPIO0, 2, 5, 12 et 15 sont lus pendant le reset comme broches de strapping. Les périphériques connectés ne doivent pas forcer leurs niveaux de démarrage.
- GPIO34–39 sont des entrées seulement et n’ont pas de
pull-up/pull-downlogiciels. Sur la carte elle-même, GPIO34 et GPIO35 sont déjà pris par la batterie et par un bouton. - Une charge ne doit pas être alimentée directement depuis un GPIO. Un relais, un moteur, un solénoïde ou un ruban de forte puissance se commandent par un transistor, un MOSFET ou un driver muni des protections nécessaires.
Alimentation et autonomie
La carte se nourrit par l’USB‑C et accepte un Li‑Po d’un élément par un connecteur 1,25 mm à deux contacts. L’accumulateur peut être chargé sur la carte, et sa tension mesurée sur GPIO34 une fois le circuit de mesure activé par GPIO14. C’est commode pour un indicateur de charge maison, mais le pourcentage ne s’obtient pas de façon fiable par une simple formule linéaire : la tension d’un Li‑Po évolue de manière non linéaire, et l’ADC de l’ESP32 d’origine demande un étalonnage.
Il ne faut pas confondre la T-Display avec un capteur ultra-économe sous prétexte que l’ESP32 sait faire du deep sleep. Des mesures d’amateurs sur la carte classique donnent des ordres de grandeur d’environ 66 mA en fonctionnement, 80–140 mA avec le Wi‑Fi actif et à peu près 9 mA en light sleep. Ce ne sont pas des garanties de fiche technique : le résultat dépend de la luminosité, du firmware, de la qualité de l’alimentation et de la révision de la carte. La conclusion pratique principale est d’éteindre ou d’atténuer le rétroéclairage, de couper la radio entre deux sessions et de réveiller l’appareil par un bouton ou un timer.
Ce que l’on construit sur une T-Display : trois cas parlants
1. Un écran Home Assistant local
L’un des usages les plus naturels est d’afficher une température, une consommation d’énergie, l’état du chauffage ou n’importe quelle entité Home Assistant. Dans un projet publié, la carte affiche la température du four via ESPHome, mais le même modèle convient à l’heure du prochain train, au niveau d’une cuve ou au débit d’internet. L’intérêt du cas tient au matériel minimal : pour un panneau fixe, la T-Display et une alimentation USB suffisent.
2. Un tableau des départs près de la porte
Le projet ouvert ttgo-departure-board transforme la carte en tableau d’affichage des transports en commun. Le dépôt contient 33 variantes de firmware pour des réseaux de 17 pays : l’ESP32 rejoint le Wi‑Fi, synchronise l’heure par NTP, interroge une API à peu près toutes les 30 secondes et met à jour le compte à rebours chaque seconde. Les deux boutons changent d’arrêt et pilotent l’écran. C’est un bon exemple d’interface où 240 × 135 points ne sont pas trop peu : si l’on n’affiche que la direction, la ligne, le quai et les minutes, l’information est exactement celle qu’il faut avant de sortir de chez soi.
3. Un tout petit moniteur sans fil
En 2025, un projet s’est fait remarquer en transmettant par Wi‑Fi une image réduite du bureau vers une carte T-Display compatible. L’ordinateur compare les images et n’envoie que les pixels modifiés, en appliquant du groupage et du RLE. Sur une image presque statique, son auteur a atteint jusqu’à 60 images par seconde, et environ 5 images par seconde en mouvement soutenu, avec une latence inférieure à 100 ms sur un bon réseau. Ce n’est pas un remplaçant pratique d’un moniteur, mais c’est une superbe démonstration de la façon dont un algorithme d’économie de trafic permet de tirer étonnamment beaucoup d’un ESP32 et d’un petit écran SPI. Attention : le projet utilise une carte TENSTAR compatible dotée de 16 Mo de Flash, et cette caractéristique ne se reporte donc pas automatiquement sur n’importe quelle LILYGO.
Un autre filon populaire, ce sont les mini-jeux. Deux boutons, un écran couleur et des bibliothèques toutes faites ont permis de réaliser Space Shooter, Breakout et de petites consoles portables réunissant plusieurs jeux. C’est à la fois un divertissement et un bon banc d’apprentissage pour les sprites, la fréquence d’images, la gestion des boutons et celle de la mémoire.

Quatre montages de la chaîne sur une T-Display
La chaîne Build Mode a pour l’instant réalisé quatre montages sur une T-Display. Dans une vidéo, la carte devient une enceinte Bluetooth : l’ESP32 reçoit la musique en A2DP, un amplificateur MAX98357A alimente un petit haut-parleur et l’écran affiche un analyseur de spectre en temps réel. Dans une autre, elle lit un capteur de mouvement MPU-6500 en SPI, et une page dans le navigateur transforme ses mesures en modèle 3D. Dans la troisième, elle maintient un cadre en équilibre grâce à la poussée d’une seule hélice : un MPU-6500 mesure l’inclinaison et un régulateur PID sur l’ESP32 pilote le moteur via un DRV8833. Dans la quatrième, elle devient un niveau et une boussole dans un boîtier imprimé en 3D, avec un MPU-6500, un magnétomètre BMM150 et une cellule 18650.
Ce que l’on cherche le plus souvent, et pourquoi
Quatre thèmes reviennent dans les premiers résultats pour les requêtes sur la T-Display classique : le premier démarrage, la configuration de TFT_eSPI, le brochage et les projets tout faits — horloges, météo, Home Assistant, panneaux MQTT et jeux. Cela reflète exactement les forces et les faiblesses de la carte.
Ce qui attire, c’est la rapidité avec laquelle on obtient un beau résultat ; ce sur quoi on bute le plus souvent, c’est la configuration de cet écran précis. TFT_eSPI a besoin du profil Setup25_TTGO_T_Display.h ; il y fixe le ST7789V, la géométrie 135 × 240 et les bons GPIO. Sur d’autres piles logicielles, il faut tenir compte du décalage de la zone active de la matrice, de l’ordre des couleurs BGR et de la commande séparée du rétroéclairage. Panne révélatrice : le programme et le LCD lui-même peuvent très bien fonctionner alors que l’écran paraît noir, simplement parce que GPIO4 n’a pas allumé le rétroéclairage.
Le test minimal pour Arduino, une fois le profil TFT_eSPI choisi, ressemble à ceci :
#include <TFT_eSPI.h>
TFT_eSPI tft;
void setup() {
pinMode(4, OUTPUT);
digitalWrite(4, HIGH);
tft.init();
tft.setRotation(1); // 240 × 135
tft.fillScreen(TFT_BLACK);
tft.setTextColor(TFT_CYAN, TFT_BLACK);
tft.drawString("Wi-Fi: OK", 12, 12, 4);
}
void loop() {}
Dans l’IDE Arduino, le fabricant recommande le profil ESP32 Dev Module, une fréquence CPU de 240 MHz, le mode QIO, 4 Mo de Flash pour la version ordinaire, la PSRAM désactivée et une vitesse de téléversement de 921600. Si le firmware ne démarre pas ou si le bootloader ne répond pas, GPIO0 sert de BOOT : maintenir le bouton, appuyer brièvement sur Reset, relâcher BOOT et relancer le téléversement.
Forces et faiblesses
| Points forts | Points faibles |
|---|---|
| La dalle IPS couleur est déjà montée et validée par le schéma de la carte | L’écran est petit et sans couche tactile |
| Wi‑Fi, Bluetooth Classic et BLE | La génération ESP32 est ancienne : pas d’USB natif ni des possibilités récentes de l’ESP32-S3 |
| Deux boutons, USB‑C, charge Li‑Po, suivi de la batterie | Pas de PSRAM ; un graphisme lourd dévore vite la SRAM |
| Plus compacte qu’un DevKit avec un TFT séparé | L’écran et les circuits de service occupent un nombre notable de GPIO |
| Arduino, PlatformIO, ESP-IDF, TFT_eSPI et des exemples LVGL existent | L’ADC2 entre en conflit avec le Wi‑Fi, et GPIO36–39 ne servent qu’en entrée |
| Bien adaptée aux panneaux et aux appareils de mesure autonomes | Le rétroéclairage et le Wi‑Fi limitent la durée de fonctionnement sur batterie |
| Deux vrais CNA sur GPIO25/26 et beaucoup d’entrées ADC1 | Les révisions diffèrent par la Flash et l’USB–UART : la spécification d’un exemplaire précis est à vérifier |
Conclusion
La LILYGO TTGO T-Display vaut non par des caractéristiques record, mais par un agencement bien vu. Elle transforme le travail invisible d’un microcontrôleur en une interface lisible : l’appareil signale aussitôt son état, montre ses mesures, accepte des commandes par deux boutons et sait fonctionner sur batterie.
Pour une horloge de bureau, un indicateur Home Assistant, un appareil de mesure portable, une télécommande MQTT, un mini-jeu ou un tableau des départs en réseau, la T-Display classique reste une base très raisonnable. L’essentiel est de garder en tête son âge et ses limites : ne pas la confondre avec la T-Display-S3, ne pas compter sur la PSRAM, ménager les GPIO de démarrage, utiliser l’ADC1 quand le Wi‑Fi est actif et vérifier la taille de la Flash de la carte que l’on a. Si 240 × 135 points et deux boutons suffisent au projet, l’écran intégré économise non seulement des composants, mais aussi la ressource la plus chère du prototypage : le temps qui sépare l’idée du premier résultat que l’on peut voir.
Tout ce qui précède, condensé en une référence matérielle indépendante de la plateforme qu’un agent de programmation peut suivre : classes d’affectation des broches, règles électriques, matrice GPIO canonique et profil de carte lisible par une machine.



