اینترنت اشیا IOT سیستم عامل FreeRTOS

پروژه ترموستات دیجیتال و تایمر با سیستم عامل FreeRTOS در برد آردوینو

create-digital-thermostat-with-freertos-and-arduino-digispark
نوشته شده توسط معین صابری

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

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

 


سیستم عامل در پروژه ترموستات دیجیتال با FreeRTOS


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

نقش سیستم عامل در ترموستات دیجیتال با FreeRTOS - دیجی اسپارک

 

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

 


قطعات پروژه ترموستات دیجیتال با FreeRTOS


همانطور که اطلاع دارید، پروژه های پردازشی و هوشمند نیاز به میکروکنترلر جهت پردازش داده ها دارند. برای این مورد، ما در این جا از برد آردوینو UNO استفاده می کنیم. برد آردوینو UNO به سادگی می توتند برنامه های نوشته شده توسط کاربر را از طریق کابل USB دریافت و اجرا کند. از طرف دیگر به کمک همین کابل می تواند از کاربر فرمان دریافت و اجرا نماید.

برد آردوینو در پروژه ترموستات دیجیتال با FreeRTOS - دیجی اسپارک

 

ماژول رله در پروژه ترموستات دیجیتال با FreeRTOS اهمیتی اساسی دارد. این ماژول نیاز به قطعات جانبی جهت راه اندازی رله ندارد، چراکه بر روی آن ترانزیستور تقویت جریان و دیود هرزگرد جهت جلوگیری از بازگشت جریان رله تعبیه شده است.

رله در پروژه ترموستات دیجیتال با FreeRTOS - دیجی اسپارک

 

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

سنسور دما NTC در پروژه ترموستات دیجیتال با FreeRTOS - دیجی اسپارک

 

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

 


شماتیک و اتصالات ترموستات دیجیتال


پس از بررسی نقش قطعات، نوبت به بررسی شماتیک و اتصالات پروژه ترموستات دیجیتال با FreeRTOS می رسد. ابتدا به تصویر زیر که فرم کلی اتصالات را نمایش می دهد، دقت کنید.

اتصالات پروژه ترموستات دیجیتال با FreeRTOS - دیجی اسپارک

 

پس از مشاهده تصویر فوق، اتصالات مدار ترموستات دیجیتال با FreeRTOS را به شیوه زیر اجرا کنید.

 


اتصالات سنسور دما NTC و آردوینو


  •  اتصال یک پایه سنسور دما به ۵ ولت
  • اتصال پایه دیگر سنسور دما به یک پایه مقاومت ۱۰ کیلو
  • اتصال پایه دیگر مقاومت ۱۰ کیلو به زمین
  • اتصال محل تلاقی پایه سنسور و مقاومت ۱۰ کیلو به پایه A0 آردوینو

توجه: سنسور دما مستقل از پلاریته است؛ به عبارت دیگر در اتصال پایه ها فرقی نخواهند داشت.

 


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


  •  اتصال پایه ۵ ولت ماژول رله به ۵ ولت آردوینو
  • اتصال پایه GND ماژول رله به پایه GND آردوینو
  • اتصال پایه IN1 به پایه ۳ آردوینو
  • اتصال پایه IN2 به پایه ۲ آردوینو

 


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


  •  اتصال پایه GND رله به GND آردوینو
  • اتصال پایه VCC رله به ۵ ولت آردوینو
  • اتصال پایه IN یا سیگنال رله به پایه ۱۳ آردوینو

 


نصب کتابخانه های مورد نیاز


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

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

 

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

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

 

پس از نصب کتابخانه سیستم عامل، نوبت به نصب کتابخانه سنسور دما می رسد. جهت نصب کتابخانه، در منوی جست و جوی کتابخانه ها عبارت thermistor را تایپ کنید. با تایپ این عبارت با تصویر زیر رو به رو خواهید شد. مطابق تصویر، کتابخانه مشخص شده با کادر قرمز رنگ را نصب نمایید.

کتابخانه مناسب در پروژه اعلام حریق آردوینو - دیجی اسپارک

 

 توجه: پس از نصب کتابخانه سنسور دما، وارد فولدر کتابخانه آن شوید. به این منظور در فولدر Documents ویندوز، فولدر Arduino و سپس Libraries را انتخاب کنید. در این جا وارد فولدر Thermistor شده و فایل thermistor.cpp را باز کنید. با باز شدن این فایل، عبارت زیر را یافته و آن را کامنت کنید.

#define VERBOSE_SENSOR_ENABLED 1

جهت کامنت کردن، می بایست عبارت // را پیش از دستور قرار دهید. به عبارت دیگر دستور به صورت زیر تبدیل می شود.

#define VERBOSE_SENSOR_ENABLED 1//

مراحل فوق به دلیل استفاده همزمان این کتابخانه از پورت سریال UART است. با عملیات فوق، کتابخانه دماسنج دیگر از پورت سریال استفاده نکرده و تداخل احتمالی بین کتابخانه و ارسال دستورات از سوی کاربر از طریق UART از بین خواهد رفت.

 


آپلود کدهای ترموستات دیجیتال با FreeRTOS


پس از نصب کتابخانه نوبت به آپلود برنامه روی برد می رسد. این کدها برای برد آردوینو UNO توسعه یافته است؛ آن ها را بر روی برد خود آپلود کنید.

 

جهت دسترسی به این بخش، اشتراک اسپارکر پلاس تهیه کنید.

 


اجرای پروژه ترموستات با FreeRTOS


پس از آپلود کدها نوبت به اجرای پروژه ترموستات دیجیتال با FreeRTOS می رسد. برای اجرای پروژه، می توانید میزان دما و زمان رله را تعریف و کنترل کنید. فرض کنید قصد دارید تا دمای محیط بین بازه ۲۳ الی ۲۶ درجه سانتی گراد تعریف شود. به این منظور در سریال مانیتور عبارت زیر را تایپ و سپس اینتر کنید.

 

جهت ارسال دما باید دمای کمینه در ابتدا، دمای بیشینه در انتها و این دو دما با یک ویرگول از هم جدا شوند. در ادامه، دمای شروع و پایان بین دو آکولاد قرار گیرند. در ادامه برای تعیین مدت زمان فعال و غیر فعال بودن رله، از فرمتی مشابه با فرمت دما استفاده می شود.  برای این مورد زمان در واحد میلی ثانیه است. حال فرض کنید برای مدت ۷ ثانیه قصد داریم رله را فعال و سپس برای ۵ ثانیه رله را غیر فعال کنیم. برای این مورد به شیوه زیر عمل می کنیم.

 

مطابق فرمت فوق، پارامترهای زمانی درون علامت < و > محصور شده اند. در حقیقت با قرارگیری این علائم برد تشخیص به تنظیمات زمانی می دهد.

اجرای پروژه ترموستات دیجیتال با FreeRTOS - دیجی اسپارک

 


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


لینک خرید سنسور دمای NTC، کلیک کنید

 لینک خرید برد آردوینو UNO، کلیک کنید

لینک خرید مقاومت ۱۰ کیلو اهمی، کلیک کنید

لینک خرید ماژول رله تک کانال، کلیک کنید

لینک خرید ماژول رله دو کانال، کلیک کنید

 


جمع بندی


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

 

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

 

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

معین صابری

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

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

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