De DS1307 Real-Time Clock (RTC)-module stelt de Raspberry Pi in staat om de tijd bij te houden, zelfs wanneer deze is uitgeschakeld. Deze handleiding leidt je door het instellen van de DS1307 RTC-module op de Raspberry Pi met behulp van het I2C-protocol.
Wat je nodig hebt
- Raspberry Pi (elk model met GPIO- en I2C-ondersteuning, bijv. Pi 3, Pi 4)
- DS1307 RTC-module
- CR2032-batterij (om de tijd bij te houden wanneer het apparaat is uitgeschakeld)
- Breadboard en jumperkabels
- Python geïnstalleerd op de Raspberry Pi
Stap 1: De DS1307 aansluiten op de Raspberry Pi
De DS1307 communiceert via I2C, dus we sluiten deze aan op de I2C-pinnen van de Raspberry Pi.
Aansluitingen (I2C-modus)
| DS1307-pin | Raspberry Pi-pin |
|---|---|
| VCC | 3.3V of 5V (pin 1 of 2) |
| GND | Ground (pin 6) |
| SDA | SDA (pin 3, GPIO2) |
| SCL | SCL (pin 5, GPIO3) |
Stap 2: I2C inschakelen op de Raspberry Pi
- Open het configuratieprogramma van de Raspberry Pi:
sudo raspi-config - Navigeer naar Interface Options > I2C en schakel dit in.
- Start de Raspberry Pi opnieuw op:
sudo reboot - Controleer of de DS1307 wordt gedetecteerd op de I2C-bus:
De DS1307 zou moeten verschijnen op adressudo i2cdetect -y 10x68.
Stap 3: Vereiste bibliotheken installeren
- Update de pakketlijst van je 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: De tijd instellen en uitlezen 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
# Initialiseer I2C-bus en DS1307
i2c = busio.I2C(board.SCL, board.SDA)
rtc = adafruit_ds1307.DS1307(i2c)
# Stel de datum en tijd in (Jaar, Maand, Dag, Uur, Minuut, Seconde, Weekdag, Zomertijd)
rtc.datetime = time.struct_time((2025, 1, 1, 12, 0, 0, 0, -1, -1))
print("RTC-datum en -tijd ingesteld!")
Python-code om de tijd uit te lezen van de DS1307
Gebruik na het instellen van de tijd dit script om de huidige datum en tijd uit te lezen.
import time
import board
import busio
import adafruit_ds1307
# Initialiseer I2C-bus en DS1307
i2c = busio.I2C(board.SCL, board.SDA)
rtc = adafruit_ds1307.DS1307(i2c)
while True:
current_time = rtc.datetime
print(f"Datum: {current_time.tm_year}-{current_time.tm_mon:02d}-{current_time.tm_mday:02d}")
print(f"Tijd: {current_time.tm_hour:02d}:{current_time.tm_min:02d}:{current_time.tm_sec:02d}")
time.sleep(1)
Stap 5: De DS1307 synchroniseren met de systeemklok van de Raspberry Pi
Om de DS1307 RTC-tijd te synchroniseren met de systeemtijd van de Raspberry Pi:
-
Lees de DS1307 RTC-tijd uit en stel deze in als systeemtijd:
sudo hwclock -r sudo hwclock -s -
Stel de DS1307 RTC-tijd in op basis van de systeemtijd van de Raspberry Pi:
sudo hwclock -w
Stap 6: Toepassingen van de DS1307 RTC-module
- Tijd bijhouden op headless Raspberry Pi-apparaten – Handig voor dataregistratie-projecten.
- Domoticasystemen – Zorg voor nauwkeurige geplande gebeurtenissen, zelfs na stroomuitval.
- IoT-projecten – Gebruik de DS1307 voor het voorzien van tijdstempels in omgevingen zonder netwerkverbinding.
- Weerstations – Sla nauwkeurige tijdstempels op voor temperatuur- en vochtigheidsgegevens.
Probleemoplossing
-
DS1307 niet gedetecteerd (
i2cdetecttoont geen0x68)- Zorg ervoor dat de SDA/SCL-pinnen correct zijn aangesloten.
- Controleer of I2C is ingeschakeld via
sudo raspi-config.
-
Onjuiste datum/tijd-waarden
- Voer
sudo hwclock -ruit om de hardwareklok te controleren. - Reset de RTC-klok met
sudo hwclock -w.
- Voer
-
RTC-tijd blijft niet behouden na uitschakelen
- Zorg ervoor dat de CR2032-batterij correct is geplaatst.
- Vervang de batterij als deze leeg of bijna leeg is.
Conclusie
De DS1307 RTC-module biedt nauwkeurige real-time tijdregistratie voor Raspberry Pi-projecten, zelfs wanneer deze zijn uitgeschakeld. Door deze handleiding te volgen, kun je RTC-functionaliteit integreren in IoT-, automatiserings- en dataregistratietoepassingen. 🚀





