VL53L5CX 8x8 Time of Flight (ToF) Array Sensor Breakout

by Pimoroni

A sophisticated distance sensor with 8x8 multizone ranging and a wide field of view - great for robots and advanced motion sensing.

This sensor measures distance by beaming low powered infrared lasers at a target (pew pew pew). It has great accuracy and sampling frequency (up to 60 Hz) and a large range of detection (from 2cm to 4 metres).

What's especially exciting about this sensor (after the lasers) is that it can return an 8x8 grid of readings as an array. This means you could detect movement coming from a specific direction (for smart security systems) or mount it on your robot for object tracking or superior collision avoidance without the need for lots of separate sensors.

It's compatible with our fancy Breakout Garden system, where using breakouts is easy as popping it into one of the slots and starting to grow your project, create, and code. It's also Qw/ST compatible so it can be plugged into a whole range of different microcontrollers and HATs with Qwiic or STEMMA QT connectors.

Features

  • VL53L5CX Time of Flight (ToF) sensor (datasheet)
    • 8x8 multizone ranging
    • Wide field of view (63° diagonal)
    • 2-400cm range
    • Up to 60Hz ranging frequency
  • I2C interface, with address: 0x29*
  • 3-6V compatible
  • Reverse polarity protection (on Breakout Garden connector)
  • Compatible with Raspberry Pi (Python library)
  • Compatible with Raspberry Pi Pico (C++/MicroPython libraries)
  • Schematic

Includes

  • VL53L5CX breakout
  • 1x5 pin header
  • 1x5 right-angle socket header

We've designed this breakout board so that you can solder on the piece of right-angle socket header and pop it straight onto the bottom left 5 pins on your Raspberry Pi's GPIO header (pins 1, 3, 5, 7, 9).

Software

There's a Python library for using this sensor with a Raspberry Pi, with examples showing how to read distance, reflectance and motion (and how to display the grid of readings graphically on an LCD breakout).

You can also use this breakout with Raspberry Pi Pico and other RP2040 boards, using C++ or Pirate brand MicroPython. Due to its size, we've not included ST's firmware in our batteries included MicroPython build - you'll need to copy it to the root directory of your board using Thonny:

Notes

  • Dimensions: 19x19x4.6mm (LxWxH). The mounting holes are M2.5 and 13.6mm apart (centre to centre).
  • We've mounted the Qw/ST connector and other components on the back of the breakout, so you can mount the front side flush with the inside wall of your robot's chassis.
  • If you want to use multiple VL53L5CX breakouts together you can (temporarily) change the I2C addresses using this Python script. Addresses changed like this won't persist after a reboot.
  • When using multiple breakouts, the LP pad on the rear lets you put each one to sleep in turn to set the I2C address.
  • Note that the I2C address printed on the current batch of breakouts is 0x52 - this is the 8-bit address (so technically correct, the best kind of correct). However, the I2C address that shows up in i2cdetect and such is the 7-bit address - 0x29. We'll be updating the silk on the next batch :)