Laser Engraver

About: I am a 24 years old student from Slovakia currently studying Masters in Computer Science and Engineering (Embedded Systems) in Denmark. In my free time I like working with electronic projects, Arduino, progr...

I've decided to build this engraver because it has always fascinated me to have machine like that at home. Everything is made from scrap except stepper drivers and the laser. It's working, however it cannot be used for very precise engraving because of an inaccuracy of CD steppers and the whole build quality.

Step 1: Making the Stand

Everything was made using hand-tools on the garden without precision electric saws, cutters or grinders. Thus the build quality is not how it was supposed to be.

Step 2: Assembling Together


I used 3 stepper motors from old CD drives, however I cannot use the Z-axis because the motor is weak and cannot handle the weight of the mount. Otherwise it would be possible to replace the laser with a milling tip and use it for other purpose.


Arduino Nano loaded with Grbl connected to Keyes_CNC is used to control the steppers and the laser.


I didn't have a powerful laser module so I've used a handheld 3W blue laser pointer. I took out the battery and connected two terminals which are connected to the relay switched by Arduino.

Step 3: Setting It Up


Normally you can just download Grbl and upload it to your Arduino.

However my Keyes_CNC stepper controller had swapped STEP and DIR pins so Grbl source code needed to be modified. If you have the same stepper controller, you can just download the modified version from my GitHub.

Grab the whole grbl_keyes_cnc folder and move it into Documents\Arduino\libraries

Reopen Arduino IDE, go to File → Examples → grbl_keyes_cnc → grblUpload

It opens a new project which will have #include <grbl.h> line inside.

All you need to do is to upload this project into your Arduino.

All the other setting will be done over serial communication directly with Grbl.

GRBL Settings

These are the settings for my setup. You might have different steppers or work-space dimensions, so set it according to your project. When you are connected to Grbl, type $$ to see your current settings. You can change individual values by writing a command in this format $x=val.

My steppers have 6.5 steps per mm. Dimension of the work-space is 30 x 30 mm.


For sending G-Codes and controlling your engraver, you need to download a program that is capable of sending g-code commands over the serial port. Here are the links for few of them I was using.

Grbl Controller

G-Code Sender

Hack Your Day Contest

Participated in the
Hack Your Day Contest

Full Spectrum Laser Contest 2016

Participated in the
Full Spectrum Laser Contest 2016

Hand Tools Only Contest 2016

Participated in the
Hand Tools Only Contest 2016



    • Colors of the Rainbow Contest

      Colors of the Rainbow Contest
    • Pets Challenge

      Pets Challenge
    • Backyard Contest

      Backyard Contest

    4 Discussions


    3 years ago

    30 X 30 mm workspace seems a bit small.
    Using standard DVD drives mine is nearer 39 mm.
    They can also be more accurate than you would think
    if they are setup up correctly and the laser is
    focused sharp enough.


    3 years ago

    Very creative can you give more details? Where did you get the Grbl and the Keyes_CNC programs? What can it engrave? I am very interested in using my adrino uno to adapt your project to my own spare parts bin.

    2 replies