آموزش راه‌اندازی ماژول فاصله سنج لیزری VL53LXX با آردوینو

ویژگی‌های ماژول فاصله‌سنج لیزری VL53LXX

ماژول سنسور VL53L1X یک سنسور فاصله ­سنج لیزری بر اساس روش Time-of-Flight (ToF) است. ToF با سنجش مدت زمان رفت و برگشت یک موج، فاصله تا جسم را محاسبه می‌کند. سنسور VL53L1X می تواندفاصله ای تا رنج 4 متر را با فرکانس حداکثر 50Hz محاسبه کند.

کنترل این ماژول کم مصرف از طریق رابط I2C صورت می‌گیرد.

در این ماژول برخلاف نسل‌های قبلی ماژول‌های فاصله­ سنج، فیلتر‌های IR و optic به صورت فیزیکی گنجانده شده، و از آخرین تکنولوژی ToF شرکت ST بهره برده شده است که امکان محاسبه دقیق فاصله تا جسم را فراهم می‌آورد، مستقل از‌ آنکه رنگ و یا جنس جسم هدف چه باشد.

ماژول دارای رگولاتوری بر روی برد است که به خوبی در هر دو  مود 3.3 و 5 ولت قابل راه‌اندازی است.

VL53L1X Module

مشخصات فنی ماژول فاصله‌سنج لیزری VL53L1X

  • ولتاژ کاری: 3v/5v
  • رنج اندازه گیری فاصله: 40 تا 4000 میلی‌متر
  • خطای اندازه‌گیری: ±5%
  • فرکانس نمونه برداری: تا 50 هرتز
  • دمای مجاز عملیاتی: -20 تا 80 درجه سانتی‌گراد
  • زاویه دید: 27°
  • طول موج لیزر: 940nm
  • ابعاد: 80*16.35 میلی‌متر

برای اطلاعات دقیق‌تر به دیتاشیت ماژول مراجعه فرمایید. لینک دیتاشیت ماژول و سنسور فاصله‌سنج لیزری VL53L1X در زیر آورده شده است.

معرفی پایه‌های (Pinout) ماژول فاصله سنج VL53LXX

ماژول VL53L1X دارای شش پایه به شرح زیر است:

  • VCC : تغذیه ماژول (3 یا 5 ولت)
  • GND : زمین
  • SHUT : پین غیر فعال کردن ماژول (Active Low)
  • INT : پایه اینتراپت خروجی قابل تنظیم برای ارتباط با میکرو 
  • SCL: کلاک برای ارتباط I2C
  • SDA : خط دیتای ارتباط I2C
VL53L1X Pinout

لوازمی که به آن احتیاج دارید

قطعات مورد نیاز

Arduino UNO R3 × 1
ماژول فاصله سنج لیزری VL53L1X × 1
سیم جامپر نری مادگی × 1

نرم افزارهای مورد نیاز

Arduino IDE

راه‌اندازی ماژول فاصله سنج لیزری VL53L1X با آردوینو

گام اول: سیم بندی

مدار را مطابق شکل زیر ببندید.

VL53L1X Interface Circuit

گام دوم: نصب کتابخانه

کتابخانه ماژول فاصله ­سنج لیزری VL53L1X را از اینجا دانلود کرده و نصب کنید.

اگر برای نصب کتابخانه به راهنمایی بیشتری نیاز دارید روی این لینک کلیک کنید.

گام سوم: کد

کد زیر را در آردوینو کپی و اجرا کنید.


#include <Wire.h>
#include <VL53L1X.h>
VL53L1X sensor;
void setup()
{
 Serial.begin(115200);
 Wire.begin();
 Wire.setClock(400000); // use 400 kHz I2C
 sensor.setTimeout(500);
 if (!sensor.init())
 {
 Serial.println("Failed to detect and initialize sensor!");
 while (1);
 }
 sensor.setDistanceMode(VL53L1X::Short);
 sensor.setMeasurementTimingBudget(15000);
 sensor.startContinuous(15);
 Serial.println("new program");
}

