搜索代码

将VL53L0X激光测距仪与Arduino一起使用

将VL53L0X激光测距仪与Arduino一起使用

在本教程中,我们将探讨如何将VL53L0X激光测距仪与 Arduino 一起使用。该设备允许您使用激光准确测量距离,使其成为机器人和自动化等各种应用的理想选择。在本教程结束时,您将拥有一个功能设置,可以测量距离并将其显示在串行监视器中。

VL53L0X 200cm range sensor-blue

对于我们的项目,我们将使用 Adafruit VL53L0X 库,它简化了与传感器接口的过程。该库提供了初始化传感器、读取测量值和处理可能出现的任何错误所需的功能。您可以参考视频以获取有关设置的视觉指南(在视频 02:15 处)。

硬件解释

该项目的主要组件包括VL53L0X激光测距仪和Arduino板。VL53L0X是一种飞行时间传感器,它使用激光高精度测量长达 2 米的距离。它通过 I2C 协议运行,可以轻松与 Arduino 通信。

Arduino板充当处理来自VL53L0X的数据的微控制器。它向传感器发送命令并接收距离测量值,然后可以在其他应用中显示或使用。正确的接线对于确保传感器的准确读数至关重要。

数据表详细信息

制造者意法半导体
部件号VL53L0X
工作电压2.6 V 至 3.5 V
范围30 毫米至 2000 毫米
准确性典型值 ±3%
接口工业2C
温度范围-40 °C 至 +85 °C
电流消耗<1 mA(待机),20 mA(有源)
VFLGA-8 型

  • 确保传感器正确供电(2.6 V 至 3.5 V)。
  • 保持正确的 I2C 地址设置以避免冲突。
  • 保持传感器清洁,以便进行准确的距离测量。
  • 如果需要,在I2C线路上使用适当的上拉电阻。
  • 避免阳光直射传感器以获得可靠的读数。

接线说明

Arduino Wiring for VL53L0X
Arduino Wiring for VL53L0X

要将VL53L0X传感器连接到 Arduino,请将传感器的 VCC 引脚连接到 Arduino 上的 5V 引脚。GND 引脚应连接到 Arduino 的接地 (GND)。对于 I2C 通信,将 VL53L0X 的 SDA 引脚连接到 Arduino 上的 A4 引脚,并将 SCL 引脚连接到 A5 引脚。如果您使用的是不同的 Arduino 型号,请参阅该板的特定 SDA 和 SCL 引脚分配。

例如,在 Arduino Mega 上,您可以将 SDA 连接到引脚 20,将 SCL 连接到引脚 21。确保所有连接都是安全的,以避免通信问题。如果传感器没有响应,请仔细检查接线并确保 Arduino 已正确供电。

代码示例和演练

下面是初始化VL53L0X传感器的设置函数的片段:

void setup() {
  Serial.begin(9600);
  while (! Serial) {
    delay(1);
  }
  Serial.println("Robojax Test");
  if (!lox.begin()) {
    Serial.println(F("Failed to boot VL53L0X"));
    while(1);
  }
}

此代码初始化串行通信并尝试启动VL53L0X传感器。如果传感器无法启动,它将打印错误消息并停止程序。

接下来,这是来自读取距离测量值的循环函数的片段:

void loop() {
  VL53L0X_RangingMeasurementData_t measure;
  lox.rangingTest(&measure, false);
  if (measure.RangeStatus != 4) {
    Serial.print("Distance (mm): "); Serial.println(measure.RangeMilliMeter);
  } else {
    Serial.println(" out of range ");
  }
  delay(100);
}

该模块连续读取传感器的距离测量值并将其打印到串行监视器。如果测量超出范围,则相应地指示这一点。

演示/期待什么

运行程序时,您应该会在串行监视器中看到距离测量值。读数应每 100 毫秒更新一次。如果传感器指向物体,它将以毫米为单位显示距离。如果对象超出范围,它也会指示这一点。确保在其指定范围内测试传感器以获得最佳结果(在 10:00 的视频中)。

视频时间戳

  • 00:00-介绍
  • 02:15- 接线设置
  • 05:30- 代码说明
  • 10:00-示范

