شِفر (کود) جستجو

شِفر (کود) آردوینو و ویدیو برای ماجیول فاصله‌ی مادون‌قرمز شارپ

شِفر (کود) آردوینو و ویدیو برای ماجیول فاصله‌ی مادون‌قرمز شارپ

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

Sharpt IR distance sensor

برای این پروژه از یک حساس(حس کننده) 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) اطمینان حاصل کنید.
  • در صورت لزوم از یک مقاومت برای محدود کردن جریان استفاده کنید.
  • برای قرائت‌های دقیق، حساس(حس کننده) را تمیز نگه دارید.
  • مراقب تداخل نور محیطی باشید.
  • سیم‌کشی باید محکم باشد تا از ایجاد اتصالات ناپایدار جلوگیری شود.

دستورالعمل سیم‌کشی

Arduino wiring for Sharf IR distance sensor
Arduino wiring for Sharf IR distance sensor

برای سیم‌کشی ماجیول فاصلهٔ مادون‌قرمز 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- مرور شِفر (کود)

تصاویر

Sharpt IR distance sensor GP2Y0A21YK0F
Sharpt IR distance sensor GP2Y0A21YK0F
Arduino wiring for Sharf IR distance sensor
Arduino wiring for Sharf IR distance sensor
Sharpt IR distance sensor
Sharpt IR distance sensor GP2Y0A21YK0F
69-This is the Arduino code and video for a Sharp Infrared Sensor Module
زبان: C++
/*
 * 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

}

مواردی که ممکن است به آن‌ها نیاز داشته باشید

منابع و مراجع

فایل‌ها📁

کتابخانه‌های آردوینو (zip)

فایل فریزینگ