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

كيفية استخدام DS1307 RTC مع Arduino

How to Use the DS1307 RTC with the Arduino

The وحدة ساعة الوقت الحقيقي DS1307 (RTC) هي وحدة مستخدمة على نطاق واسع للحفاظ على الوقت في مشاريع Arduino. تحافظ على الوقت بدقة حتى عند إيقاف تشغيل Arduino، وذلك بفضل بطاريتها الاحتياطية المدمجة. في هذا الدرس، ستتعلم كيفية توصيل وبرمجة وحدة DS1307 RTC مع Arduino لعرض وتحديث الوقت.


ما ستحتاجه

  1. لوحة Arduino (مثل: Uno, Mega, Nano)
  2. وحدة DS1307 RTC
  3. لوحة تجارب وأسلاك توصيل
  4. حاسوب مع تثبيت Arduino IDE
  5. المكتبات: RTClib

الخطوة 1: توصيل وحدة DS1307 RTC

يتواصل DS1307 RTC مع Arduino عبر بروتوكول I2C.

الاتصالات

دبوس RTC دبوس Arduino
VCC 5V
GND GND
SDA A4
SCL A5

ملاحظة: إذا كنت تستخدم لوحة Arduino ذات دبابيس SDA و SCL مخصصة (مثل Mega)، وصل دبابيس SDA/SCL في وحدة RTC بتلك الدبابيس بدلاً من ذلك.


الخطوة 2: تثبيت المكتبة المطلوبة

للتعامل مع DS1307 RTC، ستحتاج إلى مكتبة RTClib.

خطوات تثبيت RTClib

  1. افتح Arduino IDE.
  2. اذهب إلى Sketch > Include Library > Manage Libraries.
  3. ابحث عن "RTClib" في مدير المكتبات.
  4. انقر Install.

الخطوة 3: رفع مثال الشيفرة

إليك مثال على سكيتش لعرض التاريخ والوقت الحالي من وحدة DS1307:

مثال الشيفرة

#include 
#include 

RTC_DS1307 rtc;

void setup() {
  Serial.begin(9600);

  // Initialize the RTC
  if (!rtc.begin()) {
    Serial.println("Couldn't find RTC");
    while (1);
  }

  // Check if the RTC is running
  if (!rtc.isrunning()) {
    Serial.println("RTC is NOT running! Setting the time...");
    rtc.adjust(DateTime(F(__DATE__), F(__TIME__)));
  }
}

void loop() {
  DateTime now = rtc.now();

  // Display the time
  Serial.print(now.hour());
  Serial.print(":");
  if (now.minute() < 10) {
    Serial.print("0");
  }
  Serial.print(now.minute());
  Serial.print(":");
  if (now.second() < 10) {
    Serial.print("0");
  }
  Serial.println(now.second());

  // Display the date
  Serial.print(now.day());
  Serial.print("/");
  Serial.print(now.month());
  Serial.print("/");
  Serial.println(now.year());

  delay(1000); // Update every second
}

الخطوة 4: ضبط الوقت

إذا كانت وحدة RTC لا تعمل أو بحاجة إلى تحديث الوقت، يمكنك استخدام السطر التالي داخل دالة setup():

rtc.adjust(DateTime(F(__DATE__), F(__TIME__)));
  • F(__DATE__) و F(__TIME__) هما ماكرو يقومان بتعيين التاريخ والوقت من حاسوبك عند رفع السكيتش.

لتعيين وقت محدد يدوياً، استخدم:

rtc.adjust(DateTime(2025, 1, 1, 12, 0, 0)); // YYYY, MM, DD, HH, MM, SS

الخطوة 5: استخدام بيانات RTC في مشاريعك

يمكن لـ DS1307 توفير بيانات الوقت لتطبيقات متنوعة، مثل:

  1. تسجيل البيانات: وضع طوابع زمنية لقراءات المستشعرات أو الأحداث.
  2. المنبهات والمؤقتات: تشغيل إجراءات بناءً على أوقات محددة.
  3. الساعات: إنشاء ساعات رقمية أو تناظرية مع شاشات عرض.

مثال: تشغيل إجراء في وقت محدد

void loop() {
  DateTime now = rtc.now();

  // Check if it's 8:00 AM
  if (now.hour() == 8 && now.minute() == 0 && now.second() == 0) {
    Serial.println("It's 8:00 AM!");
  }

  delay(1000);
}

استكشاف الأخطاء وإصلاحها

  1. تعذر العثور على RTC:

    • تحقق من وصلات SDA و SCL.
    • تأكد من تركيب البطارية بشكل صحيح.
  2. الوقت غير صحيح:

    • استخدم rtc.adjust() لإعادة ضبط الوقت.
    • تحقق من بطارية RTC الفارغة أو المفقودة.
  3. بيانات غير متسقة:

    • تأكد من وجود مصدر طاقة مستقر لـ Arduino ووحدة RTC.

تطبيقات DS1307 RTC

  1. ساعات ومنابه الوقت الحقيقي
  2. أنظمة الأتمتة المعتمدة على الوقت
  3. تسجيل البيانات مع طوابع زمنية
  4. أنظمة التذكير

الخلاصة

تعد وحدة DS1307 RTC أداة ممتازة لإضافة وظيفة حفظ الوقت إلى مشاريع Arduino الخاصة بك. باتباع هذا الدليل، يمكنك إعداد RTC، عرض الوقت والتاريخ، ودمجه في تطبيقات مختلفة. جرب دمج DS1307 مع شاشات عرض أو مستشعرات لبناء مشاريع أكثر ديناميكية!

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.

1 تعليق

Beim Verwenden des Befehls rtc.adjust(DateTime(F(DATE), F(TIME))); wird der sketch zwar fehlerlos kompiliert und hochgeladen, beim Ausführen des Programms stürzt das Programm aber ab, was auch zur Folge hat, dass die USB-Verbindung zum PC crasht und ein Hochladen von sketchs nicht mehr möglich ist. Abhilfe schafft dann nur ein Trick?. Nach einem Doppelclick auf die Reset-Taste des Boards funktioniert die USB-Verbindung wieder.

Ulf Jacob,

اترك تعليقًا