O Projeto Arduino RTC DS1302 Verificando o Tempo é um simplificado tutorial de como utilizar esse pequeno e prático dispositivo em conjunto com o microcontrolador Arduino Uno, permitindo que com poucos passos seja possível fazer toda a conexão e obtenção dos dados.
Algum dia você já deve ter precisado ou até pensado em colocar a hora e data em sua aplicação, isso agora esta muito fácil, com o Relógio de tempo real DS1302, você poderá construir um Rádio-Relógio, ou até mesmo um letreiro de horas com alguns de nossos displays.
A informação de data e hora também pode ser importante em projetos complexos onde é preciso registar dados recolhidos de sensores e armazenar o momento exato em que o registro ocorreu, possibilitando criar arquivos ou planilhas de dados que podem ser convertidas em gráficos por programas de computador.
Como diferencial, o Arduino RTC DS1302 apresenta um exclusivo slot para uma bateria CR2032, a qual permite que ele registre data e hora mesmo diante de falta de energia, mantendo a contagem exata dos segundos, minutos, horas, bem como, dos dias, semanas, meses e anos.
Produtos Necessário para Projeto Arduino RTC DS1302
- 1 x Modulo Relógio de tempo real DS1302;
- 1 x Arduino Uno R3;
- 1 xProtoboard 830 Pontos;
- 1 x Kit de Jumpers;
- 1 x Resistor;
- 1 x Buzzer;
- 1 x Led.
Padrão de Comunicação do RTC DS1302
O padrão de comunicação do Módulo Relógio digital é por SPI (Serial Peripheral Interface) a qual se delimita em Mestre – Dispositivo (ou Master/Slave), esse padrão de comunicação foi criado pela Motorola, é utilizado para pequenas distancias.
Existe 4 tipos deste padrão: 4 Fios, 3 Fios, 2 Fios, 1 Fio; a qual condição depende do dispositivo utilizado, no nosso caso é o de 3 Fios.
Montagem do Projeto Arduino RTC DS1302
Para que o projeto apresente perfeito funcionamento é necessário que o passo a passo abaixo seja rigorosamente seguido, assim vamos obter resultados exatos e precisos.
Faça as montagens na seguinte ordem: Arduino-Módulo: 7 – RST; 6 – DAT; 5 – CLK; 3.3V – VCC; GND – GND.
Confira as ligações no esquema:
Código de Programação Arduino RTC DS1302
O código utilizado na programação do Relógio Tempo Real DS1302 tem a função de ler os dados obtidos do RTC e converte-los para fazer a apresentação na porta serial, diretamente na tela de seu computador. Lembramos que pode ser facilmente adaptado para amostragem diretamente em displays lcd, led ou amoled.
Download do Código de Programação
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 |
#include "stdio.h" #include "DS1302.h" const int ClkPino = 5; // Pino Clk const int DatPino = 6; // Pino Dat const int RstPino = 7; // Pino Rst // Cria um objeto para o dispositivo. DS1302 rtc(RstPino, DatPino, ClkPino); String dayAsString(const Time::Day day) { switch (day) { case Time::kSunday: return "Domingo"; case Time::kMonday: return "Segunda-Feira"; case Time::kTuesday: return "Terca-Feira"; case Time::kWednesday: return "Quarta-Feira"; case Time::kThursday: return "Quinta-Feira"; case Time::kFriday: return "Sexta-Feira"; case Time::kSaturday: return "Sabado"; } return "(Dia nao encontrado)"; } void printTime() { Time t = rtc.time(); const String day = dayAsString(t.day); char buf[50]; snprintf(buf, sizeof(buf), "%s %04d-%02d-%02d %02d:%02d:%02d", day.c_str(), t.yr, t.mon, t.date, t.hr, t.min, t.sec); Serial.println(buf); } //} // namespace void setup() { Serial.begin(9600); // Configura o Chip rtc.writeProtect(false); rtc.halt(false); // Defina a hora nesta linha e descomente-as para setar a hora no chip // Time t(2014, 5, 24, 11, 56, 10, Time::kSaturday); // rtc.time(t); } void loop() { printTime(); delay(1000); } |
Conclusão
O Projeto Arduino RTC DS1302 teve perfeito funcionamento durante o teste de uso, se as ligações forem corretas e sem interferências você terá sucesso no seu projeto. Você poderá usar esse dispositivo em diversas coisas, entre elas, estações meteorológicas, rádios despertadores, dataloggers e etc.
Vale mencionar ainda a incrível capacidade que o DS1302 possui de correções automáticas para meses com 31 dias, além de apresentar correção para ano bissexto, o que vem a confirmar a alta confiabilidade dos dados obtidos a partir dessa pequena placa.
Autor: Leonardo Dalla Porta
Oi?!
Podem me ajudar a fazer uma sonda para colocar em um balão, que eu chamo de mini-satélite, que eu receba os dados coletados e recuperar quando cair de volta na terra, arquivo X!
Boa tarde!
Para poder resgatar os dados você pode optar por dois métodos, um deles é gravando os dados em um cartão SD que você retira do projeto sempre que o equipamento cai de volta na terra e realiza a sua leitura ou através de uma memória EEPROM para mandar estes dados através de um meio de comunicação como Ethernet, Bluetooth ou até mesmo através de um chip por sms ou via internet sempre que o mesmo reconhecer sinal de telefone, porém este sistema de armazenamento possui um limite e caso esteja arquivando muitos dados não é o mais recomendado.
Qualquer duvida estamos a disposição.
Att Equipe UsinaInfo
Efetuei as conexões, coloquei a pilha mas aparece a informação dia não encontrado. No caso usei as portas 4,5 e 6. O que acontece?
Bom dia Antonio! Você alterou somente os pinos físicos ou também lembrou de alterar junto ao código os respectivos pinos alterados?
ola boa tarde o meu apareceu a seguinte msg Arduino: 1.8.6 Hourly Build 2018/06/18 03:33 (Windows 7), Placa:”Arduino/Genuino Uno”
relogio_com_displ2:1:10: error: #include expects “FILENAME” or
#include <stdio.h>
^
relogio_com_displ2:2:10: error: #include expects “FILENAME” or
#include <DS1302.h>
^
exit status 1
#include expects “FILENAME” or
Este relatório teria mais informações com
“Mostrar a saida detalhada durante a compilação”
opção pode ser ativada em “Arquivo -> Preferências”
o uqe poderia ser? so copie e colei
Bom dia Davidson!
Pedimos desculpas pelo ocorrido, infelizmente o nosso código estava com problema no momento de nomear as bibliotecas, problema já foi corrigido e vale ressaltar que as bibliotecas utilizadas precisam estar dentro da pasta libraries do seu programa Arduino.
No esquemático de ligação, os jumpers dos pinos Clk e Rst estão invertidos quando comparados com o código.
Olá Patrícia!
Pedimos desculpas pelo equívoco, ambos os modelos estão certos, porém não correspondiam ao mesmos pinos, já corrigimos o código para ficar condicente com a imagem, obrigado pela dica!
Bom dia,
Vi este anuncio via youtube e achei que poderia servir para o que eu preciso.
Seria montar um conjunto de módulos Arduíno especifico para horário onde este sistema teria que …ao invés de monitorar num lcd ou Oled…seria entregar um pulso a um rele, fechando contato e acionando um mostrador de relógio eletromecânico com 32vcc…
Então….. seria um Arduíno UNO + Módulo Relógio Tempo Real RTC – DS1302 / Código: 05619 + modulo de rele + bateria+ fonte + programa e a cada hora tocar uma musica pré-gravada em modulo Arduíno com saida para amplificador….
Vcs teriam como verificar se da para configurar estes módulos?
Gostaria um celular com whatsapp vcs tem?
Boa Tarde Edgar!
O projeto que deseja é totalmente possível, você vai precisar de um Arduíno UNO, um Módulo Relógio Tempo Real, um Módulo Relé, uma fonte de alimentação para o Arduino e outra para o seu equipamento (o modelo e maneira que preferir), uma bateria Bateria CR2032 para o RTC e o programa Arduino compatível com as funções que deseja executar. Caso deseje reproduzir som por sua vez, é necessária a inclusão de um Mini Amplificador de Som, alto-falantes e demais componentes que vão variar com o projeto que irá desenvolver.
Eu gostaria de saber se é possivel fazer um programa que seja capaz de acionar saidas digitais de reles apartir de um determinado horario com auxilio do modulo ds1302. Alguem poderia me ajudar?
Bom Dia Mayk! É possível sim, em meu projeto da chocadeira fiz algo semelhante, acionei o servo motor em alguns horários específicos, dê uma olhada e adapte da sua maneira para ser compatível com o que deseja, segue link: https://www.usinainfo.com.br/blog/projeto-chocadeira-arduino-egg-incubadora-autonoma-para-ovos-de-galinha/
Olá, bom dia
Estou fazendo um projeto usando o ds1302, onde faço a leitura da hora e em um determinado horario aciono um relê, até ai tudo bem. O que acontece é que do nada a leitura do ds1302 trava no mesmo horario, para de incrementar, oque pode ser? Desde já muito obrigado!
Bom Dia Danilo! Pode ser algo no código que não esteja conseguindo dar continuidade ao projeto, por exemplo, acionou o relé mas interrompeu o loop neste passo. Pode ser algum problema com a bateria fraca, caso ocorra em outros momentos além dos selecionados para funcionamento do servo, mas recomendo iniciar pelo código.