Ce tutoriel fait partie de: Matrice LED RGB ESP32-S3
Projet sympa à réaliser pour des applications ludiques et pratiques utilisant le module matrice RGB ESP32-S3.
Projet Horloge de Base ESP32-S3 Matrice LED RGB Wi-Fi + Horloge NTP -1
Horloge Internet ESP32-S3 avec NeoMatrix 8×8 (Wi-Fi + Heure NTP)
Ce projet transforme un ESP32-S3 et une matrice NeoMatrix RGB 8x8 (NeoPixel/WS2812) en une petite horloge Internet. L'ESP32 se connecte au Wi-Fi, synchronise l'heure locale à partir d'un serveur NTP, puis défile l'heure commeHH:MMà travers l'affichage 8×8.

Comment cela fonctionne (niveau global)
1) L'ESP32-S3 se connecte à votre routeur en utilisant<WiFi.h>.
2) Il synchronise l'heure à partir d'un serveur NTP en utilisant"time.h"etconfigTime().
3) Le temps est formaté commeHH:MMet enregistré dans un petit tampon de texte.
4) Le NeoMatrix rend le texte et le fait défiler sur le panneau 8×8.

Couleur RVB
La couleur du texte de l'horloge est contrôlée à l'aide de valeurs RGB (Rouge, Vert, Bleu), où chaque canal de couleur va de 0 à 255 et différentes combinaisons créent différentes couleurs sur le NeoMatrix. En ajustant lecolor_RED,color_GREEN, etcolor_BLUEvariables, vous pouvez facilement personnaliser l'apparence de l'horloge dans n'importe quelle couleur de votre choix. Pour trouver rapidement les valeurs RGB exactes d'une couleur spécifique, vous pouvez utiliser l'outil de sélection de couleur RGB en ligne ici :Sélecteur de couleurs RVB.

Bibliothèques utilisées
Cela inclut vous indiquer exactement sur quoi le croquis dépend :

