Arduino UNO R4 - RTC

Este tutorial ensina como usar o Arduino UNO R4 com o RTC (Relógio de Tempo Real). Em detalhes, vamos aprender:

Relógio de Tempo Real RTC do Arduino UNO R4

Sobre o Relógio de Tempo Real no Arduino UNO R4

Tanto o Arduino UNO R4 Minima quanto a versão WiFi têm um Relógio de Tempo Real (RTC) embutido no microcontrolador principal. Esse RTC permite que seus projetos Arduino acompanhem a data e a hora mesmo quando a placa é desligada por um instante. Você pode acessar e controlar o RTC usando a biblioteca RTC incluída na Arduino IDE quando você instala o pacote da placa do seu Arduino UNO R4. A biblioteca permite definir a data e a hora atuais, ler a data e a hora atuais e definir alarmes para horários específicos.

No entanto, há um ponto importante a considerar sobre a alimentação de backup:

  • Arduino UNO R4 Minima: o Arduino UNO R4 Minima não tem uma bateria de backup dedicada para o RTC. Isso significa que, se a placa perder toda a energia, o RTC é reiniciado e você precisará acertar a hora novamente quando ligá-la de novo.
  • Arduino UNO R4 WiFi: o Arduino UNO R4 WiFi não inclui bateria de backup para o RTC. No entanto, ele oferece uma solução para usar uma bateria de backup externa para o RTC. Você pode conectar uma bateria externa para alimentar o RTC no Arduino UNO R3 WiFi pelo pino VRTC (Voltage for Real-Time Clock). Ao fornecer uma tensão externa (entre 1,6V e 3,6V) a este pino, você dá alimentação de backup ao RTC. Isso garante que o relógio continue funcionando mesmo quando a fonte de alimentação principal está desligada, permitindo manter os ajustes de hora.

Você pode fornecer alimentação de backup ao RTC usando duas pilhas AA com um suporte de pilhas, como mostra o diagrama de ligação a seguir

Diagrama de ligação da bateria de backup do RTC do Arduino UNO R4 WiFi

This image is created using Fritzing. Click to enlarge image

Veja A melhor forma de alimentar o Arduino Uno R4 e outros componentes.

※ Nota:

Essa fonte de energia por bateria é somente para o RTC. Você precisa alimentar o Arduino UNO R4 por uma fonte de alimentação separada.

Como Programar o RTC no Arduino UNO R4

  • Adicione a biblioteca:
#include "RTC.h"
  • Inicialize o RTC:
RTC.begin();
  • Verifique se o RTC está configurado ou não; se não estiver, defina a data e a hora.
// Tries to retrieve time RTCTime savedTime; RTC.getTime(savedTime); if (!RTC.isRunning()) { // this means the RTC is waking up "as new" if (savedTime.getYear() == 2000) { Serial.println("RTC is NOT running, let's set the time!"); // Set current time, modify it to match the time you upload the code RTCTime startTime(22, Month::JULY, 2024, 16, 52, 00, DayOfWeek::MONDAY, SaveLight::SAVING_TIME_ACTIVE); RTC.setTime(startTime); } else { RTC.setTime(savedTime); } }
  • Exibe a data e a hora do módulo de relógio
RTCTime currentTime; // Get current time from RTC RTC.getTime(currentTime); // Print out date (YYYY/MM/DD) Serial.print("Date & Time: "); Serial.print(currentTime.getYear()); Serial.print("/"); Serial.print(Month2int(currentTime.getMonth())); Serial.print("/"); Serial.print(currentTime.getDayOfMonth()); Serial.print(" - "); // Print time (HH/MM/SS) Serial.print(currentTime.getHour()); Serial.print(":"); Serial.print(currentTime.getMinutes()); Serial.print(":"); Serial.println(currentTime.getSeconds());

Código Arduino UNO R4 – Como obter a data e a hora

