VL53L0X Time-of-Flight sensor and micro:bit example

The VL53L0X is a Time-of-Flight (ToF) laser-ranging module housed in the smallest package on the market today, providing accurate distance measurement whatever the target reflectances unlike conventional technologies. It can measure absolute distances up to 2m, setting a new benchmark in ranging performance levels, opening the door to various new applications.

The VL53L0X integrates a leading-edge SPAD array (Single Photon Avalanche Diodes) and embeds ST’s second generation FlightSenseTM patented technology.

The VL53L0X’s 940 nm VCSEL emitter (Vertical Cavity Surface-Emitting Laser), is totally invisible to the human eye, coupled with internal physical infrared filters, it enables longer ranging distances, higher immunity to ambient light, and better robustness to cover glass optical crosstalk.

Shopping List

Should be able to pick up one of these sensors from $3 to $4

Amount Part Type
1 VL53L0X
1 BBC micro:bit bulk micro-controller with motion detection, compass, LED display and Bluetooth

 

Schematics/Layout

 

microbit and VL53L0X
microbit and VL53L0X

Code

Again we use a library and again its an adafruit one – https://github.com/adafruit/Adafruit_VL53L0X

The default example worked fine, so here it is

[codesyntax lang=”cpp”]

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

[/codesyntax]

 

Output

Open the serial monitor – this is what I saw. I moved an object closer to the sensor hence the readings decreasing

Reading a measurement… Distance (mm): 84
Reading a measurement… Distance (mm): 49
Reading a measurement… Distance (mm): 47
Reading a measurement… Distance (mm): 47
Reading a measurement… Distance (mm): 49
Reading a measurement… Distance (mm): 48
Reading a measurement… Distance (mm): 52
Reading a measurement… Distance (mm): 44
Reading a measurement… Distance (mm): 43
Reading a measurement… Distance (mm): 42
Reading a measurement… Distance (mm): 46
Reading a measurement… Distance (mm): 41

 

Links

https://www.st.com/resource/en/datasheet/vl53l0x.pdf

https://www.st.com/en/imaging-and-photonics-solutions/vl53l0x.html

VL53L0X Time-of-Flight (ToF) Laser Ranging Sensor Breakout

Leave a Comment

This div height required for enabling the sticky sidebar
Ad Clicks : Ad Views : Ad Clicks : Ad Views :