Open Simple LIDAR

Open Hardware scanning laser rangefinder

Similar projects worth following
This is simple enough open source scanning laser rangefinder. It is using triangulation method.
It is based on my previous Lidar projects: ( and earlier lidar versions (in Russian):
Now I want to build really simple and cheap Lidar.
This Lidar can be very useful in robotics - for SLAM and navigation tasks.

Estimated Lidar parameters:

5 scans/second;

360 measurements per rotation (1 deg angle resolution);

Maximum distance - 4 m;

Calculated accuracy - 5 cm at 2 m, 10 cm at 3 m (I hope that it can be improved).

I suppose that the price of all needed parts will be near $35.

P.S. Sorry for my bad English - I am from non-English-speaking country.


Encoder ring drawing.

Portable Network Graphics (PNG) - 63.79 kB - 08/03/2017 at 17:10



3D model of the PCB holder.

Standard Tesselated Geometry - 263.01 kB - 08/03/2017 at 17:09



3D model of the laser holder.

Standard Tesselated Geometry - 120.54 kB - 08/03/2017 at 17:09


  • 1 × TSL1401 Sensors / Image
  • 1 × Slip Ring Used to pass power and signals to rotating scanning head.
  • 1 × Main PCB PCB with most electronics parts
  • 1 × Lens M12 lens, f'=16mm
  • 1 × M12 Lens holder Standard M12 plastic leans holder

View all 13 components

  • Testing encoder

    iliasam6 days ago 0 comments

    I wrote a simple program for testing encoder. It's just blinking led at PCB when there is a hole in encoder disk.

    Photo of LIDAR with big exposure:

  • Assembling LIDAR

    iliasam08/13/2017 at 15:46 0 comments

    Now it is time to final LIDAR assembling.

    I have installed encoder to the "main plate", installed the PCB to the PCB holder, installed slip ring to the PCB holder, solder wires of the slip ring to the PCB pads.
    Photo of the assembled LIDAR:

    Side view:

    I have tested mechanics of the LIDAR - everything is working fine, the eccentricity of the LIDAR rotating head is not very big.

    Encoder is working fine too - oscilloscope shows  a good signal.

    Next steps are assembling small PCB for motor controlling and programming.

  • Assembling LIDAR mechanics

    iliasam08/06/2017 at 18:10 0 comments

    First step is building "main plate" - it is the part that holds ball bearing, motor, and some other parts. This part can be cut from some flat plastic plate. I have used 5mm acrylic glass:

    Drilling 42 mm hole for bearing was a little tricky.
    This part can be printed at 3D printer.

    Next step is assembling everything.

    Photos of assembled mechanics (top view):

    Side view:

    Motor is connected with the PCB holder with rubber belt.

    Down view:

    Here it can be seen method of fixing the PCB holder to the ball  bearing.

    Next step is to fix encoder at the "main plate" and to test it.

  • PCB holder

    iliasam07/30/2017 at 12:31 0 comments

    I have printed special holder for PCB. This holder will be rotated by motor.

    Here is a photo of it:

    The right part is encoder disk.

    PCB holder don't have holes for slip ring wires, so I have to drill two.
    Here is a photo of the PCB holder with the slip ring installed in it:

    Photo of PCB placed to holder:

    Encoder disk is glued to the PCB holder.

  • PCB is assembled

    iliasam07/29/2017 at 18:11 0 comments

    At this step I have printed at 3D printer laser holder. This small part is used to hold the laser at certain position.

    Photo of the laser holder:

    I glued laser to the holder with hotmelt. 
    Photo of the holder with the laser installed:

    Last step is to  fasten the laser holder at PCB. It's done with two M3 screws.

    Photos of assembled PCB:

    Angle between the laser and the lens axis is specially calculated. It must be near 11-12 degrees.

    Optical alignment.

    To get the LIDAR properly working I need to align it's optical elements. First step is focusing lens. Focusing is done by rotating the lens till the image in PC utility don't became fine.

    Photo of not focused image:

    Photo of focused image:

    When the lens is set to best position it must be fixed by special screw which is twisted to the lens holder (it must be special hole in it).

    Next step is laser alignment. It is done by special screw than must be placed at lower hole of laser holder. The purpose  of laser alignment is to get best amplitude of received signal. This alignment must be done at maximum LIDAR's distance (3-4m).

  • Programming and first tests

    iliasam06/30/2017 at 11:00 0 comments

    I have tested all PCB electronics, and everything is forking fine, so I can start to program MCU.

    I have working code for my previous lidar - it was based on STM32F100 and TSL1401.

    So I take code from that project and ported it to new STM32F030 MCU.

    At first step I write testing firmware that capture analog signal from sensor to MCU memory and then transfer it PC by UART.

    I write PC utility that draw illumination level of 128 sensor's pixels:

    Here is a picture with IR laser that I want to use in final design:

    The distance to object (white wall) was near 1.8 m.

    The next step is printing laser holder and mounting it at PCB.

  • Electronics Assembly

    iliasam06/20/2017 at 15:26 0 comments

    Finally I get all electronic parts, so it's time to assemble PCB!

    Photo of components used:

    Most of them are easy enough to solder. The exception is light sensor - TSL1401CL; because pads of this sensor are placed under it's body.

    Photo of assembled PCB:

    Close view of soldered TSL1401:

    Photo of PCB with leans installed:

    3.5 mm Jack connector is used for STM32 programmer connection.

    ST-Link utility found STM32 - so the next step is it's programming.

    Firstly I need to run capturing data from light sensor.

    P.S. I have updated Github files - I added some models, PCB schematic, gerber files.

  • Small model update

    iliasam03/30/2017 at 19:12 0 comments

    Now I found suitable encoder sensor for my Lidar - it is RPI-352. It can be bought at or

    I have added encoder ring to the model. I think that this ring must be metallic and have 15 drilled holes for light from sensor.

    Encoder is important part of Lidar, it used to detect zero angle crossing and for rotation speed calculation.

View all 8 project logs

Enjoy this project?



Similar Projects

Does this project spark your interest?

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