الحصول على تسليم مجانا على جميع الطلبات أكثر من 20 جنيه!

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

Using the DS1307 RTC with the Raspberry Pi

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


ما ستحتاج إليه

  1. راسبيري باي (أي نموذج يدعم 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)
الأرضي الأرضي (Pin 6)
هيئة تطوير الضواحي SDA (Pin 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)

# ضبط التاريخ والوقت (السنة، الشهر، اليوم، الساعة، الدقيقة، الثانية، يوم الأسبوع، التوقيت الصيفي)
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 بدون شاشة – مفيد لـ تسجيل البيانات مشاريع.
  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.

اترك تعليقًا