سنسورهای دما یکی از مهم ترین و پرکاربردترین ابزارها در پروژه های مختلف به شمار می روند. به کمک این سنسور ها می توانید میزان دمای محیط را اندازه گیری نمایید. در میان سنسورهای دما، نوع غیر تماسی آن بسیار پرکاربرد و طرفدار است. این سنسور ها بدون نیاز به تماس به اشیا، می توانند دمای آن را از طریق امواج مادون قرمز تشخیص دهند. سنسور دمای غیر تماسی MLX90614، یک سنسور دمای فوق العاده کاربردی جهت اندازه گیری دمای محیط و اشیا است. به کمک این سنسور می توانید به طور همزمان علاوه بر دمای محیط، دمای اشیا را بدون نیاز به تماس سنسور به آن ها اندازه گیری نمایید. پیشتر در آموزشی که با کلیک بر روی این لینک قابل دسترسی است، همکارم به طراحی و پیاده سازی یک دماسنج غیر تماسی برای تب سنجی کرونا به کمک همین سنسور پرداخته است. از آنجاییکه جهت راه اندازی و کار با این سنسور کتابخانه تحت آردوینو توسعه یافته است، در این آموزش به تحلیل و بررسی این کتابخانه می پردازیم. مطابق سلسله آموزش های کتابخانه که می توانید از این لینک آن ها را دنبال کنید، به بررسی نحوه نصب کتابخانه می پردازیم. پس از آن الزامات فنی و بردهای مورد پشتیبانی بررسی می شود. در ادامه به معرفی توابع کلیدی و کاربردی کتابخانه پرداخته و در نهایت با ارائه مثال، کاربرد توابع در برنامه ها را مشاهده می کنیم. در ادامه با مرجع تخصصی آردوینو به زبان فارسی، دیجی اسپارک همراه باشید.
نصب کتابخانه MLX90614
اولین قدم در استفاده از یک کتابخانه، نصب آن در محیط آردوینو است. برای نصب کتابخانه، دو روش دستی و خودکار وجود دارد. در روش دستی، پس از دانلود فایل های کتابخانه، می بایست آن را در مسیر نصب آردویینو قرار دهید. اما در روش خودکار، تنها با تایپ نام کتابخانه در قسمت مدیریت کتابخانه ها، کتابخانه مورد نظر به صورت خودکار در مخازن آردوینو جستجو شده و پس از یافتن آن، نصب خواهد شد. به همین منظور، ابتدا در نرم افزار آردوینو، بر روی گزینه Tools و سپس Manage Libraries کلید کنید. با کلیک بر روی گزینه Manage Libraries، می توانید وضعیت کتابخانه های نصب شده و لیستی از کتابخانه های جدید و بروز را مشاهده کنید. این مورد در تصویر زیر، قابل مشاهده است.
مطابق فلش قرمز رنگ تصویر فوق، در کادر جستجو، با تایپ نام کتابخانه، می توان آن را یافته و سپس نصب نمود. در اینجا ما عبارت Adafruit_MLX90614.h را تایپ می کنیم. پس از چند لحظه، کتابخانه مورد نظر به شکل تصویر زیر، به نمایش در می آید. با کلیک بر روی گزینه install، این کتابخانه را نصب نمایید.
توجه: ورژن کتابخانه مورد استفاده در این آموزش، ۱/۱/۱ است.
نکات فنی و بردهای مورد پشتیبانی
سنسور دمای غیر تماسی MLX90614 جهت ارتباط با میکروکنترلرها، از پورت سریال I2C استفاده می کند. بنابراین انتظار می رود که در کلیه بردهای آردوینو دارای پورت I2C و ESP8266/ESP32 قابل استفاده باشد. توجه داشته باشید که جهت راه اندازی و کار با این سنسور، می بایست از پورت I2C سخت افزاری برد آردوینو و یا ESP خود استفاده نمایید. تصویر زیر شماتیک اتصالات بین آردوینو UNO و سنسور را نمایش می دهد.
پس از بررسی نکات و الزامات فنی، نوبت به معرفی توابع کلیدی و کاربردی کتابخانه می رسد. در قسمت بعدی به این مورد می پردازیم.
توابع کاربردی کتابخانه MLX90614
پس از نصب و بررسی نکات فنی کتابخانه، نوبت به معرفی توابع کلیدی و کاربردی این کتابخانه می رسد. جدول زیر این توابع را شرح می دهد.
شرح | ورودی ها | تابع |
این تابع، یک تابع سازنده جهت ایجاد یک شی از کلاس کتابخانه است. در ورودی این تابع آدرس پورت I2C سنسور تعیین می گردد. شما می توانید این ورودی را خالی بگذارید. در این صورت آدرس به صورت خودکار شناسایی و تعیین خواهد شد. | ورودی از نوع بدون علامت ۸ بیتی جهت تعیین آدرس سنسور | Adafruit_MLX90614(uint8_t addr = MLX90614_I2CADDR) |
به کمک این تابع، ارتباط بین سنسور و آردوینو برقرار می گردد. در صورتیکه سنسور با موفقیت راه اندازی شود خروجی تابع true و در غیر اینصورت false خواهد بود. | بدون ورودی | boolean begin() |
به کمک این تابع می توانید دمای شی را به سانتی گراد دریافت کرده و در خروجی تابع مشاهده کنید. خروجی این تابع به صورت double است. | بدون ورودی | double readObjectTempC(void) |
به کمک این تابع می توانید دمای محیط را به سانتی گراد دریافت کرده و در خروجی تابع مشاهده کنید. خروجی این تابع به صورت double است. | بدون ورودی | double readAmbientTempC(void) |
به کمک این تابع می توانید دمای شی را به فارنهایت دریافت کرده و در خروجی تابع مشاهده کنید. خروجی این تابع به صورت double است. | بدون ورودی | double readObjectTempF(void) |
به کمک این تابع می توانید دمای محیط را به فارنهایت دریافت کرده و در خروجی تابع مشاهده کنید. خروجی این تابع به صورت double است. | بدون ورودی | double readAmbientTempF(void) |
پس از بررسی توابع کلیدی و کاربردی، نوبت به اجرای یک نمونه برنامه می رسد. در قسمت بعدی به این موضوع می پردازیم.
اجرای یک نمونه برنامه
پس از معرفی توابع کلیدی و کاربردی، نوبت به اجرای یک نمونه برنامه می رسد. در این برنامه دمای محیط اندازه گیری شده و در سریال مانیتور قرار می گیرد. در ادامه دمای شی نزدیک به سنسور نیز اندازه گیری شده و در سریال مانیتور به نمایش درخواهد آمد.
#include <Wire.h> //کابخانه wire برای ارتباط i2c #include <Adafruit_MLX90614.h> Adafruit_MLX90614 mlx = Adafruit_MLX90614(); //ایجاد یک شی از کتابخانه سنسور void setup() { mlx.begin(); //راه اندازی کتابخانه Serial.begin(9600); } void loop() { float temp_obj = mlx.readObjectTempC(); //خواندن دمای شی float temp_amb=mlx.readAmbientTempC(); //خواندن دمای محیط Serial.print("OBJECT TEMP:"); Serial.flush(); Serial.println(temp_obj); Serial.print("AMBIENT TEMP:"); Serial.flush(); Serial.println(temp_amb); delay(1000); }
لوازم متناسب با کتابخانه
جمع بندی
سنورهای دما یکی از مهم ترین ابزارها در اندازه گیری دمای محیط به شمار می روند. یکی از مهم ترین و کاربردی ترین نوع این سنسورها، نوع غیر تماسی نظیر سنسور mlx90614 است. به کمک این سنسور بدون تماس با اشیا می توان دمای آن ها را اندازه گیری نمود. در کنار این، این سنسور قادر به اندازه گیری دمای محیط نیز هست. در این آموزش، با توجه به کتابخانه توسعه یافته برای این سنسور، به تحلیل و بررسی این کتابخانه پرداختیم. در ابتدا به نصب و بررسی نکات فنی آن اشاره کردیم و در نهایت توابع کلیدی آن را معرفی و تشریح نمودیم. در نهایت با ارائه مثالی، به نحوه استفاده از توابع در برنامه پرداختیم.
چنانچه در مراحل راه اندازی و انجام این پروژه با مشکل مواجه شدید، بدون هیچ نگرانی در انتهای همین پست، به صورت ثبت نظر سوالتان را مطرح کنید. من در سریعترین زمان ممکن پاسخ رفع مشکل شما را خواهم داد. همچنین اگر ایرادی در کدها و یا مراحل اجرایی وجود دارند میتوانید از همین طریق اطلاع رسانی کنید.