Introduction: DIY Arduino 3D Laser Scanner

Picture of DIY Arduino 3D Laser Scanner

FabScan is an open-source, do-it-yourself 3D laser scanner.It started out as a Bachelor's thesis by Francis Engelmann, supervised by René Bohne. You can find official project here.

I made my own box from MDF hood sheets and use different hardware parts.I decided to make this guide to show to you my work.

All credits for Arduino software and computer application goes to FabScan team, so thank you very much for this great open source 3D laser scanner!

Dev: Francis Engelmann Official page:

Q & A at

Let's get started!

P.S. Please, if you like my project vote for me. Thanks!!!! :)))

Step 1: What You Will Need

Picture of What You Will Need

Hardware of official FabScan project:

  • Arduino UNO
  • A4988 Stepper Motor Driver
  • FabScan-Shield - 3D Laser Scanner
  • 5mW Laser Module - Red Line
  • Bipolar Stepper motor - NEMA 17 (200 Steps)
  • 12V - 1A power supply
  • Web camera Logitech C270

To build the box you will need 4x sheets of MDF wood, size 600mm x 300mm - 5mm. You can find more info here.

Hardware that I have used:

  • Arduino UNO
  • Stepper motor - NEMA 17 (200 Steps)
  • L298N Motor Driver Module
    UPDATE: Use A4988 stepper driver
  • 5mW Laser Module - Red Line
  • 12V - 2A power supply
  • Web camera Logitech C270

I advised you to select the official FabScan hardware part list.

Step 2: Build the Box - Gallery of My 3D Scanner

Picture of Build the Box - Gallery of My 3D Scanner

I used a Dremel cutting tool and my imagination to build my own box. This it not an easy procedure because the camera, stepper and laser module must be on the correct position to successful scan an object. If you want to make your life easier you can also buy cutted parts for only 35 euros from here.

Step 3: Hardware Connections

Picture of Hardware Connections

The connections are pretty easy:

Attach the FabScan shield on Arduino and the A4988 stepper driver on the first stepper position of it. Connect the stepper on output pins and the laser module to analog pin A4. Finally connect Power supply and usb cable. You can also find a very usufull assembly tutorial here.

Custom hardware:

If you decided to make this with my hardware parts then you have to connect the L298 stepper motor driver to Arduino pins 10,11,9,8 (you can change those pins) and laser module to Arduino pin A4. Finally connect the power supply and usb cable.

Step 4: The Code

Here's the official FabScan code, embedded using Codebender!

Try downloading the codebender plugin and clicking on the "Run on Arduino" button to program your Arduino board with this sketch.

And that's it, you've programmed your Arduino board directly from your browser!


