Proyecto de reloj de internet con matriz de LED RGB ESP32-S3 - 5 colores del arcoíris

Proyecto de reloj de internet con matriz de LED RGB ESP32-S3 - 5 colores del arcoíris

Reloj de Internet ESP32-S3 con efecto de color arcoíris

Este proyecto es un reloj con matriz RGB ESP32-S3 que se conecta a Wi-Fi, sincroniza la hora local desde un servidor NTP y desplaza la hora enHH:MMformato a través del NeoMatrix RGB integrado de 8×8. A diferencia de las versiones de color sólido o aleatorio, este reloj utiliza una transición suaveefecto de color arcoíris, donde cada carácter cambia continuamente a través del espectro RGB mientras se desplaza. El reloj también muestra periódicamente la fecha y ajusta automáticamente el brillo entre el día y la noche.

ESP32-s3_reloj_internet_animación

Cómo funciona este reloj

Una vez alimentado a través de USB-C, el ESP32-S3 se conecta a su red Wi-Fi y recupera la hora local actual de internet. La pantalla normalmente desplaza el tiempo, pero en un intervalo definido cambia para mostrar la fecha. Tanto la hora como la fecha se representan utilizando un efecto de arcoíris dinámico, creando una exhibición vibrante y animada en la pequeña matriz de 8×8.

Bibliotecas utilizadas

El boceto se basa en las siguientes bibliotecas:

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

InstalarAdafruit NeoMatrixusando el Administrador de bibliotecas de Arduino. Sus dependencias, incluyendoAdafruit GFX LibraryyAdafruit NeoPixel, se instalará automáticamente.

Configuración de usuario importante

Pin de datos de matriz (matriz RGB integrada)

Aunque la matriz RGB está conectada a la placa ESP32-S3, el pin de datos aún debe definirse en el código:

#define MATRIX_PIN 14

El GPIO 14 se utiliza comúnmente en placas de matriz RGB ESP32-S3. Si tu variante de placa utiliza un pin diferente, actualiza este valor.

SSID de Wi-Fi y contraseña (sensible a mayúsculas y minúsculas)

Reemplace las credenciales de Wi-Fi con los detalles de su propia red:

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

Importante:Los SSIDs de Wi-Fi sonsensible a mayúsculas y minúsculasUn SSID llamado"Book"no es lo mismo que"book". Si la capitalización no coincide exactamente, el ESP32-S3 no se conectará.

Servidor NTP, zona horaria y horario de verano

El reloj sincroniza la hora utilizando un servidor NTP de internet:

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

La hora local se calcula utilizando estos desfases:

// Toronto-ish: UTC-5, plus 1 hour DST
const long  gmtOffset_sec     = -5 * 3600;
const int   daylightOffset_sec = 3600;
  • gmtOffset_sec: Desplazamiento UTC en segundos (ejemplo: UTC-5 =-5 * 3600)
  • daylightOffset_secUsar3600si DST está activo, o0si no se utiliza

Estos valores se aplican utilizando:

configTime(gmtOffset_sec, daylightOffset_sec, ntpServer);

Brillo automático día/noche

El brillo cambia automáticamente según la hora actual:

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

Entre las 10 PM y las 6 AM, la matriz se atenúa para reducir el deslumbramiento. Durante las horas del día, se restaura el brillo normal.

Efecto de color arcoíris

Este proyecto utiliza una rueda de colores RGB clásica para generar colores de arcoíris suaves. Cada carácter se dibuja con un ligero desplazamiento de color y los colores cambian con el tiempo, produciendo una animación de arcoíris 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);
}

A medida que el texto se desplaza, cada carácter avanza a través del espectro RGB, creando un efecto arcoíris continuo que se ve especialmente impresionante en la pequeña pantalla de 8×8.

Comportamiento de la visualización de la hora y la fecha

El reloj mantiene búferes separados para la hora y la fecha:

  • Tiempo: HH:MM
  • Fecha: MMM DDpor ejemploJAN 08)

La fecha se muestra en un intervalo fijo:

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

Al final de cada ciclo completo de desplazamiento, el código decide si continuar mostrando la hora o cambiar a la fecha.

Lógica de desplazamiento en una matriz de 8×8

Debido a que la pantalla solo tiene 8 píxeles de ancho, el texto se desplaza suavemente de derecha a izquierda. Una vez que el texto sale completamente de la pantalla, el cursor se restablece y el siguiente contenido (hora o fecha) se carga para el siguiente pase.

Demostración

Después de subir el boceto y alimentar la placa a través de USB-C:

  • El ESP32-S3 se conecta a tu red Wi-Fi.
  • El tiempo está sincronizado desde Internet.
  • El tiempo avanza.HH:MMformato
  • La fecha aparece periódicamente.
  • Todo el texto se muestra con un suave efecto arcoíris animado.
  • La pantalla se atenúa automáticamente por la noche y se ilumina durante el día.

Descargas y enlaces

El código fuente completo se proporciona a continuación de este artículo. Herramientas y referencias útiles, incluido el Selector de Color RGB, también están enlazadas a continuación de este artículo.

Imágenes

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
Idioma: C++
¡Copiado!

Recursos y referencias

Archivos📁

Archivo de Fritzing