Arduino UNO R4 - Echtzeituhr

Dieses Tutorial erklärt dir, wie man den Arduino UNO R4 mit RTC (Echtzeituhr) verwendet. Im Detail werden wir lernen:

Arduino UNO R4 RTC Echtzeituhr

Über die Echtzeituhr am Arduino UNO R4

Sowohl der Arduino UNO R4 Minima als auch die WiFi-Version verfügen über eine integrierte Echtzeituhr (RTC), die im Hauptmikrocontroller eingebettet ist. Diese RTC ermöglicht es Ihren Arduino-Projekten, Datum und Uhrzeit auch dann zu verfolgen, wenn das Board vorübergehend ausgeschaltet ist. Sie können auf die RTC zugreifen und sie mit der in der Arduino IDE enthaltenen RTC-Bibliothek steuern, wenn Sie das Board-Paket für Ihren Arduino UNO R4 installieren. Die Bibliothek ermöglicht es Ihnen, das aktuelle Datum und die aktuelle Uhrzeit festzulegen, das aktuelle Datum und die aktuelle Uhrzeit abzulesen und Alarme für bestimmte Zeiten einzustellen.

Allerdings gibt es in Bezug auf die Notstromversorgung einen wichtigen Punkt zu beachten:

  • Arduino UNO R4 Minima: Arduino UNO R4 Minima hat keine dedizierte Backup-Batterie für RTC. Das bedeutet, dass die RTC bei vollständigem Ausfall der Stromversorgung zurückgesetzt wird, und Sie die Uhrzeit erneut einstellen müssen, wenn Sie sie wieder einschalten.
  • Arduino UNO R4 WiFi: Arduino UNO R4 WiFi hat keine Backup-Batterie für RTC. Allerdings bietet es eine Lösung, eine externe Backup-Batterie für RTC zu verwenden. Sie können eine externe Batterie anschließen, um die RTC am Arduino UNO R3 WiFi über den Pin VRTC (Voltage for Real-Time Clock) mit Strom zu versorgen. Indem Sie diesem Pin eine externe Spannung (zwischen 1,6 V und 3,6 V) zuführen, können Sie der RTC eine Backup-Stromversorgung bereitstellen. Dadurch läuft die Uhr auch weiter, wenn die Hauptstromversorgung ausgeschaltet ist, sodass Sie die Uhrzeiteinstellungen beibehalten können.

Sie können die RTC mit einer Backup-Stromversorgung aus zwei AA-Batterien und einem Batteriehalter versorgen, wie im folgenden Schaltplan gezeigt.

Arduino UNO R4 WiFi RTC-Backupbatterie Schaltplan

Dieses Bild wurde mit Fritzing erstellt. Klicken Sie, um das Bild zu vergrößern.

Siehe Der beste Weg, den Arduino Uno R4 und andere Komponenten mit Strom zu versorgen.

※ Notiz:

Diese Batterieversorgung dient nur der RTC. Sie müssen den Arduino UNO R4 über eine separate Stromversorgung betreiben.

So programmiert man das RTC auf dem Arduino UNO R4

  • Fügen Sie die Bibliothek hinzu:
#include "RTC.h"
  • RTC initialisieren:
RTC.begin();
  • Prüfen Sie, ob RTC konfiguriert ist oder nicht; Falls nicht, legen Sie Datum und Uhrzeit fest.
// Versucht, die Zeit abzurufen RTCTime savedTime; RTC.getTime(savedTime); if (!RTC.isRunning()) { // Das bedeutet, dass das RTC wie neu hochfährt if (savedTime.getYear() == 2000) { Serial.println("RTC is NOT running, let's set the time!"); // Aktuelle Zeit festlegen, passe sie an die Zeit an, zu der du den Code hochlädst RTCTime startTime(22, Month::JULY, 2024, 16, 52, 00, DayOfWeek::MONDAY, SaveLight::SAVING_TIME_ACTIVE); RTC.setTime(startTime); } else { RTC.setTime(savedTime); } }
  • Zeigt Datum und Uhrzeit vom Clock-Modul an
RTCTime currentTime; // Aktuelle Zeit vom RTC abrufen RTC.getTime(currentTime); // Datum ausgeben (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(" - "); // Zeit ausgeben (HH/MM/SS) Serial.print(currentTime.getHour()); Serial.print(":"); Serial.print(currentTime.getMinutes()); Serial.print(":"); Serial.println(currentTime.getSeconds());

Arduino UNO R4 Code – Wie man Datum und Uhrzeit erhält

