▧ domotique.← Tous les tutorielsLe code ↓

LE CARNET DU LABO / AFFICHAGE & ÉNERGIE

Un écran qui
garde la mémoire.

Un ESP32, huit fils et une petite dalle e-paper. Construisez un tableau lisible même lorsque l’écran dort.

Waveshare 1,54″ · 200 × 200 pixels · Arduino

Montage réel : ESP32 sur plaque d’essai relié à un écran affichant le logo iLM, la température, l’humidité, la date et l’heure
Le montage en fonctionnement · valeurs simulées

01 / DU CROQUIS À L’ÉCRAN

Votre premier tableau e-paper.

Le projet affiche le logo iLM, l’année, une température, une humidité, la date et l’heure. Aucun capteur n’est nécessaire pour cet essai.

Le matériel

  • Une carte uPesy ESP32 Wroom Low Power
  • Un module Waveshare e-paper 1,54″ noir et blanc, avec carte de commande et câble à 8 fils
  • Une plaque d’essai, des fils et un câble USB de données
  • Arduino IDE et les bibliothèques GxEPD2 et Adafruit GFX

Des valeurs de démonstration

La température varie doucement entre 18 et 22 °C et l’humidité entre 45 et 55 % HR. Il ne s’agit pas de mesures réelles. L’écran est actualisé toutes les 60 secondes dans ce programme de démonstration.

Croquis initial du tableau : ILM et année, température, humidité, date et heure
Le croquis initial, adapté au format carré de la dalle.

02 / HUIT FILS, UNE LIAISON SPI

Relier l’écran à l’ESP32.

Débranchez l’USB et la batterie avant de câbler. Repérez les noms inscrits sur les cartes : les numéros GPIO ne sont pas des numéros de position.

Câblage utilisé et validé sur ce montage
Fil du câble fourniÉcranESP32
RougeVCC3V3
NoirGNDGND
BleuDIN / MOSIGPIO23
JauneCLK / SCKGPIO18
OrangeCSGPIO27
VertDCGPIO26
BlancRSTGPIO25
VioletBUSYGPIO33

Les couleurs correspondent au câble photographié. Sur un autre câble, suivez les inscriptions du module.

Dos du module Waveshare : broches BUSY, RST, DC, CS, CLK, DIN, GND et VCC et pont BS sur 0
Les huit signaux, repérés directement sur le module.
Gros plan sur la carte uPesy ESP32 Low Power et les connexions sur la plaque d’essai
Côté ESP32 : vérifiez les inscriptions des GPIO. Les LED de la plaque d’essai ne sont pas nécessaires au projet.

03 / UN PROGRAMME À REPRENDRE

Le code complet. Le logo inclus.

Cette version a été compilée et téléversée sur le montage présenté. Elle met l’écran en veille après chaque affichage ; l’ESP32 reste actif entre deux mises à jour.

  1. Installer les outils. Dans Arduino IDE, ajoutez le paquet de cartes esp32 d’Espressif. Installez GxEPD2, Adafruit GFX Library et les dépendances proposées, dont Adafruit BusIO.
  2. Ouvrir le projet. Téléchargez et extrayez l’archive. Placez EpaperTableau.ino et logo_ilm.h dans un dossier nommé EpaperTableau, puis ouvrez le fichier .ino.
  3. Choisir la carte et le port. Pour cette uPesy Wroom, sélectionnez « ESP32 Dev Module ». Le port utilisé lors de cet essai était COM4 ; choisissez celui de votre ordinateur.
  4. Téléverser et observer. Un clignotement au rafraîchissement complet est normal. Le moniteur série fonctionne à 115200 bauds.
EpaperTableau.zipProgramme Arduino + bitmap du logo iLM
Télécharger le projet ↓
Chargement du code…

Accès direct : programme .ino · logo .h

04 / AFFICHER, PUIS DORMIR

L’image reste.
La consommation baisse.

Les pigments d’un écran e-paper conservent leur position sans rafraîchissement permanent. La veille de l’écran et celle de l’ESP32 sont deux actions distinctes.

01

Réveiller

L’ESP32 démarre et initialise l’écran.

02

Mettre à jour

Le programme calcule les valeurs et dessine le tableau.

03

Endormir

L’écran entre en veille ; l’ESP32 peut ensuite dormir à son tour.

Ce que fait déjà le programme

display.hibernate();

