تعلم الوحدات · الدرس 2.18

وحدة ساعة الوقت الحقيقي (Real Time Clock Module)

العودة إلى الدروس

التعرف على DS1307

ستتعلم استخدام وحدة ساعة الوقت الحقيقي (Real Time Clock Module). DS1307 شريحة قليلة الاستهلاك تنقل العنوان والبيانات تسلسليًا عبر I2C. تحتاج إلى سلكي بيانات SDA و SCL، إضافة إلى التغذية والأرضي.

تعطي الثواني والدقائق والساعات واليوم والتاريخ والشهر والسنة، وتواصل حفظ الوقت من مصدر التغذية الاحتياطي.

المكونات المطلوبة

وحدة ساعة الوقت الحقيقي (DS1307 RTC Module)
وحدة ساعة الوقت الحقيقي (DS1307 RTC Module)

الوحدة وإصداراتها

مخطط دائرة DS1307 والبطارية الاحتياطية
مخطط دائرة DS1307 والبطارية الاحتياطية
شكل الإصدار القديم من الوحدة
شكل الإصدار القديم من الوحدة

التوصيل

مخطط توصيل الساعة
مخطط توصيل الساعة
توصيل DS1307 بلوحة أردوينو (UNO R3 Board)
توصيل DS1307 بلوحة أردوينو (UNO R3 Board)

اتبع الرسم واترك 32K و SQW دون توصيل لأنهما غير مطلوبين. وصّل SCL إلى SCL في UNO، و SDA إلى SDA، و VCC إلى 5V، و GND إلى GND.

البرنامج وقراءة الوقت

قبل رفع البرنامج، تأكد من توفر مكتبة DS1307 في بيئة Arduino IDE. إذا لم تكن مثبتة أو ظهرت رسالة تشير إلى مكتبة مفقودة، فاتبع خطوات التثبيت في قسم «ما هي المكتبات؟» وطرق تثبيتها في الدرس 1.5 «وميض LED وإضافة المكتبات».

افتح ملف البرنامج DS1307_Example.ino من ملفات الدرس في بيئة Arduino IDE. بعد إتمام التوصيلات، وصّل لوحة أردوينو (UNO R3 Board) بالحاسوب بكابل توصيل (USB Cable)، ثم اضغط زر Upload (رفع) لنقل البرنامج إلى اللوحة وتشغيله عليها.

إذا تعذر نقل البرنامج إلى اللوحة، فراجع قسم «رفع البرنامج ومعالجة خطأ الاتصال» في الدرس 1.5 «وميض LED وإضافة المكتبات» للتحقق من اتصال USB واختيار نوع اللوحة والمنفذ التسلسلي في بيئة Arduino IDE.

افتح Serial Monitor لعرض الوقت المقروء؛ راجع الدرس 2.4 «المراقب التسلسلي» لمعرفة طريقة فتحه وضبط سرعة الاتصال وقراءة البيانات.

عرض الوقت في المراقب التسلسلي
عرض الوقت في المراقب التسلسلي

الكود

DS1307_Example/DS1307_Example.ino

//www.elegoo.com
//2018.10.24
#include <Wire.h>
#include <DS3231.h>

DS3231 clock;
RTCDateTime dt;

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

  Serial.println("Initialize RTC module");
  // Initialize DS3231
  clock.begin();

  
  // Manual (YYYY, MM, DD, HH, II, SS
  // clock.setDateTime(2016, 12, 9, 11, 46, 00);
  
  // Send sketch compiling time to Arduino
  clock.setDateTime(__DATE__, __TIME__);    
  /*
  Tips:This command will be executed every time when Arduino restarts. 
       Comment this line out to store the memory of DS3231 module
  */
}

void loop()
{
  dt = clock.getDateTime();

  // For leading zero look to DS3231_dateformat example

  Serial.print("Raw data: ");
  Serial.print(dt.year);   Serial.print("-");
  Serial.print(dt.month);  Serial.print("-");
  Serial.print(dt.day);    Serial.print(" ");
  Serial.print(dt.hour);   Serial.print(":");
  Serial.print(dt.minute); Serial.print(":");
  Serial.print(dt.second); Serial.println("");

  delay(1000);
}

ملفات الدرس والمكتبات

المكتبات المرفقة

ملفات الدرس

100%

عرض الصورة

استخدم + و− للتكبير والتصغير، أو اضغط Esc للإغلاق.