Aller au contenu principal
Mathyou ANDRE
ESP32 (Cheap Yellow Display)Arduino / TFT_eSPIMQTT (HiveMQ Cloud)Pythondiscord.py

CYD MQTT Display

Écran ESP32 Cheap Yellow Display piloté à distance par MQTT (HiveMQ Cloud, TLS) : texte, image, couleur de fond, luminosité et buzzer, commandés depuis Discord ou un PC.

Code source

Écran CYD assemblé, affichant le texte « CYD MQTT DISPLAY »

Affichage de texte et d’images à distance sur un écran ESP32 Cheap Yellow Display (CYD), via MQTT (HiveMQ Cloud, TLS), déclenché depuis Discord ou depuis un PC.

Discord (/texte, /image…) ──► controller/bot.py ─────────┐
                                                          ├──► Broker MQTT ──► CYD (firmware ESP32)
PC (image locale) ─────────► controller/send_image.py ───┘

Fonctionnalités

  • Texte avec taille adaptée automatiquement, image JPEG redimensionnée en 320×240
  • Couleur de fond, luminosité (PWM) et buzzer pilotables à distance
  • Portail captif pour configurer le Wi-Fi au premier démarrage (réseau CYD-MQTT-Display-Setup)
  • Double-tap sur l’écran pour éteindre le rétroéclairage, simple tap pour le rallumer

Structure du dépôt

.
├── controller/               # Côté PC (Python)
│   ├── common.py             # Config .env, topics MQTT, traitement d'image
│   ├── bot.py                # Bot Discord (commandes slash)
│   └── send_image.py         # Envoi d'une image depuis le PC
├── firmware/                 # Côté ESP32 (Arduino)
│   ├── cyd_mqtt_display/
│   │   ├── cyd_mqtt_display.ino
│   │   ├── config.h          # Pins, topics, constantes
│   │   └── secrets.example.h # Modèle d'identifiants MQTT
│   └── TFT_eSPI/
│       └── User_Setup.h      # Configuration écran pour TFT_eSPI
├── .env.example               # Modèle d'identifiants (Python)
└── requirements.txt

Firmware (ESP32)

Bibliothèques Arduino nécessaires :

BibliothèqueAuteurVersion testée
TFT_eSPIBodmer2.5.43
TJpg_DecoderBodmer1.1.0
XPT2046_TouchscreenPaul Stoffregen1.4
PubSubClientNick O’Leary2.8
ArduinoJsonBenoit Blanchon7.4.3
# Installation
# 1. Copier firmware/TFT_eSPI/User_Setup.h dans Documents/Arduino/libraries/TFT_eSPI/
# 2. Copier secrets.example.h en secrets.h et renseigner les identifiants MQTT
# 3. Ouvrir cyd_mqtt_display.ino, choisir la carte ESP32 Dev Module, téléverser

Contrôleur (PC)

pip install -r requirements.txt
cp .env.example .env   # puis renseigner les identifiants
python controller/bot.py

Envoyer une image sans passer par Discord :

python controller/send_image.py mon_image.jpg

Commandes Discord

CommandeEffet
/texte messageAffiche un texte
/image fichierAffiche une image (redimensionnée en 320×240)
/bgcolor #RRGGBBChange la couleur de fond
/bip [frequence] [duree] [repetitions]Fait sonner le buzzer
/luminosite 0-255Règle la luminosité
/clearRevient à l’écran de veille
/statusÉtat de la connexion MQTT

Topics MQTT

TopicPayload
cyd/messageTexte UTF-8
cyd/imageJPEG 320×240, ≤ 39 Ko
cyd/clearQuelconque
cyd/brightness0 à 255
cyd/bgcolor#RRGGBB
cyd/bip1 ou {"freq":2000,"dur":150,"repeat":3}
cyd/statusPublié par l’écran : online