/* * Este código de Arduino UNO R4 foi desenvolvido por pt.newbiely.com * Este código de Arduino UNO R4 é disponibilizado ao público sem nenhuma restrição. * Para tutoriais completos e diagramas de ligação, visite: * https://pt.newbiely.com/tutorials/arduino-uno-r4/arduino-uno-r4-rtc-real-time-clock */ #include "RTC.h" void setup() { Serial.begin(9600); //delay(1000); RTC.begin(); // Tries to retrieve time RTCTime savedTime; RTC.getTime(savedTime); if (!RTC.isRunning()) { // this means the RTC is waking up "as new" if (savedTime.getYear() == 2000) { Serial.println("RTC is NOT running, let's set the time!"); // Set current time, modify it to match the time you upload the code RTCTime startTime(22, Month::JULY, 2024, 16, 52, 00, DayOfWeek::MONDAY, SaveLight::SAVING_TIME_ACTIVE); RTC.setTime(startTime); } else { RTC.setTime(savedTime); } } } void loop() { RTCTime currentTime; // Get current time from RTC RTC.getTime(currentTime); // Print out date (YYYY/MM/DD) Serial.print("Date & Time: "); Serial.print(currentTime.getYear()); Serial.print("/"); Serial.print(Month2int(currentTime.getMonth())); Serial.print("/"); Serial.print(currentTime.getDayOfMonth()); Serial.print(" - "); // Print time (HH/MM/SS) Serial.print(currentTime.getHour()); Serial.print(":"); Serial.print(currentTime.getMinutes()); Serial.print(":"); Serial.println(currentTime.getSeconds()); delay(1000); }

Passos Rápidos

Siga estas instruções passo a passo:

  • Se esta é a sua primeira vez usando o Arduino UNO R4 WiFi/Minima, consulte o tutorial sobre como configurar o ambiente para o Arduino UNO R4 WiFi/Minima na Arduino IDE.
  • Se você usa o Arduino UNO R4 WiFi, conecte o Arduino UNO R4 WiFi à bateria de backup conforme o diagrama fornecido.
  • Conecte a placa Arduino UNO R4 ao seu computador usando um cabo USB.
  • Abra a Arduino IDE no seu computador.
  • Selecione a placa Arduino UNO R4 correta (por exemplo, Arduino UNO R4 WiFi) e a porta COM.
  • Copie o código e cole-o na Arduino IDE.
  • Modifique a hora no código para corresponder à hora atual
  • Pressione o botão Upload na Arduino IDE para enviar o código ao Arduino UNO R4.
  • Abra o Serial Monitor.
  • Confira o resultado no Serial Monitor.
∞
Newbiely | Arduino IDE 2.3.8
──
☐
✕
File
Edit
Sketch
Tools
Help
Arduino Uno R4 WiFi
Newbiely.ino
···
8 Serial.println("Hello World!");
Output
Serial Monitor
Message (Enter to send message to 'Arduino Uno R4 WiFi' on 'COM15')
New Line
9600 baud
Date & Time: 2024/7/22 - 16:52:1 Date & Time: 2024/7/22 - 16:52:2 Date & Time: 2024/7/22 - 16:52:3 Date & Time: 2024/7/22 - 16:52:4 Date & Time: 2024/7/22 - 16:52:5 Date & Time: 2024/7/22 - 16:52:6 Date & Time: 2024/7/22 - 16:52:7 Date & Time: 2024/7/22 - 16:52:8 Date & Time: 2024/7/22 - 16:52:9 Date & Time: 2024/7/22 - 16:52:10 Date & Time: 2024/7/22 - 16:52:11 Date & Time: 2024/7/22 - 16:52:12 Date & Time: 2024/7/22 - 16:52:13
Ln 11, Col 1
Arduino Uno R4 WiFi on COM15
2

Tudo parece bem, mas espere! Pode haver um problema nos seguintes cenários:

  • Você usa um Arduino UNO R4 WiFi sem bateria de backup ou um Arduino UNO R4 Minima.
  • O Arduino perde energia temporariamente e reinicia. Em seguida, o Arduino define a hora atual como a hora especificada no código, mas o tempo real já passou. Isso leva a informações de hora incorretas.

