ESP8266-Arduino编程实例-VL53L0X飞行时间(激光测距)传感器驱动

VL53L0X飞行时间(激光测距)传感器驱动

1、VL53L0X介绍

VL53L0X 是新一代飞行时间 (ToF) 激光测距模块,采用当今市场上最小的封装,与传统技术不同,无论目标反射率如何,都能提供准确的距离测量。 它可以测量最远 2m 的绝对距离,为测距性能水平树立了新的标杆,为各种新应用打开了大门。

VL53L0X 集成了领先的 SPAD 阵列(单光子雪崩二极管),并嵌入了 ST 的第二代 FlightSenseTM 专利技术。

VL53L0X 的 940 nm VCSEL 发射器(垂直腔面发射激光器)对人眼完全不可见,再加上内部物理红外滤光片,它可以实现更长的测距距离、更高的环境光抗扰度以及更好的鲁棒性来覆盖玻璃光学串扰 .

在这里插入图片描述

2、硬件准备

  • ESP8266 NodeMCU开发板一块
  • VL53L0X 传感器模块一个
  • 面板板一个
  • 杜邦线若干
  • 数据线一条

硬件接线如下:

在这里插入图片描述

3、软件准备

  • Arduino IDE或VSCode + PlatformIO

在前面的文章中,对如何搭建ESP8266开发环境做了详细的介绍,请参考:

ESP8266 NodeMCU的引脚介绍在前面的文章中做了详细的介绍,请参考:

4、代码实现

本次实例使用如下驱动库:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
#include "Adafruit\_VL53L0X.h"

Adafruit_VL53L0X lox = Adafruit\_VL53L0X();

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

// wait until serial port opens for native USB devices
while (! Serial)
{
delay(1);
}

Serial.println("Adafruit VL53L0X test");
if (!lox.begin())
{
Serial.println(F("Failed to boot VL53L0X"));
while(1);
}
// power
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); // pass in 'true' to get debug data printout!

if (measure.RangeStatus != 4)
{ // phase failures have incorrect data
Serial.print("Distance (mm): "); Serial.println(measure.RangeMilliMeter);
}
else
{
Serial.println(" out of range ");
}

delay(100);
}

文章来源: https://iotsmart.blog.csdn.net/article/details/126600188