IL Modulo DS1307 in tempo reale (RTC) Consente a Raspberry Pi di tenere traccia del tempo anche quando è spento. Questa guida ti guiderà attraverso la configurazione del Modulo RTC DS1307 con il Raspberry Pi che usa il Protocollo I2C.
Cosa avrai bisogno
- Raspberry Pi (Qualsiasi modello con supporto GPIO e I2C, ad esempio PI 3, PI 4)
- Modulo RTC DS1307
- Batteria CR2032 (per mantenere il tempo quando si è spento)
- Breadboard e fili jumper
- Python installato Sul Raspberry Pi
Passaggio 1: Cablaggio del DS1307 a Raspberry Pi
IL DS1307 comunica tramite I2C, quindi lo colleghiamo ai pin i2c di Raspberry Pi.
Connessioni (modalità I2C)
Pin DS1307 | Pin di lampone |
---|---|
VCC | 3.3V o 5V (pin 1 o 2) |
GND | Terra (pin 6) |
SDA | SDA (PIN 3, GPIO2) |
SCL | SCL (PIN 5, GPIO3) |
Passaggio 2: abilita i2c su Raspberry Pi
- Apri lo strumento di configurazione Raspberry Pi:
sudo raspi-config
- Navigare a Opzioni di interfaccia> i2c e abilitarlo.
- Riavvia il Raspberry Pi:
sudo reboot
- Verificare che il DS1307 viene rilevato Sull'autobus I2C:
IL DS1307 dovrebbe apparire all'indirizzosudo i2cdetect -y 1
0x68
.
Passaggio 3: installa le librerie richieste
- Aggiorna l'elenco dei pacchetti di Raspberry Pi:
sudo apt update && sudo apt upgrade -y
- Installa gli strumenti I2C richiesti e le librerie Python:
sudo apt install -y i2c-tools python3-smbus python3-pip pip3 install adafruit-circuitpython-ds1307
Passaggio 4: tempo di impostazione e lettura sul DS1307
Codice Python per impostare la data e l'ora
Esegui questo script una volta per impostare l'orologio 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!")
Codice Python per leggere i tempi da DS1307
Dopo aver impostato l'ora, utilizzare questo script per leggere la data e l'ora correnti.
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)
Passaggio 5: sincronizzazione DS1307 con l'orologio di sistema Raspberry Pi
Per sincronizzare il Tempo RTC DS1307 Con il tempo di sistema Raspberry Pi:
-
Leggi il tempo RTC DS1307 e impostalo come tempo di sistema:
sudo hwclock -r sudo hwclock -s
-
Imposta il tempo RTC DS1307 dal tempo di sistema Raspberry Pi:
sudo hwclock -w
Passaggio 6: applicazioni del modulo RTC DS1307
- Mantenere il tempo sui dispositivi di lampone PI senza testa - utile per Registrazione dei dati progetti.
- Sistemi di automazione domestica - Garantire eventi programmati accurati anche dopo la perdita di potenza.
- Progetti IoT - Usa il DS1307 per Dati di timestamping in ambienti disconnessi.
- Stazioni meteorologiche - Conservare i timestamp accurati per Record di temperatura e umidità.
Risoluzione dei problemi
-
DS1307 non rilevato (
i2cdetect
non mostra0x68
)- Assicurarsi il Pin SDA/SCL sono correttamente cablati.
- Verifica che I2C è abilitato usando
sudo raspi-config
.
-
Letture della data/ora errate
- Correre
sudo hwclock -r
Per controllare l'orologio hardware. - Ripristina l'orologio RTC utilizzando
sudo hwclock -w
.
- Correre
-
Il tempo di RTC non persiste dopo il potere
- Assicurarsi il Batteria CR2032 è installato correttamente.
- Sostituire la batteria se è bassa o morta.
Conclusione
IL Modulo RTC DS1307 fornisce Tracciamento accurato in tempo reale Per i progetti Raspberry Pi, anche se spento. Seguendo questa guida, è possibile integrare la funzionalità RTC Applicazioni IoT, automazione e registrazione dei dati. 🚀