ESP8266&VL53L0X实现激光测距

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

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

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

注意

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

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

硬件设备

  • ESP8266
  • VL53L0X

物理接线

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
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 高考完的暑假,没有去旅游也没有如愿抱起我的吉他。整天宅在家里,奈何文艺气息翻滚,急需人分享,便频繁的出入于院官方群...
    莲子心一一阅读 385评论 0 2
  • 我是宇宙公民vivien,决定加入宇宙公民高效阅读训练营!坚持21天每天早5:30起床学习如何一小时阅读一本书! ...
    7cfeb90ac901阅读 137评论 0 0
  • 思路 2019年11月16日 打卡 《财务自由之路》读后观(二) 作者叫博多·舍费尔,被称为“欧洲第一金钱教练”。...
    思路的雪球阅读 265评论 0 0