LVGL, la bibliothèque graphique qui alimente la plupart des interfaces du Cheap Yellow Display

Le Cheap Yellow Display (officiellement ESP32-2432S028R) est une petite carte de développement qui associe un ESP32 à un écran tactile résistif 2,8 pouces 320x240, un emplacement pour carte SD, une LED RGB et un capteur de lumière, le tout pour moins de dix dollars. Il a décollé en 2024, et d’ici 2026, il est devenu la cible par défaut pour quiconque souhaite un vrai écran tactile sur un bureau, un mur ou la face avant d’une imprimante 3D. Le matériel n’est que la moitié de l’histoire. L’autre moitié est la chaîne d’outils de bureau que nous utilisons pour concevoir des interfaces, écrire un firmware et déployer des builds sur la carte. Vous trouverez ci-dessous les sept outils que nous utilisons le plus souvent lorsque nous travaillons sur un projet CYD, du premier pixel clignotant à un tableau de bord domotique poli.

Ce qu’il faut rechercher dans un outil CYD

Le CYD est particulier. Il utilise un pilote d’affichage ILI9341 via SPI et un contrôleur tactile résistif XPT2046 sur un bus SPI séparé, et les assignations de broches ne sont pas celles que supposent la plupart des tutoriels ESP32. Cela signifie qu’un bon outil pour le travail CYD a quelques caractéristiques spécifiques.

Tout ce qui suit obtient de bons points sur au moins trois de ces cinq éléments.

Comparaison rapide

Outil Meilleur pour Plates-formes Gratuit ou payant Caractéristique remarquable
LVGL La couche graphique elle-même Windows, macOS, Linux Gratuit, MIT Exécute le même code C sur le CYD et sur un simulateur de bureau
SquareLine Studio Conception d’interfaces visuellement Windows, macOS, Linux Niveau personnel gratuit, Pro payant Exporte du code de projet LVGL C propre
PlatformIO Gestion des builds et des bibliothèques Windows, macOS, Linux Cœur gratuit, fonctionnalités Home payantes Un platformio.ini gère les cartes, les dépendances et l’OTA
Arduino IDE 2 Un premier projet CYD Windows, macOS, Linux Gratuit Board Manager trouve le cœur ESP32 en deux clics
ESP-IDF Travail profond du firmware et de bas niveau Windows, macOS, Linux Gratuit Accès complet aux pilotes Espressif et aux fonctionnalités RTOS
MicroPython Prototypage rapide en Python Windows, macOS, Linux Gratuit REPL en direct via USB, pas d’étape de compilation
ESPHome Tableaux de bord Home Assistant Windows, macOS, Linux Gratuit La configuration YAML se compile en firmware, aucun C requis

Les outils

1. LVGL – Meilleur pour la couche graphique

LVGL (Light and Versatile Graphics Library) est la raison pour laquelle travailler avec CYD est amusant. Il nous donne des boutons, des curseurs, des graphiques, des claviers et des animations qui semblent modernes sur un écran 320x240, et fonctionne sur presque n’importe quel microcontrôleur avec un framebuffer. La version 9 a réduit l’empreinte mémoire et simplifié les API de pilote d’affichage et d’entrée, ce qui importe avec le budget RAM limité du ESP32.

La fonctionnalité révolutionnaire pour les débutants est le simulateur de bureau : le même code C qui pilote le CYD peut s’exécuter à l’intérieur d’une fenêtre SDL sur notre ordinateur portable, nous permettant d’itérer sur la mise en page et l’interaction sans toucher la carte. Quand nous flashons, LVGL s’intègre parfaitement dans les projets PlatformIO, Arduino et ESP-IDF avec le même fichier lv_conf.h.

Tout ce qui est plus poli qu’une démo à deux boutons sur le CYD utilise presque certainement LVGL sous le capot.

Télécharger : Site . GitHub

2. SquareLine Studio – Meilleur pour concevoir des interfaces visuellement

Écrire des widgets LVGL à la main convient à un ou deux écrans. Au-delà de cela, nous voulons une toile. SquareLine Studio est un éditeur d’interface utilisateur glisser-déposer construit spécifiquement pour LVGL : nous disposons les écrans, connectons les gestionnaires d’événements, choisissons les polices, insérons les images, puis appuyons sur exporter pour obtenir un projet LVGL C complet prêt à intégrer dans PlatformIO ou Arduino.

Le niveau personnel gratuit est assez généreux pour les builds CYD de loisir, et il existe un modèle CYD en circulation dans la communauté qui définit la résolution 320x240 correcte et les paramètres du pilote ILI9341. Le niveau Pro déverrouille les écrans illimités, les widgets personnalisés et la possibilité de conserver les ressources sur la carte SD, ce qui en vaut la peine si nous commençons à vendre des projets.

