L'horloge DS1307 en temps réel (RTC) est un module largement utilisé pour garder du temps dans les projets Arduino. Il maintient un temps précis même lorsque l'Arduino est éteint, grâce à sa sauvegarde de batterie intégrée. Dans ce didacticiel, vous apprendrez à connecter et à programmer le module RTC DS1307 avec l'Arduino pour afficher et mettre à jour le temps.
Ce dont vous aurez besoin
- Conseil d'administration d'Arduino (par exemple, uno, mega, nano)
- Module DS1307 RTC
- Fils de planche à pain et de cavalier
- Un ordinateur avec l'ide Arduino installé
- Bibliothèques: Rtclib
Étape 1: Câblage du module RTC DS1307
Le DS1307 RTC communique avec l'Arduino via le protocole I2C.
Relations
Pin RTC | Épingle arduino |
---|---|
VCC | 5V |
GND | GND |
SDA | A4 |
SCL | A5 |
Note: Si vous utilisez une carte Arduino avec des broches SDA et SCL dédiées (par exemple, MEGA), connectez les broches RTC SDA / SCL à celles à la place.
Étape 2: Installation de la bibliothèque requise
Pour travailler avec le DS1307 RTC, vous aurez besoin du Rtclib bibliothèque.
Étapes pour installer RTCLIB
- Ouvrez l'ide Arduino.
- Aller à Sketch> Inclure la bibliothèque> Gérer les bibliothèques.
- Recherchez "RTCLIB" dans le gestionnaire de bibliothèque.
- Faire un clic Installer.
Étape 3: Téléchargement d'exemple de code
Voici un exemple de croquis pour afficher la date et l'heure actuelles du module DS1307:
Exemple de code
#include <Wire.h>
#include <RTClib.h>
RTC_DS1307 rtc;
void setup() {
Serial.begin(9600);
// Initialize the RTC
if (!rtc.begin()) {
Serial.println("Couldn't find RTC");
while (1);
}
// Check if the RTC is running
if (!rtc.isrunning()) {
Serial.println("RTC is NOT running! Setting the time...");
rtc.adjust(DateTime(F(__DATE__), F(__TIME__)));
}
}
void loop() {
DateTime now = rtc.now();
// Display the time
Serial.print(now.hour());
Serial.print(":");
if (now.minute() < 10) {
Serial.print("0");
}
Serial.print(now.minute());
Serial.print(":");
if (now.second() < 10) {
Serial.print("0");
}
Serial.println(now.second());
// Display the date
Serial.print(now.day());
Serial.print("/");
Serial.print(now.month());
Serial.print("/");
Serial.println(now.year());
delay(1000); // Update every second
}
Étape 4: ajuster l'heure
Si le RTC n'est pas en cours d'exécution ou si le temps doit être mis à jour, vous pouvez utiliser la ligne suivante dans le setup()
fonction:
rtc.adjust(DateTime(F(__DATE__), F(__TIME__)));
-
F(__DATE__)
etF(__TIME__)
sont des macros qui définissent la date et l'heure de votre ordinateur lorsque vous téléchargez l'esquisse.
Pour définir une heure spécifique manuellement, utilisez:
rtc.adjust(DateTime(2025, 1, 1, 12, 0, 0)); // YYYY, MM, DD, HH, MM, SS
Étape 5: Utilisation des données RTC dans vos projets
Le DS1307 peut fournir des données de temps pour une variété d'applications, telles que:
- Dogging des données: Lectures ou événements du capteur d'horodatage.
- Alarmes et minuteries: Déclencher des actions basées sur des moments spécifiques.
- Horloges: Créez des horloges numériques ou analogiques avec des écrans.
Exemple: déclencher une action à un moment précis
void loop() {
DateTime now = rtc.now();
// Check if it's 8:00 AM
if (now.hour() == 8 && now.minute() == 0 && now.second() == 0) {
Serial.println("It's 8:00 AM!");
}
delay(1000);
}
Dépannage
-
RTC introuvable:
- Vérifiez les connexions SDA et SCL.
- Assurez-vous que la batterie est installée correctement.
-
Temps incorrect:
- Utiliser
rtc.adjust()
pour réinitialiser l'heure. - Vérifiez une batterie RTC drainée ou manquante.
- Utiliser
-
Données incohérentes:
- Assurer une alimentation stable au module Arduino et RTC.
Applications du DS1307 RTC
- Horloges et alarmes en temps réel
- Systèmes d'automatisation basés sur le temps
- Enregistrement des données avec des horodatages
- Systèmes de rappel
Conclusion
Le module RTC DS1307 est un excellent outil pour ajouter des fonctionnalités de chronométrage à vos projets Arduino. En suivant ce guide, vous pouvez configurer le RTC, afficher l'heure et la date et l'intégrer dans diverses applications. Expérimentez avec la combinaison du DS1307 avec des écrans ou des capteurs pour construire des projets encore plus dynamiques!