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
- Raspberry Pi (orice model cu suport GPIO și I2C, de exemplu, Pi 3, Pi 4)
- Modulul DS1307 RTC
- baterie CR2032 (pentru menținerea timpului când este oprit)
- Breadboard și fire jumper
- 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
- Deschideți instrumentul de configurare Raspberry Pi:
sudo raspi-config
- Navigați la Opțiuni de interfață > I2C și activați-l.
- Reporniți Raspberry Pi:
sudo reboot
- Verificați că DS1307 este detectat pe autobuzul I2C:
The DS1307 ar trebui să apară la adresasudo i2cdetect -y 1
0x68
.
Pasul 3: Instalați bibliotecile necesare
- Actualizați lista de pachete Raspberry Pi:
sudo apt update && sudo apt upgrade -y
- 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:
-
Citiți ora DS1307 RTC și setați-o ca oră de sistem:
sudo hwclock -r sudo hwclock -s
-
Setați ora DS1307 RTC din ora sistemului Raspberry Pi:
sudo hwclock -w
Pasul 6: Aplicații ale modulului DS1307 RTC
- Păstrarea timpului pe dispozitivele Raspberry Pi fără cap – Util pentru înregistrarea datelor proiecte.
- Sisteme de automatizare a locuintei – Asigurați evenimente programate precise chiar și după pierderea alimentării.
- Proiecte IoT – Utilizați DS1307 pentru date de marcare temporală în medii deconectate.
- Stații meteo – Stocați marcajele de timp exacte pentru înregistrări de temperatură și umiditate.
Depanare
-
DS1307 nedetectat (
i2cdetect
nu arata0x68
)- Asigurați Pini SDA/SCL sunt corect conectate.
- Verifica asta I2C este activat folosind
sudo raspi-config
.
-
Citiri de dată/ora incorecte
- Fugi
sudo hwclock -r
pentru a verifica ceasul hardware. - Resetați ceasul RTC folosind
sudo hwclock -w
.
- Fugi
-
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. 🚀