Modulo DS3231 AT24C32

Eletrônica

O Módulo Real Time Clock RTC DS3231 é um relógio em tempo real (RTC) de alta precisão e baixo consumo de energia, ele é capaz de fornecer informações como segundo, minutos, dia, data, mês e ano. Correções como meses com menos de 31 dias e anos bissextos são corrigidos automaticamente e pode operar tanto no formato 12 horas como 24 horas. O módulo possui também um sensor de temperatura embutido e possui também um cristal oscilador para ampliar sua exatidão.


ds3231

A comunicação do módulo é feita pela interface I2C, possui alimentação de 3,3 a 5V e trabalha com nível de sinal de 5V, podendo ser ligado diretamente ao microcontrolador. Possui também uma bateria que preserva os dados na memória do DS3231 em caso de falta de energia.


PINAGEM DS3231 AT24C32

SCL: (Slave_Clock) : Clock de saída para o Mestre (Protocolo I2C); 

SDA: (Slave_Data) : Dados de saída para o Mestre (Protocolo I2C); 

VCC: Alimentação de 3,3 à 5V 

GND: 0V


Em caso de falha de energia o DS3231 automaticamente aciona a bateria que acompanha o módulo para evitar perda de dados. Endereço e informações são transferidos via protocolo I2C.

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.


Especificações DS3231:

– Tensão de operação: 3,3-5V

– Chip Controlador: DS3231 (datasheet)

– Computa segundos, minutos, horas, dias da semana, dias do mês, meses e anos (de 2000 a 2099)


– Sensor de temperatura com ± 3 °C de exatidão.

– Chip de memória: AT24C32 (capacidade de 32K bytes que podem ser usadas como RAM estendida do microcontrolador)

– Interface I2C

– Circuito de detecção de falha de energia

– Consome menos de 500nA no modo bateria com oscilador em funcionamento

– Faixa de temperatura: 0 a 40°C

– Dimensões: 38 x 22 x 14mm

– Peso: 8g

– Biblioteca: RTClib


ds3231


Código Básico para executar no Arduíno: 


#include  //INCLUSÃO DA BIBLIOTECA
#include "RTClib.h" //INCLUSÃO DA BIBLIOTECA
RTC_DS3231 rtc; //OBJETO DO TIPO RTC_DS3231
//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("DS3231 não encontrado"); //IMPRIME O TEXTO NO MONITOR SERIAL
while(1); //SEMPRE ENTRE NO LOOP
}
if(rtc.lostPower()){ //SE RTC FOI LIGADO PELA PRIMEIRA VEZ / FICOU SEM ENERGIA / ESGOTOU A BATERIA, FAZ
Serial.println("DS3231 OK!"); //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, 9, 29, 15, 00, 45)); //(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
}

Fonte
Equipe SuaDica
Mais Dicas