- Projeto que sincroniza um relógio analógico de quartzo barato com a hora da internet, controlando-o com um módulo ESP8266 e um sketch Arduino
- Mantém a precisão obtendo a hora de um servidor NTP a cada 15 minutos e inclui ajuste automático do horário de verão
- Modifica o relógio separando a bobina do motor de passo Lavet para que o ESP8266 possa controlá-la, e usa um chip EERAM para salvar as posições dos ponteiros de hora, minuto e segundo mesmo quando a energia é desligada
- Na configuração inicial, define a posição dos ponteiros por meio de uma interface de página web fornecida pelo ESP8266 e, depois disso, visualiza o estado do relógio em uma página de status com SVG ou HTML Canvas
- Exemplo open source de como implementar um relógio com sincronização precisa pela rede usando hardware de baixo custo, mostrando uma aplicação prática de tecnologias de controle IoT embarcado
Visão geral do projeto
- ESP8266 WiFi Analog Clock é um sistema que usa um módulo WEMOS D1 Mini ESP8266 e um sketch Arduino para obter e exibir automaticamente a hora local a partir de um servidor NTP (Network Time Protocol)
- Reconecta ao servidor NTP a cada 15 minutos para manter a precisão do relógio
- Inclui ajuste automático de horário de verão (Daylight Saving Time)
- O projeto é baseado em um relógio analógico de quartzo barato e combina modificação de hardware com controle por software
Configuração de hardware
- O relógio usado foi um relógio analógico de quartzo comprado no Walmart por US$ 3,88
- A movimentação de quartzo do relógio foi aberta, a bobina interna do motor de passo Lavet foi separada do oscilador de quartzo e fios foram soldados em cada terminal para conexão ao ESP8266
- A maioria desses mecanismos é montada por encaixe, sem parafusos
- Os fios da bobina são mais finos que um fio de cabelo, exigindo extremo cuidado no manuseio
- O circuito final foi montado em uma perfboard, junto com o CI EERAM e outros componentes
Funcionamento do software
- O sketch AnalogClock.ino faz o ESP8266 comparar, 10 vezes por segundo, a hora real com a hora mostrada no relógio
- Se o relógio estiver atrasado, o ponteiro dos segundos é movido mais rapidamente para sincronizar
- Se o relógio estiver adiantado, ele aguarda até que a hora real alcance a indicação
- O movimento do ponteiro dos segundos acontece aplicando um pulso bipolar (bipolar pulse) à bobina do motor Lavet
- Dependendo das características do motor, é necessário ajustar a constante PULSETIME; experimentalmente, 30 ms foi adequado
- Como relógios baratos não têm feedback da posição dos ponteiros, a informação de posição se perde quando a energia é desligada
- Para resolver isso, foi usado o Microchip 47L04 Serial EERAM (SRAM de 4 Kbit + backup em EEPROM)
- As posições dos ponteiros de hora, minuto e segundo são salvas a cada segundo e restauradas quando o sistema é religado
Configuração inicial e interface web
- Na primeira execução do sketch, o ESP8266 fornece uma página web simples para que o usuário defina a posição inicial dos ponteiros do relógio
- Depois disso, o ESP8266 passa a lembrar a posição dos ponteiros usando os dados salvos na EERAM
- Durante a operação, ele fornece uma página de status (status page) com suporte a três modos de exibição
- Exibição gráfica do mostrador baseada em SVG
- Exibição do mostrador baseada em HTML Canvas
- Exibição de status somente em texto
Licença e informações técnicas
- O projeto é publicado sob a licença MIT
- A composição principal de linguagens é C++ 64,1% e C 35,9%
- O repositório no GitHub tem 252 stars e 2 forks
- Tags relacionadas: arduino, esp8266, clock, analog-clock, ntp, hardware-construction
Significado
- Exemplo prático de conversão de um relógio barato em um relógio inteligente sincronizado por Wi‑Fi
- Caso de implementação de controle preciso de tempo e interface baseada na web usando ESP8266 e o ambiente Arduino
- Material de referência open source para aprender sobre modificação de hardware IoT e técnicas de sincronização de firmware
1 comentários
Comentários no Hacker News
A parte que achei especialmente interessante foi o chip "SRAM with EEPROM backup"
Ele permite salvar permanentemente a posição dos ponteiros sempre que eles se movem, sem consumir a vida útil de escrita como uma EEPROM comum
E custa menos de 1 dólar por unidade, então é um componente útil para hobby e projetos pequenos
SRAM e EEPROM ficam no mesmo encapsulamento junto com um controlador, e há um pequeno capacitor (4.7µF) por perto
A SRAM mantém os dados enquanto houver energia, e a EEPROM guarda os dados permanentemente mesmo sem energia, mas tem limite de gravações
Quando o controlador detecta queda de tensão, ele despeja imediatamente o conteúdo da SRAM na EEPROM
O capacitor fornece energia nesse momento para permitir a gravação dos dados na EEPROM
Quando a energia volta, os dados da EEPROM são copiados de volta para a SRAM
A desvantagem é a capacidade pequena, de 4 kilobits, mas se isso resolve o problema por 1 dólar, já vale bastante a pena
Principalmente para salvar logs de depuração em formato de buffer circular, porque assim dá para preservar logs de crash de sistemas embarcados mesmo sem estar conectado a um PC de desenvolvimento
Link do produto
Mas onde moro agora o sinal é fraco demais, então configurar manualmente é bem incômodo
Por isso eu mesmo fiz um código Arduino que usa ESP32 e servidor NTP para emular sinais de relógios atômicos do mundo todo
Também é bem interessante conhecer a história e as diferenças entre os sinais de transmissão de relógios atômicos de cada país
O brilho vermelho da projeção é perfeito à noite, mas como ele não tem sincronização via Wi‑Fi, não dá para ajustar a hora com NTP ou GPS
A parte do projetor é ligada ao corpo principal por um cabo flat, então deve ser divertido fazer engenharia reversa
Idealmente, seria legal se uma matriz de LED no teto mostrasse outras informações além da hora
Existem produtos assim, mas são muito caros, como os da buyfrixos.com
Link do meu projeto
Eu também uso vários relógios de parede baratos desse tipo, e quase não têm erro de horário
Acho até que podem ter menos jitter do que NTP
Nunca precisei acertar a hora deles, e eles batem com relógios NTP com diferença de menos de 1 segundo
Já os relógios do forno e do micro-ondas dão vontade de desligar
Em um mês ficam cerca de 1 minuto adiantados, então seria ótimo se tivessem sincronização por Wi‑Fi
Hoje em dia os produtos estão cada vez mais fechados, e sinto falta de fazer coisas simples e hackeáveis com as próprias mãos
Quando eu sair da correria do trabalho, quero tentar fabricar meus próprios eletrodomésticos simples, confiáveis e amigáveis para hackers
Ver projetos assim é realmente inspirador
Comprei um para minha filha, mas o tique-taque irregular atrapalhava os estudos, então agora ele está parado
Mesmo assim, foi uma experiência bem divertida
Só que, se houver vários relógios em casa, você precisa decidir usar só ele para isso funcionar
Apresentação do Gents Turret Movement
Eu usei um deles para fazer um relógio eletromecânico baseado em diapasão
Em vez de uma fonte de tempo precisa, ele é acionado por diapasão e lógica 74xx
Fico me perguntando por que a Accutron ainda não fabrica algo assim
O uso da frequência de ressonância é parecido com um relógio de quartzo, mas visualmente mais atraente
Caso contrário, picos podem causar mau funcionamento ou até danificar o microcontrolador
O ideal é isolar a tensão de gate com um optotransistor e alimentar o motor separadamente
Também existe um projeto no GitHub
Ainda existem muitos decks antigos e controladores LANC por aí, então isso tem bastante utilidade
Mesmo que o relógio saiba a hora exata, se a velocidade real de acionamento variar um pouco, o erro acumulado pode crescer
Principalmente se a constante PULSETIME estiver errada por apenas 1 ms, a diferença já pode aparecer em um dia
Claro que um motor de passo Lavet teoricamente mantém passos com base em uma frequência de oscilação constante, mas desgaste ou ruído podem introduzir viés
Ainda assim, para um relógio de parede, talvez seja um erro desprezível
Consultar a explicação da Wikipedia ajuda a entender melhor
pulsetimeé apenas o tempo para avançar um passoDesde que nenhum passo seja perdido, não haverá erro acumulado
Ou seja, basta manter a contagem de passos correta