Progetto di orologio Internet con matrice LED RGB ESP32-S3 - 5 colori arcobaleno

Progetto di orologio Internet con matrice LED RGB ESP32-S3 - 5 colori arcobaleno

Orologio Internet ESP32-S3 con effetto colore arcobaleno

Questo progetto è un orologio Internet RGB Matrix ESP32-S3 che si connette al Wi-Fi, sincronizza l'ora locale da un server NTP e visualizza l'ora in scorrimento.HH:MMformat sul NeoMatrix RGB 8×8 integrato. A differenza delle versioni a colore solido o casuale, questo orologio utilizza un'effetto morbidoeffetto di colore arcobaleno, dove ogni carattere si sposta continuamente attraverso lo spettro RGB mentre scorre. L'orologio visualizza anche periodicamente la data e regola automaticamente la luminosità tra giorno e notte.

ESP32-s3_ora_ritmato_internetuale

Come funziona questo orologio

Una volta alimentato tramite USB-C, l'ESP32-S3 si connette alla tua rete Wi-Fi e recupera l'ora locale corrente da internet. Il display di solito scorre l'ora, ma a un intervallo definito passa a mostrare la data. Sia l'ora che la data sono visualizzate utilizzando un effetto arcobaleno dinamico, creando un display vibrante e animato sul piccolo matrice 8×8.

Librerie utilizzate

Lo schizzo si basa sulle seguenti librerie:

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

InstallaAdafruit NeoMatrixutilizzando il Gestore Librerie di Arduino. Le sue dipendenze, inclusiAdafruit GFX LibraryeAdafruit NeoPixel, sarà installato automaticamente.

Configurazione utente importante

Dati del pin della matrice (matrice RGB integrata)

Sebbene la matrice RGB sia collegata alla scheda ESP32-S3, il pin dei dati deve comunque essere definito nel codice:

#define MATRIX_PIN 14

Il GPIO 14 è comunemente utilizzato sulle schede matrici RGB ESP32-S3. Se la variante della tua scheda utilizza un pin diverso, aggiorna questo valore.

SSID e password Wi-Fi (differentiati maiuscole e minuscole)

Sostituisci le credenziali Wi-Fi con i dettagli della tua rete:

const char* WIFI_SSID     = "your WIFI";
const char* WIFI_PASSWORD = "passW0rd";

Importante:Le SSID Wi-Fi sonosensibile alle maiuscole. Un SSID chiamato"Book"non è lo stesso di"book"Se la capitale non corrisponde esattamente, l'ESP32-S3 non riuscirà a connettersi.

Server NTP, fuso orario e ora legale

L'orologio sincronizza l'ora utilizzando un server NTP di internet:

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

L'orario locale viene calcolato utilizzando questi offset:

// Toronto-ish: UTC-5, plus 1 hour DST
const long  gmtOffset_sec     = -5 * 3600;
const int   daylightOffset_sec = 3600;
  • gmtOffset_sec: offset UTC in secondi (esempio: UTC-5 =-5 * 3600)
  • daylightOffset_secUsa3600se l'ora legale è attiva, o0se non usato

Questi valori vengono applicati utilizzando:

configTime(gmtOffset_sec, daylightOffset_sec, ntpServer);

Luminosità automatica giorno / notte

La luminosità cambia automaticamente in base all'ora corrente:

const int DAY_BRIGHTNESS = 40;
const int NIGHT_BRIGHTNESS = 5;
const int NIGHT_START_HOUR = 22;
const int NIGHT_END_HOUR = 6;

Tra le 22:00 e le 6:00, la matrice si attenua per ridurre il riflesso. Durante le ore diurne, la luminosità normale viene ripristinata.

Effetto arcobaleno

Questo progetto utilizza una classica ruota dei colori RGB per generare colori arcobaleno morbidi. Ogni carattere è disegnato con un leggero offset di colore diverso e i colori cambiano nel tempo, producendo un'animazione arcobaleno fluida.

// Helper to create Rainbow Colors
uint32_t Wheel(byte WheelPos) {
  WheelPos = 255 - WheelPos;
  if (WheelPos < 85) {
    return matrix.Color(255 - WheelPos * 3, 0, WheelPos * 3);
  }
  if (WheelPos < 170) {
    WheelPos -= 85;
    return matrix.Color(0, WheelPos * 3, 255 - WheelPos * 3);
  }
  WheelPos -= 170;
  return matrix.Color(WheelPos * 3, 255 - WheelPos * 3, 0);
}

Man mano che il testo scorre, ogni carattere avanza attraverso lo spettro RGB, creando un effetto arcobaleno continuo che appare particolarmente impressionante sul piccolo display 8×8.

Comportamento della visualizzazione di data e ora

L'orologio mantiene buffer separati per l'ora e la data:

  • Tempo: HH:MM
  • Data: MMM DD(per esempioJAN 08)

La data è mostrata a un intervallo fisso:

const uint32_t dateIntervalMs = 60000; // Show date every 1 minute

Alla fine di ogni ciclo di scorrimento completo, il codice decide se continuare a mostrare l'ora o passare alla data.

Logica di scorrimento su una matrice 8×8

Poiché il display è largo solo 8 pixel, il testo scorre senza intoppi da destra a sinistra. Una volta che il testo esce completamente dallo schermo, il cursore si resetta e il contenuto successivo (ora o data) viene caricato per il passaggio successivo.

Dimostrazione

Dopo aver caricato lo sketch e alimentato la scheda tramite USB-C:

  • L'ESP32-S3 si connette alla tua rete Wi-Fi
  • Il tempo è sincronizzato da Internet.
  • Il tempo scorre dentroHH:MMformato
  • La data appare periodicamente.
  • Tutto il testo viene visualizzato con un effetto arcobaleno animato e fluido.
  • Il display si attenua automaticamente di notte e si illumina durante il giorno.

Download e collegamenti

Il codice sorgente completo è fornito sotto questo articolo. Strumenti e riferimenti utili, incluso il selettore di colori RGB, sono anch'essi collegati 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
872-ESP32-S3 RGB LED Matrix Internte Clock Project 5 - Rainbow Color
Lingua: C++
Copia!

Risorse e riferimenti

File📁

File Fritzing