If you decided to make this with my hardware parts, click the Edit button and:

  • Add lines

    const int stepsPerRevolution = 200; // change this to fit the number of steps per revolution
    // for your motor
    Stepper myStepper(stepsPerRevolution, 10, 11,8,9);
  • Replace step() function with:

    void step() {


Step 5: Software (computer Side)

Picture of Software (computer Side)

We will use the "FabScan Ubuntu Live DVD" image that was created by Mario Lukas. You can download it from here, this image has preinstalled the FabScan software. You can write the image on a flash drive with Win32DiskImager (download link) and use it without installing linux os on your system.You can find more options for other operating systems here.

Important note! If you use the "Try Ubuntu" option make sure to save your files before shutdown the computer!

See the above images and follow the steps:

  • Select SerialPort
  • Select Camera
  • File - Control Panel
  • Click on detect laser (don't put any object in scanner yet) and select 'enable'
  • Click on "Fetch Frame" and make sure that the blue horizontal line touches the top of the turning table and the yellow horizontal line touches the bottom of the turning table. Also the yellow vertical line should pass through the center of the turntable. A non aligned camera will result in distorted scans!

After setup close control panel window, put an object inside scanner and press the start scan button.

Tip: You can change the configuration.xml file of FabScan by following this guide.

Saving 3D image:

When scanning procedure is completed you can save the scanned 3D object as an 3D pointcloud .pcd or .ply file. You can also save it as an 3D stl file but this doesn't work to all platforms. If you would like you can also open an older scanned object by selecting File - OpenPointCloud.

What next?

You can use MeshLab for processing scanned object and then print it with a 3D printer!

File processing with MeshLab:

1. Make sure that you saved object as an .ply file.

2. Open file with MeshLab

3. In MeshLab, compute the normals (Filters/Point Set/Compute normals for point sets)

4. Then reconstruct the surface using poisson reconstruction (Filters/Point Set/Surface Reconstruction: Poisson)

The end :D

Many many thanks to FabScan team!!!


hackshaq1 (author)2015-12-04

Can someone provide some better photos of how the wiring is done. There is only one photo of the wiring and it only show the Uno hooked up to the driver and it is hard to follow the wires as they wires in the photo go behind the Uno and blue and green are used twice. Can you post some clearer pictures of how the driver is connected to the Uno, how the motor is connected to the driver, and how the laser is connected? And/or could you also post a wiring diagram showing what pins are connected to what? This would be a great help.

Ardumotive_com (author)hackshaq12015-12-04

Connect stepper motor cables with L298D module input pins 1,2 and 3,4.

Then connect L298D with Arduino pins 8,9,10,11 (or 10,11,8,9)

Laser + cable goes to Arduino A4 and the other to GND.

if I use Arduino Motor Driver Shield, black goes GND, red goes A4, it works? How the laser taking electricity? The codes provides us?

hackshaq1 (author)Ardumotive_com2015-12-04

Thank you for this extra detail. However, I am still unclear. You say that the motor connects to pins 1-4 on the driver(l298d) but this does not tell which which wire from the motor goes to each of those pins on the driver. The same for the Arduino, you say to connect to pins 8-11 on the Arduino side but I do not know which pins on the driver to connect each wire to. For example, I pulg a wire into pin 8 on the Arduino, which pin on the driver on I plug this in to? A wiring diagram would help a lot. This is the first device I have built like this, I want to make use I don't destroy my hardware.

Ardumotive_com (author)hackshaq12015-12-09

Hi! Take the stepper in your hand and begin with the first cable, from the left side. You must connect it with L298 pin OUT 1. The second with pin OUT 2 and e.t.c.. The L298 IN1 must be connected with Arduino pin 8, the IN2 with pin 9 and e.t.c.. In code now, use Stepper myStepper(stepsPerRevolution, 8,9,10,11); If you want to change the spinning side (counter clock side) change the pins to 10,11,8,9 .

jcsonza (author)2017-05-07

Hi, may I ask why you replaced L298N Motor Driver Module with A4988 stepper driver?

GrantC4 (author)2017-04-21

what is the quality of the scans?

the project im thinking about doing required pretty good quality (no random bumps and lines)

drchuck (author)2015-11-30

Purchase your laser from AixiZ the line laser is $6.00. We can also do the line in more eye friendly 635 (orange red), green or blue.

Tvixen (author)drchuck2016-11-21

You can also buy it on ebay..if you are willing to wait 14 days for delivery

Ardumotive_com (author)drchuck2015-11-30

nice tip ;)

Marco Francesco MarioG (author)2016-10-12


I'm a total newbie, so please bear with me if these questions seem weird

Interesting project. You say to buy an Arduino Uno, is the Product.Nr.: 20110406 on the FabScan website the same? If not, what is the product # you bought? Also you said to buy a A4988 Stepper Motor Driver but later down the list you say Bipolar Stepper motor - NEMA 17 (200 Steps), are they the same?

Again thank you,


GabrielC115 (author)2016-09-21

hello, i do not have the fabscan shield what should i do? thanks

Malik Al-Sharif (author)2016-07-24

Thank you, it's easy to build and don't want a lot of work

SercanK1 (author)2016-05-07

Hi I just want to build it with A4988 but i wont use fabscan shield. So which pins do i need tu use?

gnewton (author)2016-02-28

I'd like to see the quality of the scan. Could you please upload samples.

jsmb768ypl (author)2016-01-28

Where can I buy fabscan that has a website in English? Haha

StuartB44 (author)2016-01-20

Thanks very much Ardumotive_com.

StuartB44 (author)2016-01-20

Thanks Ardumotive_com but does the camera take seperate images or a video that needs processing.

Ardumotive_com (author)StuartB442016-01-20

seperate images, one image per step ;)

StuartB44 (author)2016-01-12

Can you please tell me how the camera is controlled. How does it know to take a picture at the correct time, or is it taking video.

Ardumotive_com (author)StuartB442016-01-20

the computer software do the job ;)

StuartB44 (author)2016-01-12

I noticed that the stepper motor has 200
steps per revolution, which moves the turntable 1.8 degrees per step.
Would using a motor with 400 steps (0.9 degrees per step) give a better
resolution scan?


Ardumotive_com (author)StuartB442016-01-20

Yes you can, but you have to change the scanning software too.

mlukas (author)2016-01-18

We just released the new raspberry pi based fabscan software, you can find further informationen at

Ardumotive_com (author)mlukas2016-01-20

Yeah! It's amazing that you can use it as an stand-alone device! Very good job!

opnitro (author)2016-01-13

Hey, quick question. So we've assembled the Scanner, and when we run the scan we just don't get any data. Any ideas what could be causing that? The laser image button looks like it should be working, and the table spins fine.

Thanks for the help.

mikemitza (author)2016-01-05


Can you tell me if you are using a stepper motor to move the laser also or do you have a special lens that makes the line? I saw in the code that there is a motor control for the laser and I am a bit confused.

Thank you and have a nice day.


mikemitza (author)mikemitza2016-01-05

I had a better look on the official code and you modification and I saw that you are not using a stepper motor for the laser, right?

Ardumotive_com (author)mikemitza2016-01-06

That's right. You only need to calibrate the laser line only once.

AntonioL21 (author)2015-12-23

Can you help me with the code? I'm using your hardware, but when I replace the lines, the IDE doesn't compile.

hi! Can you please copy/paste here the compiler error?

It seems to be missing the Stepper.h library, however and added , and the code is still not working . I leave here , if you provide the L298N running , I appreciate it.

AntonioL21 made it! (author)AntonioL212015-12-31

That`s the code

No compiller erros for mine Arduino ide....

Did you try it with Codebender? (the online Arduino IDE)

opnitro (author)2015-12-10

Where can I fine the exact specs for the MDF sheets so I can use a dremel? I don't have a laser cutter. Thanks.

Ardumotive_com (author)opnitro2015-12-10

You can find them at official FabScan page:

BenR6 (author)2015-12-09

Great project! Do you have some dimensions for the positioning of the camera and laser relative to the turntable?

jeanniel1 (author)2015-12-08

What is the resolution of this scanner?

Darmach (author)2015-12-04

Does it have to be logitech c270, or any other 720p camera will do? I have some creative around here somewhere...

hackshaq1 (author)Darmach2015-12-04

I might be wrong, but the camera looks like it plugs into your PC. Because of this, I don't see why it has to be the c270. I am guessing that any camera that has drivers on your PC "should" work. Plus, I would think that it would help the scan to have a very high resolution camera, higher than the c270.

Ardumotive_com (author)hackshaq12015-12-04

I think that it will be ok if you will use a diferent camera...

musthtc (author)2015-12-04

Nice job! It's make me leran a lot of things. Can you tall me what is the working voltage&current of stepper motor need? Thank you.

yellapu ganesh (author)2015-12-01

hai stepper motor - NEMA 17(200 steps) is costing more can you please tell any other alternative

You need a stepper motor with 200steps pr

eirini tsiskaki (author)2015-11-30

super !!!!

thank you!!! :D

M4n0v3y (author)2015-12-01

Great! I enjoy it!

yellapu ganesh (author)2015-11-29

i want to know how to place the connected things in the box and can you show me any already done scannings

hi! give me some time, I will make a cloud-folder to share scanned objects .

About This Instructable




More by Ardumotive_com:MIKE - Arduino Line Following Robot for Beginners "GRECO" - Arduino Object Avoiding Robotfor BeginnersArduino 3D Printed Digital Thermometer With DHT-22 Sensor
Add instructable to: