Arduino UNO R4 - RTC

Ce tutoriel vous explique comment utiliser l'Arduino UNO R4 avec RTC (horloge en temps réel). En détail, nous apprendrons :

Arduino UNO R4 RTC Horloge temps réel

À propos de l'horloge en temps réel sur l'Arduino UNO R4

À la fois l'Arduino UNO R4 Minima et la version WiFi disposent d'une horloge en temps réel (RTC) intégrée dans leur microcontrôleur principal. Cette horloge en temps réel (RTC) permet à vos projets Arduino de suivre la date et l'heure même lorsque la carte est éteinte momentanément. Vous pouvez accéder et contrôler la RTC à l'aide de la bibliothèque RTC incluse dans l'IDE Arduino lorsque vous installez le paquet de cartes pour votre Arduino UNO R4. La bibliothèque permet de définir la date et l'heure actuelles, de lire la date et l'heure actuelles et de régler des alarmes pour des moments précis.

Cependant, il y a un point crucial à considérer concernant l'alimentation de secours :

  • Arduino UNO R4 Minima: Arduino UNO R4 Minima n'a pas de batterie de sauvegarde dédiée pour le RTC. Cela signifie que si la carte perd complètement l'alimentation, le RTC se réinitialise, et vous devrez régler l'heure à nouveau lorsque vous la rallumerez.
  • Arduino UNO R4 WiFi: Arduino UNO R4 WiFi n'inclut pas de batterie de sauvegarde pour le RTC. Cependant, il offre une solution pour utiliser une batterie de sauvegarde externe pour le RTC. Vous pouvez connecter une batterie externe pour alimenter le RTC sur l'Arduino UNO R3 WiFi via la broche VRTC (Voltage for Real-Time Clock). En fournissant une tension externe (entre 1,6 V et 3,6 V) à cette broche, vous pouvez fournir une alimentation de secours au RTC. Cela garantit que l'horloge continue de fonctionner même lorsque l'alimentation principale est hors tension, ce qui vous permet de conserver les réglages de l'heure.

Vous pouvez fournir une alimentation de secours pour l'horloge en temps réel (RTC) en utilisant deux piles AA avec un porte-piles, comme indiqué dans le schéma de câblage ci-dessous.

Schéma de câblage de la batterie de sauvegarde RTC pour Arduino UNO R4 WiFi

Cette image a été créée avec Fritzing. Cliquez pour agrandir l'image.

Voir Comment alimenter l'Arduino UNO R4..

※ Note:

Cette source d'alimentation par batterie est uniquement pour le RTC. Vous devez alimenter l'Arduino UNO R4 via une alimentation séparée.

Comment programmer le RTC sur l'Arduino UNO R4

  • Ajouter la bibliothèque:
#include "RTC.h"
  • Initialiser l'horloge temps réel :
RTC.begin();
  • Vérifiez si le RTC est configuré ou non; sinon, définissez la date et l'heure.
// Essaie de récupérer l'heure RTCTime savedTime; RTC.getTime(savedTime); if (!RTC.isRunning()) { // Cela signifie que le RTC se réveille "comme neuf" if (savedTime.getYear() == 2000) { Serial.println("RTC is NOT running, let's set the time!"); // Définir l'heure actuelle, modifiez-la pour qu'elle corresponde à l'heure à laquelle vous téléversez le code RTCTime startTime(22, Month::JULY, 2024, 16, 52, 00, DayOfWeek::MONDAY, SaveLight::SAVING_TIME_ACTIVE); RTC.setTime(startTime); } else { RTC.setTime(savedTime); } }
  • Affiche la date et l'heure du module d'horloge
RTCTime currentTime; // Obtenir l'heure actuelle depuis le RTC RTC.getTime(currentTime); // Afficher la date (AAAA/MM/JJ) Serial.print("Date & Time: "); Serial.print(currentTime.getYear()); Serial.print("/"); Serial.print(Month2int(currentTime.getMonth())); Serial.print("/"); Serial.print(currentTime.getDayOfMonth()); Serial.print(" - "); // Afficher l'heure (HH:MM:SS) Serial.print(currentTime.getHour()); Serial.print(":"); Serial.print(currentTime.getMinutes()); Serial.print(":"); Serial.println(currentTime.getSeconds());

