De DS1307 realtidsklocka (RTC) -modul Tillåter Raspberry Pi att hålla reda på tid även när den är avstängd. Den här guiden kommer att leda dig genom att ställa in DS1307 RTC -modul med Raspberry Pi med I2C -protokollet.
Vad du behöver
- Hallon (Varje modell med GPIO och I2C -stöd, t.ex. PI 3, PI 4)
- DS1307 RTC -modul
- CR2032 -batteri (för att upprätthålla tiden när den är avstängd)
- Breadboard och jumpertrådar
- Python installerad på Raspberry Pi
Steg 1: Kopplar DS1307 till Raspberry Pi
De DS1307 kommunicerar via I2C, så vi ansluter den till Raspberry Pi's i2C -stift.
Anslutningar (I2C -läge)
DS1307 -stift | Hallon pi |
---|---|
Vcc | 3.3V eller 5V (stift 1 eller 2) |
Gard | Mark (stift 6) |
SDA | SDA (stift 3, GPIO2) |
SCL | SCL (stift 5, GPIO3) |
Steg 2: Aktivera i2c på Raspberry Pi
- Öppna Raspberry PI -konfigurationsverktyget:
sudo raspi-config
- Navigera till Gränssnittsalternativ> i2c och aktivera det.
- Starta om Raspberry Pi:
sudo reboot
- Verifiera att DS1307 upptäcks på i2c -bussen:
De DS1307 ska visas på adressensudo i2cdetect -y 1
0x68
.
Steg 3: Installera obligatoriska bibliotek
- Uppdatera din Raspberry Pis paketlista:
sudo apt update && sudo apt upgrade -y
- Installera nödvändiga I2C -verktyg och Python -bibliotek:
sudo apt install -y i2c-tools python3-smbus python3-pip pip3 install adafruit-circuitpython-ds1307
Steg 4: Inställning och läsningstid på DS1307
Python -kod för att ställa in datum och tid
Kör detta skript en gång för att ställa in RTC -klockan.
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!")
Python -kod för att läsa tid från DS1307
När du har ställt in tiden, använd det här skriptet för att läsa det aktuella datumet och tiden.
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)
Steg 5: Synkronisering av DS1307 med Raspberry PI -systemklockan
För att synkronisera DS1307 RTC -tid Med Raspberry Pi -systemet:
-
Läs DS1307 RTC -tiden och ställ in det som systemtid:
sudo hwclock -r sudo hwclock -s
-
Ställ in DS1307 RTC -tiden från Raspberry PI -systemet:
sudo hwclock -w
Steg 6: Tillämpningar av DS1307 RTC -modulen
- Att hålla tiden på huvudlösa Raspberry Pi -enheter - Användbar för dataloggning projekt.
- Hemautomationssystem - Säkerställa exakta schemalagda händelser även efter kraftförlust.
- IoT -projekt - Använd DS1307 för tidsstämpeldata i frånkopplade miljöer.
- Väderstationer - Förvara exakta tidsstämplar för Temperatur- och fuktighetsregister.
Felsökning
-
DS1307 inte upptäckt (
i2cdetect
visar inte0x68
)- Se till SDA/SCL -stift är korrekt kopplade.
- Verifiera att I2c är aktiverad användning
sudo raspi-config
.
-
Felaktiga datum/tidsavläsningar
- Sikt
sudo hwclock -r
För att kontrollera hårdvaruklockan. - Återställ RTC -klockan med
sudo hwclock -w
.
- Sikt
-
RTC -tid som inte fortsätter efter avstängning
- Se till CR2032 -batteri är korrekt installerad.
- Byt batteriet om det är lågt eller dött.
Slutsats
De DS1307 RTC -modul tillhandahåller Exakt realtidsspårning För Raspberry PI -projekt, även när de är avstängda. Genom att följa den här guiden kan du integrera RTC -funktionalitet i IoT, automatisering och dataloggningsapplikationer. 🚀