图像

VL53L0X 200cm range sensor-blue
VL53L0X 200cm range sensor-blue
Arduino Wiring for VL53L0X
Arduino Wiring for VL53L0X
15-Using a VL53L0X laser distance meter in Arduino
语言: C++
/*
 * 此示例演示了如何使用连续模式与VL53L0X进行范围测量。
 * // 原始来源于Adafruit https://github.com/adafruit/Adafruit_VL53L0X
 * // Ahmad Shamshiri为RoboJax.com修改
 * // 修改日期:2017年9月26日
 * // Nejrabi
 * 
 * 从Robojax.com获取此代码和其他Arduino代码
 * 在一个结构化的课程中逐步学习Arduino,课程包含所有材料、接线图和库
 * 所有内容一应俱全。
 * 
 * 如果您发现这个教程有帮助,请支持我,这样我可以继续创作
 * 像这样的内容。
 * 
 * 或使用PayPal捐赠 http://robojax.com/L/?id=64
 * 
 * 此代码为“按原样”提供,未提供任何保证或责任。可自由使用,只要您保留此说明不变。*
 * 此代码已从Robojax.com下载
 * 此程序是自由软件:您可以在GNU通用公共许可证的条款下重新分发和/或修改
 * 它,许可证由自由软件基金会发布,版本为第3版,或
 * (您选择的)任何更高版本。
 * 
 * 此程序的发布是希望它对您有用,
 * 但不提供任何保证;甚至不包括对
 * 适销性或特定用途适用性的默示保证。有关更多详情,请参阅
 * GNU通用公共许可证。
 * 
 * 您应该已经收到与此程序一起分发的GNU通用公共许可证的副本。如果没有,请参见<https://www.gnu.org/licenses/>。
 * 
 * 版权所有(c) 2015,Majenko Technologies
 * 版权所有。
 * 
 * 在不进行修改的情况下,允许以源代码和二进制形式进行再分发和使用,前提是满足以下条件:
 * 
 * 源代码的再分发必须保留上述版权声明、本
 * 条件列表和以下免责声明。
 * 
 * 二进制形式的再分发必须在随分发提供的文档和/或
 * 其他材料中复制上述版权声明、本条件列表和以下免责声明。
 * 
 * 除非获得特别的书面许可,否则不得使用Majenko Technologies的名称或其
 * 贡献者的姓名来背书或推广来源于
 * 该软件的产品。
 * 
 * 此软件由版权所有者和贡献者“按原样”提供,且否认任何明示或暗示的保证,包括但不限于
 * 对适销性和特定用途适用性的暗示保证。在任何情况下,版权持有者或贡献者均不对
 * 任何直接、间接、附带、特殊、典范或结果性损害负责
 * (包括但不限于获取替代商品或服务;
 * 使用、数据或利润的损失;或业务中断)无论因何原因及在任何责任理论下,无论是合同、严格责任还是侵权
 * (包括过失或其他),由于使用该软件而产生的,即使已被告知可能发生此类损害。
 */
#include "Adafruit_VL53L0X.h"

Adafruit_VL53L0X lox = Adafruit_VL53L0X();

void setup() {
  Serial.begin(9600);

 // 等待串口为本机 USB 设备打开
  while (! Serial) {
    delay(1);
  }

  Serial.println("Robojax Test");
  if (!lox.begin()) {
    Serial.println(F("Failed to boot VL53L0X"));
    while(1);
  }
 // 能量
  Serial.println(F("VL53L0X API Simple Ranging example\n\n"));
}


void loop() {
  VL53L0X_RangingMeasurementData_t measure;

  Serial.print("Reading a measurement... ");
  lox.rangingTest(&measure, false); // 传入'true'以获取调试数据打印输出!

  if (measure.RangeStatus != 4) { // 相位故障的数据不正确
    Serial.print("Distance (mm): "); Serial.println(measure.RangeMilliMeter);
  } else {
    Serial.println(" out of range ");
  }

  delay(100);
}

资源与参考

文件📁

没有可用的文件。