Arduino UNO R4 Code – Comment obtenir la date et l'heure

/* * Ce code Arduino UNO R4 a été développé par newbiely.fr * Ce code Arduino UNO R4 est mis à disposition du public sans aucune restriction. * Pour des instructions complètes et des schémas de câblage, veuillez visiter: * https://newbiely.fr/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); }

Étapes rapides

Suivez ces instructions étape par étape :

  • Si c’est votre première utilisation de l'Arduino UNO R4 WiFi/Minima, reportez-vous au tutoriel sur Arduino UNO R4 - Installation du logiciel..
  • Si vous utilisez l'Arduino UNO R4 WiFi, connectez l'Arduino UNO R4 WiFi à la batterie de secours selon le schéma fourni.
  • Connectez la carte Arduino UNO R4 à votre ordinateur à l'aide d'un câble USB.
  • Lancez l'IDE Arduino sur votre ordinateur.
  • Sélectionnez la carte Arduino UNO R4 appropriée (par exemple Arduino UNO R4 WiFi) et le port COM.
  • Copiez le code et collez-le dans l'IDE Arduino.
  • Modifiez l'heure dans le code pour qu'elle corresponde à votre heure actuelle.
  • Appuyez sur le bouton Upload dans l'IDE Arduino pour envoyer le code à l'Arduino UNO R4.
  • Ouvrez le moniteur série.
  • Vérifiez le résultat dans le moniteur série.
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  

Tout semble aller bien, mais attendez ! Il pourrait y avoir un problème dans les scénarios suivants :

  • Vous utilisez un Arduino UNO R4 WiFi sans batterie de secours ou un Arduino UNO R4 Minima.
  • L'Arduino perd temporairement son alimentation et redémarre. Il règle alors l'heure actuelle sur celle spécifiée dans le code, mais le temps réel s'est écoulé. Cela entraîne des informations d'heure incorrectes.

Solutions pour ceci :

  • Utilisez une source d'alimentation stable pour l'Arduino.
  • Utilisez une batterie de secours stable (ne fonctionne que sur l'UNO R4 WiFi).
  • Mettez à jour l'heure de l'horloge RTC via Internet à l'aide du Protocole NTP (NTP) à chaque redémarrage de l'Arduino (nécessite une connexion Internet).

Voyons comment utiliser le NTP pour mettre à jour l'heure du RTC de l'Arduino UNO R4 :

Code Arduino UNO R4 – Mise à jour de l'heure RTC via NTP

/* * Ce code Arduino UNO R4 a été développé par newbiely.fr * Ce code Arduino UNO R4 est mis à disposition du public sans aucune restriction. * Pour des instructions complètes et des schémas de câblage, veuillez visiter: * https://newbiely.fr/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); }

Étapes rapides

  • Ouvrez le Gestionnaire de bibliothèques en cliquant sur l'icône Gestionnaire de bibliothèques sur le côté gauche de l'IDE Arduino.
  • Recherchez « NTPClient » et localisez le NTPClient de Fabrice Weinberg.
  • Cliquez sur le bouton Install pour ajouter la bibliothèque NTPClient.
Bibliothèque NTPClient pour Arduino UNO R4
  • Copiez le code et collez-le dans l'IDE Arduino.
  • Modifiez le SSID WiFi et le mot de passe dans le code pour correspondre à vos identifiants réseau
  • Appuyez sur le bouton Upload dans l'IDE Arduino pour téléverser le code sur l'Arduino UNO R4.
  • Ouvrez le Moniteur série.
  • Vérifiez le résultat dans le Moniteur série.
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  

Vidéo

Tutoriels connexes

※ NOS MESSAGES

  • N'hésitez pas à partager le lien de ce tutoriel. Cependant, veuillez ne pas utiliser notre contenu sur d'autres sites web. Nous avons investi beaucoup d'efforts et de temps pour créer ce contenu, veuillez respecter notre travail !