Progetto Orologio Base con Matrice LED RGB ESP32-S3 Wi-Fi + Orologio NTP -1

Progetto Orologio Base con Matrice LED RGB ESP32-S3 Wi-Fi + Orologio NTP -1

Orologio Internet ESP32-S3 con NeoMatrix 8×8 (Wi-Fi + ora NTP)

Questo progetto trasforma un ESP32-S3 e un NeoMatrix RGB 8×8 (NeoPixel/WS2812) in un piccolo orologio Internet. L'ESP32 si connette al Wi-Fi, sincronizza l'ora locale da un server NTP e poi scorre l'ora comeHH:MMsull'display 8×8.

ESP32-s3_animazione_ore_internet

Come funziona (a un livello elevato)

1) ESP32-S3 si connette al tuo router utilizzando<WiFi.h>.
2) Sincronizza l'ora da un server NTP utilizzando"time.h"econfigTime().
3) Il tempo è formattato comeHH:MMe salvato in un piccolo buffer di testo.
4) Il NeoMatrix rende il testo e lo scorre attraverso il pannello 8×8.

Colore RGB

Il colore del testo dell'orologio è controllato utilizzando valori RGB (Rosso, Verde, Blu), dove ogni canale di colore va da 0 a 255 e diverse combinazioni creano colori diversi sulla NeoMatrix. Regolando ilcolor_RED,color_GREEN, ecolor_BLUEvariabili, puoi facilmente personalizzare l'aspetto dell'orologio in qualsiasi colore tu voglia. Per trovare rapidamente i valori RGB esatti per un colore specifico, puoi utilizzare lo strumento online RGB Color Picker qui:Selettore colore RGB.

Librerie utilizzate

Questi includono esattamente su cosa dipende il disegno:

#include <WiFi.h>
#include "time.h"
#include <Adafruit_GFX.h>
#include <Adafruit_NeoMatrix.h>
#include <Adafruit_NeoPixel.h>

InstallaAdafruit NeoMatrixutilizzando il Gestore di Librerie di Arduino. Installerà anche le dipendenze necessarie comeAdafruit GFX LibraryeAdafruit NeoPixel.

Impostazioni utente importanti che DOVETE modificare

1) Colore del testo (RGB)

Imposta il colore del testo dell'orologio utilizzando valori da 0 a 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;

Questi valori sono utilizzati qui:

matrix.setTextColor(matrix.Color(color_RED, color_GREEN, color_BLUE));

Nota:Se imposti tutti i colori a 0 (nero), il testo diventa invisibile. Il disegno include un controllo di sicurezza:

// 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;
}

Questo garantisce che la matrice non appaia mai "morta" a causa di un'impostazione di colore invisibile.

2) SSID Wi-Fi e password

Sostituisci questi con il tuo vero nome e password del Wi-Fi:

const char* WIFI_SSID     = "WiFi";
const char* WIFI_PASSWORD = "passW0rd";

Durante l'avvio, l'ESP32 stampa il progresso della connessione nel Monitor Seriale e scade dopo circa 15 secondi (30 tentativi × 500ms).

3) Server NTP

Il server NTP predefinito è:

const char* ntpServer = "pool.ntp.org";

Puoi mantenerlo così com'è. Se vuoi mai utilizzare un server locale, sostituisci il nome host con il tuo server NTP preferito.

4) Differenza di fuso orario e differenza per l'ora legale

Queste due impostazioni controllano l'orario 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

Come impostarli:

  • gmtOffset_sec= (ore di offset UTC) × 3600. Esempio: UTC-5 →-5*3600, UTC+2 →2*3600.
  • daylightOffset_sec=0se non desideri l'aggiustamento dell'ora legale, o3600se la tua regione sta attualmente osservando l'ora legale (+1 ora).

Questi sono applicati qui:

configTime(gmtOffset_sec, daylightOffset_sec, ntpServer);

Configurazione dello schermo

Dati pin della matrice

Il pin dei dati è definito qui:

#define MATRIX_PIN 14

Se il tuo cablaggio utilizza un GPIO diverso, modifica questo numero per farlo corrispondere.

Disposizione e ordine dei colori NeoMatrix

La tua matrice è inizializzata in questo modo:

Adafruit_NeoMatrix matrix(8, 8, MATRIX_PIN,
  NEO_MATRIX_TOP    + NEO_MATRIX_LEFT +
  NEO_MATRIX_ROWS   + NEO_MATRIX_PROGRESSIVE,
  NEO_RGB           + NEO_KHZ800);

Due ragioni comuni per cui il display appare "sbagliato":

  • Direzione di rotazione / cablaggio:Se il testo appare capovolto o specchiato, regola ilNEO_MATRIX_*bandiere (ALTO/BASSO, SINISTRA/DESTRA, RIGHE/COLOMNI, PROGRESSIVO/ZIGZAG).
  • Ordine dei colori:Questo codice utilizzaNEO_RGB. Alcuni pannelli sonoNEO_GRB. Se il rosso/verde/blu non corrispondono, cambiaNEO_RGBnell'ordine corretto.

Luminosità

La luminosità è impostata suinitMatrix():

matrix.setBrightness(40);

Aumenta per un display più luminoso, riduci per abbassare il calore e il consumo energetico.

Come viene generato il tempo comeHH:MM

L'orologio memorizza l'orario formattato in un buffer di 6 caratteri:

char timeText[6] = "00:00";

PoiupdateTimeText()legge l'ora locale sincronizzata con NTP e scrive il testo:

// Format HH:MM
snprintf(timeText, sizeof(timeText), "%02d:%02d",
         timeinfo.tm_hour,
         timeinfo.tm_min);

Questo viene aggiornato una volta al secondo nel ciclo principale.

Come funziona lo scrolling su un display 8×8

Una matrice 8×8 è troppo stretta per essere visualizzata.HH:MMin una volta, così il disegno scorre il testo. Disegna il tempo in una posizione X che cambia.scrollX), quindi lo sposta a sinistra di un pixel ad ogni aggiornamento.

int16_t scrollX = 8;
const uint16_t scrollIntervalMs = 120;

Ogni passo di scorrimento:

matrix.fillScreen(0);
matrix.setCursor(scrollX, 0);
matrix.print(timeText);
matrix.show();
scrollX--;

Quando il testo esce completamente dal lato sinistro, il codice lo ripristina per ricominciare dal bordo destro:

int16_t textWidth = 30;
if (scrollX < -textWidth) {
  scrollX = matrix.width();
}

Uscita del monitor seriale (debugging)

Questo schema stampa messaggi utili:

  • Progresso della connessione Wi-Fi e indirizzo IP
  • Se la sincronizzazione dell'ora è riuscita
  • La stringa di tempo formattata (ad es.,Time text: 14:32)

Se lo schermo è vuoto, il Monitor Seriale è il primo posto da controllare per confermare che Wi-Fi e NTP funzionino.

Dimostrazione del progetto

Dopo il caricamento e il ripristino:

  • ESP32 si connette a Wi-Fi
  • Sincronizza l'orario dapool.ntp.org
  • SpettacoliOKbrevemente sulla matrice
  • Scorre continuamente l'ora attuale comeHH:MM

Download e link

Il codice completo è fornito sotto questo articolo. Parti, strumenti e schede informative sono anche collegate sotto questo articolo.

Immagini

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
Lingua: C++
Copia!

Cose di cui potresti avere bisogno

Risorse e riferimenti

File📁

File Fritzing