#include <WiFi.h>
#include "time.h"
#include <Adafruit_GFX.h>
#include <Adafruit_NeoMatrix.h>
#include <Adafruit_NeoPixel.h>InstallerAdafruit NeoMatrixen utilisant le Gestionnaire de bibliothèques Arduino. Il tirera également les dépendances requises telles queAdafruit GFX LibraryetAdafruit NeoPixel.
Paramètres utilisateur importants que VOUS DEVEZ modifier
1) Couleur du texte (RGB)
Réglez la couleur du texte de votre horloge en utilisant des valeurs de 0 à 255 :
//set the color of display made of Red, Green and Blue
unsigned int color_RED = 17;
unsigned int color_GREEN = 43;
unsigned int color_BLUE = 171;Ces valeurs sont utilisées ici :
matrix.setTextColor(matrix.Color(color_RED, color_GREEN, color_BLUE));Remarque :Si vous réglez toutes les couleurs sur 0 (noir), le texte devient invisible. Le croquis inclut une vérification de sécurité :
// if user set all colors to 0, the display will be turned off so set it green
if (color_RED == 0 && color_GREEN == 0 && color_BLUE == 0) {
color_GREEN = 200;
}Cela garantit que la matrice n'a jamais l'air "morte" en raison d'un réglage de couleur invisible.
2) SSID et mot de passe Wi-Fi
Remplacez-les par le vrai nom et le mot de passe de votre Wi-Fi :
const char* WIFI_SSID = "WiFi";
const char* WIFI_PASSWORD = "passW0rd";Lors du démarrage, l'ESP32 affiche la progression de la connexion dans le Moniteur Série et expire après environ 15 secondes (30 tentatives × 500 ms).
3) Serveur NTP
Le serveur NTP par défaut est :
const char* ntpServer = "pool.ntp.org";Vous pouvez le laisser tel quel. Si vous souhaitez un jour utiliser un serveur local, remplacez le nom d'hôte par le serveur NTP de votre choix.
4) Décalage horaire et décalage pour l'heure d'été
Ces deux paramètres contrôlent l'heure locale :
// Toronto-ish: UTC-5, plus 1 hour DST
const long gmtOffset_sec = -5 * 3600; // -5 hours
const int daylightOffset_sec = 3600; // +1 hour for DSTComment les régler :
gmtOffset_sec= (heures de décalage UTC) × 3600. Exemple : UTC-5 →-5*3600, UTC+2 →2*3600.daylightOffset_sec=0si vous ne souhaitez pas l'ajustement de l'heure d'été, ou3600si votre région observe actuellement l'heure d'été (+1 heure).
Ceux-ci sont appliqués ici :
configTime(gmtOffset_sec, daylightOffset_sec, ntpServer);Configuration d'affichage
Donnée de broche de matrice
La broche de données est définie ici :
#define MATRIX_PIN 14Si votre câblage utilise un GPIO différent, modifiez ce nombre pour qu'il corresponde.
Disposition et ordre des couleurs de NeoMatrix
Votre matrice est initialisée comme ceci :
Adafruit_NeoMatrix matrix(8, 8, MATRIX_PIN,
NEO_MATRIX_TOP + NEO_MATRIX_LEFT +
NEO_MATRIX_ROWS + NEO_MATRIX_PROGRESSIVE,
NEO_RGB + NEO_KHZ800);Deux raisons courantes pour lesquelles l'affichage semble "incorrect" :
- Direction de rotation / de câblage :Si le texte apparaît à l'envers ou en miroir, ajustez le
NEO_MATRIX_*drapeaux (HAUT/BAS, GAUCHE/DROITE, LIGNES/COLUMNES, PROGRESSIF/ZIGZAG). - Ordre des couleurs :Ce code utilise
NEO_RGB. Certains panneaux sontNEO_GRB. Si les couleurs rouge/vert/bleu ne correspondent pas, changezNEO_RGBau bon ordre.
Luminance
La luminosité est réglée surinitMatrix():
matrix.setBrightness(40);Augmentez pour un affichage plus lumineux, réduisez pour diminuer la chaleur et la consommation d'énergie.
Comment le temps est généré commeHH:MM
L'horloge stocke l'heure formatée dans un tampon de 6 caractères :
char timeText[6] = "00:00";AlorsupdateTimeText()lit l'heure locale synchronisée avec le NTP et écrit le texte :
// Format HH:MM
snprintf(timeText, sizeof(timeText), "%02d:%02d",
timeinfo.tm_hour,
timeinfo.tm_min);Ceci est mis à jour une fois par seconde dans la boucle principale.
Comment le défilement fonctionne sur un écran 8×8
Une matrice 8×8 est trop étroite pour être affichée.HH:MMen même temps, de sorte que le croquis fait défiler le texte. Il affiche le temps à une position X changeante (scrollX), puis le déplace vers la gauche d'un pixel à chaque mise à jour.
int16_t scrollX = 8;
const uint16_t scrollIntervalMs = 120;Chaque étape de défilement :
matrix.fillScreen(0);
matrix.setCursor(scrollX, 0);
matrix.print(timeText);
matrix.show();
scrollX--;Lorsque le texte sort complètement par la gauche, le code le réinitialise pour recommencer à partir du bord droit :
int16_t textWidth = 30;
if (scrollX < -textWidth) {
scrollX = matrix.width();
}Sortie du moniteur série (débogage)
Ce croquis imprime des messages utiles :
- Progression de la connexion Wi-Fi et adresse IP
- Que la synchronisation horaire ait réussi
- La chaîne de temps formatée (par exemple,
Time text: 14:32)
Si l'écran est vide, le Moniteur série est le premier endroit à vérifier pour confirmer que le Wi-Fi et le NTP fonctionnent.
Démonstration de projet
Après le téléchargement et la réinitialisation :
- L'ESP32 se connecte au Wi-Fi
- Synchronise le temps à partir de
pool.ntp.org - Spectacles
OKbrièvement sur la matrice - Fait défiler en continu l'heure actuelle comme
HH:MM
Téléchargements et liens
Le code complet est fourni ci-dessous cet article. Les pièces, outils et fiches techniques sont également liés ci-dessous cet article.
Ce tutoriel fait partie de: Matrice LED RGB ESP32-S3
- Projets de Matrice LED RGB ESP32-S3 (Jeu d'Inclinaison, Texte, Flèche, Démo WiFi)
- Projet 2 de matrice LED RGB ESP32-S3 - Texte défilant
- Projet de matrice LED RGB ESP32-S3 3 - Texte provenant du téléphone mobile
- Projet de matrice LED RGB ESP32-S3 4 - Point incliné
- Projet de matrice LED RGB ESP32-S3 5 - Flèche toujours vers le haut
- Projet de matrice LED RGB ESP32-S3 6 - Jeu cible
- Projet d'Horloge Internet avec Matrice LED RGB ESP32-S3 - Affichage de l'heure et de la date en multi-couleurs
- Projet d'horloge Internet avec matrice LED RGB ESP32-S3 - 3 couleurs de nuit avec date
- Projet d'horloge Internet avec matrice LED RGB ESP32-S3 - 5 couleurs arc-en-ciel
- Projet d'horloge Internet avec matrice LED RVB ESP32-S3 - 4 couleurs aléatoires
- Test de matrice LED RGB ESP32-S3 pour réglage RGB, GRB
Ce dont vous pourriez avoir besoin
-
Amazon
-
eBay
-
AliExpressAchetez le matrix RGB ESP32-S3 sur AliExpress.s.click.aliexpress.com
-
AliExpressAchetez une matrice RGB ESP32-S3 sur AliExpress (2)s.click.aliexpress.com
Ressources et références
-
Vidéo
Fichiers📁
Fichier Fritzing
-
esp32-S3-supermini-tht fritzing part
esp32-S3-supermini-tht.fzpz0.02 MB