ساعة منبه باستخدام الأردوينو


pasted image 0 16

مقدمة

سنقوم في هذه التجربة بصناعة ساعة منبه باستخدام وحدة DS3231 real time clock module وصافرة إنذار، بالإضافة إلى شاشة LCD. ويمكن إضافة خيار في شاشة LCD لعرض درجة الحرارة وذلك لأن الوحدة DS3231 تمتلك حساس للحرارة.

الأدوات المستخدمة

Screen Shot 1439 04 23 at 2.11.58 AM

الأداة العدد ملاحظات
اردوينو اونو 1
شاشة عرض LCD 16X2 1
وحدة DS3231 RTC Module 1
صافرة Buzzer 1
مقاومة متغيرة 10k 1
مقاومة ثابتة 220 1
أسلاك توصيل حسب الحاجة
لوحة توصيل 1

الجزء النظري

تقوم القطعة DS3231 بمتابعة تحديث الوقت والتاريخ حتى ولو كانت غير متصلة بتيار كهربائي لكونها تحتوي على بطارية داخلية ذات جهد 3V. سيقوم الجهاز بمقارنة الوقت والتاريخ الموجود في الكود البرمجي بالتاريخ والوقت الموجود في القطعة DS3231، وسينطلق المنبه فور تطابقهما. سيستمر المنبه لمدة دقيقتين وبالإمكان تعديل ذلك عبر الكود البرمجي. وسيتم عرض الوقت والتاريخ على شاشة LCD.

خطوات التوصيل

اتبع الصورة التالية لتتمكن من توصيل الدائرة

alarm bb

الكود البرمجي

نحتاج إلى تحميل المكتبتين (DS3231.h و LiquidCrystal.h) ليعمل الكود بدون أخطاء

قم بنسخ الكود ولصقه في برنامج الاردوينو وشاهد إنجازك !

الكود البرمجي

شرح الكود

بدايةً سنقوم بإدراج المكتبات اللازمة لهذا الكود وهن DS3231 و wire بالإضافة إلى LCD.

#include <DS3231.h>
#include <Wire.h>
#include <LiquidCrystal.h>

ثم نقوم بتعريف المتغيرات المستخدمة في هذا الكود.
LiquidCrystal lcd(2, 3, 4, 5, 6, 7);
DS3231  rtc(SDA, SCL);
Time  t;
#define buz 11

نقوم بضبط وقت المنبه عن طريق تغيير القيم التالية
int hour =11; //الساعة
int minute =32; //الدقائق

هذه الأكواد المكتوبة أدناه هي مخصصة لتعريف اليوم والتاريخ والوقت الذي ستبدأ العمل به قطعة RTC.
//rtc.setDOW(WEDNESDAY);     // Set Day-of-Week to SUNDAY
//rtc.setTime(12, 0, 0);     // Set the time to 12:00:00 (24hr format)
//rtc.setDate(1, 1, 2014);   // Set the date to January 1st, 2014

في دالة loop سوف نقوم باستقبال الوقت وتخزينه داخل متغيرات والتي سوف نقوم بمقارنتها بقيم أخرى لاحقًا لتشغيل المنبه.
t = rtc.getTime();
Hor = t.hour;
Min = t.min;
Sec = t.sec;

ثم نقوم بإظهار الوقت والتاريخ على شاشة LCD

lcd.setCursor(0,0);
lcd.print(“Time: “);
lcd.print(rtc.getTimeStr());
lcd.setCursor(0,1);
lcd.print(“Date: “);
lcd.print(rtc.getDateStr());

بعد ذلك نقوم بمقارنة الوقت الحالي مع الوقت المحدد سابقًا للمنبه، فإذا تطابقت القيمتان سيعمل المنبه لمدة دقيقتين (ويمكن تعديل هذه المدة)

if( Hor == hour &&  (Min == minute || Min > minute)) //Comparing the current time with the Alarm time
{
Buzzer();
Buzzer();
lcd.clear();
lcd.print(“Alarm ON”);
lcd.setCursor(0,1);
lcd.print(“Alarming”);
Buzzer();
Buzzer();
}

المصدر

مصدر التجربة

اترك تعليقاً

لن يتم نشر عنوان بريدك الإلكتروني. الحقول الإلزامية مشار إليها بـ *