Avec le pilote V1, cette commande coupe les tensions de commande de la dalle et demande la veille profonde du contrôleur. L’image reste visible. La carte bleue reste raccordée au 3,3 V.

Ce qu’il reste à ajouter pour l’ESP32

Un simple delay() ne met pas la carte en veille profonde. Pour un fonctionnement sur batterie, l’ESP32 peut se réveiller périodiquement, afficher, puis dormir.

#include <esp_sleep.h>

// Exemple de principe, après l’affichage :
display.hibernate();
esp_sleep_enable_timer_wakeup(300ULL * 1000000ULL);
esp_deep_sleep_start();

Extrait pédagogique, non intégré à l’archive. Après 5 minutes de sommeil, l’exécution reprend dans setup(). Il faut adapter l’initialisation de l’heure pour ne pas la remettre à l’heure de compilation à chaque réveil et conserver le compteur de simulation en mémoire RTC si nécessaire. Le cycle complet inclut aussi le temps passé éveillé.

Les bons ordres de grandeur

2–5 µA

Courant de veille profonde de la dalle GDEP015OC1 associée au pilote V1 : typique 2 µA, maximum indiqué 5 µA dans la fiche technique. Ce n’est pas une mesure du module complet.

< 15 µA

Consommation annoncée par uPesy pour sa carte Low Power seule en deep sleep, via batterie ou VIN dans les conditions prévues. Ce chiffre n’inclut ni l’écran ni les capteurs. L’alimentation USB n’est pas le mode optimisé.

Faut-il tout rafraîchir si un chiffre change ?

Non : le pilote V1 prend en charge le rafraîchissement partiel. Une zone peut être mise à jour plus rapidement, avec moins de clignotements. Des rafraîchissements complets périodiques effacent les traces résiduelles ; leur fréquence dépend de la dalle et de l’usage.

Après hibernation, la RAM du contrôleur n’est plus conservée : une reprise partielle fiable demande de restaurer les données et l’état nécessaires. Le programme fourni privilégie un rafraîchissement complet après chaque réveil de l’écran.

Choisir une stratégie selon l’usage
StratégieIntérêtCompromis
Complet + hibernationSimple, veille profonde entre les affichagesClignotements et énergie du rafraîchissement complet
Partiel + mémoire conservéeAdapté aux petites variations fréquentesVeille potentiellement plus coûteuse, nettoyage complet périodique
Écran et ESP32 en veille profondeAdapté aux informations peu fréquentesGestion du réveil, de l’heure et des états à prévoir

Le bon choix se mesure sur un cycle entier : I moyen = (I actif × t actif + I veille × t veille) / durée du cycle. Gardez la même unité de courant et de temps. Réduire les réveils et le temps radio peut compter autant que la veille de l’écran.

LE COIN DE L’ÉTABLI

Si rien ne s’affiche.

Écran blanc ou « Busy Timeout »

Vérifiez 3V3, GND, BUSY sur GPIO33 et RST sur GPIO25, puis DIN et CLK. Confirmez le modèle de dalle : ce montage fonctionne avec GxEPD2_154. Un autre 1,54″ peut demander un pilote différent. Ne modifiez pas le pilote au hasard si le câblage n’a pas été contrôlé.

Le tableau reste après avoir débranché l’USB

C’est normal : l’image e-paper persiste sans alimentation. Cela ne prouve pas que le contrôleur est encore actif, ni que de nouvelles valeurs peuvent être affichées.

Les valeurs ne correspondent pas à la pièce

La température et l’humidité sont simulées. Pour des mesures réelles, ajoutez un capteur et remplacez les calculs de démonstration par ses lectures.

L’heure est décalée après un redémarrage

Sans Wi-Fi, la date de compilation est réutilisée. Activez NTP dans votre copie ou prévoyez une horloge RTC. En deep sleep, préservez l’horloge au lieu de la réinitialiser à chaque passage dans setup().

Chargement du compteur…

Consultations comptées à partir de l’activation du compteur, sans cookie. Les rechargements depuis une même connexion à moins de 30 secondes sont regroupés. Les versions française et anglaise partagent ce compteur. Ce total n’est pas un nombre de visiteurs uniques ; certains robots peuvent être comptés. Le compteur ne conserve pas d’adresse IP dans sa base ; les journaux habituels du serveur web restent distincts.

POUR ALLER PLUS LOIN

Les références de l’atelier.

Montage et photographies de l’atelier · 23 octobre 2026. Logo iLM fourni pour cet exemple.