Projet Horloge de Base ESP32-S3 Matrice LED RGB Wi-Fi + Horloge NTP -1

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.

ESP32-s3_animation_de_veille_du_clavier_internet

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 DST

Comment 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 14

Si 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 leNEO_MATRIX_*drapeaux (HAUT/BAS, GAUCHE/DROITE, LIGNES/COLUMNES, PROGRESSIF/ZIGZAG).
  • Ordre des couleurs :Ce code utiliseNEO_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 depool.ntp.org
  • SpectaclesOKbrièvement sur la matrice
  • Fait défiler en continu l'heure actuelle commeHH: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.

Images

ESP32 S3 Matrix
ESP32 S3 Matrix
ESP32 S3 Matrix  pin out
ESP32 S3 Matrix pin out
ESP32-S3_RGB_8x8_matrix-3
ESP32-S3_RGB_8x8_matrix-3
ESP32-S3_RGB_8x8_matrix1
ESP32-S3_RGB_8x8_matrix1
ESP32-S3_RGB_8x8_matrix-2
ESP32-S3_RGB_8x8_matrix-2
ESP32-s3_internet_clock_animation
ESP32-s3_internet_clock_animation
868-ESP32-S3 RGB LED Matrix Internte Clock Project 1 - Basic Clock
Langue: C++
Copié !

Ce dont vous pourriez avoir besoin

Ressources et références

Fichiers📁

Fichier Fritzing