Le Module DS1307 en temps réel (RTC) Permet au Raspberry Pi de garder une trace du temps même lorsqu'il est éteint. Ce guide vous guidera dans la configuration du Module DS1307 RTC avec la framboise Pi en utilisant le Protocole I2C.
Ce dont vous aurez besoin
- Raspberry Pi (Tout modèle avec le support GPIO et I2C, par exemple, PI 3, PI 4)
- Module DS1307 RTC
- Batterie CR2032 (pour maintenir le temps lorsqu'il est éteint)
- Fils de planche à pain et de cavalier
- Python installé sur le Raspberry Pi
Étape 1: Câblage du DS1307 au Raspberry Pi
Le DS1307 communique via I2C, nous le connectons donc aux broches I2C de Raspberry Pi.
Connexions (mode I2C)
Pin DS1307 | Pin de framboise PI |
---|---|
VCC | 3,3 V ou 5V (broche 1 ou 2) |
GND | Terre (broche 6) |
SDA | SDA (broche 3, gpio2) |
SCL | SCL (broche 5, gpio3) |
Étape 2: Activer I2C sur le Raspberry Pi
- Ouvrez l'outil de configuration Raspberry Pi:
sudo raspi-config
- Se diriger vers Options d'interface> I2C et l'activer.
- Redémarrez le Raspberry Pi:
sudo reboot
- Vérifiez que le DS1307 est détecté sur le bus I2C:
Le DS1307 devrait apparaître à l'adressesudo i2cdetect -y 1
0x68
.
Étape 3: Installez les bibliothèques requises
- Mettez à jour la liste des packages de votre Raspberry Pi:
sudo apt update && sudo apt upgrade -y
- Installez les outils I2C et les bibliothèques Python requises:
sudo apt install -y i2c-tools python3-smbus python3-pip pip3 install adafruit-circuitpython-ds1307
Étape 4: Définition et temps de lecture sur le DS1307
Code python pour définir la date et l'heure
Exécutez ce script une fois pour définir l'horloge RTC.
import time
import board
import busio
import adafruit_ds1307
# Initialize I2C bus and DS1307
i2c = busio.I2C(board.SCL, board.SDA)
rtc = adafruit_ds1307.DS1307(i2c)
# Set the date and time (Year, Month, Day, Hour, Minute, Second, Weekday, DST)
rtc.datetime = time.struct_time((2025, 1, 1, 12, 0, 0, 0, -1, -1))
print("RTC Date and Time Set!")
Code python pour lire l'heure à partir de DS1307
Après avoir réglé l'heure, utilisez ce script pour lire la date et l'heure actuelles.
import time
import board
import busio
import adafruit_ds1307
# Initialize I2C bus and DS1307
i2c = busio.I2C(board.SCL, board.SDA)
rtc = adafruit_ds1307.DS1307(i2c)
while True:
current_time = rtc.datetime
print(f"Date: {current_time.tm_year}-{current_time.tm_mon:02d}-{current_time.tm_mday:02d}")
print(f"Time: {current_time.tm_hour:02d}:{current_time.tm_min:02d}:{current_time.tm_sec:02d}")
time.sleep(1)
Étape 5: Syncing DS1307 avec l'horloge du système Raspberry Pi
Pour synchroniser le DS1307 RTC Temps Avec le temps du système Raspberry Pi:
-
Lisez le temps DS1307 RTC et le définir comme l'heure du système:
sudo hwclock -r sudo hwclock -s
-
Réglez le temps DS1307 RTC à partir du temps du système Raspberry Pi:
sudo hwclock -w
Étape 6: Applications du module DS1307 RTC
- Garder le temps sur les appareils PI Raspberry sans tête - utile pour journalisation des données projets.
- Systèmes de base - Assurez-vous des événements planifiés précis même après une perte de puissance.
- Projets IoT - Utilisez le DS1307 pour Timestaping Data dans des environnements déconnectés.
- Stations météorologiques - stocker des horodatages précis pour Records de température et d'humidité.
Dépannage
-
DS1307 non détecté (
i2cdetect
ne montre pas0x68
)- Assurer le Broches SDA / SCL sont correctement câblés.
- Vérifiez que I2C est activé en utilisant
sudo raspi-config
.
-
Lectures de date / heure incorrectes
- Courir
sudo hwclock -r
Pour vérifier l'horloge matérielle. - Réinitialisez l'horloge RTC en utilisant
sudo hwclock -w
.
- Courir
-
RTC Temps ne persiste pas après le courant
- Assurer le Batterie CR2032 est installé correctement.
- Remplacez la batterie si elle est faible ou morte.
Conclusion
Le Module DS1307 RTC proposer suivi précis en temps réel Pour les projets Raspberry Pi, même lorsqu'il est éteint. En suivant ce guide, vous pouvez intégrer les fonctionnalités RTC dans Applications IoT, Automation et Data Enregistrement des données. 🚀