Este tutorial faz parte de: Matriz de LEDs RGB ESP32-S3
Projeto bacana para criar com aplicações práticas e divertidas usando o módulo ESP32-S3 RGB Matrix.
Projeto de Relógio Básico com Matriz de LED RGB ESP32-S3 Wi-Fi + NTP
Relógio de Internet ESP32-S3 com NeoMatrix 8×8 (Wi-Fi + Hora NTP)
Este projeto transforma um ESP32-S3 e uma matriz RGB NeoMatrix 8×8 (NeoPixel/WS2812) em um pequeno relógio da Internet. O ESP32 conecta-se ao Wi-Fi, sincroniza a hora local a partir de um servidor NTP e, em seguida, rola o tempo comoHH:MMatravés do display 8×8.

Como funciona (em alto nível)
1) ESP32-S3 conecta-se ao seu roteador usando<WiFi.h>.
2) Ele sincroniza o tempo a partir de um servidor NTP usando"time.h"econfigTime().
3) A hora está formatada comoHH:MMe salvo em um pequeno buffer de texto.
4) O NeoMatrix renderiza o texto e o rola pelo painel 8×8.

Cor RGB
A cor do texto do relógio é controlada usando valores RGB (Vermelho, Verde, Azul), onde cada canal de cor varia de 0 a 255 e combinações diferentes criam cores diferentes na NeoMatrix. Ajustando ocolor_RED,color_GREEN, ecolor_BLUEvariáveis, você pode personalizar facilmente a aparência do relógio para qualquer cor que desejar. Para encontrar rapidamente os valores RGB exatos para uma cor específica, você pode usar a ferramenta de Selecionador de Cores RGB online aqui:Seletor de Cores RGB.

Bibliotecas utilizadas
Isto inclui dizer exatamente do que o esboço depende:

#include <WiFi.h>
#include "time.h"
#include <Adafruit_GFX.h>
#include <Adafruit_NeoMatrix.h>
#include <Adafruit_NeoPixel.h>InstalarAdafruit NeoMatrixusando o Gerenciador de Bibliotecas do Arduino. Ele também irá puxar as dependências necessárias, comoAdafruit GFX LibraryeAdafruit NeoPixel.
Configurações importantes do usuário que você DEVE editar
1) Cor do texto (RGB)
Defina a cor do texto do seu relógio usando valores de 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;Estes valores são utilizados aqui:
matrix.setTextColor(matrix.Color(color_RED, color_GREEN, color_BLUE));Nota:Se você definir todas as cores como 0 (preto), o texto se torna invisível. O esboço inclui uma verificação de segurança:
// 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;
}Isso garante que a matriz nunca fique "morta" devido a uma configuração de cor invisível.
2) SSID e senha do Wi-Fi
Substitua isso pelo seu verdadeiro nome e senha do Wi-Fi:
const char* WIFI_SSID = "WiFi";
const char* WIFI_PASSWORD = "passW0rd";Durante a inicialização, o ESP32 imprime o progresso da conexão no Monitor Serial e expira após cerca de 15 segundos (30 tentativas × 500ms).
3) Servidor NTP
O servidor NTP padrão é:
const char* ntpServer = "pool.ntp.org";Você pode mantê-lo como está. Se você quiser usar um servidor local, substitua o nome do host pelo seu servidor NTP preferido.
4) Deslocamento de fuso horário e deslocamento do horário de verão
Essas duas configurações controlam a hora local:
// Toronto-ish: UTC-5, plus 1 hour DST
const long gmtOffset_sec = -5 * 3600; // -5 hours
const int daylightOffset_sec = 3600; // +1 hour for DSTComo configurá-los:
gmtOffset_sec= (horas de deslocamento UTC) × 3600. Exemplo: UTC-5 →-5*3600, UTC+2 →2*3600.daylightOffset_sec=0se você não quiser o ajuste de Horário de Verão, ou3600se a sua região está atualmente observando o horário de verão (+1 hora).
Estes são aplicados aqui:
configTime(gmtOffset_sec, daylightOffset_sec, ntpServer);Configuração de exibição
Dados de pino da matriz
O pino de dados está definido aqui:
#define MATRIX_PIN 14Se sua fiação usar um GPIO diferente, altere este número para corresponder.
Layout e ordem de cores do NeoMatrix
Sua matriz é inicializada assim:
Adafruit_NeoMatrix matrix(8, 8, MATRIX_PIN,
NEO_MATRIX_TOP + NEO_MATRIX_LEFT +
NEO_MATRIX_ROWS + NEO_MATRIX_PROGRESSIVE,
NEO_RGB + NEO_KHZ800);Duas razões comuns pelas quais a tela parece "errada":
- Direção de rotação / fiação:Se o texto aparecer de cabeça para baixo ou espelhado, ajuste o
NEO_MATRIX_*bandeiras (CIMA/BAIXO, ESQUERDA/DIREITA, LINHAS/COLUNAS, PROGRESSIVO/ZIGZAG). - Ordem das cores:Este código utiliza
NEO_RGB. Alguns painéis sãoNEO_GRB. Se vermelho/verde/azul não corresponderem, mudeNEO_RGBpara a ordem correta.
Brilho
A luminosidade está definida eminitMatrix():
matrix.setBrightness(40);Aumente para um display mais brilhante, reduza para diminuir o calor e o consumo de energia.
Como o tempo é gerado comoHH:MM
O relógio armazena o tempo formatado em um buffer de 6 caracteres:
char timeText[6] = "00:00";EntãoupdateTimeText()lê a hora local sincronizada com NTP e escreve o texto:
// Format HH:MM
snprintf(timeText, sizeof(timeText), "%02d:%02d",
timeinfo.tm_hour,
timeinfo.tm_min);Isso é atualizado uma vez por segundo no loop principal.
Como a rolagem funciona em um display 8×8
Uma matriz 8×8 é muito estreita para ser exibida.HH:MMde uma só vez, então o esboço rola o texto. Ele desenha o tempo em uma posição X variávelscrollX), em seguida, move-o para a esquerda um pixel a cada atualização.
int16_t scrollX = 8;
const uint16_t scrollIntervalMs = 120;Cada passo de rolagem:
matrix.fillScreen(0);
matrix.setCursor(scrollX, 0);
matrix.print(timeText);
matrix.show();
scrollX--;Quando o texto sai completamente do lado esquerdo, o código o reinicializa para começar novamente a partir da borda direita:
int16_t textWidth = 30;
if (scrollX < -textWidth) {
scrollX = matrix.width();
}Saída do Monitor Serial (depuração)
Este esboço imprime mensagens úteis:
- Progresso da conexão Wi-Fi e endereço IP
- Se a sincronização de tempo foi bem-sucedida
- A string de tempo formatada (por exemplo,
Time text: 14:32)
Se o display estiver em branco, o Monitor Serial é o primeiro lugar a verificar para confirmar se o Wi-Fi e o NTP estão funcionando.
Demonstração do projeto
Após o upload e reinicialização:
- ESP32 conecta-se ao Wi-Fi
- Sincroniza o tempo de
pool.ntp.org - Shows
OKbrevemente sobre a matriz - Rola continuamente o horário atual como
HH:MM
Downloads e links
O código completo está disponível abaixo deste artigo. Peças, ferramentas e folhas de dados também estão vinculadas abaixo deste artigo.
Este tutorial é parte de: Matriz de LEDs RGB ESP32-S3
- Projetos de Matriz de LED RGB ESP32-S3 (Jogo de Inclinação, Texto, Seta, Demonstração WiFi)
- Projeto de Matriz de LED RGB ESP32-S3 2 - Texto Rolante
- Projeto de Matriz LED RGB ESP32-S3 3 - Texto do telefone móvel
- Projeto de Matriz LED RGB ESP32-S3 4 - Ponto Inclinado
- Projeto de Matriz de LED RGB ESP32-S3 5 - Setas sempre para cima
- Projeto de Matriz de LED RGB ESP32-S3 6 - Jogo de Cible
- Projeto de Relógio da Internet com Matriz de LED RGB ESP32-S3 - Exibição de Hora e Data em Multi Cor para 2 Relógios
- Projeto de Relógio da Internet com Matriz de LED RGB ESP32-S3 - 3 Cores Noturnas com Data
- Projeto de Relógio Internet com Matriz LED RGB ESP32-S3 - 5 Cores do Arco-íris
- Projeto de Relógio de Internet com Matriz de LED RGB ESP32-S3 - 4 Cores Aleatórias
- Teste de Matriz de LED RGB ESP32-S3 para configuração RGB, GRB
Coisas que você pode precisar
-
Amazonas
-
eBay
-
AliExpressCompre a matriz RGB ESP32-S3 na AliExpress (2)s.click.aliexpress.com
-
AliExpressCompre a matriz RGB ESP32-S3 na AliExpress.s.click.aliexpress.com
Recursos e referências
-
Vídeo
Arquivos📁
Arquivo Fritzing
-
esp32-S3-supermini-tht fritzing part
esp32-S3-supermini-tht.fzpz0.02 MB