Exemplo Arduino WebRTC - Tutorial de Interface de Relógio de Tempo Real
Visão Geral
O exemplo WebRTC oferece uma interface completa de relógio de tempo real para os seus projetos com Arduino. Projetado para a plataforma educacional Arduino Uno R4 WiFi e DIYables STEM V4 IoT com recursos de RTC integrados, recursos avançados de gerenciamento de tempo e integração perfeita com o ecossistema educacional. Você pode exibir as informações do relógio de tempo real, sincronizar o horário do navegador web com o Arduino e monitorar as diferenças de horário por meio de uma interface web intuitiva.

Recursos
- Exibição do Relógio de Tempo Real: Mostra o horário atual do RTC do Arduino com atualizações automáticas
- Comparação de Horário do Dispositivo: Exibe o horário do navegador web/dispositivo ao lado do horário do Arduino
- Sincronização de Horário com Um Clique: Sincroniza o RTC do Arduino com o horário do navegador web instantaneamente
- Indicador Visual de Diferença de Horário: Mostra o desvio de horário entre os dispositivos em minutos
- Formato de Horário em Duas Linhas: Formato de 12 horas AM/PM com exibição da data completa
- Interface Moderna com Gradiente: Layout em estilo de cartão com design responsivo
- Comunicação WebSocket: Atualizações bidirecionais em tempo real sem recarregar a página
- Sincronização com Fuso Horário: Usa o horário local do dispositivo para uma sincronização precisa
- Monitoramento do Status da Conexão: Indicadores visuais do estado da conexão WebSocket
- Solicitações Automáticas de Horário: Solicita o horário atual do Arduino ao carregar a página
- Extensível para Outras Plataformas: Atualmente implementado para o Arduino Uno R4 WiFi, mas pode ser estendido para outras plataformas de hardware. Veja DIYables_WebApps_ESP32
Hardware Necessário
Or you can buy the following kits:
| 1 | × | DIYables STEM V4 IoT Starter Kit (Arduino included) | |
| 1 | × | DIYables STEM V4B IoT Starter Kit (Arduino included) | |
| 1 | × | DIYables Sensor Kit (18 sensors/displays) |
Instruções de Configuração
Passos Rápidos
Siga estas instruções passo a passo:
- Se esta é a sua primeira vez usando o Arduino Uno R4 WiFi/DIYables STEM V4 IoT, consulte o tutorial sobre como configurar o ambiente para o Arduino Uno R4 WiFi/DIYables STEM V4 IoT no Arduino IDE.
- Conecte a placa Arduino Uno R4/DIYables STEM V4 IoT ao seu computador usando um cabo USB.
- Abra o Arduino IDE no seu computador.
- Selecione a placa Arduino Uno R4 apropriada (por exemplo, Arduino Uno R4 WiFi) e a porta COM.
- Vá até o ícone Libraries na barra lateral esquerda do Arduino IDE.
- Pesquise por "DIYables WebApps" e encontre a biblioteca DIYables WebApps da DIYables
- Clique no botão Install para instalar a biblioteca.

- Será solicitado que você instale algumas outras dependências de bibliotecas
- Clique no botão Install All para instalar todas as dependências da biblioteca.

- No Arduino IDE, vá em File Examples DIYables WebApps WebRTC, ou copie o código acima e cole no editor do Arduino IDE
- Configure as credenciais de WiFi no código atualizando estas linhas:
- Clique no botão Upload no Arduino IDE para fazer o upload do código para o Arduino.
- Abra o Serial Monitor no Arduino IDE
- Aguarde a conexão com o WiFi e a impressão das informações de WiFi no Serial Monitor.
- Confira o resultado no Serial Monitor. Ele se parece com o abaixo
- Se você não vir nada, reinicie a placa Arduino.
Usando a Interface Web
- Abra um navegador web no seu computador ou dispositivo móvel conectado à mesma rede WiFi
- Digite o endereço IP exibido no Serial Monitor no navegador web
- Exemplo: http://192.168.1.100
- Você verá a página inicial como na imagem abaixo:

- Clique no link Web RTC e você verá a interface do app Web RTC como abaixo:

- Ou você também pode acessar a página diretamente pelo endereço IP seguido de /web-rtc. Por exemplo: http://192.168.1.100/web-rtc
- Você verá a interface Web RTC mostrando:
- Horário do Arduino: Horário atual do RTC do Arduino
- Horário do Seu Dispositivo: Horário atual do seu navegador web/dispositivo
- Diferença de Horário: Diferença entre os dois horários em minutos
- Botão Sync Arduino Time: Clique para sincronizar o horário do Arduino com o do seu dispositivo
Sincronização de Horário
- Clique no botão "Sync Arduino Time" para sincronizar o RTC do Arduino com o horário local do seu dispositivo