Le flux de travail qui fonctionne pour nous : esquisser l’interface dans SquareLine, exporter, puis modifier manuellement le ui_events.c généré pour connecter la logique Wi-Fi, capteur ou MQTT.

Télécharger : Site

3. PlatformIO – Meilleur pour gérer les builds et les bibliothèques

Une fois qu’un projet a plus d’un fichier, PlatformIO vaut la peine. Il s’exécute comme une extension à l’intérieur de VS Code (et d’autres éditeurs) et remplace les étapes de build ad-hoc qui nuisent à la développement de loisir ESP32 avec un seul platformio.ini qui déclare la carte, le framework, les bibliothèques et la méthode de téléchargement.

Pour le travail CYD, le modèle est : choisir board = esp32dev, ajouter LVGL et la bibliothèque d’affichage TFT_eSPI ou LovyanGFX comme lib_deps, et déposer le correct User_Setup.h dans include/ pour que les broches correspondent au câblage CYD. Ensuite, un seul clic compile, télécharge et ouvre le moniteur série. OTA via Wi-Fi est une modification d’une ligne sur upload_protocol, ce qui est une grande victoire en matière de qualité de vie pour les cartes montées derrière une lunette.

Les versions des bibliothèques sont épinglées dans le fichier de configuration, donc un projet qui a été compilé l’année dernière compile toujours cette année. Ce n’est pas quelque chose que nous pouvons dire de chaque tutoriel ESP32.

Télécharger : Site . GitHub

4. Arduino IDE 2 – Meilleur pour un premier projet CYD

Arduino IDE 2 (la version stable actuelle, pas l’ancien Java 1.x) est où la plupart des gens commencent avec le CYD, et il n’y a rien de mal à rester. Il gère le paquet de carte ESP32 via Board Manager, livré avec un éditeur rapide basé sur Monaco avec autocomplétion, et dispose d’un moniteur série et d’un traceur intégrés.

Le navigateur d’exemples est l’outil de découverte de sa catégorie pour les débutants : installez les bibliothèques TFT_eSPI, XPT2046_Touchscreen et LVGL et des dizaines de croquis exécutables apparaissent dans le menu Fichier. La plupart des tutoriels CYD sur YouTube et GitHub sont écrits pour Arduino, donc suivre est sans effort.

Nous le choisissons quand nous voulons un croquis d’un seul fichier pour prouver que quelque chose fonctionne sur le matériel, puis portez vers PlatformIO une fois que le projet grandit.

Télécharger : Site

5. ESP-IDF – Meilleur pour le travail profond du firmware

Une fois que nous surpassons l’abstraction Arduino, le propre SDK d’Espressif nous attend. ESP-IDF nous donne les tâches FreeRTOS, le système de composants complet, la gestion profonde de la puissance, le contrôle dual-core et l’accès à chaque périphérique exposé par l’ESP32. C’est ce que les produits expédiés utilisent.

Le compromis est la verbosité. Une LED clignotante est plus de code qu’en Arduino, et le pilote d’affichage CYD ne s’intègre pas, nous apportons donc le port esp_lcd de LVGL ou câblons TFT_eSPI comme composant. La récompense est qu’une fois la plomberie en place, nous pouvons faire des choses qu’Arduino ne peut pas, comme l’actualisation de l’affichage à double buffer avec DMA et des framebuffers soutenu par PSRAM.

Nous l’utilisons quand le projet CYD implique quoi que ce soit de lourd réseau (coexistence BLE + Wi-Fi, maille, TLS), ou quand nous nous soucions de la consommation de batterie.

Télécharger : Site . GitHub

6. MicroPython – Meilleur pour les prototypes Python

MicroPython place un interpréteur Python 3 sur l’ESP32 avec REPL via USB, et cela change notre façon de faire des prototypes. Tapez une ligne, regardez le pixel changer sur le CYD. Pas de compilation, pas de cycle de flash, pas d’attente.

L’histoire graphique est un peu plus fragmentée qu’avec LVGL C, mais LVGL lui-même livre les liaisons MicroPython, et les builds lv_micropython personnalisées pour le CYD circulent dans la communauté. Pour les tableaux de bord plus simples, les pilotes st7789py et xpt2046 suffisent pour dessiner du texte, des sprites et des régions tactiles en quelques dizaines de lignes.

Nous l’utilisons pour l’enseignement, pour les jouets à usage unique et pour ce type d’outils internes où nous voulons pouvoir SSH via WebREPL et modifier le comportement sans reconstruction.

Télécharger : Site