/* * Dieser Arduino UNO R4 Code wurde von newbiely.de entwickelt * Dieser Arduino UNO R4 Code wird der Öffentlichkeit ohne jegliche Einschränkung zur Verfügung gestellt. * Für vollständige Anleitungen und Schaltpläne besuchen Sie bitte: * https://newbiely.de/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); }

Schnelle Schritte

Folge diesen Anweisungen Schritt für Schritt:

  • Wenn dies Ihre erste Verwendung des Arduino UNO R4 WiFi/Minima ist, lesen Sie Einrichtung der Umgebung für Arduino UNO R4 WiFi/Minima in der Arduino IDE.
  • Wenn Sie den Arduino UNO R4 WiFi verwenden, schließen Sie den Arduino UNO R4 WiFi gemäß dem bereitgestellten Diagramm an die Backup-Batterie an.
  • Schließen Sie das Arduino UNO R4-Board mit einem USB-Kabel an Ihren Computer an.
  • Öffnen Sie die Arduino IDE auf Ihrem Computer.
  • Wählen Sie das passende Arduino UNO R4-Board aus (z. B. Arduino UNO R4 WiFi) und den COM-Port.
  • Kopieren Sie den Code und fügen Sie ihn in die Arduino IDE ein.
  • Passen Sie die Zeit im Code an Ihre aktuelle Zeit an.
  • Drücken Sie die Schaltfläche Upload in der Arduino IDE, um den Code an den Arduino UNO R4 zu senden.
  • Öffnen Sie den Seriellen Monitor.
  • Überprüfen Sie das Ergebnis im Seriellen Monitor.
COM6
Send
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
Autoscroll Show timestamp
Clear output
9600 baud  
Newline  

Alles sieht gut aus, aber warte mal! In den folgenden Szenarien könnte es ein Problem geben:

  • Sie verwenden ein Arduino UNO R4 WiFi ohne Backup-Batterie oder ein Arduino UNO R4 Minima.
  • Das Arduino verliert vorübergehend die Stromversorgung und startet neu. Danach setzt das Arduino die aktuelle Uhrzeit auf die im Code angegebene Zeit, aber die reale Zeit ist bereits vergangen. Dies führt zu fehlerhaften Zeitangaben.

Lösungen hierfür:

  • Verwenden Sie eine zuverlässige Stromversorgung für den Arduino.
  • Verwenden Sie eine zuverlässige Backup-Batterie (funktioniert nur mit dem UNO R4 WiFi).
  • Aktualisieren Sie die RTC-Uhrzeit über das Internet mittels des Network Time Protocol (NTP) bei jedem Neustart des Arduino (erfordert eine Internetverbindung).

Schauen wir uns an, wie man NTP verwendet, um die Zeit auf dem RTC des Arduino UNO R4 zu aktualisieren:

Arduino UNO R4 Code – RTC-Zeit über NTP aktualisieren

/* * Dieser Arduino UNO R4 Code wurde von newbiely.de entwickelt * Dieser Arduino UNO R4 Code wird der Öffentlichkeit ohne jegliche Einschränkung zur Verfügung gestellt. * Für vollständige Anleitungen und Schaltpläne besuchen Sie bitte: * https://newbiely.de/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); }

Schnelle Schritte

  • Öffnen Sie den Library Manager, indem Sie auf das Symbol Library Manager auf der linken Seite der Arduino IDE klicken.
  • Suchen Sie nach „NTPClient“ und finden Sie die NTPClient-Bibliothek von Fabrice Weinberg.
  • Klicken Sie auf die Install-Schaltfläche, um die NTPClient-Bibliothek hinzuzufügen.
Arduino UNO R4 NTPClient-Bibliothek
  • Kopieren Sie den Code und fügen Sie ihn in die Arduino IDE ein.
  • Passen Sie die WiFi-SSID und das Passwort im Code an, damit sie zu Ihren Netzwerkanmeldeinformationen passen.
  • Drücken Sie in der Arduino IDE die Hochladen-Schaltfläche, um den Code auf den Arduino UNO R4 zu übertragen.
  • Öffnen Sie den seriellen Monitor.
  • Überprüfen Sie das Ergebnis im seriellen Monitor.
COM6
Send
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
Autoscroll Show timestamp
Clear output
9600 baud  
Newline  

Video Tutorial

Wir erwägen die Erstellung von Video-Tutorials. Wenn Sie Video-Tutorials für wichtig halten, abonnieren Sie bitte unseren YouTube-Kanal , um uns zu motivieren, die Videos zu erstellen.

Verwandte Tutorials

※ UNSERE NACHRICHTEN

  • Sie können gerne den Link zu diesem Tutorial teilen. Bitte verwenden Sie jedoch unsere Inhalte nicht auf anderen Websites. Wir haben viel Mühe und Zeit in die Erstellung der Inhalte investiert, bitte respektieren Sie unsere Arbeit!