Soluções para isso:

  • Use uma fonte de alimentação estável para o Arduino.
  • Use uma bateria de backup estável (só funciona no UNO R4 WiFi).
  • Atualize a hora do RTC pela Internet via Network Time Protocol (NTP) toda vez que o Arduino reiniciar (requer conexão com a Internet).

Vamos ver como usar o NTP para atualizar a hora no RTC do Arduino UNO R4:

Código Arduino UNO R4 – Atualizar a hora do RTC via NTP

/* * Este código de Arduino UNO R4 foi desenvolvido por pt.newbiely.com * Este código de Arduino UNO R4 é disponibilizado ao público sem nenhuma restrição. * Para tutoriais completos e diagramas de ligação, visite: * https://pt.newbiely.com/tutorials/arduino-uno-r4/arduino-uno-r4-rtc-real-time-clock */ #include "RTC.h" void setup() { Serial.begin(9600); //delay(1000); RTC.begin(); // Tries to retrieve time RTCTime savedTime; RTC.getTime(savedTime); if (!RTC.isRunning()) { // this means the RTC is waking up "as new" if (savedTime.getYear() == 2000) { Serial.println("RTC is NOT running, let's set the time!"); // Set current time, modify it to match the time you upload the code RTCTime startTime(22, Month::JULY, 2024, 16, 52, 00, DayOfWeek::MONDAY, SaveLight::SAVING_TIME_ACTIVE); RTC.setTime(startTime); } else { RTC.setTime(savedTime); } } } void loop() { RTCTime currentTime; // Get current time from RTC RTC.getTime(currentTime); // Print out date (YYYY/MM/DD) Serial.print("Date & Time: "); Serial.print(currentTime.getYear()); Serial.print("/"); Serial.print(Month2int(currentTime.getMonth())); Serial.print("/"); Serial.print(currentTime.getDayOfMonth()); Serial.print(" - "); // Print time (HH/MM/SS) Serial.print(currentTime.getHour()); Serial.print(":"); Serial.print(currentTime.getMinutes()); Serial.print(":"); Serial.println(currentTime.getSeconds()); delay(1000); }

Passos Rápidos

  • Abra o Library Manager clicando no ícone Library Manager no lado esquerdo da Arduino IDE.
  • Pesquise por “NTPClient” e localize a NTPClient de Fabrice Weinberg.
  • Clique no botão Install para adicionar a biblioteca NTPClient.
Biblioteca NTPClient do Arduino UNO R4
  • Copie o código e cole-o na Arduino IDE.
  • Modifique o SSID e a senha do WiFi no código para corresponder às credenciais da sua rede
  • Pressione o botão Upload na Arduino IDE para enviar o código ao Arduino UNO R4.
  • Abra o Serial Monitor.
  • Confira o resultado no Serial Monitor.
∞
Newbiely | Arduino IDE 2.3.8
──
☐
✕
File
Edit
Sketch
Tools
Help
Arduino Uno R4 WiFi
Newbiely.ino
···
8 Serial.println("Hello World!");
Output
Serial Monitor
Message (Enter to send message to 'Arduino Uno R4 WiFi' on 'COM15')
New Line
9600 baud
Attempting to connect to SSID: YOUR_WIFI_SSID Connected to WiFi IP Address: 192.168.0.8 Starting connection to NTP server... Unix time = 1721671335 The RTC was updated to: 2024-07-22T18:02:15 RTC Date & Time: 2024/7/22 - 18:2:15 RTC Date & Time: 2024/7/22 - 18:2:16 RTC Date & Time: 2024/7/22 - 18:2:17 RTC Date & Time: 2024/7/22 - 18:2:18 RTC Date & Time: 2024/7/22 - 18:2:19 RTC Date & Time: 2024/7/22 - 18:2:20 RTC Date & Time: 2024/7/22 - 18:2:21
Ln 11, Col 1
Arduino Uno R4 WiFi on COM15
2

Vídeo

Tutoriais Relacionados

※ NOSSAS MENSAGENS

  • Fique à vontade para compartilhar o link deste tutorial. Porém, por favor, não use nosso conteúdo em outros sites. Investimos muito esforço e tempo para criar este conteúdo, por favor respeite nosso trabalho!