将DS1307 RTC与Raspberry Pi一起使用

Using the DS1307 RTC with the Raspberry Pi

这 DS1307实时时钟(RTC)模块 允许覆盆子Pi关闭时间,即使将其关闭。本指南将带您设置 DS1307 RTC模块 使用覆盆子Pi使用 I2C协议.


你需要什么

  1. 覆盆子pi (任何具有GPIO和I2C支持的模型,例如PI 3,PI 4)
  2. DS1307 RTC模块
  3. CR2032电池 (用于关闭电源的时间)
  4. 面包板和跳线电线
  5. 安装了Python 在覆盆子pi上

步骤1:将DS1307接线到Raspberry Pi

DS1307通过I2C通信,因此我们将其连接到Raspberry Pi的I2C引脚。

连接(I2C模式)

DS1307针 覆盆子Pi Pin
VCC 3.3V或5V(引脚1或2)
gnd 地面(引脚6)
SDA SDA(引脚3,GPIO2)
SCL SCL(引脚5,GPIO3)

步骤2:在Raspberry Pi上启用I2C

  1. 打开Raspberry Pi配置工具:
    sudo raspi-config
    
  2. 导航到 接口选项> I2C 并启用它。
  3. 重新启动覆盆子Pi:
    sudo reboot
    
  4. 验证 检测到DS1307 在I2C公共汽车上:
    sudo i2cdetect -y 1
    
    DS1307应在地址出现 0x68.

步骤3:安装所需库

  1. 更新您的Raspberry Pi的包装列表:
    sudo apt update && sudo apt upgrade -y
    
  2. 安装所需的I2C工具和Python库:
    sudo apt install -y i2c-tools python3-smbus python3-pip
    pip3 install adafruit-circuitpython-ds1307
    

步骤4:在DS1307上设置和阅读时间

Python代码设置日期和时间

一次运行此脚本以设置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!")

python代码以读取DS1307的时间

设置时间后,使用此脚本读取当前日期和时间。

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)

步骤5:将DS1307与Raspberry Pi系统时钟同步

同步 DS1307 RTC时间 随着覆盆子PI系统的时间:

  1. 阅读DS1307 RTC时间 并将其设置为系统时间:
    sudo hwclock -r
    sudo hwclock -s
    
  2. 从Raspberry Pi系统时间设置DS1307 RTC时间:
    sudo hwclock -w
    

步骤6:DS1307 RTC模块的应用

  1. 保留无头覆盆子PI设备上的时间 - 有用 数据记录 项目。
  2. 家庭自动化系统 - 即使在功率损失后,请确保准确的计划事件。
  3. 物联网项目 - 使用DS1307用于 时间戳数据 在断开的环境中。
  4. 气象站 - 存储准确的时间戳 温度和湿度记录.

故障排除

  1. DS1307未检测到(i2cdetect 不显示 0x68)

    • 确保 SDA/SCL引脚 正确连接。
    • 验证这一点 I2C已启用 使用 sudo raspi-config.
  2. 不正确的日期/时间读数

    • 跑步 sudo hwclock -r 检查硬件时钟。
    • 使用RTC时钟重置 sudo hwclock -w.
  3. RTC时间不持续下电之后

    • 确保 CR2032电池 正确安装。
    • 如果电池低或死亡,请更换电池。

结论

DS1307 RTC模块 提供 准确的实时跟踪 对于Raspberry Pi项目,即使关闭了电源。通过遵循本指南,您可以将RTC功能集成到 物联网,自动化和数据记录应用程序. 🚀

发表评论

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.