ESP8266&VL53L0X实现激光测距

2020-02-02  本文已影响0人  Songzh

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

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

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

注意

I2C仅允许每个设备一个地址,因此您必须确保每个I2C设备都有一个唯一的地址。 VL53L0X的默认地址为0x29,但是您可以在软件中更改它。

要设置新地址,可以使用以下两种方法之一。 在初始化期间,不调用lox.begin(),而是调用lox.begin(0x30)将地址设置为0x30。 或者,您以后可以随时调用lox.setAddress(0x30)。

硬件设备

物理接线

image.png
ESP8266 VL53L0X
D1 SCL
D2 SDA
Vin 5v
GND GND

软件代码

#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);
}

截图

image.png
上一篇下一篇

猜你喜欢

热点阅读