تحلیل کتابخانه

تحلیل و بررسی کتابخانه SchedulerESP8266.h

scheduleresp8266-h-arduino-library-digispark
نوشته شده توسط معین صابری

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

ماژول وای فای ESP8266، همانطور که اطلاع دارید، یک ماژول وای فای با قابلیت برنامه نویسی و اجرای برنامه های کاربر است. از طرفی این ماژول می تواند با اتصال به سرویس ساعت NTP، زمان را به صورت آنلاین از سرور دریافت کند. سپس به کمک این پارامتر، زمانبندی اجرا پروسه ها صورت گیرد. برای این مورد و سادگی در زمانبندی، کتابخانه SchedulerESP8266.h توسعه یافته است. به کمک این کتابخانه می توان اجرای یک تابع را زمانبندی نمود. حتی می توان با تعریف روزهای هفته، اجرا پروسه ها را کنترل نمود. در این آموزش به تحلیل و بررسی این کتابخانه کلیدی می پردازیم. مطابق رویه معمول نصب کتابخانه و الزامات فنی آن ابتدا مورد بحث قرار می گیرد. سپس در ادامه تحلیل و بررسی توابع کلیدی و در نهایت با اجرای یک مثال، آموزش به پایان می رسد. در ادامه با  مرجع تخصصی کتابخانه آردوینو به زبان فارسی ، دیجی اسپارک همراه باشید.

 


نصب کتابخانه SchedulerESP8266.h


همانطور که اطلاع دارید، کتابخانه ها یکی از ابزارهای کلیدی و کاربردی در برنامه نویسی به شمار می روند. به کمک این ابزار، می توانیم توابع نوشته شده در فایلهایی به نام کتابخانه ذخیره کرده و سپس در پروژه های متعدد از آن استفاده کنیم.  همانطور که پیشتر گفته شد، برای راه اندازی و کار با ماژول کتابخانه توسعه داده شده است. برای استفاده از این کتابخانه، ابتدا باید آن را نصب کنیم. برای نصب کتابخانه در محیط آردویینو، ابتدا مطابق تصویر زیر بر روی گزینه Tools و سپس Manage Libraries کلیک کنید.

اصول نصب کتابخانه در آردوینو - دیجی اسپارک

 

پس از کلیک بر روی گزینه Manage Libraries، در صفحه ظاهر شده، در قسمت کادر جستجو، عبارت SchedulerESP8266.h را جستجو نموده و کتابخانه مشخص شده در تصویر را نصب نمایید.

 


 الزاامات و نکات فنی کتابخانه SchedulerESP8266.h


پس از نصب کتابخانه نوبت به بررسی نکات و الزامات فنی آن می رسد. در ابتدا توجه داشته باشید که این کتابخانه تنها بر روی بردهای ESP سری ۸۲۶۶ قابل اجراست. به عبارت دیگر این کتابخانه روی بردهای آردوینو با هسته تراشه AVR قابل اجرا نیست. در طرف دیگر، برای اجرای این کتابخانه، دسترسی به اینترنت برای برد ESP8266 باید فراهم باشد؛ چراکه این کتابخانه از طریق سرویس NTP اقدام به دریافت زمان می کند.

 


توابع کلیدی و کاربردی کتابخانه SchedulerESP8266.h


پس از نصب کتابخانه و آشنایی با الزامات فنی آن، نوبت به تحلیل توابع می رسد. جدول زیر لیست توابع کلیدی کتابخانه را نمایش می دهد.

شرح ورودی تابع
فراخوانی این تابع در loop الزامی بوده و سبب بروز رسانی زمان می شود. بدون ورودی void update()
این تابع کتابخانه را راه اندازی می کند. بدون ورودی void begin()
به کمک این تابع زمان بر مبنای ساعت گرینویچ یا UTC تنظیم می شود/ ورودی جهت تعیین زمان void setUTC(unsigned long utc)
این تابع، تابعی که  در زمان سر رسید زمان باید اجرا شود را تعیین می کند. ورودی این تابع نام تابع اجرایی را در بر میگیرد. ورودی از نوع آدرس تابع     void add(ScheduleTask &task)

 

 در کنار توابع فوق، یک تابع منحصر به فرد جهت اعمال تنظیمات اولیه تعریف شده است. این تابع درون تابع add فراخوانی می شود. این تابع که ScheduleTask نام دارد، دارای مدهای تعریف مختلفی است. اولین مد تعریف تابع به شکل زیر است.

ScheduleTask(String Label, bool Days[7], unsigned long Timestamp, const std::function<void()>& ToDoTask)

مطابق تابع فوق،  ورودی ها از چپ به راست به شرح زیر تعریف می شوند.

۱-نام تابع به دلخواه

۲- آرایه ای از روزهای هفته

۳-زمان پایه

۴-تابع جهت اجرا

در رابطه با ورودی دوم، یک آرایه می بایست تعریف شود. این آرایه به ترتیب روزهای هفته از یکشنبه تا شنبه را در بر می گیرد. برای اجرا در هر روز، آن روز true و عدم اجرا در آن روز false قرار می دهیم. همچنین در رابطه با زمان پایه، مدت زمان شروع شمارش می بایست تعیین شود. این زمان به ثانیه بوده و برای تمام ساعت ها از ابتدای ژانویه ۱۹۷۰ تا به الان تعیین می شود.

در ادامه، تابع زیر فرم دیگری جهت اعمال تنظیمات است.

  ScheduleTask(String Label, unsigned long Timestamp, const std::function<void()>& ToDoTask, bool Repeat)

 

در تابع فوق، آخرین ورودی جدید است. این ورودی در صورت true، روال را تکرار می کند. در صوتیکه false باشد تنها یکبار تابع در زمان مقرر اجرا می شود. در ادامه سایر فرم های فراخوانی تنظیمات به شکل زیر بیان می گردد.

  ScheduleTask(String Label, unsigned long Timestamp, const std::function<void()>& ToDoTask);

    ScheduleTask(bool Days[7], unsigned long Timestamp, const std::function<void()>& ToDoTask);

    ScheduleTask(unsigned long Timestamp, const std::function<void()>& ToDoTask);

 

در ادامه جهت اجرای یک نمونه برنامه، می توانید از منوی File->Examples-> SchedulerESP8266.h  را انتخاب و سپس گزینه simple را انتخاب کرده، و برنامه را روی برد آپلود کنید. این برنامه حالت های مختلف کانفیگ زمانبندی را در خود جای داده است.

 


لوازم مورد نیاز


لینک خرید برد NODEMCU وای فای ESP8266، کلیک کنید

 


جمع بندی


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

 

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

 

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

معین صابری

کارشناسی ارشد رشته معماری سیستم های کامپیوتری

مالي که ز تو کس نستاند، علم است
حرزي که تو را به حق رساند، علم است
جز علم طلب مکن تو اندر عالم
چيزي که تو را ز غم رهاند، علم است
(شیخ بهایی)

تبادل نظر و رفع عیب با ثبت دیدگاه