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

استفاده از ماجیول فاصله‌سنج لیزری CJMCU VL53L0X با آردوینو

استفاده از ماجیول فاصله‌سنج لیزری CJMCU VL53L0X با آردوینو

این آموزش نشان می‌دهد چگونه از فاصله‌سنج لیزری CJMCU VL53L0X با آردوینو استفاده کنید. این ماجیول که دارای حساس(حس کننده) زمان‌پرواز VL53L0X ساخت Texas Instruments و مبدل سطح دوطرفه TXS0108E است (در ویدیو در 00:06)، اندازه‌گیری فاصله دقیق تا دو متر را ارائه می‌دهد (در ویدیو در 00:52). سازگاری آن با سطوح منطقی مختلف (3.3V، 1.8V، 5V) یکپارچه‌سازی با میکروکنترلرهای مختلف را ساده می‌کند (در ویدیو در 00:21). این پروژه دامنه وسیعی از امکانات را می‌گشاید.

ایده‌های پروژه:

  • رباتیک: پیاده‌سازی اجتناب از موانع در ربات‌ها.
  • اتوماسیون: کنترل ماشین‌آلات بر اساس مجاورت.
  • خانه هوشمند: ایجاد روشنایی خودکار بر اساس فاصله.
  • امنیت: یک سیستم هشدار مبتنی بر مجاورت را توسعه دهید.

سخت‌افزار/قطعات

برای ساخت این پروژه به اجزای زیر نیاز خواهید داشت:

  • برد آردوینو (هر مدلی کار می‌کند)
  • ماجیول فاصله‌سنج لیزری CJMCU VL53L0X
  • سیم‌های جامپر

راهنمای سیم‌کشی

ماجیول VL53L0X به شرح زیر به آردوینو متصل می‌شود:

پایه VCC ماجیول را به پایه 5V روی Arduino متصل کنید. رگولاتور داخلی ماجیول ولتاژ 3.3V مورد نیاز حساس(حس کننده) را تأمین می‌کند. (در ویدیو در 01:50)

پایه GND ماجیول را به پایه GND روی آردوینو متصل کنید.

پایه SDA ماجیول را به پایه A4 روی آردوینو متصل کنید.

پایه SCL ماجیول را به پایه A5 روی آردوینو وصل کنید.

پایه XSHUT را بدون اتصال رها کنید مگر اینکه نیاز داشته باشید از آن برای کنترل خاموش‌سازی استفاده کنید. (در ویدئو در 03:50)

توضیح شِفر (کود)

شِفر (کود) ارائه‌شده از کتابخانه VL53L0X استفاده می‌کند. در اینجا توضیحی دربارهٔ بخش‌های کلیدی قابل پیکربندی آمده است:


#include <Wire.h>
#include <VL53L0X.h>

VL53L0X sensor;

void setup()
{
  Serial.begin(9600);
  // ... other setup code ...
  sensor.setTimeout(500); // Set timeout to 500ms (in video at 06:40)
  sensor.startContinuous(); // Start continuous measurement mode (in video at 06:50)
}

void loop()
{
  Serial.print(sensor.readRangeContinuousMillimeters()); // Read distance in mm (in video at 07:01)
  // ... other loop code ...
}

آنsensor.setTimeout(500)این خط مدت زمان تایم‌اوت برای اندازه‌گیری فاصله را روی 500 میلی‌ثانیه تنظیم می‌کند. در صورت نیاز این مقدار را برای برنامهٔ خود تنظیم کنید (در ویدیو در 06:40). اینsensor.startContinuous()تابع اندازه‌گیری پیوسته را آغاز می‌کند و خوانش‌های فاصله را هرچه سریع‌تر ارائه می‌دهد (در ویدئو در 06:50). اینsensor.readRangeContinuousMillimeters()تابع فاصله اندازه‌گیری‌شده را بر حسب میلی‌متر بازمی‌گرداند (در ویدئو در 07:01).

پروژه/نمایش زنده

ویدیو عملکرد حساس(حس کننده) را نشان می‌دهد و نمایش می‌دهد که چگونه قرائت‌های فاصله با تغییر فاصلهٔ حساس(حس کننده) تا هدف تغییر می‌کنند. قرائت‌ها در حد چند میلی‌متر دقیق هستند، به‌ویژه در فواصل بیش از 10mm (در ویدیو در 08:20). در فواصل بسیار نزدیک (کمتر از 10mm) دقت کاهش می‌یابد (در ویدیو در 09:50). این نمایش همچنین نشان می‌دهد که سطوح بازتابنده می‌توانند بر قرائت‌ها تأثیر بگذارند، به‌ویژه اگر لیزر بر سطح عمود نباشد (در ویدیو در 10:32).

فصل‌ها

  • [00:00] معرفی و مروری بر پروژه
  • [00:48] جزئیات حساس(حس کننده) VL53L0X
  • [01:41] نمای کلی و مشخصات ماجیول
  • [02:55] کاربردها و استانداردها
  • [03:35] پایه‌آوت و اتصالات
  • [05:29] توضیح شِفر (کود)
  • [07:45] سیم‌کشی و اتصالات
  • [08:18] نمایش زنده
136-Source code for the VL523L0X distance measurement module for Arduino
زبان: C++
/* This example shows how to use continuous mode to take
range measurements with the VL53L0X. It is based on
vl53l0x_ContinuousRanging_Example.c from the VL53L0X API.

The range readings are in units of mm. 
Updated by Ahmad Shamshiri for Robojax.com on July 23, 2018 in Ajax, Ontario, Canada.
Watch video instructions for this code: https://youtu.be/0PnAyt51IU4
Download the library and get other resources for this code at http://robojax.com
*/

#include <Wire.h>
#include <VL53L0X.h>

VL53L0X sensor;

void setup()
{
  Serial.begin(9600);
  Serial.println("Robojax CJMCU VL523L0X laser distance test");
  Wire.begin();

  sensor.init();
  sensor.setTimeout(500);

  // Start continuous back-to-back mode (take readings as
  // fast as possible).  To use continuous timed mode
  // instead, provide a desired inter-measurement period in
  // ms (e.g. sensor.startContinuous(100)).
  sensor.startContinuous();
}

void loop()
{
  Serial.print(sensor.readRangeContinuousMillimeters());// print distance

  if (sensor.timeoutOccurred()) { Serial.print(" TIMEOUT"); }

  Serial.println();
}

منابع و مراجع

فایل‌ها📁

هیچ فایلی موجود نیست.