Met behulp van de DS1307 RTC met de Raspberry Pi

Using the DS1307 RTC with the Raspberry Pi

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

  1. Raspberry Pi (Elk model met GPIO- en I2C -ondersteuning, bijvoorbeeld PI 3, PI 4)
  2. DS1307 RTC -module
  3. CR2032 -batterij (voor het handhaven van de tijd wanneer het wordt uitgeschakeld)
  4. Breadboard en jumper draden
  5. 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

  1. Open de Raspberry Pi -configuratie -tool:
    sudo raspi-config
    
  2. Navigeren naar Interface -opties> I2C en schakel het in.
  3. Start de Raspberry Pi opnieuw op:
    sudo reboot
    
  4. Controleer of de DS1307 wordt gedetecteerd Op de I2C -bus:
    sudo i2cdetect -y 1
    
    De DS1307 zou op adres moeten verschijnen 0x68.

Stap 3: Installeer vereiste bibliotheken

  1. Update de pakketlijst van uw Raspberry Pi:
    sudo apt update && sudo apt upgrade -y
    
  2. 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:

  1. Lees de DS1307 RTC -tijd en stel het in als de systeemtijd:
    sudo hwclock -r
    sudo hwclock -s
    
  2. Stel de DS1307 RTC -tijd in vanaf de Raspberry Pi -systeemtijd:
    sudo hwclock -w
    

Stap 6: Toepassingen van de DS1307 RTC -module

  1. Tijd behouden op headless Raspberry PI -apparaten - Handig voor Gegevenslogboekregistratie projecten.
  2. Home Automation Systems - Zorg voor nauwkeurige geplande gebeurtenissen, zelfs na stroomverlies.
  3. IoT -projecten - Gebruik de DS1307 voor tijdstemplinggegevens in losgekoppelde omgevingen.
  4. Weerstations - Bewaar nauwkeurige tijdstempels voor Temperatuur- en vochtigheidsregistratie.

Problemen oplossen

  1. DS1307 niet gedetecteerd (i2cdetect toont niet 0x68)

    • Zorg voor de SDA/SCL -pinnen zijn correct bedraad.
    • Controleer dat I2C is ingeschakeld gebruik sudo raspi-config.
  2. Onjuiste datum/tijd metingen

    • Loop sudo hwclock -r om de hardwareklok te controleren.
    • Reset de RTC -klok met behulp van sudo hwclock -w.
  3. 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. 🚀

Laat een reactie achter

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.