No mundo moderno, os circuitos de tempo do mundo são muito importantes. O mesmo é o caso do Arduino, o Arduino tem um relógio de timer embutido que conta para aproximadamente 49 dias, mas depois disso redefine. Em segundo lugar, o relógio interno do Arduino não é 100% preciso; Sempre há uma certa porcentagem de tempo de tempo entre o relógio Arduino e um relógio externo. Portanto, se alguém quiser criar um relógio preciso usando Arduino, devemos confiar em um módulo externo conhecido como RTC (relógio em tempo real). Vamos ver como interface este módulo RTC com Arduino e criar um relógio digital preciso.
Módulo RTC com Arduino
Às vezes, trabalhar em projetos Arduino precisa de um relógio de tempo preciso para manter o Arduino trabalhando e executar instruções e comandos especiais em algum momento específico. O Arduino tem relógio embutido, mas não podemos confiar nele por causa dos dois motivos seguintes:
Considerando os motivos acima mencionados, os usuários preferem usar um relógio de hardware externo ou um módulo RTC. Então, um módulo muito barato e super preciso amplamente utilizado é o ds1307. Vamos ver como conectar este RTC com Arduino.
Configurar o módulo RTC Biblioteca Arduino
Para interface o Arduino com o módulo RTC, precisamos instalar algumas bibliotecas necessárias que possam ler dados do módulo RTC. Siga as etapas para instalar as bibliotecas RTC:
Módulo RTC DS1307
O módulo DS1307 RTC é baseado no pequeno clock chip ds1307, que também suporta o protocolo de comunicação I2C. Na parte traseira do módulo RTC, temos uma bateria de célula de lítio. Este módulo pode fornecer informações precisas de segundos, minutos, horas, dia, data, mês e ano. Ele também tem a capacidade de ajuste automático de tempo por 31 dias por mês, juntamente com o suporte de erro do ano bisseiro. O relógio pode operar em 12 horas ou 24 horas de relógio.
Alguns destaques principais deste módulo RTC:
Pinagem do módulo RTC
Nome do pino | Descrição |
SCL | Pino de entrada do relógio para interface de comunicação I2C |
SDA | Saída de entrada de dados para comunicação serial i2C |
VCC | Varia de pinos de energia de 3.3V a 5V |
Gnd | GND PIN |
Ds | Use para entrada do sensor de temperatura |
Sqw | Este pino pode gerar quatro ondas quadradas com frequência 1Hz, 4kHz, 8kHz ou 32kHz |
BASTÃO | PIN para backup da bateria se o suprimento principal interrompido |
Diagrama de circuito
Conecte a placa Arduino com o módulo RTC, como mostrado no diagrama abaixo. Aqui os pinos A4 e A5 do Arduino serão usados para a comunicação I2C com os módulos RTC, enquanto os pinos de 5V e GND darão o poder necessário ao módulo RTC.
Pino RTC DS 1307 | Pino Arduino |
Vin | 5V |
Gnd | Gnd |
SDA | A4 |
SCL | A5 |
Código
#incluir
#incluir
Rtc_ds3231 real_time_clock;
tempo de char [32]; /*CHAR A matriz é definida*/
configuração void ()
Serial.começar (9600); /*A comunicação serial começa*/
Arame.começar(); /*Arquivo da biblioteca para iniciar a comunicação*/
relógio de tempo real.começar();
relógio de tempo real.Ajuste (DateTime (F (__ Data __), F (__ Time__)));
/*relógio de tempo real.Ajuste (DateTime (2022, 09, 26, 1, 58, 0))*/
Void Loop ()
DateTime agora = real_time_clock.agora();
sprintf (tempo, "%02d:%02d:%02d%02d/%02d/%02d", agora.hora (), agora.minuto (), agora.segundo (), agora.dia (), agora.mês (), agora.ano());
Serial.impressão (f ("data/hora:")); /*Isso vai imprimir a data e hora*/
Serial.println (tempo);
atraso (1000); /*Atraso de 1 seg*/
No início do código primeiro, incluímos arame.h & Rtclib para comunicação com dispositivos. Em seguida, criamos um objeto rtclib com o nome relógio de tempo real. Em seguida, definimos uma matriz de char tempo de comprimento 32, que armazenará informações de data e hora.
Na função de configuração e loop, usamos o seguinte comando para garantir que a comunicação I2C seja estabelecida entre os módulos Arduino e RTC.
Arame.começar e relógio de tempo real.começar garantirá e verificará a conexão RTC.
ajustar() é uma função sobrecarregada que define a data e a hora.
DateTime (f (__ date__), f (__ time__))
Esta função definirá a data e a hora em que o esboço foi compilado.
O agora() Funções Data e hora de retorno e seu valor armazenará em variável "tempo".
A próxima hora, minuto, segundo, dia, mês, ano calculará a data exata e a imprimirá no monitor serial com um atraso de 1 seg.
Hardware
Saída
O monitor serial começará a imprimir a hora e a data em que o código é enviado para a placa Arduino.
Conclusão
O próprio Arduino tem algumas funções relacionadas ao tempo como millis (), micros (). No entanto, essas funções não dão tempo exato; Sempre há uma chance de alguns milissegundos atrasarem. Para evitar isso enquanto o uso de módulos externos do Arduino RTC são usados. Esses módulos como o DS1307 nos dão tempo exato com um backup de bateria que pode durar muitos anos. Este guia abrange como interface esses módulos RTC com uma placa Arduino.