ได้รับส่งมอบฟรีในคําสั่งทั้งหมดมากกว่า 20 ปอนด์!

ใช้ DS1307 RTC กับ Raspberry Pi

Using the DS1307 RTC with the Raspberry Pi

DS1307 โมดูลนาฬิกาเวลาจริง (RTC) ช่วยให้ Raspberry Pi สามารถติดตามเวลาได้แม้ขณะปิดเครื่องอยู่ คู่มือนี้จะแนะนำคุณตลอดขั้นตอนการตั้งค่า โมดูล RTC DS1307 กับ Raspberry Pi โดยใช้ โปรโตคอล I2C.


สิ่งที่คุณต้องมี

  1. Raspberry Pi (รุ่นใดก็ได้ที่รองรับ GPIO และ I2C เช่น Pi 3, Pi 4)
  2. โมดูล RTC DS1307
  3. แบตเตอรี่ CR2032 (สำหรับคงเวลาเมื่อปิดเครื่อง)
  4. เบรดบอร์ดและสายจัมเปอร์
  5. ติดตั้ง Python แล้ว บน Raspberry Pi

ขั้นตอนที่ 1: การเดินสายไฟของ DS1307 ไปยัง Raspberry Pi

DS1307 สื่อสารผ่าน I2C, ดังนั้นเราจึงเชื่อมต่อมันเข้ากับขา I2C ของ Raspberry Pi.

การเชื่อมต่อ (โหมด I2C)

DS1307 ปักหมุด พิน Raspberry Pi
VCC 3.3V หรือ 5V (ขา 1 หรือ 2)
GND กราวด์ (ขา 6)
SDA SDA (ขา 3, GPIO2)
SCL SCL (ขา 5, GPIO3)

ขั้นตอนที่ 2: เปิดใช้งาน I2C บน Raspberry Pi

  1. เปิดเครื่องมือกำหนดค่า Raspberry Pi:
    sudo raspi-config
    
  2. ไปที่ ตัวเลือกอินเทอร์เฟซ > I2C และเปิดใช้งาน
  3. รีบูต Raspberry 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

# เริ่มต้นบัส I2C และ DS1307
i2c = busio.I2C(board.SCL, board.SDA)
rtc = adafruit_ds1307.DS1307(i2c)

# ตั้งวันที่และเวลา (ปี, เดือน, วัน, ชั่วโมง, นาที, วินาที, วันในสัปดาห์, DST)
rtc.datetime = time.struct_time((2025, 1, 1, 12, 0, 0, 0, -1, -1))

print("ตั้งวันที่และเวลา RTC แล้ว!")

โค้ด Python เพื่ออ่านเวลาจาก DS1307

หลังจากตั้งค่าเวลาแล้ว ให้ใช้สคริปต์นี้เพื่ออ่านวันที่และเวลาปัจจุบัน

import time
import board
import busio
import adafruit_ds1307

# เริ่มต้นบัส I2C และ 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 กับเวลาในระบบของ Raspberry Pi:

  1. อ่าน DS1307 RTC เวลา และตั้งให้เป็นเวลาในระบบ:
    sudo hwclock -r
    sudo hwclock -s
    
  2. ตั้งค่า DS1307 เวลา RTC จากเวลาในระบบของ Raspberry Pi:
    sudo hwclock -w
    

ขั้นตอนที่ 6: การประยุกต์ใช้ของ DS1307 โมดูล RTC

  1. การรักษาเวลาบนอุปกรณ์ Raspberry Pi แบบ Headless – มีประโยชน์สำหรับ การบันทึกข้อมูล โครงการ.
  2. ระบบอัตโนมัติภายในบ้าน – รับรองความถูกต้องของเหตุการณ์ตามกำหนดการแม้หลังจากไฟดับ
  3. โครงการ IoT – ใช้ 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 เข้ากับ แอปพลิเคชันด้าน IoT, ระบบอัตโนมัติ และการบันทึกข้อมูล. 🚀

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.

แสดงความคิดเห็น