آموزش برنامه ریزی آردوینو برای انجام کارهای روزانه

محتویات
در این آموزش ما به شما نشان می دهیم که چگونه کارهای روزانه را با آردوینو انجام دهید. ما هر روز یک LED را در زمان خاصی از روز روشن و خاموش می کنیم. سپس می توانید به راحتی مثال ارائه شده را برای انجام هر کار دیگری تغییر دهید.
این پروژه از ماژول DS1307 Real Time Clock برای پیگیری زمان استفاده می کند. مثال ارائه شده یک LED را هر روز در ساعت 7:00 بعد از ظهر روشن می کند. و هر روز ساعت 9 صبح آن را خاموش می کند.
شما به راحتی می توانید کد را تغییر دهید تا متناسب با پروژه خود بتوانید از زمان بندی استفاده کنید.
مدار اتصال DS1307 به آردوینو
همانطور که در شماتیک زیر نشان داده شده است، ماژول DS1307 RTC را به آردوینو و LED متصل کنید.
همچنین می توانید برای سیم کشی ماژول DS1307 RTC به آردوینو به جدول زیر مراجعه کنید.
DS1307 RTC | اتصالات به آردوینو |
SCL | A5 |
SDA | A4 |
VCC | 5V |
GND | GND |
قطعات مورد نیاز
برای این پروژه به قطعات زیر نیاز دارید.
- Arduino UNO
- ماژول RTC DS1307
- LED
- مقاومت 220 اهم
- برد بورد
- سیم های جامپر
تنظیم زمان ماژول DS1307 RTC
برای این پروژه باید کتابخانه های مورد نیاز را نصب کنید: Time، TimeAlarms و DS1307RTC که توسط Michael Margolis ایجاد شده و توسط Paul Stoffregen نگهداری می شود. برای نصب این کتابخانه ها، در Arduino IDE به Sketch > Include Library > Manage Libraries بروید. سپس نام کتابخانه ها را برای نصب آنها وارد کنید.
برای تنظیم زمان ماژول DS1307 RTC، باید طرح بعدی را روی برد آردوینو آپلود کنید و یک بار آن را اجرا کنید:
#include <Wire.h> #include <TimeLib.h> #include <DS1307RTC.h> const char *monthName[12] = { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec" }; tmElements_t tm; void setup() { bool parse=false; bool config=false; // دریافت تاریخ و ساعت از کامپیوتر if (getDate(__DATE__) && getTime(__TIME__)) { parse = true; // تنظیم ماژول با زمان کامپیوتر if (RTC.write(tm)) { config = true; } } Serial.begin(9600); while (!Serial) ; // صبر برای فعال شدن سریال مانیتور delay(200); if (parse && config) { Serial.print("DS1307 configured Time="); Serial.print(__TIME__); Serial.print(", Date="); Serial.println(__DATE__); } else if (parse) { Serial.println("DS1307 Communication Error :-{"); Serial.println("Please check your circuitry"); } else { Serial.print("Could not parse info from the compiler, Time=\""); Serial.print(__TIME__); Serial.print("\", Date=\""); Serial.print(__DATE__); Serial.println("\""); } } void loop() { } bool getTime(const char *str) { int Hour, Min, Sec; if (sscanf(str, "%d:%d:%d", &Hour, &Min, &Sec) != 3) return false; tm.Hour = Hour; tm.Minute = Min; tm.Second = Sec; return true; } bool getDate(const char *str) { char Month[12]; int Day, Year; uint8_t monthIndex; if (sscanf(str, "%s %d %d", Month, &Day, &Year) != 3) return false; for (monthIndex = 0; monthIndex < 12; monthIndex++) { if (strcmp(Month, monthName[monthIndex]) == 0) break; } if (monthIndex >= 12) return false; tm.Day = Day; tm.Month = monthIndex + 1; tm.Year = CalendarYrToTm(Year); return true; }
این چیزی است که در مانیتور سریال Arduino IDE خود خواهید دید:
هنگامی که زمان و تاریخ به درستی تنظیم شد، می توانید این پروژه را ادامه دهید و طرح نهایی را آپلود کنید.
کد زمان بندی آردوینو برای انجام کار ها با DS1307
کد ارائه شده LED را هر روز صبح ساعت 9:00 صبح خاموش می کند و هر عصر ساعت 7:00 بعد از ظهر آن را روشن می کند. کد کامل در فایل دانلودی انتهای صفحه قرار داده شده است. در اینجا قسمت های مختلف کد را توضیح میدهیم.
درک این کد ساده است و به راحتی قابل تغییر است. برای آشنایی با نحوه عملکرد کد به خواندن این صفحه ادامه دهید.
ابتدا، کتابخانه های مورد نیاز را برای ایجاد هشدارهای زمانی و تعامل با ماژول RTC وارد می کنید:
#include <TimeLib.h> #include <TimeAlarms.h> #include <Wire.h> #include <DS1307RTC.h>
در setup()، زمان RTC را با خط زیر دریافت می کنید:
setSyncProvider(RTC.get);
شما همچنین پیامی را بر روی مانیتور سریال نمایش می دهید تا بدانید که آیا زمان با موفقیت همگام سازی شده است یا خیر:
if (timeStatus() != timeSet) Serial.println("Unable to sync with the RTC"); else Serial.println("RTC has set the system time");
شما می توانید زمان را به صورت دستی تنظیم کنید، به سادگی خط بعدی را ویرایش کنید. این به ویژه برای آزمایش کد های شما مفید است، زیرا می توانید به راحتی زمان را تغییر دهید و تست کنید که آیا آلارم ها فعال می شوند یا خیر.
//setTime(8,29,0,1,1,11); // set time to Saturday 8:29:00am Jan 1 2011
خط زیر عملکرد MorningAlarm را هر روز در ساعت 9:00 صبح فعال می کند. MorningAlarm بعد از loop() تعریف می شود.
Alarm.alarmRepeat(9,0,0, MorningAlarm); // 9:00am every day
برای تغییر زمان کافیست اعداد 9,0,0 را با زمان دلخواه خود تغییر دهید. عدد اول ساعت، عدد دوم برای دقیقه و عدد سوم برای ثانیه است.
عملکرد EveningAlarm هر روز در ساعت 7:00 بعد از ظهر فعال می شود.
Alarm.alarmRepeat(19,0,0, EveningAlarm); // 19:00 -> 7:00pm every day
در loop() شما با فراخوانی تابع digitalClockDisplay() که بعدا در کد تعریف شده است، زمان را در مانیتور سریال نمایش می دهید.
void loop() { digitalClockDisplay(); Alarm.delay(1000); // صبر 1 ثانیه ای برای نمایش ساعت }
توابع MorningAlarm() و EveningAlarm() در زمانی که شما در setup() تعریف کرده اید فراخوانی می شوند.
برای ویرایش زمان بندی ها و عملکرد مورد نظر خود، فقط باید وظایف خود را در توابع MorningAlarm() و EveningAlarm() بنویسید.
void MorningAlarm() { // write here the task to perform every morning Serial.println("Alarm: - turn lights off"); digitalWrite(led, LOW); } void EveningAlarm() { // write here the task to perform every evening Serial.println("Alarm: - turn lights on"); digitalWrite(led, HIGH); }
در اینجا ما فقط یک پیام را روی نمایشگر سریال چاپ می کنیم و یک LED را روشن و خاموش می کنیم. ایده این است که شما از این مثال استفاده کنید تا آردوینو خود را به انجام یک کار مفید هر روز به طور همزمان وادار کنید.
در این آموزش به شما نشان داده ایم که چگونه می توانید کارهای روزانه را با آردوینو انجام دهید. مثال ارائه شده ساده است تا بتوانید به راحتی آن را با پروژه های خود تطبیق دهید. در اینجا چند ایده از وظایفی که می توانید با استفاده از این تکنیک به صورت خودکار انجام دهید، آورده شده است:
- چراغ ها را در یک زمان خاص روشن/خاموش کنید
- پرده های پنجره خود را ببندید
- به حیوانات خانگی خود غذا بدهید
آیا قصد دارید از وظیفه روزانه آردوینو در یکی از پروژه های خود استفاده کنید؟ با ارسال نظر در زیر به ما اطلاع دهید.
موارد موجود در فایل : سورس کامل
برای دانلود فایل ها باید حساب کاربری داشته باشید ثبت نام / ورود