Breve resumo do RTC DS3231
O Real Time Clock (RTC) DS3231 é um relógio de tempo real de alta precisão e baixo consumo de energia. Em caso de falha de energia o DS3231 automaticamente aciona a bateria que acompanha o módulo para evitar perda de dados. O endereço e informações são transferidas via protocolo I2C.
Especificações:
- Tensão de operação: 3,3-5V
- Chip: DS3231 (datasheet)
- Trabalha com 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 500 nA no modo bateria com oscilador em funcionamento
- Faixa de temperatura: 0 a 40°C
- Dimensões: 38 x 22 x 14mm
- Peso: 8g
Biblioteca
Site consultado: http://www.rinkydinkelectronics.com/library.php?id=73
Esta biblioteca foi feita para simplificar a utilização do RTC DS3231 com um Arduino. A biblioteca também funcionará com o chip RTC DS3232, mas não será possível usar a SRAM interna.
O DS3231 é um relógio I2C em tempo real (RTC) de baixo custo, extremamente preciso, com um oscilador de cristal com compensação de temperatura (TCXO) integrado. O dispositivo incorpora uma socket para bateria e mantém um cronómetro preciso quando a alimentação principal do dispositivo é interrompida.
O RTC mantém informações de segundos, minutos, horas, dia, data, mês e ano. A data no final do mês é automaticamente ajustada para meses com menos de 31 dias, incluindo as correções para o ano bissexto. O relógio funciona no formato 24 horas ou 12 horas com um indicador AM / PM. Também dispõe de dois alarmes de hora programáveis e uma saída de onda quadrada programável. O endereço e os dados são transferidos em série através de um barramento bidirecional I2C.
Tem um circuito de precisão e um comparador de tensão com compensação de VCC para a variação de temperatura e deteção de falhas de energia. Possui uma saída de reset e comuta automaticamente para a alimentação para a pilha quando necessário. O pino de RST é comandado por um botão que pode gerar uma reinicialização.
Apesar das funcionalidades do DS3231 esta biblioteca usa somente o formato de 24 horas e que os alarmes não são implementados.
Compatível com:
• Arduino Duemilanove w/ATmega328
• Arduino Uno
• Arduino Leonardo
• Arduino Mega
• Arduino Mega2560
• Arduino Due
• Bobuino
Esta biblioteca será predefinida para I2C Fast Mode (400 KHz) quando utilizar a interface I2C de hardware.
Para compreender esta biblioteca é necessário testar os novos recursos e executar pequenos programas.
Faça o download utilizando este link: Download DS3231.
Recursos – Principais Funções
rtc.setDOW(MONDAY) – Escreve o dia da semana em inglês
rtc.setTime(15, 29, 0) – Escreve as horas no formato 24 horas, hh, mm, ss
rtc.setDate(20, 3, 2017) – Escreve a data de acordo com o sistema que utilizas DD, MM, AAAA
rtc.getDOWStr() – Le o dia da semana
rtc.getDateStr() – Le a data
rtc.getTimeStr() – Le as horas
rtc.getTemp() – Le a temperatura
Esquemas de funcionamento
Esquema básico do RTC DS3231
(tanto para o programa no exemplo 1 como 2)

Exemplo de programas
Exemplo 1
- // Demo do relógio com o integrado DS3231 (RTC)
- // Clube de Robótica da ESGC – 2017
- // Prof. Ramiro Martins
- #include <DS3231.h>
- DS3231 rtc(SDA, SCL);
- void setup()
- {
- // Inicialização da comunicação
- Serial.begin(9600);
- // Initialização do rtc
- rtc.begin();
- // As linhas seguintes têm de ser atualizadas com a Data e Hora de envio do programa para o Arduíno
- rtc.setDOW(MONDAY); // Deve ser alterado o dia da semana para o dia em que estás em inglês
- rtc.setTime(15, 29, 0); // Escreve as horas no formato 12:00:00 (formato 24 horas)
- rtc.setDate(20, 3, 2017); // Escreve a data de acordo com o sistema que utilizas DD, MM, AAAA
- // Este programa escreve a data e hora no RTC e o relógio fica a trabalhar
- }
- // As linhas seguintes são para fazer a leitura da data e hora
- void loop()
- {
- // Le o dia de semana
- Serial.print(“Dia da semana: “);
- Serial.println(rtc.getDOWStr());
- // Le a data
- Serial.print(“Data: “);
- Serial.println(rtc.getDateStr());
- // Envia as horas
- Serial.print(“Horas: “);
- Serial.println(rtc.getTimeStr());
- // Tempo de espera antes de uma nova leitura 1 segundo
- delay (1000);
- }
Exemplo 2
- // Demo do relógio com o integrado DS3231 (RTC)
- // Para as funções de data, hora e temperatura
- // Clube de Robótica da ESGC – 2017
- // Prof. Ramiro Martins
- #include <DS3231.h>
- DS3231 rtc(SDA, SCL);
- void setup()
- {
- // Inicialização da comunicação
- Serial.begin(9600);
- // Initialização do rtc
- rtc.begin();
- // As linhas seguintes têm de ser atualizadas com a Data e Hora de envio do programa para o Arduíno
- rtc.setDOW(MONDAY); // Deve ser alterado o dia da semana para o dia em que estás em inglês
- rtc.setTime(15, 29, 0); // Escreve as horas no formato 12:00:00 (formato 24 horas)
- rtc.setDate(20, 3, 2017); // Escreve a data de acordo com o sistema que utilizas DD, MM, AAAA
- // Este programa escreve a data e hora no RTC e o relógio fica a trabalhar
- }
- // As linhas seguintes são para fazer a leitura da data, hora e temperatura
- void loop()
- {
- // Le o dia de semana
- Serial.print(“Dia da semana: “);
- Serial.println(rtc.getDOWStr());
- // Le a data
- Serial.print(“Data: “);
- Serial.println(rtc.getDateStr());
- // Envia as horas
- Serial.print(“Horas: “);
- Serial.println(rtc.getTimeStr());
- // Envia a temperatura ambiente
- Serial.print(“Temperatura: “);
- Serial.print(rtc.getTemp());
- Serial.println(” C”);
- // Tempo de espera antes de uma nova leitura 1 segundo
- delay (1000);
- }
Vídeos no YouTube
- DS3231 Real Time Clock + Temperature Sensing using Arduino
- Arduino Tutorial 33: DS3231 Real Time Clock
Sites consultados
http://www.rinkydinkelectronics.com/library.php?id=73
http://www.instructables.com/id/Real-time-clock-using-DS3231-EASY/
http://fritzing.org/projects/rtc-lcd
http://blog.filipeflop.com/modulos/relogio-rtc-ds1307-arduino.html
http://www.arduinoecia.com.br/2015/12/relogio-arduino-display-128×64-rtc-ds3231.html

