Relógio Analisador DCF77 MK2 com Arduino – Display Preciso de Código de Tempo em Anel de 60 LEDs
Componentes e Materiais
| Componente | Quantidade |
|---|---|
| Arduino Nano R3 | 1 |
Nota: Usei ATmega328 standalone, mas Nano ou UNO funcionam. O Superfilter Nano/UNO precisa de cristal de quartzo (não ressonador) na placa.
Sobre o Projeto
Detalhes completos no site: Arduino DCF77 Analyzer Clock Site

Este relógio exibe o código de tempo DCF77 em dois anéis de 60 LEDs num mostrador de 12" (305 mm). O anel interno mostra o código ao vivo do próximo minuto conforme recebido; o anel externo mostra a hora atual (se o minuto anterior foi decodificado sem erros).
24 LEDs adicionais mostram status do decodificador e info de tempo. Data/hora decodificadas em dois displays de 7 segmentos de 8 dígitos (0.56"), enquanto timings de pulso e bits em dois displays menores (0.39").
Usa 2x ATmega328 (Arduino Uno): um para o Analisador DCF77, outro para o Super Filtro de Udo Klein. O Super Filtro permite processamento avançado do sinal DCF77 e ajuste do cristal do Arduino. É chaveável e tem 10 LEDs de status para qualidade de recepção/saída. O relógio também toca horas, quartos e segundos via 2 módulos JQ6500.
A maior parte da eletrônica fica na traseira do mostrador, permitindo diversos estilos de caixa.

Passo 1: Créditos
Baseado no DCF77 Analyzer Clock de Erik de Ruiter, versão atualizada do meu MK1.


Acima: relógio de Erik; abaixo: meu MK1. Erik publicou tudo no GitHub.
Diferenças para o relógio de Erik:
- Duas placas Arduino UNO customizadas em veroboard (em vez de Uno + Mega)
- Displays de 7 segmentos e matriz de pontos baratos da China (código adaptado)
- 2x módulos JQ6500 no lugar do Adafruit Sound Board (mudanças de software e biblioteca extra)
- Sem pinos livres no Uno para LEDs de status do decodificador → usei 3º módulo matriz de pontos
- Super Filtro modificado com LEDs extras de status; brilho PWM controlado pelo Uno do decodificador via transistores
- Função de teste de LEDs adicionada ao Super Filtro
- Apenas LEDs 3mm com brilho combinado para uniformidade
- 4 níveis de intensidade em software (anéis/LEDs de status, displays grandes, displays pequenos, LEDs do Super Filtro) baseados em único LDR
- Sem display de temperatura ou semana
- LEDs extras no Super Filtro → apenas opções Synthesized/Non-Synthesized (sem troca de modos como no original)
- Som DCF77 modificado: "1" toca som levemente mais longo que 200ms para diferenciar de "0"
Passo 2: Vídeos
- Vídeo 1: Relógio rodando com tick e badaladas de hora/quarto
- Vídeo 2: Ligação, teste de displays e decodificação data/hora
- Vídeo 3: Funcionamento do Super Filtro de Udo Klein
- Vídeo 4: Versão picture frame funcionando
- Vídeo 5: Sinal DCF77 ao vivo (outros sons desligados)
Passo 3: Controles

7 chaves em barra metálica, fixadas em porta basculante sob o relógio.


Funções das chaves:
- Som Tick Lig/Deslig: Remove alimentação do JQ6500 do tick
- Volume Tick (momentânea): Ajusta volume (tick deve estar ligado)
- Controle Badaladas: Desligado / 24h / Timer (ex: 05:15–23:00)
- Volume Badaladas (momentânea): Sobe/desce; toca badalada de teste após cada ajuste
- Som DCF77 Lig/Deslig: Toca sinal recebido como bips (0=100ms, 1=500ms)
- Reset (momentânea): Filter = resincroniza Super Filtro; Analyzer = reinicia analisador (teste de displays + resync). RTC mantém hora.
- Fonte DCF77: Off (desconecta) / Analyzer (sinal direto) / Filter (sinal sintetizado do Super Filtro)
Passo 4: Esquemáticos
3 esquemáticos: placa principal, módulos matriz de pontos, módulos display 7 segmentos.