7. ESPHome – Meilleur pour les tableaux de bord domotiques

Si le CYD va être accroché au mur à côté d’une installation Home Assistant, ESPHome est le chemin le plus court vers un tableau de bord fonctionnel. Au lieu d’écrire du firmware, nous écrivons un fichier YAML qui déclare l’affichage, l’écran tactile, les commutateurs, les capteurs et les pages d’interface. ESPHome le compile en un binaire firmware et le flashe, puis connecte automatiquement tout cela à Home Assistant.

Le CYD a un support de premier ordre dans la documentation ESPHome, y compris les affectations correctes du bus SPI, le rétroéclairage PWM et les conseils de calibrage de l’écran tactile. Les configurations communautaires couvrent les thermostats, les contrôleurs multimédias et les panneaux d’éclairage multi-pièces, et n’importe lequel d’entre eux peut être forké et édité dans le tableau de bord ESPHome via un navigateur.

Pour quiconque souhaite un tableau de bord domotique fonctionnel ce week-end plutôt qu’un projet d’apprentissage du firmware, c’est la réponse.

Télécharger : Site . GitHub

Comment choisir le bon

Le bon outil dépend de l’endroit où va le CYD et de la profondeur à laquelle nous voulons aller. Quelqu’un qui vient de prendre la carte et veut voir quelque chose se passer sur l’écran ce soir devrait installer Arduino IDE 2, ajouter le cœur ESP32 et charger un exemple TFT_eSPI. C’est la distance la plus courte vers un pixel qui fonctionne.

Pour un projet avec une véritable interface (menus, écrans, animations, clavier), la réponse est LVGL pour le rendu, SquareLine Studio pour la mise en page et PlatformIO pour la compilation. Ce trio est ce que la plupart des projets CYD polis sur GitHub utilisent, et c’est la combinaison que nous recommandons à quiconque prend la carte au sérieux.

Les développeurs de firmware ayant l’intention d’expédier un produit doivent sauter Arduino et aller directement à ESP-IDF, puis apporter LVGL comme composant. C’est plus de configuration, mais cela élimine le plafond.

Les amateurs et éducateurs axés sur Python accomplissent plus en MicroPython, en particulier pour les ateliers d’enfants ou les outils internes.

Et si le CYD est destiné à vivre sur le mur avec Home Assistant derrière, ESPHome contourne tout ce qui précède et nous permet de décrire le tableau de bord en YAML en une après-midi.

FAQ

Qu’est-ce que Cheap Yellow Display exactement ? C’est le ESP32-2432S028R, un module ESP32-WROOM-32 soudé à une carte avec un écran tactile 2,8 pouces 320x240 (pilote ILI9341, tactile résistif XPT2046), emplacement pour carte SD, LED RGB, capteur de lumière et port USB. Il se vend environ huit à douze dollars sur la plupart des marchés et a reçu le surnom “Cheap Yellow Display” parce que les premières séries ont été expédiées sur des PCB jaunes.

Dois-je utiliser LVGL ou y a-t-il des alternatives ? LVGL est le choix le plus populaire, mais pas le seul. TFT_eSPI et LovyanGFX nous donnent tous les deux des primitives rapides (lignes, formes, sprites, texte) si nous voulons dessiner l’interface nous-mêmes. Pour les jauges et les tableaux de bord simples, c’est suffisant. LVGL l’emporte dès que nous voulons des widgets, une animation ou un clavier.

Puis-je développer pour le CYD sous macOS ou Linux ? Oui. Chaque outil de cet article s’exécute nativement sur Windows, macOS et Linux. Sous Linux, nous devrons peut-être ajouter une règle udev pour que notre compte utilisateur puisse communiquer avec la puce CH340 ou CP2102 USB-to-serial sur la carte, mais la configuration est une étape unique.

Comment flasher le CYD via Wi-Fi au lieu d’USB ? PlatformIO, Arduino IDE 2, ESP-IDF et ESPHome prennent tous en charge les mises à jour OTA. Le modèle courant est d’inclure une bibliothèque OTA ou un composant dans le firmware, de connecter la carte à Wi-Fi, puis de définir la méthode de téléchargement dans l’outil pour qu’elle pointe vers l’adresse IP de la carte. Le premier téléchargement se fait via USB, tout le reste peut être sans fil.

SquareLine Studio est-il gratuit pour usage personnel ? Le niveau personnel est gratuit et couvre la plupart des projets CYD de loisir. Il limite des éléments comme le nombre d’écrans et la résolution des ressources, mais le code LVGL exporté n’a aucune restriction d’exécution. L’abonnement Pro déverrouille les écrans illimités, les actifs haute résolution et l’utilisation commerciale.