Tutorial de relógio em tempo real Arduino e DS3231
Neste tutorial do Arduino vamos aprender a usar o módulo DS3231 Real Time Clock. Você pode assistir ao vídeo a seguir ou ler o tutorial escrito abaixo.
Visão geral
A primeira pergunta que vem aqui é por que realmente precisamos de um RTC separado para nosso projeto Arduino quando o próprio Arduino possui um temporizador embutido. Bem, o ponto é que o módulo RTC funciona com uma bateria e pode acompanhar o tempo mesmo se reprogramarmos o microcontrolador ou desconectarmos a energia principal.
Relógio em tempo real DS3231
O DS3231 é um relógio de tempo real de baixo custo e alta precisão que pode manter horas, minutos e segundos, bem como informações de dia, mês e ano. Além disso, possui compensação automática para anos bissextos e para meses com menos de 31 dias.
O módulo pode funcionar em 3,3 ou 5 V, o que o torna adequado para muitas plataformas de desenvolvimento ou microcontroladores. A entrada da bateria é de 3V e uma bateria típica CR2032 de 3V pode alimentar o módulo e manter as informações por mais de um ano.
O módulo utiliza o protocolo de comunicação I2C que facilita muito a conexão com a placa Arduino.
Segue os esquemas do circuito:
Então, tudo o que precisamos são 4 fios, os pinos VCC e GND para alimentar o módulo, e os dois pinos de comunicação I2C, SDA e SCL.
Você pode obter os componentes necessários para este tutorial do Arduino nos links abaixo:
- Relógio em tempo real DS3231……………..
- Placa Arduino ………………………………
- Breadboard e jump wires ………
Programação
Uma vez que conectamos o módulo, precisamos programar a placa Arduino para trabalhar com o relógio de tempo real. No entanto, quando se trata de programar uma comunicação entre o Arduino e um módulo I2C, o código não é tão pequeno e fácil. Felizmente, já existem várias bibliotecas para o DS3231 RTC que podem ser encontradas na internet.
Para este tutorial optei por usar a Biblioteca feita por Henning Karlsen que pode ser encontrada e baixada em seu site, www.rinkydinkelectronics.com.
Assim, uma vez que baixamos e instalamos a biblioteca, podemos usar seu primeiro exemplo de demonstração para ativar inicialmente o relógio do módulo RTC. Na seção de configuração do código de exemplo de demonstração, podemos notar que existem três linhas que precisamos descomentar para definir inicialmente o dia da semana, a hora e os dados.
// Code from the Demo Example of the DS3231 Library
void setup()
{
// Setup Serial connection
Serial.begin(115200);
// Uncomment the next line if you are using an Arduino Leonardo
//while (!Serial) {}
// Initialize the rtc object
rtc.begin();
// The following lines can be uncommented to set the date and time
//rtc.setDOW(WEDNESDAY); // Set Day-of-Week to SUNDAY
//rtc.setTime(12, 0, 0); // Set the time to 12:00:00 (24hr format)
//rtc.setDate(1, 1, 2014); // Set the date to January 1st, 2014
}
Code language: Arduino (arduino)
A primeira linha é para definir o dia da semana, a segunda linha é para definir a hora em horas, minutos e segundos e a terceira linha é para definir a data em dias, meses e anos.
Depois de fazer o upload desse código, precisamos comentar as três linhas e reenviar o código novamente.
// Code from the Demo Example of the DS3231 Library
void loop()
{
// Send Day-of-Week
Serial.print(rtc.getDOWStr());
Serial.print(" ");
// Send date
Serial.print(rtc.getDateStr());
Serial.print(" -- ");
// Send time
Serial.println(rtc.getTimeStr());
// Wait one second before repeating
delay (1000);
}
Code language: Arduino (arduino)
Se dermos uma olhada na seção de loop do código, podemos ver que agora, usando as três funções personalizadas, obtemos as informações do RTC e as imprimimos no Serial Monitor. Veja como eles aparecem no Serial Monitor.
Agora, mesmo se desconectarmos a alimentação do Arduino e depois reconectarmos e executarmos o Serial Monitor novamente, podemos notar que o tempo continua sem ser reiniciado.
Então agora temos nosso Relógio em Tempo Real funcionando e podemos usar em qualquer projeto Arduino. Como segundo exemplo, conectei um LCD ao Arduino e imprimi a hora e a data nele.
Aqui está o código-fonte deste exemplo:
/*
* Arduino DS3231 Real Time Clock Module Tutorial
*
* Crated by Dejan Nedelkovski,
* www.HowToMechatronics.com
*
* DS3231 Library made by Henning Karlsen which can be found and downloaded from his website, www.rinkydinkelectronics.com.
*
*/
#include <DS3231.h>
#include <LiquidCrystal.h> // includes the LiquidCrystal Library
DS3231 rtc(SDA, SCL);
LiquidCrystal lcd(1, 2, 4, 5, 6, 7); // Creates an LC object. Parameters: (rs, enable, d4, d5, d6, d7)
void setup() {
rtc.begin(); // Initialize the rtc object
lcd.begin(16,2); // Initializes the interface to the LCD screen, and specifies the dimensions (width and height) of the display }
}
void loop() {
lcd.setCursor(0,0);
lcd.print("Time: ");
lcd.print(rtc.getTimeStr());
lcd.setCursor(0,1);
lcd.print("Date: ");
lcd.print(rtc.getDateStr());
delay(1000);
}
Code language: Arduino (arduino)
Isso é tudo para este tutorial do Arduino, sinta-se à vontade para fazer qualquer pergunta na seção de comentários abaixo.
Processo de manufatura
- Relógio de visão pov do Arduino
- Tutorial de bloqueio RFID do Arduino
- Relógio mestre
- Arduino Temp. Monitor e relógio em tempo real com tela 3.2
- Relógio de Berlim
- Relógio digital TM1637 com configuração de hora e funcionalidade de alarme
- eDOT - Relógio de precisão baseado em Arduino e estação meteorológica
- Exibição de temperatura OLED do Arduino com relógio em tempo real
- Tutorial do sensor de impressão digital Arduino
- Robot detecta e compartilha alterações em 3D em tempo real