Relógio e Analisador de Rádio DCF77 v2.0 – Projeto Arduino Mega/UNO
Componentes e Materiais
| Componente | Quantidade |
|---|---|
| Arduino Mega 2560 | 1 |
| Arduino UNO | 1 |
Sobre o Projeto
Depois de descobrir a plataforma Arduino, fiquei maravilhado e meu sonho de um dia desenvolver minha própria eletrônica tornou-se realidade.
Como qualquer um faria, comecei com os sketches básicos, mas logo quis fazer algo útil. Como sempre adorei Relógios de Rádio (eles se sincronizam com o sinal DCF77 da Alemanha no meu caso), decidi fazer um relógio que não apenas mostrasse a hora, mas um relógio que me mostrasse o que está acontecendo.
Após centenas de horas mexendo, cometendo incontáveis erros, finalmente tive um relógio funcional com meu próprio código e designs de placa de circuito impresso.
Mais tarde, descobri o superfiltrador DCF77 de Udo Klein, que fornece um sinal limpo quando o sinal de rádio não é tão bom.
Este é um board Arduino Uno separado com o software Superfilter (você pode vê-lo como uma 'caixa preta' autônoma, filtrando o sinal) conectado entre a antena DCF77 e o Arduino Mega rodando meu sketch.
Então fiz a versão 2.0 do primeiro relógio:
- código completamente reescrito
- extensivamente comentado para que qualquer um possa entender o que está acontecendo
- adicionado sensor de movimento PIR para reduzir consumo de energia
- adicionado o Superfiltrador DCF77
- display extra para temperatura ou outro uso (como horário do nascer/por do sol)
Demo
Para ver o vídeo, clique AQUI.
Montado em 'Relógio de Parede'
Para ver o vídeo, clique AQUI.
O Design
O painel frontal e o gabinete:
O design do painel frontal foi feito em um programa gratuito chamado Inkscape.
Produzir o painel frontal provou ser a parte mais difícil. Gastei muito dinheiro tentando fazê-lo em um FabLab local usando cortadora a laser e um tipo especial de Acrílico com revestimento semelhante a alumínio. A ideia era cortar os furos com o laser e gravar o texto e linhas queimando o revestimento muito fino, expondo o acrílico preto abaixo. Mas foi um pesadelo, pois a cortadora a laser não conseguia produzir dentro das tolerâncias que eu precisava devido ao uso intenso e 'abuso' por muitos usuários.
Então encontrei um serviço de fotos online. Eles imprimem em todo tipo de material e um deles era um painel DiBond. O preço era muito bom, 28 Euros incluindo postagem. Mas o resultado foi inicialmente decepcionante porque não imprimiram meu design 1:1, mas ligeiramente ampliado. Portanto, cuidado se você decidir usar este método. Ligue primeiro e pergunte se é possível imprimir 1:1.
Após uma ligação, eles me enviaram outro painel com as dimensões corretas. Ficou melhor do que o esperado, excelente!
Então muita perfuração e fresamento foi necessária.
Código
DCF Analyzer / Clock v2.1
Versão de 2020-01-18: correção do botão de economia de energia.
/* ================================================================================
DCF77 Analyzer / Clock versão 2
================================================================================
Este sketch é software livre; você pode redistribuí-lo e/ou modificá-lo
sob os termos da GNU Lesser General Public License...
Erik de Ruiter 2014-2020
...
*/
//----------------------------------------------------------------------------------------------------------
// Bibliotecas
//----------------------------------------------------------------------------------------------------------
#include
#include
#include
#include
#include
#include
//----------------------------------------------------------------------------------------------------------
// Conexões de pinos do Arduino UNO em tabela fácil de ler
//----------------------------------------------------------------------------------------------------------
#define DCF77PIN 2
#define PIRDETECTORPIN 3
#define BUZZERSWITCHPIN 4
#define CHIMESWITCHPIN 5
#define POWERSAVESWITCHPIN 6
#define TEMPSENSORPIN 8
#define TEMPRESETPIN 9
#define MAXIMCCLD 10
#define MAXIMCCCLK 11
#define MAXIMCCDATA 12
// Pinos 22 a 53 apenas para LEDs
#define LED_SUNDAY 22
#define LED_MONDAY 23
#define LED_TUESDAY 24
#define LED_WEDNESDAY 25
#define LED_THURSDAY 26
#define LED_FRIDAY 27
#define LED_SATURDAY 28
#define LED_CEST 29
#define LED_CET 30
#define LED_LEAPYEAR 31
#define LED_RTCERROR 32
#define LED_RTCSYNC 33
#define LED_TEMP 34
#define LED_OPTION1 35
#define LED_OPTION2 36
#define LED_ERRORPT 37
#define LED_ERRORPW 38
#define LED_BUFFERFULL 39
#define LED_MINUTEMARKER 40
#define LED_BUFFEROVERFLOW 41
#define LED_DCFSTATUS 42
#define LED_POWERSAVE 43
#define LED_PARITY1PASS 44
#define LED_PARITY1FAIL 45
#define LED_PARITY2PASS 46
#define LED_PARITY2FAIL 47
#define LED_PARITY3PASS 48
#define LED_PARITY3FAIL 49
#define LED_PIRMOTION 50
// Pinos analógicos
#define BUZZER A7
#define SPEAKERVOLPIN A6
#define CHIMEPIN A5
// USADO para DS1307 RTC
// I2C DATA - conectar ao PCB do Relógio de Tempo Real
// I2C CLOCK - conectar ao PCB do Relógio de Tempo Real
//----------------------------------------------------------------------------------------------------------
// Inicialização DS18B20
//----------------------------------------------------------------------------------------------------------
OneWire ds(TEMPSENSORPIN);
//----------------------------------------------------------------------------------------------------------
// Inicialização Display Matriz Maxim 7219
//----------------------------------------------------------------------------------------------------------
LedControl MaximCC = LedControl(MAXIMCCDATA, MAXIMCCCLK, MAXIMCCLD, 7, false);
//----------------------------------------------------------------------------------------------------------
// Configurações do usuário, definições de variáveis e arrays
//----------------------------------------------------------------------------------------------------------
#define SPEAKERVOLUME 12
#define PERFORM_LED_TEST 1
#define LEDTEST_DELAY_DISPLAYS 600
#define LEDTEST_DELAY_LED_RING 20
#define CONFIGURE_DS18B20 0
#define POWERSAVINGOFFTIME 9
#define POWERSAVINGONTIME 22
#define POWERSAVE_BY_PIR 1
#define PIR_DELAY_TIME 30
#define TEMPRESET_MIDNIGHT 1
// ... (código truncado para brevidade, o arquivo completo está disponível para download)
Sketch do Superfiltrador
// Este é o sketch do Superfiltrador que uso com o DCF Analyzer/Clock 2.0
// Udo Klein fez um trabalho incrível com este filtro
// Erik de Ruiter
#include
// ... (configurações de pinos e código completo disponível no download)
Peças Personalizadas e Gabinetes
- PCB para displays de Hora e Data:
Maxim_7219_LED_display_unit_for_Adafruit_0_56inch_7_segment_v1_1.zip - Design de PCB para displays de 7 segmentos menores e compactos:
Maxim_7219_LED_display_unit_for_KingBright_7_segment_SC39_11SRWAv1_1.zip - Arquivos de som de tic-tac e badaladas:
Grandfather_Clock_Sound_files.zip
Esquemáticos
FAÇA DOWNLOAD para ver os detalhes! dcf77-analyzer-clock-v2_1_jVZT5sqIwn.zip
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
- FlickMote: Controle Remoto IR por Gestos para Casa Inteligente
- Construa um Relógio Mestre LED Personalizado com Alarme – Visível a 12 Metros
- Construa um Relógio Despertador Confiável com RTC DS1302 e Arduino UNO