Web RTC com Arduino Nano ESP32 e a Biblioteca DIYables ESP32 WebApps
Visão Geral
Este tutorial aborda a classe DIYablesWebRTCPage da Biblioteca DIYables ESP32 WebApps. A página do navegador exibe a hora atual do RTC do Arduino Nano ESP32 ao lado da hora local do navegador e calcula o desvio entre as duas. Um único botão envia a hora local do navegador para a placa, que atualiza o módulo RTC.
A placa precisa de um módulo RTC de hardware DS3231 conectado por I2C. A biblioteca RTClib da Adafruit cuida da leitura e da escrita da hora do lado da placa.

O Que Este Tutorial Aborda
- Ligar um módulo RTC DS3231 ao Arduino Nano ESP32
- Instalar a dependência RTClib
- Ler e exibir a hora do RTC no navegador
- Sincronizar o RTC da placa a partir do navegador com o toque de um botão
Hardware Necessário
Or you can buy the following kits:
| 1 | × | DIYables Sensor Kit (18 sensors/displays) |
Diagrama de Ligação

This image is created using Fritzing. Click to enlarge image
Arduino Nano ESP32 - Módulo RTC DS3231
| Módulo RTC DS1307 | Arduino Nano ESP32 |
|---|---|
| Vin | 3.3V |
| GND | GND |
| SDA | GPIO21 |
| SCL | GPIO22 |
Passos
Siga estas instruções passo a passo:
- Se esta é a primeira vez que você usa o Arduino Nano ESP32, consulte o tutorial sobre como configurar o ambiente de desenvolvimento do Arduino Nano ESP32.
- Conecte a placa Arduino Nano ESP32 ao seu computador usando um cabo USB.
- Abra o Arduino IDE no seu computador.
- Selecione a placa apropriada (por exemplo, Arduino Nano ESP32) e a porta COM.
- Vá até o ícone Libraries na barra à esquerda do Arduino IDE.
- Pesquise "DIYables ESP32 WebApps" e encontre a Biblioteca DIYables ESP32 WebApps da DIYables
- Clique no botão Install para instalar a biblioteca.
- Search for DIYables ESP32 WebApps created by DIYables and click the Install button.
- Você será solicitado a instalar algumas outras dependências da biblioteca
- Clique no botão Install All para instalar todas as dependências da biblioteca.
- Pesquise "RTClib" e encontre a biblioteca RTC da Adafruit
- Clique no botão Install para instalar a biblioteca RTC.
- Search for RTClib created by Adafruit and click the Install button.
- Você pode ser solicitado a instalar dependências da biblioteca
- Instale todas as dependências da biblioteca clicando no botão Install All.
- No Arduino IDE, vá até o exemplo File Examples DIYables ESP32 WebApps WebRTC, ou copie o código acima e cole no editor do Arduino IDE
- Atualize as credenciais de WiFi no sketch:
- Clique no botão Upload no Arduino IDE para fazer o upload do código para o Arduino Nano ESP32
- Abra o Serial Monitor
- A saída do Serial Monitor deve ser parecida com esta:
- Se nada aparecer, pressione o botão de reset da placa.
- Digite o endereço IP exibido no Serial Monitor em um navegador na mesma rede.
- Exemplo: http://192.168.0.2
- A página inicial mostra um card para o aplicativo RTC:

- Selecione o card Web RTC para abrir a interface do relógio:

- A página também pode ser acessada diretamente em http://192.168.0.2/web-rtc.
Usando a Interface Web
A página do RTC exibe três seções:
- Arduino Time — a hora atual do módulo DS3231 da placa
- Your Device Time — a hora local atual informada pelo navegador
- Time Difference — a diferença entre as duas, em minutos
Sincronizando a Hora
Clique no botão Sync ESP32 Time para transferir a hora local do navegador para a placa:

O processo de sincronização:
- O navegador lê sua hora local (considerando o deslocamento do fuso horário local)
- O timestamp é enviado à placa por WebSocket
- O sketch grava a hora recebida no DS3231
- A página é atualizada para exibir a nova hora da placa
Após a sincronização, a diferença de tempo normalmente é de 0 a 1 minuto.
Solução de Problemas
A hora do RTC mostra um valor errado
- O DS3231 mantém a hora pela bateria mesmo quando a placa está desligada
- Faça uma sincronização pelo navegador para definir a hora correta
- Verifique se a bateria CR2032 está instalada no módulo RTC
I2C não detectado
- Verifique se a ligação de SDA e SCL corresponde à tabela acima
- Confirme que o VCC do DS3231 está conectado a 3.3 V, não a 5 V
- Adicione uma verificação Serial.println(rtc.isrunning()) no setup
O WebSocket cai com frequência
- Confirme que webAppsServer.loop() é chamado a cada iteração de loop()
- Evite atrasos longos que bloqueiem o código depois que o servidor é iniciado
Não consigo acessar a página
- Verifique o endereço IP no Serial Monitor
- Verifique se o dispositivo com o navegador e a placa estão na mesma rede WiFi de 2.4 GHz