ریموت های کنترل IR با اینکه سالیان سال از اختراع آن ها می گذرد، اما همچنان مورد استفاده قرار می گیرند. این ریموت ها در کنترل وسایل برقی به وفور استفاده می شوند. به عنوان مثال برای کنترل تلویزیون ها، سیستم های صوتی، کولرهای گازی، هودهای آشپزخانه و….. این ریموت ها همواره کارگشا هستند. برای راه اندازی و کار با این ریموت ها ماژول های گیرنده طراحی شده و توسعه یافته اند. بدین ترتیب به سادگی می توانیم از این ریموت ها در اتصال به بردهای آردوینو و سایر میکروکنترلرها نظیر ARM استفاده کنیم.
جهت راه اندازی و کار با این ماژول ها، کتابخانه های بسیاری تحت آردوینو توسعه یافته اند. یکی از کتابخانه های کاربردی، کتابخانه IRsmallDecoder.h است. این کتابخانه در میان سایر کتابخانه های کاربردی، حجم کمی دارد. بدین ترتیب بخش کمی از حافظه توسط این کتابخانه اشغال می شود. در این آموزش به تحلیل و بررسی این کتابخانه کلیدی و کاربردی خواهیم پرداخت. مطابق رویه معمول، ابتدا نحوه نصب کتابخانه را خواهیم دید. سپس در ادامه به الزامات و نکات فنی آن خواهیم پرداخت. در نهایت تحلیل و بررسی توابع کلیدی به همراه معرفی مثال را خواهیم داشت. در ادامه تحلیل کتابخانه با مرجع تخصصی آردوینو به زبان فارسی، دیجی اسپارک همراه باشید.
نصب کتابخانه IRsmallDecoder.h
به منظور استفاده از کتابخانه، ابتدا می بایست آن را نصب کنیم. در این قسمت به نصب کتابخانه با جستجو در مخازن آردوینو می پردازیم. به همین منظور، ابتدا در نرم افزار آردوینو بر روی گزینه Tools و سپس Manage Libraries را کلیک کنید. پس از کلیک بر روی این گزینه، با تصویر زیر رو به می شوید. این منو کتابخانه های در دسترس را به شما نشان می دهد. شما نیز می توانید با جستجوی نام کتابخانه مورد نظر خود، آن را در مخازن آردوینو یافته و سپس نصب کنید.
مطابق فلش مشخص شده در تصویر فوق، در کادر جستجو عبارت IRsmallDecoder را تایپ کنید. پس از چند لحظه با تصویر زیر رو به رو می شوید. در این مرحله، کتابخانه را با کلیک بر روی گزینه install، نصب کنید.
الزامات و نکات فنی کتابخانه IRsmallDecoder.h
پس از نصب کتابخانه، نوبت به بررسی الزامان و نکات فنی آن می رسد. در مرحله نخست، از آنجاییکه این کتابخانه وابستگی سخت افزاری آنچنانی ندارد، بنابراین بر روی کلیه بردهای آردوینو با تراشه AVR قابلیت اجرا دارد. همچنین با توجه به این موضوع، به نظر می رسد که این کتابخانه بر روی سایر معماری ها نظیر XTENSA برای بردهای ESP و ARM برای STM32 هم قابلیت اجرا داشته باشد. به عنوان نکته بعدی در این کتابخانه، جهت راه اندازی و برقراری اتصال، حتما باید از پایه های وقفه خارجی جهت اتصال گیرنده استفاده کنیم. جدول زیر که از صفحه اصلی کتابخانه در گیت هاب وام گرفته شده، لیست پایه ها برای بردهای مختلف را نمایش می دهد.
Board or microcontroller | Digital pins usable for interrupts |
---|---|
Uno, Nano, Mini, other 328-based | ۲, ۳ |
Uno WiFi Rev.2, Nano Every | all digital pins |
Mega, Mega2560, MegaADK | ۲, ۳, ۱۸, ۱۹, ۲۰, ۲۱* |
Micro, Leonardo, other 32u4-based | ۰, ۱, ۲, ۳, ۷ |
Zero | all digital pins, except 4 |
MKR Family boards | ۰, ۱, ۴, ۵, ۶, ۷, ۸, ۹, A1, A2 |
Nano 33 IoT | ۲, ۳, ۹, ۱۰, ۱۱, ۱۳, A1, A5, A7 |
Nano 33 BLE, Nano 33 BLE Sense | all pins |
Due | all digital pins |
۱۰۱ with CHANGE mode | ۲, ۵, ۷, ۸, ۱۰, ۱۱, ۱۲, ۱۳ |
۱۰۱ with other modes | all digital pins |
ATtiny 25/45/85 | ۲** |
ATtiny 24/44/84 | ۸** |
توجه: مطابق گفته توسعه دهنده، کتابخانه روی بردهای آردوینو UNO و MEGA تست و اجرا شده و در رابطه با اجرا روی سایر بردها مخصوصا ESP STM32، تردید وجود دارد.
توابع کلیدی و کاربردی کتابخانه
پس از بررسی الزامات و نکات فنی، نوبت به تحلیل توابع کلیدی و کاربردی می رسد. جدول زیر لیست توابع را نمایش می دهد. در این جدول ورودی ها به همراه شرح تابع، آمده است.
شرح | ورودی | تابع |
این تابع در حقیقت تابع سازنده کلاس کتابخانه است. به کمک این تابع ارتباط با ماژول گیرنده از طریق پایه قرار گرفته در این تابع تعیین می شود.
توجه: پایه قرار گرفته در ورودی باید جزو پایه های وقفه باشد. |
شماره پایه ورودی | IRsmallDecoder(uint8_t interruptPin); |
این تابع ارتباط ماژول با آردوینو را قطع می کند. | بدون ورودی | void disable() |
این تابع ارتبط ماژول با آردوینو را مجددا فعال می کند. | بدون ورودی | void enable() |
در صورتیکه کلیدی دریافت شده باشد، خروجی تابع true خواهد شد. | بدون ورودی | bool dataAvailable() |
این تابع مشابه تابع فوق است، اما شماره HEX کلید فشرده شده را در ورودی خود قرار می دهد.
توجه: برای خواندن کلید، باید از متغیر keyHeld استفاده شود. |
ورودی از نوع کلاس کتابخانه | bool dataAvailable(irSmallD_t &irData) |
توجه۱: برای دسترسی به عدد کلید فشار داده شده، فرض کنید شی ای از کلاس کتابخانه به اسم irdata تعریف کرده اید. مقدار کلید به صورت irdata.KeyHeld قابل دسترسی است.
توجه۲: بسته به هر ریموت کنترل، باید ثابت آن در برنامه تعریف شود. ثابت های قابل تعریف در برنامه به صورت زیر است.
#define IR_SMALLD_NEC
#define IR_SMALLD_NECx
#define IR_SMALLD_RC5
#define IR_SMALLD_SIRC12
#define IR_SMALLD_SIRC15
#define IR_SMALLD_SIRC20
#define IR_SMALLD_SIRC
#define IR_SMALLD_SAMSUNG
#define IR_SMALLD_SAMSUNG32
پس از بررسی توابع و تحلیل آن ها، نوبت به اجرای یک نمونه برنامه می رسد. برای اجرا، از منوی File->examples->IRSmall Decoder->HelloNEC را انتخاب و اجرا کنید.
لوازم مورد نیاز
لینک خرید برد آردوینو UNO، کلیک کنید
لینک خرید ماژول ریموت کنترل IR به همراه گیرنده، کلیک کنید
جمع بندی
ریموت کنترل های IR یکی از مهم ترین و پرکاربردترین ابزارها در کنترل بی سیم وسایایل برقی به شمار می روند. از این ریمون کنترل در پروژه های بسیاری نظیر رله های تایمر دار و دستگاه های الکترونیکی مثل کولرهای گازی استفاده می شود. از طرف دیگر، به کمک ماژول گیرنده مادون قرمز می توان ریموت های کنترل را خواند. جهت راه اندازی و کار با این ماژول ها کتابخانه تحت آردوینو توسعه یافته است. به کمک این کتابخانه می توان در فرمی آسان و استاندارد، به راه اندای ماژول پرداخت. در این آموزش به تحلیل و بررسی این کتابخانه پرداختیم. مطابق رویه معمول، آموزش را با نحوه دانلود و نصب کتابخانه شروع کردیم. سپس در ادامه الزامات و نکات فنی آن را دیدیم. در نهایت با بررسی توابع کلیدی و کاربردی، بحث را خاتمه دادیم.
چنانچه در مراحل راه اندازی و انجام این پروژه با مشکل مواجه شدید، بدون هیچ نگرانی در انتهای همین پست، به صورت ثبت نظر سوالتان را مطرح کنید. من در سریعترین زمان ممکن پاسخ رفع مشکل شما را خواهم داد. همچنین اگر ایرادی در کدها و یا مراحل اجرایی وجود دارند میتوانید از همین طریق اطلاع رسانی کنید.