- Descrição: O Ethernet Shield W5100 é uma placa que permite ao…
Como usar com Arduino – Módulo Real Time Clock RTC DS1307
– Descrição:
O Módulo Real Time Clock RTC DS1307 é um relógio em tempo real (RTC) que possui calendário completo e conta com 56 Bytes de SRAM. O mesmo é capaz de fornecer informações de hora, minutos, segundos, dia, data, mês e ano.
Para o funcionamento do Módulo Real Time Clock RTC DS1307 é necessário além da alimentação da placa, uma bateria CR2032 para poder permitir que os dados fiquem armazenados mesmo com a falta de energia. Além disso, o módulo é capaz de detectar falhas de energia e consequentemente acionando a bateria para evitar que os dados sejam perdidos. O módulo também é capaz de ajustar automaticamente o final dos meses que possuem menos de 31 dias, faz a correção de ano bissexto e trabalha tanto no formato de 12 horas quanto 24 horas. Além disso, a placa possui um local para que um Sensor de Temperatura DS18B20 seja soldado e utilizado em conjunto.
– Especificações e características:
– Controlador: DS1307
– Tensão de operação: 5VDC
– Interface: I2C
– Memória RAM não volátil: 56 bytes
– Computa horas / minutos / segundos / dias da semana / mês / meses / anos (de 2000 a 2099)
– Consome menos de 500nA no modo bateria com oscilador em funcionamento
– Armazenamento de memória: 24C32 EEPROM I2C 32K
– Possui circuito de detecção de falha de energia
– Possui espaço para um Sensor de Temperatura DS18B20
– Bateria compatível: CR2032 (inclusa)
– Temperatura de operação: -40° a 85°celsius
– Datasheet:
– Aplicações:
Projetos com Arduino ou outras plataformas microcontroladas em que seja necessário obter informações das horas, dia e data.
– Proposta da prática:
Utilizar o Módulo Real Time Clock RTC DS1307 em conjunto com o Arduino e obter informações de horas, dia e data atual. Estas informações serão exibidas no monitor serial do ambiente de programação do Arduino.
– Lista dos itens necessários:
01 – Arduino com Cabo USB
01 – Módulo Real Time Clock RTC DS1307
04 – Cabos Jumper macho-fêmea
– Esquema de ligação da prática
– Tutorial de instalação e configuração do ambiente de programação do Arduino:
Arduino – Instalação e Configuração da IDE no Windows
– Biblioteca:
– Importando bibliotecas para o ambiente de programação do Arduino:
Arduino – Importando bibliotecas para a IDE
– Código:
OBS: se o RTC estiver sendo ligado pela primeira vez, ficou sem energia, esgotou a bateria ou você precisa de ajustar as informações do mesmo, remova o comentário da linha 18 ou 19 para que as informações sejam atualizadas. A linha de código de número 18 captura as informações no momento em que o sketch for compilado e define no RTC. Na linha de código de número 19 você pode inserir as informações manualmente. Lembre-se de usar somente uma das linhas e deixar uma delas comentada.
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 |
#include <Wire.h> //INCLUSÃO DA BIBLIOTECA #include "RTClib.h" //INCLUSÃO DA BIBLIOTECA RTC_DS1307 rtc; //OBJETO DO TIPO RTC_DS1307 //DECLARAÇÃO DOS DIAS DA SEMANA char daysOfTheWeek[7][12] = {"Domingo", "Segunda", "Terça", "Quarta", "Quinta", "Sexta", "Sábado"}; void setup () { Serial.begin(9600); //INICIALIZA A SERIAL if (! rtc.begin()) { // SE O RTC NÃO FOR INICIALIZADO, FAZ Serial.println("DS1307 não encontrado"); //IMPRIME O TEXTO NO MONITOR SERIAL while(1); //SEMPRE ENTRE NO LOOP } if (! rtc.isrunning()) { //SE RTC NÃO ESTIVER SENDO EXECUTADO, FAZ Serial.println("DS1307 rodando!"); //IMPRIME O TEXTO NO MONITOR SERIAL //REMOVA O COMENTÁRIO DE UMA DAS LINHAS ABAIXO PARA INSERIR AS INFORMAÇÕES ATUALIZADAS EM SEU RTC //rtc.adjust(DateTime(F(__DATE__), F(__TIME__))); //CAPTURA A DATA E HORA EM QUE O SKETCH É COMPILADO //rtc.adjust(DateTime(2018, 7, 5, 15, 33, 15)); //(ANO), (MÊS), (DIA), (HORA), (MINUTOS), (SEGUNDOS) } delay(100); //INTERVALO DE 100 MILISSEGUNDOS } void loop () { DateTime now = rtc.now(); //CHAMADA DE FUNÇÃO Serial.print("Data: "); //IMPRIME O TEXTO NO MONITOR SERIAL Serial.print(now.day(), DEC); //IMPRIME NO MONITOR SERIAL O DIA Serial.print('/'); //IMPRIME O CARACTERE NO MONITOR SERIAL Serial.print(now.month(), DEC); //IMPRIME NO MONITOR SERIAL O MÊS Serial.print('/'); //IMPRIME O CARACTERE NO MONITOR SERIAL Serial.print(now.year(), DEC); //IMPRIME NO MONITOR SERIAL O ANO Serial.print(" / Dia: "); //IMPRIME O TEXTO NA SERIAL Serial.print(daysOfTheWeek[now.dayOfTheWeek()]); //IMPRIME NO MONITOR SERIAL O DIA Serial.print(" / Horas: "); //IMPRIME O TEXTO NA SERIAL Serial.print(now.hour(), DEC); //IMPRIME NO MONITOR SERIAL A HORA Serial.print(':'); //IMPRIME O CARACTERE NO MONITOR SERIAL Serial.print(now.minute(), DEC); //IMPRIME NO MONITOR SERIAL OS MINUTOS Serial.print(':'); //IMPRIME O CARACTERE NO MONITOR SERIAL Serial.print(now.second(), DEC); //IMPRIME NO MONITOR SERIAL OS SEGUNDOS Serial.println(); //QUEBRA DE LINHA NA SERIAL delay(1000); //INTERVALO DE 1 SEGUNDO } |
– Resultado final:
Gostou desta prática? Então deixa seu comentário, dúvida ou sugestão aí embaixo!
Loja online: https://www.masterwalkershop.com.br
Fan page no Facebook: https://www.facebook.com/masterwalkershop
Nos ajude a espalhar conhecimento clicando no botão de compartilhar (f Like) que está mais abaixo.
Obrigado e até a próxima!
Seu feedback é muito importante! Que tal dar uma nota para esta postagem?! Faça sua avaliação aqui embaixo.
Postagem anterior: Como usar com Arduino – Sensor Óptico Reflexivo TCRT5000
Próxima postagem: Como usar com Arduino – Potenciômetro Linear 10K com Eixo Estriado
Olá Euler, tudo bem? Gostaria de sua ajuda com a seguinte situação; após ajustar a data e hora espero um tempo máximo de 1 minuto e desligo o arduíno. Para minha surpresa não segura os dados, reseta tudo. O que pode ser?
Olá, amigo, um pouco tarde, mas… isso me parece problema de bateria fraca.
Bom dia Euler. Tenho uma dúvida no código, você poderia me ajuda? É nessa parte:
if (! rtc.isrunning()) { //SE RTC NÃO ESTIVER SENDO EXECUTADO, FAZ
Serial.println(“DS1307 rodando!”); //IMPRIME O TEXTO NO MONITOR SERIAL (…)
Se o RTC não estiver sendo executado, o DS1307 esta rodando? ou seria:
if (! rtc.isrunning()) { //SE RTC NÃO ESTIVER SENDO EXECUTADO, FAZ
Serial.println(“DS1307 não esta rodando!”);
Desde já agradeço!
Mais um tutorial top, vlw.
Estou começando a conhecer os sensores. Seu tutorial ajuda demais. Vlw
Boa noite Euler, estou precisando de uma ajuda para enviar a hora e a data para uma IHM nextion, vc poderia me orientar?
Olá Rogério.
Agradeço pelo comentário!
Ainda não utilizei o display nextion,logo, não tenho informações para conseguir te orientar.
Olá, boa noite! Estou tendo um problema em configurar a hora. Preencho os campos, como indicado, porém somente a data é alterada. O horário não modifica. O que pode estar acontecendo?
Olá Silvia.
Remova a bateria do módulo, deixe fora por uns 20 segundos, coloque novamente no módulo e faça os procedimentos.