🛠 Horloge persistante : RTC à pile + resynchronisation NTP

Arduino UNO R4 WiFi · avance · Schéma : IMG-uno-r4-wifi-avance-1-ur4wifi-horloge-rtc-ntp.svg — UNO R4 WiFi avec emplacement pile bouton du RTC surligné, symbole pile 3 V, serveur NTP à gauche, matrice LED affichant 12:34, horloge interne du RA4M1 annotée.

Objectifs

Construire une horloge qui survit aux coupures : le RA4M1 possède un RTC (real-time clock) maintenu par une pile bouton branchée sur l'emplacement dédié de la carte. La stratégie professionnelle : une fois n'est pas coutume — synchroniser le RTC sur NTP quand le WiFi est disponible, puis le laisser tenir l'heure seul, la pile consommant si peu que l'heure survit des semaines sans alimentation principale.

Matériel

Code complet

#include <WiFiS3.h>
#include "RTC.h"
#include "Arduino_LED_Matrix.h"

ArduinoLEDMatrix matrix;
const char* SSID = "votre-réseau";
const char* PASS = "votre-cle";

// Trames 5x7 pour les chiffres 0-9 : voir la bibliothèque de trames
// du tuto matrice ; on n'affiche ici que l'heure hh:mm en deux blocs.
void afficherHeure(uint8_t h, uint8_t m);

void setup {
  Serial.begin(115200);
  matrix.begin;

  WiFi.begin(SSID, PASS);
  if (WiFi.waitForConnectResult == WL_CONNECTED) {
    unsigned long epoch = WiFi.getTime;     // NTP
    if (epoch > 1000000000UL) {
      RtcDateTime now = RtcDateTime::FromEpoch(epoch);
      RTC.SetDateTime(now);                   // on écrit dans le RTC matériel
      Serial.println(F("RTC synchronise via NTP"));
    }
  } else {
    Serial.println(F("Sans WiFi : heure du RTC conservée à la pile"));
  }
}

void loop {
  RtcDateTime t = RTC.GetDateTime;
  Serial.printf("%02u:%02u:%02u\n", t.Hour, t.Minute, t.Second);
  afficherHeure(t.Hour, t.Minute);
  delay(1000);
}

Vérification attendue

Après synchronisation, l'heure défile seconde par seconde. Débranchez tout (USB et jack) pendant dix minutes, rebranchez : l'heure affichée est la bonne — le RTC a tourné sur sa pile. Sans pile, l'heure repart de la valeur de compilation : c'est le test qui prouve l'utilité de la pile.

Erreurs fréquentes

Autres tutoriels pour cette carte

Exemples de code pour cette carte

← Retour à la fiche 🛠 Tous les tutoriels