Esquemático grande (4000x4000) aqui.

Passo 5: Conexões dos Pinos ATmega
Dois ATmega328 em veroboards custom. UNO padrão serve para Analisador; Super Filtro precisa UNO com cristal de quartzo. Como adicionar cristal ao Arduino UNO.



Passo 6: Layouts Veroboard


LEDs mostrados na placa principal apenas para referência. Conexões externas via conectores header. Fiação ao painel de chaves é direta (permite remoção para manutenção).




RTC montado aqui mas conectado via cabo header. Super Filtro precisa cristal de quartzo.
Passo 7: Módulos Pré-montados

- Regulador LM2596: Ajusta 5V via preset 10K (meça após diodo D4). Ajuste antes de colocar Arduinos. Consumo: ~450mA máx (LEDs full), ~80mA (displays off). Fonte 1A 7-12V recomendada.
- RTC DS3231 I2C: Armazena hora decodificada. Compensação de temperatura + backup bateria. Modificado para bateria não recarregável.
- Módulos MAX7219 Matriz de Pontos: 2 para anéis interno/externo, 1 para demais LEDs (exceto Super Filtro). Matriz removida, header soldado no lugar.
- Sensor Radar Doppler RCWL-0516: Detecção de movimento (atravessa vidro). Alternativa: PIR (não atravessa vidro).
- Display 7 seg 0.56" MAX7219: Hora/data. Modificação necessária para evitar erros (ver Passo 24).
- Display 7 seg 0.39" MAX7219: Bits, erros, pulsos. Compre com pinos não soldados ou soldados na traseira. Mesma modificação necessária.
- JQ6500 16 pinos: Um para tick-tock, outro para badaladas. Carregam sons via USB (Windows) com programa simples. Drive alto-falante 3W 8Ω cada.
- Receptor DCF77: Módulo PV Electronics (pvelectronics.co.uk). Conexões: 1.VDD 2.TCON 3.PON 4.GND 5.NC. Saída invertida. PON em VDD = standby; PON em GND = operação. Mantenha longe de ruído elétrico, apontado para transmissor.
Passo 8: Ordem de Fiação
~400 fios — planejamento essencial. Fixe todas as placas na traseira do mostrador.
- Monte/modifique e fixe todas as placas
- Remova módulos matriz e fique-os fora
- Fie LEDs do Super Filtro e instale no mostrador
- Fie LEDs status DCF77 e instale
- Conecte Super Filtro e status DCF77 à placa principal via headers
- Fie todos LEDs do módulo matriz 3 e instale
- Conecte módulo 3 à pequena veroboard breakout e desta aos LEDs
- Fie anel externo, instale, conecte matriz externa, refixe, termine fiação
- Repita para anel interno
- Monte cabos header e conecte a todas as placas
- Fixe veroboard principal e fiação ao painel de chaves (LDR na porta)
- Instale alto-falantes e conecte aos JQ6500

Se furos forem do tamanho correto, LEDs encaixam por pressão (sem cola). Pinte/vernize bordas internas dos furos para melhor atrito.
Passo 9: Modificação Módulo MAX7219 Matriz de Pontos

- Remova a matriz de LEDs original (não usada)
- Solde dois conectores header 90° de 8 pinos na borda inferior do conector da matriz



Passo 10: Jig de Fiação para LEDs
Imprima o mostrador em papel (espelhado), cole em madeira, marque e fure centros com broca 3mm (teste ajuste dos LEDs).




Marque números dos LEDs no jig (invertidos/anti-horário visto de trás).
Passo 11: Fiação Anéis Interno e Externo


Em grupos de 8 LEDs: dobre ânodos juntos, solde, isole catodos, dobre ~15mm, corte 5mm, solde fio ao próximo grupo. Cada grupo de 8 tem ânodo separado para o módulo matriz (8 conexões total). Repita para anel interno.




