Folosind DS1307 RTC cu Raspberry Pi

Using the DS1307 RTC with the Raspberry Pi

The Modulul DS1307 Real-Time Clock (RTC). permite Raspberry Pi să țină evidența timpului chiar și atunci când este oprit. Acest ghid vă va ghida prin configurarea Modul DS1307 RTC cu Raspberry Pi folosind Protocolul I2C.


Ce vei avea nevoie

  1. Raspberry Pi (orice model cu suport GPIO și I2C, de exemplu, Pi 3, Pi 4)
  2. Modulul DS1307 RTC
  3. baterie CR2032 (pentru menținerea timpului când este oprit)
  4. Breadboard și fire jumper
  5. Python instalat pe Raspberry Pi

Pasul 1: Conectați DS1307 la Raspberry Pi

The DS1307 comunică prin I2C, așa că îl conectăm la pinii I2C ai Raspberry Pi.

Conexiuni (mod I2C)

DS1307 Pin Raspberry Pi Pin
VCC 3,3 V sau 5 V (pin 1 sau 2)
GND Masa (pin 6)
SDA SDA (Pin 3, GPIO2)
SCL SCL (Pin 5, GPIO3)

Pasul 2: Activați I2C pe Raspberry Pi

  1. Deschideți instrumentul de configurare Raspberry Pi:
    sudo raspi-config
    
  2. Navigați la Opțiuni de interfață > I2C și activați-l.
  3. Reporniți Raspberry Pi:
    sudo reboot
    
  4. Verificați că DS1307 este detectat pe autobuzul I2C:
    sudo i2cdetect -y 1
    
    The DS1307 ar trebui să apară la adresa 0x68.

Pasul 3: Instalați bibliotecile necesare

  1. Actualizați lista de pachete Raspberry Pi:
    sudo apt update && sudo apt upgrade -y
    
  2. Instalați instrumentele necesare I2C și bibliotecile Python:
    sudo apt install -y i2c-tools python3-smbus python3-pip
    pip3 install adafruit-circuitpython-ds1307
    

Pasul 4: Setarea și timpul de citire pe DS1307

Cod Python pentru a seta data și ora

Rulați acest script o dată pentru a seta ceasul 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!")

Cod Python pentru a citi timpul de la DS1307

După setarea orei, utilizați acest script pentru a citi data și ora curente.

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)

Pasul 5: Sincronizarea DS1307 cu ceasul sistemului Raspberry Pi

Pentru a sincroniza Ora DS1307 RTC cu ora sistemului Raspberry Pi:

  1. Citiți ora DS1307 RTC și setați-o ca oră de sistem:
    sudo hwclock -r
    sudo hwclock -s
    
  2. Setați ora DS1307 RTC din ora sistemului Raspberry Pi:
    sudo hwclock -w
    

Pasul 6: Aplicații ale modulului DS1307 RTC

  1. Păstrarea timpului pe dispozitivele Raspberry Pi fără cap – Util pentru înregistrarea datelor proiecte.
  2. Sisteme de automatizare a locuintei – Asigurați evenimente programate precise chiar și după pierderea alimentării.
  3. Proiecte IoT – Utilizați DS1307 pentru date de marcare temporală în medii deconectate.
  4. Stații meteo – Stocați marcajele de timp exacte pentru înregistrări de temperatură și umiditate.

Depanare

  1. DS1307 nedetectat (i2cdetect nu arata 0x68)

    • Asigurați Pini SDA/SCL sunt corect conectate.
    • Verifica asta I2C este activat folosind sudo raspi-config.
  2. Citiri de dată/ora incorecte

    • Fugi sudo hwclock -r pentru a verifica ceasul hardware.
    • Resetați ceasul RTC folosind sudo hwclock -w.
  3. Timpul RTC nu persistă după oprire

    • Asigurați baterie CR2032 este instalat corect.
    • Înlocuiți bateria dacă este descărcată sau descărcată.

Concluzie

The Modul DS1307 RTC prevede urmărire precisă în timp real pentru proiecte Raspberry Pi, chiar și atunci când este oprit. Urmând acest ghid, puteți integra funcționalitatea RTC în Aplicații IoT, automatizare și înregistrare a datelor. 🚀

Lasă un comentariu

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.