Pololu Blog »
New product: VL53L8CX Time-of-Flight 8×8-Zone Distance Sensor Carrier
I’m excited to announce the release of our new VL53L8CX Time-of-Flight 8×8-Zone Distance Sensor Carrier, a multi-zone rangefinder based on ST’s latest VL53L8CX FightSense distance sensor. It uses time-of-flight (TOF) readings of infrared laser light to precisely measure distances of multiple targets across a grid of multiple zones, allowing you to generate a depth map with up to 8×8 resolution and 4 m range. Relative to older similar sensors, such as the VL53L5CX, the VL53L8CX also offers improved performance in ambient light and adds an SPI interface that can significantly speed up initialization and data acquisition. Since it has the same FOV and multi-zone capability, you can think of the VL53L8CX as basically an upgraded version of the VL53L5CX.
![]() |
Visualization of VL53L8CX and VL53L5CX sensing a person standing against a wall about 2.7 m away. The VL53L8CX gives more accurate measurements with higher confidence (indicated with green). |
|---|
Compared to sensors that only give a 1D measurement, the VL53L8CX does demand more from a microcontroller to support its operation as a 3D lidar. Initializing the sensor through I²C or SPI and processing its data requires a lot of RAM and program memory, so it is not practical to use the VL53L8CX with most 8-bit MCUs like the Arduino Uno. We found that the Raspberry Pi Pico’s RP2040 microcontroller worked well for interfacing with the VL53L8CX, and other similarly powerful 32-bit controllers like an ESP32 should also work.
With the release of this module, we now have seven pin-compatible carriers for ST’s various FlightSense time-of-flight sensors:
![]() VL6180X carrier |
![]() VL53L0X carrier |
![]() VL53L1X carrier |
![]() VL53L3CX carrier |
![]() VL53L5CX carrier |
![]() VL53L7CX carrier |
![]() VL53L8CX carrier |
|
|---|---|---|---|---|---|---|---|
| Maximum range:(1) | 60 cm | 200 cm | 400 cm | 500 cm | 400 cm | 350 cm | 400 cm |
| Minimum range: | ~1 cm | ~3 cm | 4 cm | 1 cm | 2 cm | 2 cm | 2 cm |
| Field of view: | 25° | 25° | 15° to 27° diagonal, programmable |
25° | 65° diagonal, up to 8×8 zones |
90° diagonal, up to 8×8 zones |
65° diagonal, up to 8×8 zones |
| Other features: | ambient light sensing, low memory footprint(2) |
low memory footprint(2) | low memory footprint(2) | multi-target detection | multi-target detection | multi-target detection | multi-target detection, improved performance in ambient light |
| Maximum update rate:(1) | ~150 Hz | 50 Hz | 100 Hz | 125 Hz | 60 Hz | 60 Hz | 60 Hz |
| Operating voltage range: | 2.6 V to 5.5 V | 2.5 V to 5.5 V | 3.2 V to 5.5 V | ||||
| Regulator voltage: | 2.8 V | 3.3 V | 1.8 V and 3.3 V | ||||
| Typical active-ranging supply current: |
25 mA | 20 mA | 20 mA | 20 mA | 100 mA | 100 mA | 100 mA |
| Peak supply current: | 40 mA | 40 mA | 40 mA | 40 mA | 150 mA | 150 mA | 150 mA |
| Interface: | I²C | I²C, SPI | |||||
| Dimensions: | 0.5″ × 0.7″ | 0.5″ × 0.9″ | |||||
| 1-piece price: | $19.95 | $19.95 | $22.95 | $19.95 | $19.95 | $19.95 | $24.95 |
| 1 Effective range and update rate depend on configuration, target, and environment. 2 Suitable for use with typical 8-bit MCUs. |
|||||||
5 comments
We do not currently have any MicroPython example programs for the VL53L8CX, but if you are interested in working on that, ST's API (application programming interface) should be a useful reference. You can find a link to that as well as other documentation on the product page under the "Resources" tab.
- Patrick
It should be possible to make a program to run on your Raspberry Pi that allows it to control the VL53L8CX using ST's Ultra Lite Driver API, or it might be possible to use their Linux driver, but we do not have a specific guide or example demonstrating how to do either of those. Beyond the "Resources" tab of our product page (specifically the user manual UM3109), you could try checking ST's documentation page for the VL53L8CX to see if any of their other resources could be helpful (which is linked to on our page under "Recommended links."
- Patrick
I have been testing this sensor for my application using ESP32 based board and I found that the readings/values of ambient and nb target do not co-relate or give any context to the values of reflect, signal, spad and sigma.
Based on my data I found that
#1 Sigma - is the most reliable feature to filter noise
#2 SPAD - is the most reliable feature to see highly reflective spots
#3 Reflect/Signal - give more reliable data (context) around the reflective spots - usually complementary
But
#4 Ambient - shows the reflective spots but not all the time and not complement other features, does it signify something else? more of environment?
#5 nb_target - what does it even show? this is the most ambiguous feature. There is a option to choose up to 4, does that mean 4 signal are sent per zone? and its filtered based on the best? Does all the other feature's data the values of the best of this 4 or on what basis?
#6 Motion - seems to be 255 for points below the centre row in "one" of the sensor, all the time (I use 4), does it mean a faulty sensor or does that nb target interrupt it? I see non zero motion values for stationary setup and facing the wall so what does this signify?
#7 Status and Sharpener seem useless and doesnt reflect or affect any of the feature above - correct me if am wrong.
I set nb targets as 1 all the time, but even #2 and #3 may not be complementary all the time so does this nb target mechanism play a part here as well? I am just curious on the mechanism behind the values of each of these features so that I can build a comprehensive application.
Does the VL53L5CX give all these features as well? What is difference in terms of these features? These details would give me more insight for my research and application.
Thanks














