سنسورهای اندازه گیری میزان شدت نور خورشید یکی از ابزارهای پرکاربرد در پروژه های مختلف به شمار می روند. به کمک این سنسورها قادر به اندازه گیری میزان اشعه نور خورشید در محیط خواهیم بود. به عنوان نمونه، در محیط گلخانه اندازه گیری و اطلاع از میزان اشعه UV بسیار بر سلامت گیاهان اثر گذار است. یکی از سنسورهای کاربردی جهت اندازه گیری این پارامتر، سنسور ML8511 UV است. به کمک این سنسور می توانید از میزان اشعه UV در محیط مطلع شوید. از آنجاییکه برای راه اندازی و کار با این سنسور کتابخانه تحت آردوینو توسعه یافته است، لذا در این آموزش به تحلیل و بررسی این کتابخانه کاربردی می پردازیم. در ادامه با مرجع تخصصی آردوینو به زبان فارسی، دیجی اسپارک همراه باشید.
نصب کتابخانه ml8511
به منظور استفاده از کتابخانه ml8511.h، ابتدا می بایست آن را نصب کنیم. در این قسمت به نصب کتابخانه سنسور شتاب سنج با جستجو در مخازن آردوینو می پردازیم. به همین منظور، ابتدا در نرم افزار آردوینو بر روی گزینه Tools و سپس Manage Libraries را کلیک کنید. پس از کلیک بر روی این گزینه، با تصویر زیر رو به می شوید. این منو کتابخانه های در دسترس را به شما نشان می دهد. شما نیز می توانید با جستجوی نام کتابخانه مورد نظر خود، آن را در مخازن آردوینو یافته و سپس نصب کنید.
مطابق فلش مشخص شده در تصویر فوق، در کادر جستجو عبارت ml8511 را تایپ کنید. پس از چند لحظه با تصویر زیر رو به رو می شوید. در این مرحله، بر روی گزینه install کلیک کرده و کتابخانه را نصب نمایید.
الزامات و نکات فنی کتابخانه ML8511.h
پس از نصب کتابخانه و پیش از بررسی توابع کلیدی، ابتدا به بررسی نکات فنی و بردهای مورد پشتیبانی می پردازیم. توجه داشته باشید که این کتابخانه برای برد آردوینو UNO توسعه یافته است. در کنار این، از آنجاییکه خروجی سنسور به صورت آنالوگ است، لذا از پین های آنالوگ جهت اتصال سنسور می بایست استفاده نمایید. بر روی این ماژول یک پایه با نام EN قرار گرفته است. با اعمال پالس از سوی آردوینو، این ماژول را می توان فعال و غیر فعال نمود. از آنجاییکه ولتاژ کاری این ماژول برابر با ۳٫۳ ولت است، لذا ولتاژ اعمالی به این پایه نیز نباید بیش از ۳٫۳ شود. در این حالت یا باید این پایه به پایه ۳٫۳ آردوینو متصل شود، یا در صورت اتصال به پایه GPIO آردوینو، از طریق تقسیم مقاومتی ولتاژ ۵ به ۳٫۳ کاهش یابد. در صورتیکه در باره مدار تقسیم مقاومتی به اطلاعات بیشتر نیاز دارید، می توانید آموزش آن را با کلیک بر روی این لینک، مطالعه نمایید.
توابع کلیدی و کاربردی کتابخانه ML8511.h
پس از نصب کتابخانه و بررسی نکات فنی، نوبت به تحلیل و بررسی توابع کلیدی و کاربردی کتابخانه می پردازیم. جدول زیر لیست توابع را به همراه شرح آن نشان می دهد. توجه داشته باشید که ورودی ها از چپ به راست شماره های ۱، ۲ و…. به خود می گیرند.
شرح | ورودی ها | نام تابع |
این تابع در حقیقت تابع سازنده کلاس کتابخانه ML8511 است. ورودی اول این تابع شماره پایه آنالوگ جهت اتصال را تعیین می کند. ورودی دوم نیز جهت تعیین پایه فعال ساز به کار می رود. در صورتیکه قصد دارید این پایه را به پایه ۳٫۳ آردوینو متصل کنید، می توانید این ورودی را خالی بگذارید. | ورودی اول از نوع بدون علامت ۸ بیتی
ورودی دوم از نوع بدون علامت ۸ بیتی |
ML8511(uint8_t analogPin, uint8_t enablePin = 0xFF) |
این تابع متغیرهای کلاس کتابخانه را به طور کامل ریست می کند. | بدون ورودی | void reset() |
این تابع انژی UV موجود در محیط را بر حسب میلی وات بر سانتی متر مربع محاسبه کرده و در خروجی خود قرار می دهد. ورودی این تابع شاخص UV را تعیین کرده که به صورت پیشفرض و بدون قرار دادن مقدار، HIGH است. برای اطلاعات بیشتر در زمینه شاخص ایندکس، روی این لینک کلیک کنید. | دارای ورودی از نوع بدون علامت ۸ بیتی | float getUV(uint8_t energyMode = HIGH) |
به کمک این تابع می توانید ماژول را فعال نمایید. | بدون ورودی | void enable() |
به کمک این تابع می توانید ماژول را غیر فعال کنید. | بدون ورودی | void disable() |
به کمک این تابع می توانید فعال/غیر فعال سازی سنسور را تشخیص دهید. در صوریتکه سنسور فعال باشد، خروجی true و در غیر اینصورت false خواهد شد. | بدون ورودی | bool isEnabled() |
این تابع می توانید شاخص uv را محاسبه کرده و در خروجی قرار دهد. ورودی این تابع انرژی uv قرار گرفته و در خروجی این تابع شاخص uv محاسبه شده و قرار می گیرد. | ورودی از نوع float | float estimateDUVindex(float mWcm2) |
به کمک این تابع می توانید سنسور را کالیبره کنید. این تابع در حقیقت du factor را تعیین می کند. ورودی این تابع نباید از ۰٫۰۱ کمتر باشد، در غیر اینصورت خروجی false خواهد شد. | ورودی از نوع float | bool setDUVfactor(float f) |
اجرای یک نمونه برنامه
پس از مشاهده توابع کلیدی و کاربردی، نوبت به اجرای یک نمونه برنامه می رسد. در این برنامه میزان نرخ uv و بر مبنای آن شاخص uv محاسبه شده و در سریال مانیتور نمایش داده می شود.
#include <Arduino.h> #include <ML8511.h> #define ANALOGPIN A0 //تعیین پایه A0 جهت خواندن خروجی سنسور #define ENABLEPIN 7 //تعیین پایه شماره ۷ جهت ارتباط با پایه EN سنسور، توجه: تقسیم مقاومتی لحاظ گردد. ML8511 light(ANALOGPIN, ENABLEPIN); // راه اندای سنسور با ورودی های پایه آنالوگ و پایه فعال ساز void setup() { Serial.begin(115200); Serial.println("UV UltraViolet ML8511"); Serial.flush(); //فعال سازی سنسور light.enable(); light.setDUVfactor(1.80); // کالیبره کردن سنسور، مقدار مناسب برای کالیبراسیون ۱٫۸۰ است. این تابع فاکتور DU را تعیین می کند. Serial.print("\tmW cm^2"); Serial.print("\tDUV index"); Serial.println(); } void loop() { float UV = light.getUV(); //دریافت مقدار uv محیط float DUV = light.estimateDUVindex(UV); //دریافت مقدار شاخص uv به کمک UV محاسبه شده //چاپ مقادیر در خروجی Serial.print(UV, 4); Serial.print("\t"); Serial.print(DUV, 1); Serial.println(); delay(1000); }
لوازم متناسب با کتابخانه
جمع بندی
در این آموزش به تحلیل و بررسی کتابخانه ML8511.h جهت راه اندازی و کار با سنسور تشخیص UV با نام ML8511پرداختیم. به کمک این کتابخانه می توانیم به سادگی میزان UV موجود رد محیط را اندازه گیری نماییم. از آنجاییکه این کتابخانه دارای توابع از پیش تعریف شده جهت کار با این سنسور است، بنابراین به سادگی و در زمانی کوتاه می توانیم این سنسور را راه اندازی کنیم. در این آموزش به تحلیل و بررسی توابع کلیدی و کاربردی این کتابخانه پرداخته و در نهایت با ارائه یک برنامه، نحوه کار با توبع را در یک برنامه مشاهده نمودیم.
چنانچه در مراحل راه اندازی و انجام این پروژه با مشکل مواجه شدید، بدون هیچ نگرانی در انتهای همین پست، به صورت ثبت نظر سوالتان را مطرح کنید. من در سریعترین زمان ممکن پاسخ رفع مشکل شما را خواهم داد. همچنین اگر ایرادی در کدها و یا مراحل اجرایی وجود دارند میتوانید از همین طریق اطلاع رسانی کنید.