- O processo de sincronização:
- Obtém o horário local atual do seu dispositivo (não UTC)
- Ajusta o deslocamento do fuso horário para garantir uma sincronização precisa do horário local
- Envia o timestamp para o Arduino via WebSocket
- O Arduino atualiza o seu RTC com o horário recebido
- A interface web é atualizada para mostrar o horário sincronizado
Explicação do Código
Componentes Principais
Função Setup
Funções de Callback
Callback de Sincronização de Horário:
Callback de Solicitação de Horário:
Loop Principal
Métodos da API
Métodos da Classe DIYablesWebRTCPage
onTimeSyncFromWeb(callback)
- Define a função de callback que trata a sincronização de horário vinda do navegador web
- Parâmetro: void (*callback)(unsigned long unixTimestamp)
- Uso: Chamado quando o usuário clica no botão "Sync Arduino Time"
onTimeRequestToWeb(callback)
- Define a função de callback que trata as solicitações de horário vindas do navegador web
- Parâmetro: void (*callback)()
- Uso: Chamado quando a interface web solicita o horário atual do Arduino
sendTimeToWeb(year, month, day, hour, minute, second)
- Envia o horário atual do Arduino para a interface web
- Parâmetros:
- year: Ano atual (por exemplo, 2025)
- month: Mês atual (1-12)
- day: Dia atual do mês (1-31)
- hour: Hora atual (0-23)
- minute: Minuto atual (0-59)
- second: Segundo atual (0-59)
Comunicação WebSocket
Mensagens da Web para o Arduino
- RTC:GET_TIME - Solicita o horário atual do Arduino
- RTC:SYNC:[timestamp] - Sincroniza o horário do Arduino com o timestamp Unix
Mensagens do Arduino para a Web
- DATETIME:YYYY,MM,DD,HH,MM,SS - Envia os componentes do horário atual do Arduino
Tutorial em Vídeo
O vídeo de demonstração abaixo usa o código abaixo:
Solução de Problemas
Problemas Comuns
1. Diferença de Várias Horas no Horário
- Problema: O Arduino mostra um horário com várias horas de diferença em relação ao horário do dispositivo
- Causa: Geralmente um problema de fuso horário ou o RTC não foi inicializado corretamente
- Solução:
- Clique no botão "Sync Arduino Time" para sincronizar novamente
- Verifique se o RTC está inicializado corretamente em setup()
- Verifique se a conexão WiFi está estável
- Problema: Erro ao clicar no botão de sincronização
- Causa: Falha na conexão WebSocket
- Solução:
- Verifique se o endereço IP do Arduino está correto
- Atualize a página web
- Verifique se o Arduino está conectado à mesma rede WiFi
- Verifique as configurações do firewall
- Problema: A exibição do horário congela ou não atualiza
- Causa: Conexão WebSocket perdida ou RTC parou
- Solução:
- Atualize a página web
- Verifique o status da conexão WebSocket
- Reinicie o Arduino se o RTC parar de responder
- Problema: A diferença de horário mostra milhares de minutos
- Causa: O RTC não foi configurado corretamente ou sofreu um desvio significativo
- Solução: Clique no botão de sincronização várias vezes e verifique as funções de callback
2. Erro "Not connected to Arduino"
3. O Horário Para de Atualizar
4. Grandes Diferenças de Horário (Dias/Meses)
Dicas de Depuração
Ative a Depuração Serial:
Verifique a Inicialização do RTC:
Uso Avançado
Registro de Dados com Timestamps
Ações Agendadas
Integração com Vários Web Apps
Aplicações e Casos de Uso
Projetos Educacionais
- Aprendizado de Gerenciamento de Tempo: Ensine os alunos sobre RTC, marcação de tempo e sincronização
- Conceitos de Tempo em IoT: Demonstre a sincronização de horário em rede em sistemas IoT
- Projetos de Registro de Dados: Adicione timestamps às leituras de sensores e aos experimentos
- Sistemas de Agendamento: Crie sistemas de automação e controle baseados em horário
Aplicações no Mundo Real
- Automação Residencial: Programe luzes, irrigação ou outros dispositivos
- Aquisição de Dados: Marque as leituras de sensores com timestamps para análise
- Registro de Eventos: Registre quando eventos específicos ocorrem com tempo preciso
- Monitoramento Remoto: Verifique remotamente o status do dispositivo e os horários da última atualização
Benefícios para a Educação STEM
- Conceitos de Fuso Horário: Entenda o horário local versus UTC e o tratamento de fusos horários
- Comunicação em Rede: Aprenda a comunicação WebSocket e as atualizações em tempo real
- Integração de Hardware: Combine interfaces web com a funcionalidade de RTC do hardware
- Resolução de Problemas: Depure problemas de temporização e de sincronização
Especificações Técnicas
Uso de Memória
- Memória Flash: ~8KB para a funcionalidade WebRTC
- SRAM: ~2KB durante a operação
- Buffer WebSocket: ~1KB para o tratamento de mensagens
Características de Desempenho
- Frequência de Atualização: Atualizações em tempo real via WebSocket
- Precisão da Sincronização: Normalmente dentro de 1-2 segundos
- Sobrecarga de Rede: ~50 bytes por mensagem de atualização de horário
- Tempo de Resposta: <100ms para operações de sincronização de horário
Compatibilidade
- Placas Arduino: Arduino Uno R4 WiFi, DIYables STEM V4 IoT
- Navegadores: Todos os navegadores modernos com suporte a WebSocket
- Dispositivos: Computadores, tablets e dispositivos móveis
- Redes: Redes WiFi com acesso à internet
Resumo
O exemplo WebRTC demonstra como:
- Criar uma interface web de relógio de tempo real
- Sincronizar o RTC do Arduino com o horário do navegador web
- Exibir informações de horário em um formato amigável
- Monitorar diferenças de horário e o status da conexão
- Integrar a funcionalidade de horário com outros aplicativos web
- Criar projetos educacionais de IoT com recursos de gerenciamento de tempo
Este exemplo é perfeito para projetos que exigem marcação de tempo precisa, registro de dados com timestamps, automação agendada e demonstrações educacionais de conceitos de sincronização de horário em sistemas IoT.