O 8º grupo tem só 4 LEDs. Esquemático 4000x4000 aqui.
LEDs usados: Vishay TLH44 série High Efficiency, Ø 3mm Tinted Diffused. Ângulo amplo, grupos de intensidade luminosa para uniformidade.



Passo 12: Fiação 3º Módulo Matriz de Pontos
24 LEDs de 64 usados:
- Seção 1 (8 LEDs): dias da semana (7 conectados)
- Seção 2: CEST, CET, Ano Bissexto, Erro RTC, Sincronizado, Erro Período, Erro Largura Pulso (7)
- Seção 3: Buffer Cheio, Paridade 3-1 pass/fail, Buffer Overflow (8)
- Seção 4: Marcador Minuto, Status DCF77 (2)
Fie no jig, conecte a pequena veroboard (também abriga RTC).
Passo 13: Fiação Painel de Chaves





Passo 14: Sons Badaladas e Tick-Tock no JQ6500


2x JQ6500: tick-tock (hardware) e badaladas (software).
Circuito Badaladas: Chave 3 posições (SW7). Controle serial pinos 13/14. Resistor 1K no RX. Off = remove alimentação + mantém pino 24/7 alto. 24/7 = badala sempre. Timer = badala 05:15–23:00 (ajustável no código). Volume via software + chaves.

Circuito Tick-Tock: Hardware direto no JQ6500. SW6 liga/desliga alimentação. SW8 (3 posições central) ajusta volume via pino ADKey. Comando de toque a cada 2s do Arduino. Arquivo de som < 2s. Diodo D15 isola ADKey do Arduino.

Passo 15: Alto-falantes

2x alto-falante 3W 8Ω nas laterais da caixa (par disponível na Amazon).




Passo 16: Carregando Sons no JQ6500
Sites: Arduino Library, Info geral, Ferramentas.
Usei versão inglesa do Nikolai Radke: Download.
- Conecte JQ6500 via USB
- Execute o programa, clique FILES → CHOOSE FILES → selecione arquivos
- Nomes: 1-12 = horas, 13-16 = quartos, 17 = teste de volume
- Clique OPEN → aba FLASH → FLASH → aguarde "READY"
- Repita para tick-tock (1 arquivo) no 2º módulo



Sons mixados no Audacity a 48kHz (máx do JQ6500). Badaladas em múltiplos canais para harmônicos, depois mono.
Arquivos: bell.zip, tick_tock.zip
Passo 17: Modificação Biblioteca JQ6500
Edite JQ6500_Serial.cpp na pasta libraries do Arduino.
Problema: biblioteca espera resposta após comando, travando o clock e causando erros de recepção até o próximo minuto.
Solução (do autor da lib): após linha 263, adicione:
if(!responseBuffer && !bufferLength) return;
Reduz espera de ~1150ms para ~10-20ms. Clock funcionou perfeitamente.

Passo 18: Modificação RTC DS3231


Módulo vem com bateria Li-Ion recarregável. Para bateria não recarregável: remova resistor R5.


Passo 19: Desenho de Construção do Mostrador

~700 furos + recortes. Feito à mão (sem CNC).


Desenho no TurboCAD, impresso em papel decalque water-slide para inkjet.

Qualidade excelente. ZIP incluso com dial em vários formatos (inclui PNG 4000x4000). Contate para outros formatos.
Passo 20: Recorte e Furação do Mostrador

Chapa alumínio 1.5mm (suporta peso da eletrônica).
- Imprima template em A3 com marcas de centro e recortes displays
- Recorte recortes dos displays com estilete
- Cole template na chapa, marque centros com punção, desenhe recortes
- Remova template, desenhe círculo com compasso (centro = LED símbolo DCF77)
- Recorte círculo (serra tico-tico/fita com lâmina metal)
- Recorte aberturas displays (serra copo/arco) — capriche para menos lixa
- Fure LEDs: broca 1mm → 2mm → 3mm (deixa pressão para LEDs)
- Marque/fure 3-4 furos de fixação do mostrador
- Remova filme protetor, lixe rebarbas (também dá aderência à tinta)
- Primer + tinta acrílica + verniz fosco. Branco antigo para estilo retrô, branco puro para moderno








Passo 21: Aplicando Decalque Water-Slide

- Imprima em papel water-slide transparente, seque
- Recorte pouco menor que mostrador, passe verniz acrílico, seque
- Mergulhe em água até decalque soltar do papel base
- Alinhe com furos centrais, deslize sobre mostrador
- Retire papel base, ajuste, remova bolhas
- Seque, verniz acrílico, recorte excesso nos displays (estilete) e furos LEDs (sacador de couro menor que furo)
- Outra camada de verniz, seque overnight




Busque: "Transparent Water Slide Decal Paper A3"
Passo 22: Suportes PCB/Veroboard no Mostrador

Blocos de madeira colados com adesivo de contato (aplique nas duas faces, espere secar ao toque, pressione — ligação instantânea, cura total overnight).



Passo 23: Restauração Aro e Caixa Traseira

Caixa de eBay: sem mostrador, sem aro de latão, caixa traseira quebrada.


Removedor de verniz + alvejante madeira para áreas escuras.

Verniz acrílico fosco para realçar grão.

Caixa traseira muito danificada: parafusada, colada, massa, pintada preto fosco.
Passo 24: Correção Erros Display MAX7219 7 Segmentos
Módulos funcionam sozinhos, mas em cascata dão erros.
Display 0.39": Datasheet pede 10µF + 0.1µF nas rails próximo ao MAX7219. O 0.1µF existe, o 10µF falta.


Adicione 10µF nos furos acima do diodo D1 (traseira).

Diodo em série na rail: em cascata, quedas de tensão acumulam. Remova diodo e substitua por jumper.
Display 0.56": Mesma correção.



Nota: fita preta sobre dígitos 3 e 6 faz os dois-pontos.
Passo 25: Aumentando Contraste Displays 7 Segmentos

Tradicionalmente usa acrílico vermelho sobre display. Usei Acetato Transparente Neutro ND 0.9 (Heat Proof Dimming).
- Esconde segmentos apagados, dá contraste aos acesos
- Funciona em qualquer cor de LED
- Barato; desvantagem: frágil para áreas grandes sem suporte
Imagem mostra efeito: segmentos acesos com mais contraste, apagados invisíveis. Também esconde fita dos dois-pontos.
Passo 26: Modificação Display RTC Hora para Mostrar Dois-Pontos

Display padrão só tem pontos decimais. No código, dígitos 3 e 6 sempre mostram "o" minúsculo.



Fita preta recortada deixa pequena janela → vira dois-pontos quando aceso.
Passo 27: Montagem Mostrador e Caixa Estilo Retrô


Mostrador escondido atrás de aro de latão (comprei de fornecedor relojoeiro).


Aro preso por trava de latão no aro de madeira. Meu aro novo tinha dobradiça diferente — recortei com formão na frente, completei atrás com madeira tingida.



Para travar aro de madeira: mesma trava do aro de latão. Parafuso latão pequeno abaixo da aba garante alinhamento.
Passo 28: Montagem Estilo Moderno (Picture Frame)

Moldura grande + caixa traseira quadrada simples para dar profundidade.






Alto-falantes nas laterais com furos e grades. Chaves na lateral em recorte com grade acima.
Passo 29: Filtro DCF77 (Super Filtro de Udo Klein)
Quando ligado, processa ativamente o sinal DCF77. Após minutos de amostragem, prevê o sinal e detecta erros. Sintetiza sinal corrigido mesmo se sinal ausente.

Modificações: Adicionei LEDs monitor extras (removi 4 modos, deixei só synthesized/inverted synthesized). PWM do brilho via Arduino decodificador (não Super Filtro). Adicionei teste de LEDs no Super Filtro (ativa no reset/power-up, antes do teste do clock principal).

Trava no sinal mesmo com ruído. Ajusta frequência do cristal do Arduino conforme dias passam → mantém hora mesmo se sinal perdido por dias. No meu relógio, sinal DCF77 sempre vai ao Super Filtro (mesmo com chave Off) para manter sincronismo e ajuste do cristal.

LEDs do Super Filtro:
- Filter On: Chave em FILTER → Super Filtro decodificando/sintetizando
- DCF77 Filtered: Sinal sintetizado saindo
- DCF77 Signal: Sinal direto do receptor (sem filtro)
- Signal Difference: Diferença entre sinal recebido e sintetizado (pisca em operação normal)
- Filter Synchronized: Qualidade máxima, 100% sincronizado
- Filter Locked: Fase travada, hora exata, mas nem todos estágios com qualidade para sync
- Sync Lost <200ms: Já sincronizou, inaccuracy <200ms, pode re-travar se fase válida
- Sync Lost >200ms: Já sincronizou mas desvia >200ms, não deve re-travar
- Signal Dirty: Dados de tempo disponíveis mas não confiáveis
- Signal Bad: Aguardando sinal bom
Detalhes:
- Filter Synchronized: Travado completamente ao DCF77, dados mais atuais
- Filter Locked: Qualidade decodificadores cai mas fase alta → transição para locked. Ainda fase-travado, pode dessincronizar 1s só se segundo extra transmitido
- Sync Lost <200ms: Qualidade decodificadores e fase caíram. Relógio usa cristal → drift lento. Aviso de possível dessincronismo
- Sync Lost >200ms: Drift excedeu período (depende precisão cristal) → acende este LED


Linha superior: Super Filtro ON. Uma vez sincronizado/ajustado, sintetiza sinal bom mesmo com perda total. Em ruído, busca bits conhecidos e mantém sync. Linha inferior: Super Filtro OFF — sinal recebido (bom ou ruim) vai direto ao decodificador.

Super Filtro corrigindo sinal ruidoso (DCF77 Scope da biblioteca).
- Normal Signal No Super Filter
- Noisy Signal No Super Filter (antenna perto de LCD)
- No Signal (antenna desconectada) via Super Filter
- Noise On Superfilter On → ruído filtrado, sinal perfeito

Super Filter OFF + sinal ruim → clock erra e rejeita minuto. LED Filtered pulsa mas não alimenta decodificador.

Super Filter ON + sinal ruim → sem erros, decodifica normal. LED Filtered pulsa e alimenta decodificador.
Passo 30: Código de Tempo DCF77

Mostrador permite ler sinal DCF77 recebido.
Passo 31: Código
Dois códigos separados: Superfilter e Analisador.

DCF_77_ANALYZER_CLOCK_Mk2_43.zip | Superfilter07DCF77AnalyzerMK2.zip
Código
- Código Decodificador DCF77
- Código Super Filtro
Código Decodificador DCF77 (Arduino)
Carregar no Arduino do analisador DCF77. Sem preview (download only).
Código Super Filtro (Arduino)
Carregar no Arduino do Super Filtro DCF77. Sem preview (download only).
GitHub
https://github.com/sleemanj/JQ6500_Serial
Peças Personalizadas e Gabinetes
Arquivos CAD do mostrador e template em formatos CAD e imagem.
turbocad_drawings_TESmpq119g.zip
Arquivos de som para JQ6500 (badaladas): bell_wYLvJG1pUl.zip
Arquivos de som para JQ6500 (tick-tock): tick_tock_FLj9XHTJoB.zip
Esquemáticos



Processo de manufatura
- Relógio Cuco: História, Artesanato e Evolução Moderna
- Relógio POV com Arduino: Construa um Display LED de Persistência de Visão
- Construa um Relógio Retrô Numitron com Arduino: Simples, Confiável e Eficiente
- Relógio de Parede Estiloso com Anel Neopixel 60 LEDs Adafruit e Arduino
- Relógio de Palavras DIY com Arduino – Construa um Display Elegante de Tempo Real
- Relógio em Tempo Real com Arduino para Horários de Oração Islâmica
- Construa um Spybot Controlado por Bluetooth com Arduino
- Construa um Relógio Mestre LED Personalizado com Alarme – Visível a 12 Metros
- Monitor de Temperatura e Relógio Tempo Real com Arduino Due e Display TFT 3.2"
- Construa um Relógio Despertador Confiável com RTC DS1302 e Arduino UNO