باستخدام DS1307 RTC مع Raspberry Pi

Using the DS1307 RTC with the Raspberry Pi

ال DS1307 وحدة الساعة في الوقت الفعلي (RTC) يسمح لـ Raspberry Pi بتتبع الوقت حتى عندما يتم تشغيله. هذا الدليل سوف يسير لك من خلال إعداد DS1307 وحدة RTC مع Raspberry Pi باستخدام بروتوكول I2C.


ماذا ستحتاج

  1. التوت بي (أي نموذج مع دعم GPIO و I2C ، على سبيل المثال ، PI 3 ، PI 4)
  2. DS1307 وحدة RTC
  3. بطارية CR2032 (للحفاظ على الوقت عند تشغيله)
  4. الأسلاك الأسلاك والبلوز
  5. بيثون مثبت على التوت PI

الخطوة 1: توصيل DS1307 إلى Raspberry Pi

ال DS1307 يتواصل عبر I2C، لذلك نقوم بتوصيله بدبابيس I2C في Raspberry Pi.

الاتصالات (وضع I2C)

DS1307 دبوس التوت بي دبوس
VCC 3.3V أو 5V (PIN 1 أو 2)
GND الأرض (دبوس 6)
SDA SDA (PIN 3 ، GPIO2)
SCL SCL (PIN 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

رمز بيثون لتعيين التاريخ والوقت

قم بتشغيل هذا البرنامج النصي مرة واحدة لتعيين ساعة 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!")

رمز بيثون لقراءة الوقت من 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. قم بتعيين وقت RTC DS1307 من وقت نظام Raspberry PI:
    sudo hwclock -w
    

الخطوة 6: تطبيقات وحدة DS1307 RTC

  1. الحفاظ على الوقت على أجهزة Raspberry 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.