Affordable and open-source LiDAR based on 3x VL53L0X ranging sensor

Similar projects worth following
The first objective of this project is to create a LIDAR (Laser Imaging Detection and Ranging) entirely open source, the secondary objectives are to make it as small and affordable as possible.


- 3 x VL53L0X - Time-of-Flight ranging sensor

- On board incremental encoder with XSHUT signals for on start setup.

- ...

  • 3 × VL53L0X Time-of-Flight ranging sensor
  • 1 × Rotor PCB board Mount for the 3x VL53L0X with an encoder and zero position
  • 1 × Main PCB board Basic Breakout (on-board µC in the future)
  • 1 × Mini 5V Motor
  • 1 × Cassette belt

View all 8 components

  • Testing the prototype 1 ¡FAIL!

    JRodrigo06/03/2018 at 19:24 1 comment

    When I tested the prototype, as I already expected, it was impossible to maintain a stable communication via I2C when the rotor turns around. 

    The positive part is that the power via "SD pins" was stable with some capacitors, maybe using a couple more of SD pins gets a more stable voltage.

  • First board design

    JRodrigo05/14/2018 at 22:22 1 comment

    For the first board design I opted for a basic design, like a breakout board. Once the prototype works correctly. But in the future the best option is to integrate a microcontroller to get the measurement and control the motor speed, obtaining this data via I2C, SPI, ...

    Main board breakout

    It's just a board with a MOSFET to control the motor speed and a pin header for the signals. To carry the rotor signals (VCC,GND,SDA,SCL,XSHUNT+ENCODER) I'm going to use the pins from a SD card slot.

    Read more »

View all 2 project logs

Enjoy this project?



Mickey wrote 11/09/2018 at 00:04 point

i have used VL53L0X for several years now and tried something similar to this. 

The beam is a 15 degree cone not a straight beam and angled reads can jump all over.  At 2 meters the beam is 12 inches wide Think of the angle, sometimes the average is to the edge and others to the center of the beam so the distance read varies by as much as 45mm.
Multiple reads at every angle and put the group thru a pass filter really help tighten accuracy.

Your issues may not be all contact noise.

  Are you sure? yes | no

coxybeeauction wrote 11/08/2018 at 16:06 point

i think ive seen a millitary version of somthing like this it had to be towed by a car it! greatwork guys..i was trying to get my head round kinect doing somthing like this

  Are you sure? yes | no

Lynton_c wrote 10/23/2018 at 10:00 point


Im a newbie on hackaday and certainly limited electronics expeience-  this project interests me a lot but you do not say what the intended application is. Is this for collision avoidance or could it be applied to aerial mapping and terrain analysis which is my interest? Have you seen the pcb motor project ( it seems ideally suited for this application or at least worth considering..

  Are you sure? yes | no

Mark Rehorst wrote 10/04/2018 at 14:08 point

You could use a slip ring to bring the signals from the rotating sensors to the board:

  Are you sure? yes | no

Minimum Effective Dose wrote 07/05/2018 at 23:04 point

I love the concept.

It occurs to me that if the traces and and SD card spring contacts turn out to be a weak point, they could be avoided by using wires then running the disk for 1 revolution, then running in reverse direction for 1 revolution, and so on. Just reverse disk turning direction every revolution.

That way the disk never twists up the wires too much, but it's not that much more complicated to interpret the data; it's still very what-you-see-is-what-you-get.

  Are you sure? yes | no

Mark wrote 09/20/2018 at 16:10 point

you could technically make the movement like a windscreen wiper movement, piston movement etc to achieve that, that way you dont have to contend with back emf from changing motor direction.

  Are you sure? yes | no

Daniel Roseman wrote 06/30/2018 at 04:07 point

I see the tracks as a weak point of this design. You could use magnetic coupling to transmit power (and even data), and optical down the center pivot to transmit data. Just a thought. 

  Are you sure? yes | no

K.C. Lee wrote 07/06/2018 at 00:02 point

I have seen magnetic coupling for the head signals on an old VCR head.  I would put a wireless module e.g. ESP8266 to talk to the sensor and send out the data on WiFi.

  Are you sure? yes | no

Shervin Emami wrote 06/29/2018 at 23:21 point

Nice idea & design! Be wary that VL53L0X isn't an analog sensor that you can run at any speed, it has various speed limitations such as how it is only expected to update the data at around 30 times per second, and it spends about 20ms for the distance ranging where it's expected that the distance won't have changed much. So realistically, you can probably only rotate your sensor at very slow speeds (I'm guessing just once per second). You might be better off building a PCB with 20 x VL53L0X sensors (the raw sensor can be affordable if you shop around) that doesn't move. Anyway, I'm sure your current design is good enough for some purposes even if it moves slowly. I hope it goes well!

  Are you sure? yes | no

septer012 wrote 06/29/2018 at 18:48 point

Why three sensors, and not one or two or four or five or more?  Is there a sampling limitation which dictates how many sensors are required?  Maybe something to do with beam width at different ranges? What is the vertical resolution, same as horizontal beam width?

  Are you sure? yes | no

ACROBOTIC Industries wrote 06/29/2018 at 19:04 point

arguably the easiest geometry to work with in terms of calibration 

  Are you sure? yes | no

ris wrote 06/17/2018 at 19:51 point

So... why are you spinning the sensors and not a mirror?

  Are you sure? yes | no

ACROBOTIC Industries wrote 06/29/2018 at 19:03 point

because you’d need to have a different photoreceiver 

  Are you sure? yes | no

Martin wrote 07/03/2018 at 07:03 point

Not really. Think of a polygonal mirror and 3 sensors around it. I think you need a hexagonal mirror to avoid overlap as the mirror doubles the scan angle.

There is a problem  with dead zones, where the sensors block the light path when they look a t 90° on the mirror. So perhaps some overlap could be good, like using a square mirror. Or you tilt the sensors slightly upwards, so they don't see themselves. But then your sensing rays are titled upwards also, except you use a pyramidal mirror (upside down truncated pyramid) instead of a prismatic mirror.

  Are you sure? yes | no

Nippey wrote 10/16/2018 at 12:26 point

A mirror may also be expensive depending on the wavelength and if partly reflections of the glass surface may distort your measurements...

What about oscillating the Sensor-PCB by (Angle = 360 / Sensors) instead of rotating it? Then you could use cables instead. 

With an L-shaped PCB, you control 4 sensors one on each side of the PCBs. This results in 90 degrees oscillation angle.

Also instead of an octagon, you could also stack 2 L-shaped PCBs. with 45 degrees shift. Depending on your tools, this may be easier.

  Are you sure? yes | no

Similar Projects

Does this project spark your interest?

Become a member to follow this project and never miss any updates