شِفر (کود) آردوینو و ویدیو برای ماجیول فاصلهی مادونقرمز شارپ
در این آموزش، ما بررسی خواهیم کرد چگونه از ماجیول فاصلهیاب مادونقرمز Sharp برای اندازهگیری فاصلهها و اجرای اقداماتی بر اساس فاصلهٔ تشخیصدادهشده استفاده کنیم. این پروژه نشان میدهد چگونه سختافزار را راهاندازی کرده و شِفر (کود) آردوینو را بنویسیم تا اندازهگیریهای فاصله را خوانده و هنگام تشخیص جسمی در یک بازهٔ مشخص، یک بیزر را فعال کند. شما یاد خواهید گرفت چگونه قطعات را بههم سیمکشی کنید و شناسههای کلیدی در شِفر (کود) را بشناسید.

برای این پروژه از یک حساس(حس کننده) Sharp IR استفاده خواهیم کرد که نور مادونقرمز منتشر میکند و فاصله تا یک جسم را بر اساس نور بازتابی اندازهگیری میکند. وقتی جسمی در محدوده تشخیص داده شود، بازر فعال میشود و روشی ساده اما مؤثر برای نمایش قابلیتهای ماجیول Sharp IR فراهم میکند. حتماً ویدیو را برای راهنمای تصویری دربارهٔ راهاندازی و شِفر (کود) (در ویدیو در 00:00) بررسی کنید.
سختافزار توضیح داده شده
اجزای اصلی این پروژه عبارتاند از یک حساس(حس کننده) فاصله مادونقرمز شارپ، یک برد آردوینو و یک بیزر. حساس(حس کننده) مادونقرمز شارپ از یک فرستنده و یک گیرنده تشکیل شده که با هم کار میکنند تا فاصلهها را اندازهگیری کنند. وقتی نور مادونقرمز فرستنده به یک جسم برخورد میکند، بازتابیده شده و به گیرنده بازمیگردد و این امکان را فراهم میکند تا فاصله را بر اساس زمانی که نور برای بازگشت صرف میکند محاسبه کند.
آردوینو بهعنوان کنترلکننده عمل میکند، اندازهگیریهای فاصله را از حساس(حس کننده) مادونقرمز میخواند و بر اساس این اندازهگیریها بیزر را کنترل میکند. بیزر هنگامی که یک جسم در یک محدودهٔ مشخص تشخیص داده شود به صدا درمیآید، که این تنظیم را برای کاربردهایی مانند تشخیص موانع در رباتیک مفید میسازد.
جزئیات مشخصات فنی
| تولیدکننده | تیز |
|---|---|
| شماره قطعه | GP2Y0A21YK0F |
| ولتاژ منطقی/ورودی-خروجی | ۵ ولت |
| ولتاژ تغذیه | 4.5 - 5.5 ولت |
| ولتاژ خروجی | 0.4 تا 2.5 V |
| محدوده اندازهگیری | 10 - 80 سانتیمتر |
| زمان پاسخدهی | 50 میلیثانیه |
| جریان خروجی | 20 میلیآمپر |
| بسته | ماجیول |
| یادداشتها / واریانتها | در بردهای مختلف موجود است |
- برای جلوگیری از آسیب، از مناسب بودن منبع تغذیه (4.5 - 5.5 V) اطمینان حاصل کنید.
- در صورت لزوم از یک مقاومت برای محدود کردن جریان استفاده کنید.
- برای قرائتهای دقیق، حساس(حس کننده) را تمیز نگه دارید.
- مراقب تداخل نور محیطی باشید.
- سیمکشی باید محکم باشد تا از ایجاد اتصالات ناپایدار جلوگیری شود.
دستورالعمل سیمکشی

برای سیمکشی ماجیول فاصلهٔ مادونقرمز Sharp، پایهٔ زمین (GND) ماجیول را به پایهٔ GND روی آردوینو متصل کنید. سپس پایهٔ VCC ماجیول را به پایهٔ 5V روی آردوینو وصل کنید. پایهٔ خروجی سیگنال ماجیول Sharp IR باید به پایه 2 آردوینو متصل شود تا دادههای فاصله را بخواند.
برای بیزر، پایه بلندتر (مثبت) را به پایه 8 روی آردوینو و پایه کوتاهتر (منفی) را به GND متصل کنید. اطمینان حاصل کنید که همه اتصالات محکم هستند و قطعات بهدرستی تغذیه میشوند تا عملکرد صحیح تضمین شود.
نمونههای شِفر (کود) و راهنمای گامبهگام
در زیر یک گزیده کوتاه از شِفر (کود) آردوینو آمده است که در آن پایهها را تعریف کرده و حساس(حس کننده) را راهاندازی میکنیم. شناسهIRبهعنوان پایه آنالوگ مورد استفاده برای سیگنال حساس(حس کننده) تعریف میشود.
#define IR A0 // define signal pin
SharpIR SharpIR(IR, model); // Initialize SharpIR with the defined pinاین شِفر (کود) حساس(حس کننده) مادونقرمز شارپ را روی پایه آنالوگ مشخصشده راهاندازی میکند. شناسهmodelنوع حساس(حس کننده) مورد استفاده را مشخص میکند، که در این مورد برای مدل GP2Y0A21YK0F روی 1080 تنظیم شده است.
در تابع setup، ارتباط سریال را برای پایش خوانشهای فاصله راهاندازی میکنیم:
void setup() {
Serial.begin(9600); // Initialize serial communication
Serial.println("Robojax Sharp IR "); // Print message to serial monitor
}تابع setup ارتباط سریال را در سرعت 9600 baud مقداردهی اولیه میکند و به آردوینو اجازه میدهد دادههای فاصله را برای مشاهده به Serial Monitor ارسال کند.
درون تابع loop، فاصله را از حساس(حس کننده) میخوانیم و آن را چاپ میکنیم:
void loop() {
int dis = SharpIR.distance(); // Read the distance
Serial.print("Mean distance: "); // Print distance to serial monitor
Serial.println(dis); // Output the distance measurement
}این گزیده نشان میدهد چگونه فاصله را بهطور مداوم بخوانید و آن را در پنجره Serial Monitor چاپ کنید. متغیرdisمقدار فاصلهای که توسط حساس(حس کننده) مادونقرمز شارپ اندازهگیری شده را نگه میدارد.
نمایش / آنچه باید انتظار داشته باشید
وقتی راهاندازی کامل شد، میتوانید انتظار داشته باشید که هرگاه جسمی در محدودهٔ مشخصشدهٔ حساس(حس کننده) IR شارپ شناسایی شود، بیزر به صدا درآید. نمایشگر مسلسل عبارت میانگین فاصله را همراه با فاصلهٔ اندازهگیریشده بر حسب سانتیمتر نمایش میدهد. اگر هیچ جسمی در محدوده نباشد، مانیتور این موضوع را نیز نشان خواهد داد (در ویدئو در 02:30).
از جمله اشتباهات رایج میتوان به اطمینان از همراستایی صحیح حساس(حس کننده) و نبود مانعی که سیگنال مادونقرمز را مسدود کند اشاره کرد. همچنین بررسی کنید که منبع تغذیه پایدار باشد تا از قرائتهای ناپایدار جلوگیری شود.
برچسبهای زمانی ویدئو
- 00:00- معرفی پروژه
- 02:30- نمایش عملکرد حساس(حس کننده)
- 03:45توضیح سیمکشی
- 05:00- مرور شِفر (کود)
/*
* Sharp IR (infrared) distance measurement module for Arduino
* Measures the distance in cm.
* Original library: https://github.com/guillaume-rico/SharpIR
* Watch video instruction for this code: https://youtu.be/GL8dkw1NbMc
*
* Full explanation of this code and wiring diagram is available at
* my Arduino Course at Udemy.com here: http://robojax.com/L/?id=62
* Written by Ahmad Shamshiri on Feb 03, 2018 at 07:34
* in Ajax, Ontario, Canada. www.robojax.com
*
* Get this code and other Arduino codes from Robojax.com
Learn Arduino step by step in a structured course with all material, wiring diagrams, and libraries
all in one place.
If you found this tutorial helpful, please support me so I can continue creating
content like this.
or make a donation using PayPal http://robojax.com/L/?id=64
* * This code is "AS IS" without warranty or liability. Free to be used as long as you keep this note intact.*
* This code has been downloaded from Robojax.com
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
*/
// Sharp IR code for Robojax.com
#include <SharpIR.h>
#define IR A0 // define signal pin
#define model 1080 // used 1080 because model GP2Y0A21YK0F is used
// Sharp IR code for Robojax.com
// ir: the pin where your sensor is attached
// model: an int that determines your sensor: 1080 for GP2Y0A21Y
// 20150 for GP2Y0A02Y
// 430 for GP2Y0A41SK
/*
2 to 15 cm GP2Y0A51SK0F use 1080
4 to 30 cm GP2Y0A41SK0F / GP2Y0AF30 series use 430
10 to 80 cm GP2Y0A21YK0F use 1080
10 to 150 cm GP2Y0A60SZLF use 10150
20 to 150 cm GP2Y0A02YK0F use 20150
100 to 550 cm GP2Y0A710K0F use 100550
*/
SharpIR SharpIR(IR, model);
void setup() {
// Sharp IR code for Robojax.com
Serial.begin(9600);
Serial.println("Robojax Sharp IR ");
}
void loop() {
// Sharp IR code for Robojax.com
delay(500);
unsigned long startTime=millis(); // takes the time before the loop on the library begins
int dis=SharpIR.distance(); // this returns the distance to the object you're measuring
// Sharp IR code for Robojax.com
Serial.print("Mean distance: "); // returns it to the serial monitor
Serial.println(dis);
//Serial.println(analogRead(A0));
unsigned long endTime=millis()-startTime; // the following gives you the time taken to get the measurement
Serial.print("Time taken (ms): ");
Serial.println(endTime);
// Sharp IR code for Robojax.com
}
مواردی که ممکن است به آنها نیاز داشته باشید
-
آمازون
منابع و مراجع
-
خارجیدیتاشیت Sharp IR GP2Y0A51SK0F (PDF)global.sharp
-
خارجیکتابخانه شفاف از RoboJob.comrobojax.com
فایلها📁
کتابخانههای آردوینو (zip)
-
کتابخانه آردوینو برای حساس(حس کننده) فاصله مادون قرمز تیز
robojax-sharp_IR-master.zip
فایل فریزینگ
-
حساس(حس کننده) IR تیز GP2Y0A02YK0F
sharp ir sensor GP2Y0A02YK0F .fzz