ال DS1307 وحدة الساعة في الوقت الفعلي (RTC) يسمح لـ Raspberry Pi بتتبع الوقت حتى عندما يتم تشغيله. هذا الدليل سوف يسير لك من خلال إعداد DS1307 وحدة RTC مع Raspberry Pi باستخدام بروتوكول I2C.
ماذا ستحتاج
- التوت بي (أي نموذج مع دعم GPIO و I2C ، على سبيل المثال ، PI 3 ، PI 4)
- DS1307 وحدة RTC
- بطارية CR2032 (للحفاظ على الوقت عند تشغيله)
- الأسلاك الأسلاك والبلوز
- بيثون مثبت على التوت 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
- افتح أداة تكوين Raspberry Pi:
sudo raspi-config
- انتقل إلى خيارات الواجهة> i2c وتمكينها.
- أعد تشغيل Raspberry Pi:
sudo reboot
- تحقق من أن تم الكشف عن DS1307 في حافلة I2C:
ال يجب أن يظهر DS1307 على العنوانsudo i2cdetect -y 1
0x68
.
الخطوة 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
رمز بيثون لتعيين التاريخ والوقت
قم بتشغيل هذا البرنامج النصي مرة واحدة لتعيين ساعة 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:
-
اقرأ وقت DS1307 RTC وتعيينه كوقت النظام:
sudo hwclock -r sudo hwclock -s
-
قم بتعيين وقت RTC DS1307 من وقت نظام 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 في تطبيقات إنترنت الأشياء والأتمتة وتسجيل البيانات. 🚀