void loop()
{
 Serial.println(String(millis())+","+String(sensor.read()));
 delay(50);
}
Arduino

پنجره سریال مانیتور را باز کنید. اعداد نمایش داده شده باید با تغییر فاصله دست تا سنسور، تغییر کنند. عدد اول بعد از فلش، زمان و عدد بعدی، فاصله به میلی­متر است.

results in serial monitor

آموزش های مشابه

Comments (20)

  • راستین Reply

    سلام،.وقت بخیر
    میشه مقدار فاصله رو بصورت خروجی آنالوگ بده تا به ورودی آنالوگ PLC وصل کرد؟

    می 3, 2023 at 11:31 ق.ظ
    • محمد دمیرچی Reply

      با سلام
      خیر خروجی این سنسور I2C می باشد.

      می 6, 2023 at 11:00 ق.ظ
  • ابوالفضل Reply

    سلام
    قابلیت مشاهده بر روی ال سی دی کاراکتری هست؟
    اگه هست میشه کمک کنید

    ژوئن 8, 2023 at 12:41 ب.ظ
    • محمد دمیرچی Reply

      با سلام
      امکانش وجود دارد.
      از آموزش lcd کارکتری مورد نظر ، نحوه نمایش داده ها را کپی کنید و در پروژه خود بیاوید.
      در جایی که متن نمایشی را که در سریال مانیتور پیرنت می شود را به نمایشگر نیز بدهید تا آن نیز نمایش بدهد.

      ژوئن 10, 2023 at 11:32 ق.ظ
  • مرتضی Reply

    کدی ک نوشته شده اعدادمثل یک تایمر افزایشی فقط شمرده میشوند و توی عکس هم به همین صورته(مقدار توی عکس و مقداری ک من گرفتم فاصله لیدار نیستند فقط مقدار تایمر هستند)
    در ضمن رنج اندازه گیری این سنسور تا چهار متر هست یعنی ۵۲۰۰۰ که روی عکس شما هست خارج از رنج اندازه گیری سنسور هست

    مارس 5, 2024 at 1:37 ب.ظ
    • محمد دمیرچی Reply

      با سلام
      اکر دقت بفرمایید در کد مقدار millis() و مقدار sensor.read در کنار هم چاپ می شود که مقدار اول زمان روشن شدن میکروکنترلر می باشد (ربطی به سنسور ندارد و برای مشخص شدن زمان استفاده می شود)
      همچنین تیک show Timestamp نیز زده شده است که ساعت دریافت دیتا توسط سریال مانیتور نمایش داده میشود.
      دیتا دریافتی از سنسور در مقدار آخر بعد از , می باشد که می توانید از آن استفاده کنید.

      مارس 9, 2024 at 10:43 ق.ظ
  • مرتضی Reply

    کد قرار داده شده در سایت اشتباه است و فقط یک شمرنده سعودی روی سریال پرینت نمایش میده دوستانی که این مشکلو دارند از خود اگزمپل های کتابخانه مربوطه استفاده کنند که هم در این سایت هم در سایت خود اردوینو موجود است.

    مارس 5, 2024 at 1:42 ب.ظ
  • محمد Reply

    سلام و درود من میخوام دیتاش رو با stm32 بخونم، خیلی لازم دارم و واقعا بلد نیستم، هزینه ش رو هم حاضرم بدم اگر انجام بدید برام 09133757790 عباسی ممنون

    می 12, 2024 at 1:46 ب.ظ
  • محمد Reply

    سلام چرا برا من این سنسور بیشتر دو متر رو صفر نشون میده
    همه مراحشم درست رفتم

    ژوئن 17, 2024 at 10:25 ب.ظ
    • محمد دمیرچی Reply

      با سلام.
      مورد اول اینکه پس از بررسی هایی که انجام شد زمانی که فاصله بیشتر از 1.5 الی 2 متر میشود و برچسب روی سنسور برداشته نشده باشد خطا ایجاد میشود و مقدار عدد به زیر 100 کاهش پیدا میکند.
      همچنین در آموزش از دستور فاصله دقیق و کوتاه استفاده شده است و برای اینکه از متراژ های بیشتری استفاده کنید خط
      sensor.setDistanceMode(VL53L1X::Short);
      را به
      sensor.setDistanceMode(VL53L1X::Long);
      تغییر بدهید

      ژوئن 23, 2024 at 3:28 ب.ظ
  • علی Reply

    سلام وقت بخیر
    از اونجایی که پروتکل I2C داره و نمیشه آدرس را تغییر داد ، برای استفاده همزمان از چند ماژول چه راه حلی پیشنهاد میدید؟

    ژوئن 19, 2024 at 8:40 ق.ظ
    • محمد دمیرچی Reply

      با سلام
      بعضی از ماژول ها پایه ای برای تغییر آدرس I2C دارند. در صورتی که نداشته باشند، می توانید از یکی از روش های زیر استفاده کنید.
      1. استفاده از Software I2C و وصل کردن سنسور به سایر پایه های میکروکنترلر می باشد.
      2. استفاده از ماژول های تقسیم کننده I2C مانند برد توسعه 8 کاناله I2C TCA9548A

      ژوئن 19, 2024 at 9:57 ق.ظ
  • مهدی Reply

    سلام
    می‌توان خروجی این ماژول را بر روی oled دید
    و می‌توان یک دکمه ۰ کننده روش قرار بدهیم

    نوامبر 14, 2024 at 9:29 ب.ظ
    • محمد دمیرچی Reply

      با سلام
      همه این موارد با برنامه نویسی امکان پذیر میباشد.
      در صورتی که میخواهید با این مآژول یک کولیس بسازید. پیشنهاد میکنم یک عدد آماده اش را تهیه بکنید. دقت بالاتری دارند.

      نوامبر 17, 2024 at 12:43 ب.ظ
  • عباس Reply

    سلام زاویه دید این ماژول رو تا چند درجه میشه کاهش داد؟

    نوامبر 16, 2024 at 1:14 ق.ظ
    • محمد دمیرچی Reply

      با سلام
      این ماژول ها نوری می باشند و نور آنها با چشم قابل تشخیص نمی باشد.
      زاویه دید ماژول نیز به صورت دیفالت مستقیم می باشد. ولی چون ماهیت نور مقدار پخش پذیری دارد از انتشار آن مقداری پخش میشود. سپس سنسور خواندن نیز دوباره چون میخواهد این نور ها را جمع بکند. باز هم با مقداری زاویه میخواند.
      برای اطلاعات بیشتر باید به دیتاشیت مراجعه بفرمایید.

      نوامبر 17, 2024 at 12:48 ب.ظ
  • عباس Reply

    سلام من این ماژول رو تهیه کردم ۴ عدد
    روی آردینو نصب کردم و روی رنج ۱۹۰۰ تنظیم کردم
    ولی فقط یدونه از سنسور قابلیت تشخیص تا فاصله ۱۹۰۰ رو داره
    بقیه تا رنج ۱۴۰ یا ۱ کار میکنن
    دلیش چی میپننه بله

    می 12, 2025 at 9:28 ب.ظ
    • محمد دمیرچی Reply

      با سلام
      در مرحله اول این ماژول به دلیل اینکه فقط یک آدرس دارد باید تک به تک بر روی آردوینو خود نصب بکنید و در صورتی که میخواهید همزمان همگی را فعال بکنید نیاز است که از ماژول برد توسعه 8 کاناله I2C TCA9548A استفاده بکنید.
      اگر تک به تک تست کردید و مشکل در فاصله داشتید و مهلت تست شما نگذشته است. لطفا درخواست خود را در بخش درخواست مرجوعی ثبت بنمایید تا بررسی بشود.

      می 13, 2025 at 10:52 ق.ظ
      • عباس Reply

        برای هرکدوم آدرس جداگانه دادم
        ولی تک به تک تست میکنم مشکل ندارن
        اگه برد توسعه ۸ کاناله تهیه کنم مشکل حل میشه؟

        می 13, 2025 at 10:38 ب.ظ

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد.