Proyecto de Reloj por Internet con Matriz LED RGB ESP32-S3 - Pantalla de Hora y Fecha multicolor de 2 Relojes

Proyecto de Reloj por Internet con Matriz LED RGB ESP32-S3 - Pantalla de Hora y Fecha multicolor de 2 Relojes

Reloj de Internet ESP32-S3 RGB NeoMatrix con visualización de hora y fecha

Este proyecto es un reloj de Internet con matriz RGB mejorado basado en el ESP32-S3 que no solo muestra la hora actual, sino que también muestra periódicamente la fecha. El ESP32-S3 se conecta a Wi-Fi, sincroniza la hora desde un servidor NTP y desplaza ya seaHH:MMo la fecha (por ejemploSEP 21) a través de una NeoMatrix RGB de 8×8. La pantalla admite control automático de brillo día/noche y colores RGB personalizables.

ESP32-s3_reloj_internet_animación

Lo que hace este reloj

Después de conectarse a su red Wi-Fi, el ESP32-S3 obtienen la hora local actual de Internet. El reloj normalmente desplaza la hora, pero a intervalos fijos cambia para mostrar la fecha. El color del texto se puede fijar a un color o ciclar automáticamente a través de múltiples colores definidos por el usuario. El brillo se reduce automáticamente por la noche para facilitar la lectura en la pantalla.

Bibliotecas utilizadas

Este boceto depende de las siguientes bibliotecas:

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

InstalarAdafruit NeoMatrixdesde el Administrador de Bibliotecas de Arduino. Todas las dependencias requeridas comoAdafruit GFX LibraryyAdafruit NeoPixelse instalará automáticamente.

Configuración de usuario importante

SSID de Wi-Fi y contraseña (distinción entre mayúsculas y minúsculas)

Debes reemplazar las credenciales de Wi-Fi con la información de tu propia red:

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

Importante:Las SSIDs de Wi-Fi sonsensible a mayúsculas y minúsculas. Por ejemplo, un SSID llamado"Book"estánolo mismo que"book"Si la capitalización no coincide exactamente, el ESP32 no podrá conectarse.

Servidor NTP, zona horaria y horario de verano

El reloj utiliza un servidor de tiempo por internet:

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

La hora local se calcula utilizando estos desfases:

const long  gmtOffset_sec     = -5 * 3600; 
const int   daylightOffset_sec = 3600;
  • gmtOffset_secSu desfase horario UTC en segundos (ejemplo: UTC-5 =-5 * 3600)
  • daylightOffset_secUsar3600para DST o0si no se utiliza el horario de verano

Estos ajustes se aplican utilizando:

configTime(gmtOffset_sec, daylightOffset_sec, ntpServer);

Control de brillo (día / noche)

Este proyecto ajusta automáticamente el brillo según la hora del día:

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, el brillo se reduce para hacer que la pantalla sea menos distractora en entornos oscuros. Puedes ajustar estos valores según tu preferencia.

Configuración de color RGB

El reloj admite tanto el modo de color fijo como el ciclo de color automático. Los colores RGB definidos por el usuario se almacenan en un arreglo:

uint8_t userColors[][3] = {
  {17, 43, 171},  // Light Blue
  {255, 0, 0},    // Red
  {0, 255, 0},    // Green
  {255, 165, 0},  // Orange
  {255, 0, 255}   // Magenta
};

Cada color utiliza valores RGB (Rojo, Verde, Azul) que van de 0 a 255. Al cambiar estos números, puedes crear virtually cualquier color para la pantalla. SiuseFixedColorestá configurado paratrue, el reloj siempre utiliza un color. Si está configurado enfalseel color cambia automáticamente después de cada desplazamiento completo.

Para encontrar rápidamente valores RGB precisos para cualquier color que desees, utiliza la herramienta Selector de Color RGB:Selector de color RGB.

Formato de hora y fecha

El tiempo está formateado comoHH:MMy almacenado en un pequeño búfer de caracteres. La fecha está formateada como una cadena en mayúsculas comoSEP 21La pantalla cambia automáticamente entre la hora y la fecha a intervalos fijos.

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

Debido a que una matriz de 8×8 es demasiado pequeña para mostrar el texto completo a la vez, el boceto desplaza el texto horizontalmente. Una vez que el texto sale completamente de la pantalla, se actualiza el color y el contenido cambia entre hora y fecha cuando es necesario.

Demostración

Después de subir el boceto:

  • El ESP32 se conecta a Wi-Fi.
  • El tiempo está sincronizado desde internet.
  • El tiempo actual se desplaza a través de la matriz.
  • La fecha aparece periódicamente
  • El brillo se ajusta automáticamente para el día y la noche.

Descargas y enlaces

El código fuente completo se proporciona a continuación de este artículo. Los enlaces a las partes, herramientas y hojas de datos también están disponibles 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
869-ESP32-S3 RGB LED Matrix Internte Clock Project 2 - Multi Color with Date
Idioma: C++
¡Copiado!

Cosas que podrías necesitar

Recursos y referencias

Archivos📁

Archivo de Fritzing