De DS1307 Real-Time Clock (RTC) -module Hiermee kan de Raspberry Pi de tijd bijhouden, zelfs wanneer deze wordt uitgeschakeld. Deze gids zal je doorlopen door het opzetten van de DS1307 RTC -module met de frambozen pi met behulp van de I2C -protocol.
Wat u nodig hebt
- Raspberry Pi (Elk model met GPIO- en I2C -ondersteuning, bijvoorbeeld PI 3, PI 4)
- DS1307 RTC -module
- CR2032 -batterij (voor het handhaven van de tijd wanneer het wordt uitgeschakeld)
- Breadboard en jumper draden
- Python geïnstalleerd Op de Raspberry Pi
Stap 1: De DS1307 bedraden naar de Raspberry Pi
De DS1307 communiceert via I2C, dus we verbinden het met de I2C -pennen van de Raspberry Pi.
Verbindingen (I2C -modus)
DS1307 PIN | Raspberry Pi Pin |
---|---|
VCC | 3.3V of 5V (pin 1 of 2) |
GND | Grond (pin 6) |
SDA | SDA (Pin 3, GPIO2) |
SCL | SCL (Pin 5, GPIO3) |
Stap 2: Schakel I2C in op de Raspberry Pi
- Open de Raspberry Pi -configuratie -tool:
sudo raspi-config
- Navigeren naar Interface -opties> I2C en schakel het in.
- Start de Raspberry Pi opnieuw op:
sudo reboot
- Controleer of de DS1307 wordt gedetecteerd Op de I2C -bus:
De DS1307 zou op adres moeten verschijnensudo i2cdetect -y 1
0x68
.
Stap 3: Installeer vereiste bibliotheken
- Update de pakketlijst van uw Raspberry Pi:
sudo apt update && sudo apt upgrade -y
- Installeer de vereiste I2C -tools en Python -bibliotheken:
sudo apt install -y i2c-tools python3-smbus python3-pip pip3 install adafruit-circuitpython-ds1307
Stap 4: Tijd instellen en lezen op de DS1307
Python -code om de datum en tijd in te stellen
Voer dit script eenmaal uit om de RTC -klok in te stellen.
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 -code om tijd te lezen van DS1307
Gebruik dit script na het instellen van de tijd om de huidige datum en tijd te lezen.
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)
Stap 5: DS1307 synchroniseren met de Raspberry Pi -systeemklok
Om de DS1307 RTC -tijd met de Raspberry Pi -systeemtijd:
-
Lees de DS1307 RTC -tijd en stel het in als de systeemtijd:
sudo hwclock -r sudo hwclock -s
-
Stel de DS1307 RTC -tijd in vanaf de Raspberry Pi -systeemtijd:
sudo hwclock -w
Stap 6: Toepassingen van de DS1307 RTC -module
- Tijd behouden op headless Raspberry PI -apparaten - Handig voor Gegevenslogboekregistratie projecten.
- Home Automation Systems - Zorg voor nauwkeurige geplande gebeurtenissen, zelfs na stroomverlies.
- IoT -projecten - Gebruik de DS1307 voor tijdstemplinggegevens in losgekoppelde omgevingen.
- Weerstations - Bewaar nauwkeurige tijdstempels voor Temperatuur- en vochtigheidsregistratie.
Problemen oplossen
-
DS1307 niet gedetecteerd (
i2cdetect
toont niet0x68
)- Zorg voor de SDA/SCL -pinnen zijn correct bedraad.
- Controleer dat I2C is ingeschakeld gebruik
sudo raspi-config
.
-
Onjuiste datum/tijd metingen
- Loop
sudo hwclock -r
om de hardwareklok te controleren. - Reset de RTC -klok met behulp van
sudo hwclock -w
.
- Loop
-
RTC -tijd die niet aanhoudt na stroomuiting
- Zorg voor de CR2032 -batterij is correct geïnstalleerd.
- Vervang de batterij als deze laag of dood is.
Conclusie
De DS1307 RTC -module bieden Nauwkeurige realtime tracking Voor Raspberry PI -projecten, zelfs wanneer afgezet. Door deze gids te volgen, kunt u RTC -functionaliteit integreren in IoT-, Automation- en Data Loggings -applicaties. 🚀