ESP32 P10 RGB 32x16 Digital Clock - PlatformIO Version
Description
Horloge numérique utilisant un panneau P10 RGB 32x16 avec ESP32, module RTC DS3231 et interface web de configuration.
Version adaptée pour PlatformIO à partir du code Arduino IDE original.
✨ Fonctionnalités
🕒 Horloge Principale
- Affichage de l'heure avec deux points clignotants
- Module RTC DS3231 pour une précision élevée
- Centrage automatique adapté au nombre de panneaux
📝 Texte Défilant
- Messages personnalisables (150 caractères max)
- Vitesse ajustable (10-100)
- Affichage de la date automatique
- Rotation automatique entre date, texte et countdown
⏱️ Countdown (Nouveau!)
- Compte à rebours vers une date/heure cible
- Format adaptatif : jours, heures, minutes, secondes
- Titre personnalisable pour l'événement
- Couleur dédiée avec indication d'expiration
- Activation/désactivation via interface web
🎨 Personnalisation
- 2 modes d'affichage : couleurs fixes ou changeantes
- Couleurs RGB personnalisables pour chaque élément
- Luminosité ajustable (0-255)
- Interface web complète pour la configuration
🔗 Cascade de Panneaux
- Support multi-panneaux (1x1 à 8x1, 2x2)
- Affichage élargi pour textes longs
- Configuration automatique de la luminosité
- Tests dédiés pour chaque configuration
🌐 Connectivité
- WiFi ou Point d'Accès automatique
- Interface web responsive pour configuration
- Sauvegarde persistante en mémoire flash
- Sécurisé avec clé d'accès
Matériel Requis
- ESP32 DEVKIT V1
- Panneau P10 RGB 32x16 HUB75 (Scan 1/8)
- Référence utilisée : P10-2727-8S-32X16-A
- ICs : RUC7258D, DP5125D, 74HC245KA
- Module RTC DS3231
- Alimentation 5V (importante pour le panneau P10)
Brochage
Connexions P10 HUB75
HUB75 Pin | ESP32 Pin
----------|----------
R1 | GPIO 2
G1 | GPIO 15
B1 | GPIO 4
GND | GND
R2 | GPIO 16
G2 | GPIO 17
B2 | GPIO 5
GND | GND
A | GPIO 19
B | GPIO 23
C | GPIO 18
GND | GND
CLK | GPIO 14
STB | GPIO 32
OE | GPIO 33
GND | GND
Note : Ces connexions peuvent varier selon votre panneau P10. Consultez le code et ajustez si nécessaire.
Connexions RTC DS3231
DS3231 | ESP32
-------|-------
VCC | 3.3V
GND | GND
SDA | GPIO 21
SCL | GPIO 22
Installation et Configuration
1. Installation PlatformIO
Si vous n'avez pas encore PlatformIO :
# Via VS Code
# Installez l'extension PlatformIO IDE
# Via ligne de commande
pip install platformio
2. Configuration du projet
- Clonez ou téléchargez ce projet
- Ouvrez le dossier dans VS Code avec PlatformIO
- Modifiez les paramètres WiFi dans
src/main.cpp:
// Configuration WiFi - Modifiez selon vos besoins
const char* ssid = "VOTRE_WIFI_SSID";
const char* password = "VOTRE_MOT_DE_PASSE_WIFI";
3. Compilation et téléversement
# Compilation
pio run
# Téléversement
pio run --target upload
# Monitoring série
pio device monitor
Ou utilisez les boutons PlatformIO dans VS Code.
Structure du Projet
├── platformio.ini # Configuration PlatformIO
├── src/
│ └── main.cpp # Code principal de l'horloge
├── include/
│ └── PageIndex.h # Interface web HTML
├── examples/
│ ├── rtc_test.cpp # Test du module RTC
│ ├── p10_test.cpp # Test du panneau P10
│ ├── countdown_test.cpp # Test du countdown
│ ├── cascade_test.cpp # Test des panneaux multiples
│ └── nvs_erase.cpp # Effacement mémoire NVS
└── README.md # Ce fichier
Utilisation
Premier démarrage
- Téléversez le code sur l'ESP32
- Ouvrez le moniteur série (115200 baud)
- L'ESP32 va essayer de se connecter à votre WiFi
- Si la connexion échoue, il créera un point d'accès WiFi
Configuration via interface web
-
Connectez-vous au réseau WiFi :
- Si connecté à votre WiFi : utilisez l'IP affichée dans le moniteur série
- Sinon connectez-vous au point d'accès "ESP32_Clock" (mot de passe : "esp32clock")
-
Ouvrez votre navigateur et allez à l'adresse IP
-
Utilisez la clé :
p10rgbesp32ws -
Configurez :
- Date et heure
- Mode d'affichage (1 = couleurs manuelles, 2 = couleurs automatiques)
- Luminosité (0-255)
- Couleurs (en mode 1)
- Texte défilant
- Vitesse de défilement
- Countdown : événement, date cible, couleur
⏱️ Configuration du Countdown
Le countdown permet d'afficher un compte à rebours vers un événement :
- Activez le countdown : Cochez la case "Active"
- Nommez l'événement : Exemple "NOUVEL AN", "ANNIVERSAIRE"
- Définissez la date cible : Jour, Mois, Année
- Définissez l'heure cible : Heure, Minute, Seconde (24h)
- Choisissez la couleur : RGB personnalisable
- Sauvegardez avec "Set Countdown"
Formats d'affichage :
- Avec jours :
NOUVEL AN: 15d 08h 30m 45s - Sans jours :
NOUVEL AN: 08h 30m 45s - Dernière heure :
NOUVEL AN: 30m 45s - Expiré :
NOUVEL AN - EXPIRED!(en rouge)
Voir le Guide Countdown Complet pour plus de détails.
Configuration de l'heure RTC
Vous pouvez aussi configurer l'heure directement via le moniteur série :
SET,2024,8,1,14,30,0
Format : SET,année,mois,jour,heure,minute,seconde
Programmes d'exemple et Tests
🧪 Tests avec PlatformIO
Le projet inclut plusieurs environnements de test préconfigurés :
# Test du module RTC DS3231
pio run -e rtc_test --target upload
# Test du panneau P10 (couleurs, texte)
pio run -e p10_test --target upload
# Test du countdown (5 min automatique)
pio run -e countdown_test --target upload
# Test cascade (panneaux multiples)
pio run -e test_cascade --target upload
# Effacement mémoire NVS
pio run -e nvs_erase --target upload
📱 Tâches VS Code
Si vous utilisez VS Code avec PlatformIO, les tâches suivantes sont disponibles :
- PlatformIO: Test RTC Module
- PlatformIO: Test P10 Matrix
- PlatformIO: Test Countdown
- PlatformIO: Test Cascade (2 panels)
- PlatformIO: Erase NVS Memory
Test du module RTC
# Affiche la date/heure actuelle
# Utile pour vérifier la connexion RTC
Test du panneau P10
# Test complet des couleurs et de l'affichage
# Utile pour vérifier les connexions HUB75
Test du countdown
# Configure automatiquement un countdown de 5 minutes
# Affiche les différents formats d'affichage
# Test d'expiration automatique
Effacement mémoire NVS
# Réinitialise toutes les préférences sauvegardées
# Utile pour un "reset factory" complet
Modes d'affichage
Mode 1 - Couleurs manuelles
- Couleurs fixes définissables via l'interface web
- Couleur de l'horloge personnalisable
- Couleur de la date personnalisable
- Couleur du texte personnalisable
Mode 2 - Couleurs automatiques
- Changement automatique des couleurs
- Cycle entre : Rouge, Vert, Bleu, Jaune, Cyan, Magenta, Blanc
Paramètres configurables
- Date et heure : via interface web ou moniteur série
- Luminosité : 0-255
- Mode d'affichage : 1 ou 2
- Couleurs RGB : 0-255 pour chaque composante (mode 1)
- Texte défilant : jusqu'à 150 caractères
- Vitesse de défilement : 10-100 (plus bas = plus rapide)
Dépannage
Problèmes d'affichage
- Vérifiez l'alimentation 5V (importante !)
- Vérifiez les connexions HUB75
- Ajustez
PxMATRIX_SPI_FREQUENCYsi vous voyez du bruit
Problèmes WiFi
- Vérifiez le SSID et le mot de passe
- L'ESP32 basculera en mode point d'accès si la connexion échoue
Problèmes RTC
- Vérifiez les connexions I2C (SDA/SCL)
- Testez avec le programme
examples/rtc_test.cpp
Réinitialisation
- Utilisez
examples/nvs_erase.cpppour effacer toutes les préférences
Configuration avancée
Modification de la fréquence SPI
// Dans src/main.cpp, modifiez si vous avez du bruit sur l'affichage
#define PxMATRIX_SPI_FREQUENCY 10000000 // Valeurs possibles: 20000000, 15000000, 10000000, 8000000
Modification des pins
// Modifiez ces valeurs dans src/main.cpp si votre câblage est différent
#define P_LAT 5
#define P_A 19
#define P_B 23
#define P_C 18
#define P_OE 4
Bibliothèques utilisées
- PxMatrix : Contrôle du panneau P10 RGB
- RTClib : Interface avec le module DS3231
- Preferences : Sauvegarde des paramètres dans la flash
- WiFi : Connectivité réseau
- WebServer : Interface web de configuration
Support
Pour obtenir de l'aide :
- Vérifiez ce README
- Consultez les programmes d'exemple
- Vérifiez les connexions et l'alimentation
- Consultez la documentation des bibliothèques utilisées
Crédit
Projet développé et adapté pour PlatformIO par Clément Saillant (electron-rare) :
- GitHub : https://github.com/electron-rare
Code source basé sur des exemples et tutoriels de la communauté ESP32/Arduino.
Bibliothèques utilisées :
- PxMatrix par 2dom (Dominic Buchstaller)
- RTClib par Adafruit
- Adafruit GFX Library
- Adafruit BusIO
Licence
Ce projet est distribué sous licence MIT. Voir le fichier LICENSE pour le texte complet.