Usando il DS1307 RTC con il Raspberry Pi

Using the DS1307 RTC with the Raspberry Pi

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

  1. Raspberry Pi (Qualsiasi modello con supporto GPIO e I2C, ad esempio PI 3, PI 4)
  2. Modulo RTC DS1307
  3. Batteria CR2032 (per mantenere il tempo quando si è spento)
  4. Breadboard e fili jumper
  5. 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

  1. Apri lo strumento di configurazione Raspberry Pi:
    sudo raspi-config
    
  2. Navigare a Opzioni di interfaccia> i2c e abilitarlo.
  3. Riavvia il Raspberry Pi:
    sudo reboot
    
  4. Verificare che il DS1307 viene rilevato Sull'autobus I2C:
    sudo i2cdetect -y 1
    
    IL DS1307 dovrebbe apparire all'indirizzo 0x68.

Passaggio 3: installa le librerie richieste

  1. Aggiorna l'elenco dei pacchetti di Raspberry Pi:
    sudo apt update && sudo apt upgrade -y
    
  2. 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:

  1. Leggi il tempo RTC DS1307 e impostalo come tempo di sistema:
    sudo hwclock -r
    sudo hwclock -s
    
  2. Imposta il tempo RTC DS1307 dal tempo di sistema Raspberry Pi:
    sudo hwclock -w
    

Passaggio 6: applicazioni del modulo RTC DS1307

  1. Mantenere il tempo sui dispositivi di lampone PI senza testa - utile per Registrazione dei dati progetti.
  2. Sistemi di automazione domestica - Garantire eventi programmati accurati anche dopo la perdita di potenza.
  3. Progetti IoT - Usa il DS1307 per Dati di timestamping in ambienti disconnessi.
  4. Stazioni meteorologiche - Conservare i timestamp accurati per Record di temperatura e umidità.

Risoluzione dei problemi

  1. DS1307 non rilevato (i2cdetect non mostra 0x68)

    • Assicurarsi il Pin SDA/SCL sono correttamente cablati.
    • Verifica che I2C è abilitato usando sudo raspi-config.
  2. Letture della data/ora errate

    • Correre sudo hwclock -r Per controllare l'orologio hardware.
    • Ripristina l'orologio RTC utilizzando sudo hwclock -w.
  3. 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. 🚀

Lascia un commento

Notice an Issue? Have a Suggestion?
If you encounter a problem or have an idea for a new feature, let us know! Report a problem or request a feature here.