اندازه‌گیری فاصله با ماجیول لیزری VL53L0X با 6 پایه و LCD1602-I2C برای آردوینو

اندازه‌گیری فاصله با ماجیول لیزری VL53L0X با 6 پایه و LCD1602-I2C برای آردوینو

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

VL53L0X 200cm range sensor

برای دستیابی به این هدف، از حساس(حس کننده) فاصله‌سنج لیزری VL53L0X استفاده خواهیم کرد که از طریق I2C با آردوینو ارتباط برقرار می‌کند. نمایشگر LCD1602 نمایش بصری واضحی از فاصلهٔ اندازه‌گیری‌شده ارائه می‌دهد. برای روشن شدن روند کدنویسی، لطفاً به ویدئو (در 00:00) مراجعه کنید.

سخت‌افزار به زبان ساده

اجزای اصلی در این پروژه عبارت‌اند از حساس(حس کننده) فاصله‌سنج لیزری VL53L0X و نمایشگر LCD1602. VL53L0X از لیزر برای اندازه‌گیری دقیق فاصله استفاده می‌کند، که آن را برای کاربردهای مختلف از جمله رباتیک و اتوماسیون مناسب می‌سازد. این ماجیول از طریق ارتباط I2C کار می‌کند که امکان ادغام آسان با آردوینو را فراهم می‌کند.

نمایشگر LCD1602 یک نمایشگر کاراکتری مجهز به I2C است که می‌تواند حداکثر 16 خصیصه را روی دو خط نمایش دهد. این نمایشگر فرایند نمایش داده‌ها را ساده می‌کند، زیرا به پایه‌های کمتری نسبت به نمایشگرهای LCD سنتی نیاز دارد. با هم، این اجزا یک سیستم اندازه‌گیری فاصله قدرتمند و کاربرپسند ایجاد می‌کنند.

جزئیات مشخصات فنی

تولیدکنندهاس‌تی میکروالکترونیکس
شماره قطعهVL53L0X
ولتاژ منطق/ورودی-خروجی1.8 ولت تا 2.8 ولت
ولتاژ تغذیه2.6 V تا 3.5 V
جریان خروجی (به ازای هر کانال)...
جریان پیک (برای هر کانال)...
راهنمای فرکانس PWM...
آستانه‌های منطقی ورودی...
افت ولتاژ / Rدرین–سورس (در حالت روشن)/ اشباع...
محدودیت‌های حرارتی
بسته...
یادداشت‌ها / گونه‌ها...

  • از مناسب بودن ولتاژ منبع تغذیه اطمینان حاصل کنید (2.6 V تا 3.5 V).
  • در صورت نیاز، از مقاومت‌های پول‌آپ روی خطوط SDA و SCL استفاده کنید.
  • حساس(حس کننده) را از سطوح بازتابنده دور نگه دارید تا از خوانش‌های نادرست جلوگیری شود.
  • آدرس I2C را بررسی کنید (پیش‌فرض برای VL53L0X برابر 0x29 است).
  • در صورت استفاده در محیط‌های با دمای بالا، به دفع حرارت توجه کنید.

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

Arduino wiring for VL53L0X and LCD1602 I2C (4 wires LCD)

برای سیم‌کشی حساس(حس کننده) VL53L0X و نمایشگر LCD1602، با اتصال تغذیه و زمین شروع کنید. وصل کنیدVCCپایهِ VL53L0X به5Vپایه روی آردوینو وGNDپایه را به زمین آردوینو وصل کنید. برای LCD1602، آن را وصل کنیدVCCبه همان5VوGNDبه زمین نیز.

در مرحله بعد، خطوط ارتباطی I2C را متصل کنید. اینSDAپایهِ VL53L0X باید بهA4پایه روی آردوینو، وSCLپایه باید برود بهA5. آنXSHUTپایه را می‌توان به ... متصل کردD12روی آردوینو قرار دارد، اما می‌توان آن را بدون اتصال نیز رها کرد. برای LCD1602، اطمینان حاصل کنیدSDAوSCLآنها نیز به همان پایه‌هایی متصل هستند که حساس(حس کننده) VL53L0X به آنها متصل است.

نمونه‌های شِفر (کود) و راهنمای گام‌به‌گام

VL53L0X sensor;

#include 
LiquidCrystal_I2C lcd(0x27, 16, 2);

void setup() {
  Serial.begin(9600);
  Wire.begin();
  sensor.init();
  sensor.setTimeout(500);
  sensor.startContinuous();
  lcd.begin();
  lcd.backlight(); 
}

در تابع setup، ما ارتباط سریال و باس I2C را مقداردهی اولیه می‌کنیم. اینsensor.init()حساس(حس کننده) VL53L0X را مقداردهی اولیه می‌کند، در حالی کهlcd.begin()نمایشگر LCD را مقداردهی اولیه می‌کند. نور پس‌زمینهٔ نمایشگر روشن می‌شود تا مشاهدهٔ آن به‌راحتی ممکن باشد.

void loop() {
  int distance = sensor.readRangeContinuousMillimeters();
  Serial.print("Distance: ");
  lcd.clear();
  lcd.print("Robojax VL53L0X");
  lcd.setCursor(0,1); 
  lcd.print("Dist.: ");
  lcd.setCursor(7,1); 
  lcd.print(distance); 
  Serial.println();
  delay(100);
}

در داخل حلقه، به‌طور مداوم فاصله را با استفاده ازsensor.readRangeContinuousMillimeters()و آن را در نمایشگر مسلسل چاپ می‌کند. ال‌سی‌دی با اندازه‌گیری فاصله به‌روزرسانی می‌شود و بازخورد در زمان واقعی را فراهم می‌کند. تأخیر 100 میلی‌ثانیه تضمین می‌کند که خوانش‌ها خیلی مکرر به‌روزرسانی نشوند و خواندن آسان شود.

نمایش / آنچه باید انتظار داشته باشید

پس از روشن شدن، سیستم به‌صورت پیوسته فاصله را اندازه‌گیری کرده و نتایج را روی LCD نمایش می‌دهد. می‌توانید انتظار داشته باشید که مقادیر فاصله وقتی اجسام را به حساس(حس کننده) نزدیک‌تر یا دورتر می‌کنید تغییر کنند. اگر مشکلی در حساس(حس کننده) وجود داشته باشد، مانند خطاهای timeout، پیام‌های مربوطه در نمایشگر مسلسل چاپ خواهند شد (در ویدئو در 03:15).

تصاویر

VL53L0X 200cm range sensor
VL53L0X 200cm range sensor
Arduino wiring for VL53L0X and LCD1602 I2C (4 wires LCD)
Arduino wiring for VL53L0X and LCD1602 I2C (4 wires LCD)
113-Measure distance with a laser VL53L0X 6-pin module and an LCD1602-I2C for Arduino
زبان: C++
کپی شد!

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

فایل‌ها📁

فایل Fritzing

سایر فایل‌ها