در مجموعه آموزش های تحلیل و بررسی کتابخانه های آردوینو، این بار به سراغ کتابخانه یک سنسور پرکابرد می رویم. حتما تا پیش از این با سنسورهای فاصله سنج آشنا هستید، این سنسورها به کمک روش های مختلف نظیر لیزر، امواج مادون قرمز، امواج التراسونیک و… می توانند اقدام به فاصله سنجی نمایند. یکی از سنسورهای فوق العاده کلیدی و کاربردی در زمینه فاصله سنجی، سنسورهای شرکت SHARP است. این سنسورها که بر مبنای امواج مادون قرمز عمل می کنند، می توانند اقدام به فاصله سنجی و تشخیص مانع نمایند.
جهت راه اندازی و کار با این سنسورها، کتابخانه تحت آردوینو توسعه یافته است. به کمک این کتابخانه به سادگی و بدون درگیر شدن با جزییات سخت افزاری و راه اندازی، می توانیم داده ها را از سنسور بخوانیم. در این آموزش قصد به تحلیل و بررسی این کتابخانه را داریم. مطابق رویه معمول تحلیل کتابخانه ها، ابتدا مختصری به سنسورهای SHARP می پردازیم. در ادامه نیز نحوه نصب و الزامات فنی را از نظر خواهیم گذراند. پس از این قسمت، توابع کلیدی و کاربردی کتابخانه را از نظر خواهیم گذراند. در نهایت با ارائه مثال، نحوه استفاده از توابع در برنامه ها را خواهیم دید. در ادامه آموزش ب تحلیل کتابخانه با مرجع تخصصی آردوینو به زبان فارسی، دیجی اسپارک، همراه باشید.
سنسورهای فاصله سنج شارپ
همانطور که پیشتر گفته شد، سنسورهای فاصله سنج از فناوری های مختلفی جهت تخمین فاصله استفاده می کنند. سنسورهای سری SHARP نیز از امواج مادون قرمز جهت فاصله سنجی، بهره می برند. در این فناوری، امواج مادون قرمز از سمت سنسور به محیط گسیل می گردد. پس از چند لحظه، سنسور منتظر بازگشت امواج می ماند. با دریافت امواج بازگشتی و محاسبه زمان رفت و برگشت، فاصله توسط سنسور محاسبه می گردد.
سنسورهای شارپ دارای خروجی آنالوگ هستند. بدین ترتیب میکروکنترلری که قصد اتصال سنسور به آن را دارید، می بایست حتما از ADC برخوردار باشد. در طرف دیگر، سنسورهای SHARP دارای مدل و انواع مختلفی هستند. جدول زیر مدل های مختلف را به همراه رنج قابل اندازه گیری، نمایش می دهد.
رنج فاصله قابل اندازه گیری | سنسور |
۲۰ الی ۱۵۰ سانتی متر | GP2Y0A02YK0F
|
۱۰ الی ۸۰ سانتی متر | GP2Y0A21YK
|
۱۰ الی ۸۰ سانتی متر | GP2D12_24
|
۱۰۰ الی ۵۰۰ سانتی متر | GP2Y0A710K0F
|
۴ الی ۳۰ سانتی متر | GP2YA41SK0F
|
پس از بررسی انواع مختلف و اطلاعات راجع به سنسور، نوبت به بررسی کتابخانه می رسد. قسمت بعد به این موضوع اختصاص دارد.
نصب کتابخانه ZSharpIR.h
همانطور که اطلاع دارید، کتابخانه ها یکی از ابزارهای کلیدی و کاربردی در برنامه نویسی به شمار می روند. به کمک این ابزار، می توانیم توابع نوشته شده در فایلهایی به نام کتابخانه ذخیره کرده و سپس در پروژه های متعدد از آن استفاده کنیم. همانطور که پیشتر گفته شد، برای راه اندازی و کار با ماژول کتابخانه توسعه داده شده است. برای استفاده از این کتابخانه، ابتدا باید آن را نصب کنیم. برای نصب کتابخانه در محیط آردویینو، ابتدا مطابق تصویر زیر بر روی گزینه Tools و سپس Manage Libraries کلیک کنید.
پس از کلیک بر روی گزینه Manage Libraries، در صفحه ظاهر شده، در قسمت کادر جستجو، عبارت ZSharpIR را جستجو نموده و کتابخانه مشخص شده در تصویر زیر را نصب نمایید.
الزامات و نکات فنی کتابخانه ZSharpIR.h
پس از نصب کتابخانه، نوبت به بررسی الزامات و نکات فنی آن می رسد. آنطور که پیشتر هم گفته شد، سنسورهای SHARP دارای خروجی آنالوگ هستند که این خروجی توسط واحد ADC میکروکنترلر خوانده می شود. این خروجی آنالوگ در سنسورهای مختلف تا ۲٫۶ ولت نسبت به فاصله سنجیده شده می تواند تغییر داشته باشد. از طرف دیگر این کتابخانه با معماری SAMD سازگاری دارد. به عبارت دیگر، این کتابخانه بر روی بردهای زیر قابلیت اجرا دارد.
- آردوینو های سری MKR
- آردوینو نانو ۳۳
- آردوینو ZERO
پس از آشنایی با جزییات فنی کتابخانه ZSharpIR، نوبت به تحلیل و بررسی توابع کلیدی و کاربردی آن می رسد. قسمت بعد به این موضوع اختصاص دارد.
توابع کلیدی و کاربردی کتابخانه ZSharpIR
در این قسمت به تحلیل و بررسی توابع کلیدی کتابخانه می پردازیم. جدول زیر توابع کتابخانه ZSharpIR.h تعریف و تشریح می کند.
شرح | ورودی ها | تابع |
تابع سازنده کلاس کتابخانه که با ورودی اول پایه آنالوگ برای سنسور تعیین شده و با ورودی دوم مدل سنسور تعریف می شود. مدل های سنسور پیشتر در کتابخانه تعریف شده اند. | ورودی نخست پایه آنالوگ مختص به سنسور
ورودی دوم نوع سنسور |
ZSharpIR (int irPin, const uint32_t _sensorType) |
اندازه گیری فاصله و قرار دادن آن در خروجی بر حسب میلی متر | بدون ورودی | int distance() |
تعیین میزان دقت اندازه گیری و قرار دادن آن در خروجی | بدون ورودی | int getAccuracy() |
خواندن بیشینه مقدار قابل اندازه گیری | بدون ورودی | int getMax() |
خواندن کمینه مقدار قابل اندازه گیری | بدون ورودی | int getMin() |
در ادامه جدول فوق، برای مدل های مختلف سنسور ثوابتی تعریف شده است. این ثوابت به شرح زیر هستند.
عدد سنسور | مدل سنسور |
۴۳۰ | GP2Y0A41SK0F |
۱۰۸۰ | GP2Y0A21YK0F |
۱۰۸۱ | GP2D12_24 |
۲۰۱۵۰ | GP2Y0A02YK0F |
۲۰۱۵۰ | GP2Y0A02 |
۱۰۰۵۰۰ | GP2Y0A710K0F |
پس از این مورد، نوبت به اجرای یک نمونه برنامه می رسد. قسمت بعد به این موضوع اختصاص دارد.
اجرای یک نمونه برنامه
پس از آشنایی با کتابخانه و توابع کلیدی کتابخانه ZSharpIR، نوبت به اجرای نمونه برنامه می رسد. برنامه زیر فاصله را به کمک سنسور خوانده و در خروجی نمایش می دهد.
#include <ZSharpIR.h> #define ir A0 //انتخاب پایه آنالوگ برای خواندن سنسور #define model ZSharpIR::GP2D12_24 //تعریف مدل سنسور ZSharpIR ZSharpIR(ir, model); //ایجاد شی void setup() { Serial.begin(9600); } void loop() { int dis = SharpIR.distance(); // خواندن فاصله Serial.print("Mean distance: "); // Serial.println(dis); delay(500); }
لوازم مورد نیاز
جمع بندی
در این آموزش به تحلیل و بررسی کتابخانه ZSharpIR سنسور فاصله سنج شارپ پرداختیم. سنسورهای فاصله سنج یکی از مهم ترین و پرکابردترین ابزارها در صنایع رباتیک، خودرو و…. هستند. به کمک این سنسورها می توان میزان فاصله شی تا جسم را بدست آورد. در این آموزش به تحلیل و بررسی کتابخانه ZsharpIR پرداختیم. به کمک این کتابخانه به سادگی و در کوتاهترین زمان ممکن، می توان اقدام به راه اندازی و کار با سنسورهای فصله سنج شارپ نمود. مطابق رویه معمول تحلیل کتابخانه ها، ابتدا به معرفی سنسور پرداختیم. در ادامه نحوه نصب و الزامات فنی کتابخانه مورد بررسی قرار گرفت. پس از این، با توابع کلیدی و کاربردی کتابخانه آشنا شده و در پایان با ارایه یک مثال، نحوه استفاده از توابع را در مثال های عملی مشاهده نمودیم.
چنانچه در مراحل راه اندازی و انجام این پروژه با مشکل مواجه شدید، بدون هیچ نگرانی در انتهای همین پست، به صورت ثبت نظر سوالتان را مطرح کنید. من در سریعترین زمان ممکن پاسخ رفع مشکل شما را خواهم داد. همچنین اگر ایرادی در کدها و یا مراحل اجرایی وجود دارند میتوانید از همین طریق اطلاع رسانی کنید.