الـ وحدة الساعة الحقيقية (RTC) DS1307 يسمح لـ Raspberry Pi بتتبع الوقت حتى عند إيقاف تشغيله. سيرشدك هذا الدليل خلال إعداد الـ وحدة DS1307 RTC مع Raspberry Pi باستخدام الـ بروتوكول I2C.
ما ستحتاج إليه
- راسبيري باي (أي نموذج يدعم GPIO وI2C، مثل Pi 3 وPi 4)
- وحدة RTC DS1307
- بطارية CR2032 (للحفاظ على الوقت عند انقطاع التيار)
- لوحة تجارب وأسلاك توصيل
- تم تثبيت 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
- افتح أداة تهيئة Raspberry Pi:
sudo raspi-config - انتقل إلى خيارات الواجهة > I2C وفعّلها.
- أعد تشغيل Raspberry Pi:
sudo reboot - تحقق من أن الـ DS1307 يتم اكتشاف على حافلة I2C:
الـ DS1307 يجب أن يظهر في العنوانsudo i2cdetect -y 10x68.
الخطوة 3: تثبيت المكتبات المطلوبة
- حدّث قائمة الحزم على جهاز Raspberry Pi لديك:
sudo apt update && sudo apt upgrade -y - ثبّت أدوات 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:
-
اقرأ الـ DS1307 وقت RTC وقم بتعيينها كوقت النظام:
sudo hwclock -r sudo hwclock -s -
اضبط الـ DS1307 وقت RTC من وقت نظام Raspberry Pi:
sudo hwclock -w
الخطوة 6: تطبيقات الـ DS1307 وحدة RTC
- الحفاظ على الوقت على أجهزة Raspberry Pi بدون شاشة – مفيد لـ تسجيل البيانات مشاريع.
- أنظمة أتمتة المنازل – ضمان دقة الأحداث المجدولة حتى بعد انقطاع الكهرباء.
- مشاريع إنترنت الأشياء – استخدم الـ DS1307 لـ بيانات وضع الطابع الزمني في البيئات غير المتصلة.
- محطات الطقس – خزّن الطوابع الزمنية الدقيقة لـ سجلات درجة الحرارة والرطوبة.
استكشاف الأخطاء وإصلاحها
-
DS1307 غير مُكتشف (
i2cdetectلا يظهر0x68)- ضمان الـ دبابيس SDA/SCL موصلة بشكل صحيح.
- تحقَّق من أن تم تمكين I2C باستخدام
sudo raspi-config.
-
قراءات تاريخ/وقت غير صحيحة
- تشغيل
sudo hwclock -rللتحقق من ساعة العتاد. - أعد ضبط ساعة RTC باستخدام
sudo hwclock -w.
- تشغيل
-
الوقت في RTC لا يستمر بعد إيقاف التشغيل
- تأكد من الـ بطارية CR2032 تم تثبيته بشكل صحيح.
- استبدل البطارية إذا كانت منخفضة الشحن أو تالفة.
الخلاصة
الـ DS1307 وحدة RTC يوفر تتبع دقيق في الوقت الحقيقي لمشاريع Raspberry Pi، حتى عند إيقاف التشغيل. باتباع هذا الدليل، يمكنك دمج وظيفة RTC في تطبيقات إنترنت الأشياء والأتمتة وتسجيل البيانات. 🚀





