آموزش آردوینو

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

در این آموزش ما به شما نشان می دهیم که چگونه کارهای روزانه را با آردوینو انجام دهید. ما هر روز یک LED را در زمان خاصی از روز روشن و خاموش می کنیم. سپس می توانید به راحتی مثال ارائه شده را برای انجام هر کار دیگری تغییر دهید.

این پروژه از ماژول DS1307 Real Time Clock برای پیگیری زمان استفاده می کند. مثال ارائه شده یک LED را هر روز در ساعت 7:00 بعد از ظهر روشن می کند. و هر روز ساعت 9 صبح آن را خاموش می کند.

شما به راحتی می توانید کد را تغییر دهید تا متناسب با پروژه خود بتوانید از زمان بندی استفاده کنید.

زمان بندی کار ها با برد آردوینو و ماژول DS1307

مدار اتصال DS1307 به آردوینو

همانطور که در شماتیک زیر نشان داده شده است، ماژول DS1307 RTC را به آردوینو و LED متصل کنید.

مدار اتصال DS1307 به آردوینو

همچنین می توانید برای سیم کشی ماژول 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 RTC

هنگامی که زمان و تاریخ به درستی تنظیم شد، می توانید این پروژه را ادامه دهید و طرح نهایی را آپلود کنید.

کد زمان بندی آردوینو برای انجام کار ها با 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 را روشن و خاموش می کنیم. ایده این است که شما از این مثال استفاده کنید تا آردوینو خود را به انجام یک کار مفید هر روز به طور همزمان وادار کنید.

در این آموزش به شما نشان داده ایم که چگونه می توانید کارهای روزانه را با آردوینو انجام دهید. مثال ارائه شده ساده است تا بتوانید به راحتی آن را با پروژه های خود تطبیق دهید. در اینجا چند ایده از وظایفی که می توانید با استفاده از این تکنیک به صورت خودکار انجام دهید، آورده شده است:

  • چراغ ها را در یک زمان خاص روشن/خاموش کنید
  • پرده های پنجره خود را ببندید
  • به حیوانات خانگی خود غذا بدهید
مطلب پیشنهادی:  برد آردوینو نانو چیست؟ مشخصات و راه اندازی Arduino Nano

آیا قصد دارید از وظیفه روزانه آردوینو در یکی از پروژه های خود استفاده کنید؟ با ارسال نظر در زیر به ما اطلاع دهید.

موارد موجود در فایل : سورس کامل

5 (1 نفر)

برای دریافت مطالب جدید کانال تلگرام یا پیج اینستاگرام ما را دنبال کنید.

محمد رحیمی

محمد رحیمی هستم. سعی میکنم در آیرنکس مطالب مفید قرار بدهم. سوالات مربوط به این مطلب را در قسمت نظرات همین مطلب اعلام کنید. سعی میکنم در اسرع وقت به نظرات شما پاسخ بدهم.

برای ارسال تصاویر از انجمن سایت استفاده کنید.

سوالات فنی را در انجمن سایت مطرح کنید تا در مسابقه شرکت کنید. ورود به انجمن

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *