Picture of Pocket laser engraver.
I have been trying to get my hands on a laser cutter for some time but they always seem out of reach. All the great things that can be done with a real laser cutter tickle the imagination.

I feel it's time to share my latest project - a low cost laser engraver,. The workspace is a bit small but none the less it works and comes so cheap that most will be able to replicate the result. I did take a few shortcuts, as I feel I don't have the knowledge to do all the electronics I opted for readymade but low cost in favor of trying to make my own (and most likely fail). All parts used are however easy to find.

I am pleased with the end result even if there is room for improvements. The small size and low power is a bit limiting but I have made allot of fun things already. Paper cutouts, plant markers and stamps among some. The engraver itself might not fit in a pocket but the workspace limits what you can do with it to fit in the pocket.

A word of warning is in place . This instructable is using a ~200mW red laser. It might nut cut through chunks of wood but it will make you go blind if you are not careful. Never look into the beam, even reflections can be dangerous if focused. Please be careful.

Step 1: Acquire the parts.

Picture of Acquire the parts.
Most of the hardware comes from my junk bin. The aluminum profiles, the piece of MDF and various nuts, bolts and wires. But some things need to be acquired. Most of the electronics can be found over at Sparcfun and the rest on e-bay or a swap meet.

- Arduino - this is the heart of the control electronics.
- Easydrive - stepper driver.
- Two DVD-rom drivers - Maybe more if you’re unlucky, and at least one DVD-R to salvage the laser from.
- Laser housing - singles can be found on e-bay.
- Laser driver - There are lots of alternatives here, I use a simple LM317 based circuit.
- Various nuts, bolts and other building materials.

Step 2: Rip apart the DVD-Roms.

All you need from the DVD-Roms are the stepper motor assembly and one laser diode. I had a bit of bad luck and found that one of my DVD-Roms had a plastic assembly that would be very hard to work with. Thus I ripped apart three DVD-Roms and only used parts from two of them. It is pretty strait forward and most DVD-Roms I have opened works more or less the same way.

After removal of the screws at the bottom of the drive you can lift it of like a lid. Underneath you will most likely find two circuit boards and none of them are any use to us. But remember to salvage other useful parts that can be used for other projects. For example under the front circuit board there is a small dc motor worth saving. This is when it is time to remove the front together with the front of the tray; the front comes loose after you pull out the tray (just use a hairpin and the small hole in the front). The next step can include some screws and/or mild force. Remove the two circuit boards. Be careful with the ribbon cable to the stepper motor. If you turn the DVD-Rom right side up and remove the cover, you should find what we are looking for, the stepper motor assembly. Remove the screws and just lift it out.

Now that we have the assembly out it needs to be cleaned up a bit. Remove the spindle motor, it could be useful but I feel they are hard to drive and thus don't keep them. They are usually hold in place by three very small screws but sometimes they are part of a larger assembly so be careful that removing it won’t compromise the two rods holding the lens.

The lens is another story, just remove it best possible way, we need a smooth surface to attach other parts to later. Be careful to not harm the DVDR laser diode. It can come to good use if you don't want to buy a new powerful laser later. See the next step.

Step 3: Putting a laser together.

There are so many good instructables on this subject, I will just make this part a quick one and let the pictures do most of the talking.

Removing the laser from the DVDR is not hard but most lens assemblies look different. Locate the diodes (there will be two, one IR and one red) and remove them from the assembly. There are some optics and two magnets that can be saved for future projects. Once you have removed the two diodes you must be careful. The two diodes are very small and fragile. Remove the small connecting PCB strips from the diodes and use two AAA batteries to check for the red diode.

Now that you have the bare diode it is time to mount the diode in the housing. Place the diode in the housing and use the back of the housing to press down the diode very carefully using a vice. When you get this far you are on the home stretch. Solder the wires to the positive and negative pins, screw in the lens and you are done.

Step 4: Construct the mechanics.

To make this as easy as possible I got hold of a piece of MDF just a little bit larger than the DVD-Rom stepper assembly. This will work as the base to hold both the X and Y axis. I found some spacers to hold the Y axis but bolts with a couple of nuts would work just as well. The measurements here are not critical but it is important that every axis is square to the other entire axis. I found that mounting the first assembly level with the MDF would make it easier to align everything.

The workspace is mounted on the old laser diode assembly. Make sure it is flat and level then glue something on that will serve as workspace. I found a piece of 1/4" acrylic that worked out just fine. It made this workspace stable enough but as the laser can shine through it I was not sure if this would be a security hazard or not. Later I found the solution I think works out for the best. I cut a piece of the DVDR metal case to the same size as the acrylic and glued it on. This way it still very stable and you get a workspace that will be tough. One positive side effect is that you can secure whatever you are engraving with small magnets.

For the X axis I found some aluminum profiles in my junk bin but just about anything could be used as long as it is stable. Measure the height you feel will be right for what you want to engrave. I opted for 7.5" long pieces for the support. This would give me a little under 2" clearance.

One important thing, the mounting holes on the assembly are not symmetrical. Be sure to measure the distance from the bottom end of the supports to the linear guides. That way you will be sure to get everything aligned. Where you mount the X axis will be dependent on the laser mounting. The laser should be in the center of the work area when the Y axis is in the middle position. When you mount the axis to the base plate drill a small guide hole for the screws after you made sure that everything is square.

Now you should have the X and Y axis done and square to each other.

The laser mount does not have to be very sophisticated, mine is made from a small piece of plastic sheet and a clip then everything is glued together. Using a clip to hold the laser lets me change the focus point by simply slide the laser up and down. As with all other parts the size is not that important as long as everything is square. There are just one measurement you need to think about here, the laser should be in the center of the work area when the Y and X axis is in the center position.

Step 5: Electronics

I started soldering the steppers. I used a ribbon cable to connect the steppers and solder them to the existing connections from the DVD boards. On the other end I solder a four pin header so that it could be used with a breadboard. The same thing goes for the Easydriver, solder pin headers and use them with the breadboard. Ribbon cable can be found in abundance around old computer shops and service centers. All those old disk drive cables can be of good use.

In the schematics I have added a relay for use with a fan. This can come in handy as the engraving produces some smoke.

The Easydriver have two pins called MS1 and MS2, these sets the step sequence. Tie them both to the five volt output from the Easydriver. This sets the step sequence to micro stepping . The four pins from the stepper connect to the motor output. All steppers I have found have all had the same pinout on the small connecting PCB. Connect the pins in the same order to the Easydriver as on the connecting PCB. The control pins (step, dir, gnd) goes to the Arduino. Besides this the Easydriver needs motor power connected. I use a twelve volt wall wart that drives the motors, fan and Arduino. There is a potentiometer that controls the power to the motors, I just set this to the lowest setting and turn it up a tad if the steppers don't have enough force. I don't know the rating on the steppers, if they gets to hot you’re driving them to hard.

The fan just needs to be connected to the fan output. A small computer fan works well, just connect the positive and negative leads to the correct output.

The laser driver is an LM317 based circuit with no specials. This will work fine but it is far from optimal. I am driving the laser diode far too hard at about 300mA and if you do that you can’t expect a very long life for the diode. The best solution would be to find a stronger laser and better driver but to keep to the spirit of things I wanted to use the laser from the DVDR itself. Laser on/off is controlled by the same relay as the fan.

If you want to simplify you could skip the whole laser driver and use a readymade driver. Then all you would have to do would be to connect the power to the fan relay. Of course this would probably be a little bit more expensive.

The whole thing evolved into a new Arduino shield, the Laser Shield. I have included the schematic and board layout in Eagle format . Creating a circuit board is a bit out of the scope for this instructable, but there are lots of really good guides here on Instructables.
If you want to make your own layout with Easydrivers I have made a Eagle library with the driver, it can be downloaded here .

Step 6: Prepare the Arduino.

Picture of Prepare the Arduino.
For the Arduino I started out writing my own software. But while searching for a good way to control movement from the serial port I stumbled upon something called "Grbl ". This is a g-code interpreter with lots of nifty functions. As I already had everything connected to the Arduino I had to ether change my connections or change the software. Luckily it is easy to change control pins in the software. I did however have to download Winavr and then the code from github.com . It is not that hard to do. After downloading and extracting the code you have to change the port numbers in config.h and make sure you get them in the right order. Then all you have to do is start a command window, enter the correct folder and type "make". If all goes to plan you should end up with a .hex file ready for the Arduino.

I have however changed the pin-out since then and here in the instructable I use the default pin-out of Grbl. This will make it a lot simpler to follow and setup. You can just download the prepared hex file from the Grbl download page .

The current version of Grbl (0.6b) has a bug in the queue system. The laser on and off (M3, M5) commands are not put in the queue and the laser will be turned on and off as soon as the Arduino receives the commands. This is resolved in the edge branch. You can download and the source from here , or grab the compiled hex I am using from here . This should resolve the issue until the next version of Grbl.

Any way you choose to do it you will end up with a .hex file that you must get into the Arduino. I have tried a couple of different ways and the one I like the most is by a program called XLoader . The programming is pretty straight forward; select the correct serial port for your Arduino. Select the hex file and type of Arduino and press upload. If you are using the new Arduino Uno the XLoader doesn’t work, you will get an upload error. In that case I recommend using ARP/Arduino Uploader but even this uploader has some issues with the Uno. When programming the Arduino select the com port and microcontroller in the respective dropdown. After that you will have to make a change in the “AVR Dude Params” text. Erase the “-b19200” (without the quotes) part and click on the upload button. In any case, a couple of seconds later you are done and are ready to try it out. Exit the XLoader and get to the next paragraph.

The Arduino needs to be set up for the job. Start your favorite serial terminal and open the port your Arduino is connected to. You should get a welcome message:

Grbl 0.6b
'$' to dump current settings"

If you enter $ followed by return you will get a list of options. Something like this:

$0 = 400.0 (steps/mm x)
$1 = 400.0 (steps/mm y)
$2 = 400.0 (steps/mm z)
$3 = 30 (microseconds step pulse)
$4 = 480.0 (mm/sec default feed rate)
$5 = 480.0 (mm/sec default seek rate)
$6 = 0.100 (mm/arc segment)
$7 = 0 (step port invert mask. binary = 0)
$8 = 25 (acceleration in mm/sec^2)
$9 = 300 (max instant cornering speed change in delta mm/min)
'$x=value' to set parameter or just '$' to dump current settings

You must change the steps/mm for X and Y axis to 53.333 on both. Just enter "$0=53.33" followed by return and then "$1=53.333" followed by return. Z axis can be ignored as it is not used. The acceleration can be ramped up to something like 100 ("$8=100" and return). As we move really slowly with this machine acceleration can be high. Another side effect of low acceleration can be that curves get a lot more burnt than straight lines as the controller constantly tries to accelerate and decelerate but never reach full speed. If you build this like me one of your axis might be mirrored. This is easy to fix. Option $7 lets you change direction on axis. I wanted to change direction on the X axis so I type in "$7=8" as I want to change bit 3 (8 = 00001000 binary) if you want to change direction on Y axis you type in 16 (00010000) or 24 (00011000) to change both. The complete documentation of the invert mask can be found here .

Now you are ready for the computer setup. If you want to try some movement you can type "G91 G28 X0 Y0 [return]" to zero the axis. Followed by "X10 Y10 [enter]". You should see 10mm movement on each of the axis.

Step 7: Getting the software ready.

Picture of Getting the software ready.
I will just go through the basics here. What software you need, how to set it up and the basic tool chain. I will only talk about windows based systems, all you Linux people will have to do some digging around (even if Inkscape and the extension should work fine on Linux as well). First you will have to download three files:

Inkscape - this is open source vector editing software. (download )
Laser engraver extension - This generates the g-code needed to control the laser. (download )
G-code sender - A small windows program I wrote to communicate with Grbl. (download )(source )

Install Inkscape by following their instructions. This should be a pretty painless process. And any help on the subject should be easy to find in the documentation on their web page. Next up is the extension; this is a little harder but not much. Open the .zip file in your favorite unpacker and copy all the files to "c:\Program Files\Inkscape\share\extensions". You have to restart Inkscape for the extension to show up. The extension is a heavily modified version of "Gcodetools ". That is it for setting up Inkscape. You can leave the "G-code sender" on your desktop or any other place where you will find it later. It does not need to be installed.

One important word about the extension, I am not a python programmer and there might be some kinks in the code.

I assume you have everything installed and ready to use by now. Here is a quick screencast of the work flow.

I hope this was not too quick. There are loads of guides on how to use Inkscape out there. I will not go into any details on how to use it.

The G-code sender is another story; there is no documentation as I just made the program. All the documentation is in this instructable, but feel free to ask if you have any questions. When you open the program it should be pretty self explanatory. The only strange thing is the radio buttons "\n\r" and "\r\n". Depending on what version of Grbl you are using the line ending are different. If the one doesn't work try the other one. Choose your serial port, and if you do forget to plug in your laser engraver, plug it in and hit the refresh button and your serial port should show up. Hit the "open" button to open hailing frequencies. Once the port is open you can type in commands like any terminal software in the text box above the open button. To start engraving a file you can ether type in the file path or click on the browse button and select a file.
When you click on "print" your file transfer will begin. The file will be transferred until the buffer on the Arduino is full, about 20 rows or so. When the buffer is ready for more data another row will be transferred. When you hit stop the transfer will end but the Arduino will not stop until the buffer is empty. When you hit the "close" button or exit the program the serial port will be closed and any transfer will be stopped.

Sometimes there will be a G-code that Grbl can’t interpret and will return an error. Most of the times these errors can be ignored but they will show up in the sender. This can be comments or the start and end "%" sign. If there is a comment after a command there will be an error but the command will still be executed. For example "G21 (All units in mm)" the G21 command will be executed but the comment will give an error.

Step 8: Final assembly and extras.

To finish the small engraver I made a small box from the Masonite board I found in a picture frame. It is just glued together. In the front there is a small fan from an old graphics card. The cooling is necessary for the Easydrivers when you mount them in any kind of housing. They get hot when out in the open and even hotter in some sort of housing. In the box I glued some threaded spacers; this allows me to screw on the bottom. The Arduino is in turn screwed to the bottom. It makes the engraver into a useful and easy to handle little tool.

Some small extras have been added along the build. First of is the fan that keeps smoke away from the workspace. This is a small 40mm computer fan connected to the laser relay that I wrote about in the electronics step. The fan is pointed away from the workspace and gently sucks away smoke.

Another small but very useful extra are the magnets to hold down paper and other light weight objects. I got these from an old toy . After gluing some nuts on top of them they are done.

To change the focus you can screw in and out the lens. Or you could set the focus once on the workspace and then slide the laser up and down in the mount. This is how I do it. I have a set focus when the laser is at the lowest possible position in the mount. Then all I have to do is measure the thickness of the material and raise the laser the same amount. Most times I just hold the material next to the laser mount and move the laser to the correct height.

Step 9: Final results.

Picture of Final results.
Here are some of the things I made with this little engraver so far. I will let the images tell most of the story. The only limit is your imagination (besides the low power and small work area).

Key chain.
I found some paint stirrer sticks at my local DIY shop. I liked the look of the wood and they were cheap. I saw of a piece and drilled a small hole. After some sanding I engraved the Binford logo from the sitcom "Home improvement".

Plant marker.
A normal Popsicle stick engraved with the plants name.

Personalized matches.
I'm just trying to show off ;)

Memo note holder.
A clothespin engraved and with a small neodymium magnet glued to the back makes a great way to stick a bunch of notes together on the fridge or any other metal surface. I like clothespins they are very versatile.

Cut out of a small foam sheet and glued to a piece of Masonite.

Thanks to scriptster who made the G-code for the model. Check out his model here .

1-40 of 749Next »
NormanC46 days ago

Great work!. I'm new to this and hopefully you could assist me with my query.can you use this to etch a circuit on a PCB? or is the laser powerful enough to etch through the copper of your PCB?... Thanks & best regards

No. The copper will reflect the laser rather than absorb the heat. And what heat it does absorb will be quickly dissipated to the surrounding copper.
FredL22 months ago

I am having a weird problem. I created a file. Using a program called All To G-Code Converter, I created G-Code. Then, sending the file to the engraver, it moves in X-Y axis but later doesn't engrave. I ca't make it work using Laser Engraver software at all. Help!

you need to edit file "laserengraver.py" probably located "C:\Program Files\Inkscape\share\extensions" and change starting and ending (M04, M05) command to M03, M04. It should look like this:

"gcode before path": "\nM04",

"gcode after path": "M03\n",

IT-Wizard FredL22 months ago

Did your laser ever light up? Is it connected correctly ?

rbclima9 days ago


hi,thank you so so much for nice job.i make it and now i have a
problem.i can not send my g code to arduino.

please helpe me how to send g code to arduino with g code sender and grbl cotroller.

please introduce vidoes On this problem.

my email:kambiz3221@gmail.com

maxchu76527 days ago

Hi I am trying to use your gcodesender, but when i try to open the COM port, it says the COM port does not exist. What should I do? I am using Grbl 0.9 if that makes any difference.


i have problems with grbl 0.9.
i use v0.8c
gnarnhammer made it!26 days ago
My version of your Pocket Laser Engraver

Well done!

That's a pretty big heatsink on the laser housing. How much current are you pushing through the laser? Did you get your laser from a DVD burner? And how do you find engraving wood (I see some engraved ply on the front of the box)?

the laser is a little bit stronger. 1.8 watts diode laser. i can engrave wood and plastic, cut paper, rubber foam and thin plastics

Is it possible to make this with arduino mega and driver a4988? I am planning to build a 3d printer and maybe it is possible to include a laser engraver. So I just couldn't get how to build the laser circuit. It would be perfect to use if there are any ready to use laser circuit.

Yes. That's how I did mine.

I built a Prusa i3 3D printer which uses the Arduino Mega and Ramps shield (which I think uses the A4988 drivers). I am running Marlin on the Arduino to control the 3D printer, and the best thing is that it will drive my laser without any software modification. I use the print-fan output to drive the laser, so in my g-code files (from Inkscape) I turn the laser on/off by telling Marlin to turn on/off the fan. I drive the laser through two 12ohm/3W resistors to get 360mA (the Arduino power supply is a regulated 12V, so I don't see a need for a specific current regulator for the laser).

It works really well.

Thanks for your reply:) Great news! I'll first build the 3d printer I've linked. Than I'll make Prusa i3 or Mendel90. It is nice to be able to use the laser engraver too.

But still I don't know what to do to build the laser part. I plan to use this item and it is said to use this item but I don't know how to connect them(and these 2 items are enough).

Do you have any diagram or at least photo of the circuit?

I had a quick look at the 3D printer instructable. It looks good. The electronics setup is the same as mine (RAMPS 1.4 on Arduino Mega running Marlin). The 'EFB' motherboard selection recommended in the instructable permits you to use the fan control to drive the laser... that's how I did it. The laser housing you linked to is the exact same one I used!. I have two different housings and chose that one as it was the larger one with better cooling. When you get the laser diode out of the DVD burner, you have to mount it in something, and when it's mounted in the housing, you can adjust the lens that is included in the housing to focus the laser. Groover goes through it in step 3. You can put 'diode laser housing' into youtube and you will see some videos of what you will have to do.

I have seen the LM317 often used to drive these lasers. They can be configured as current sources (which is what you want). When powering a laser diode from batteries (as is done in laser pointers), the battery voltage changes as it discharges, so a simple series resistor will not regulate the current. In my case, I powered the laser diode from the fan output on the RAMPS board. When I tell the fan to turn on fully (it's a PWM output), then the regulated 12V supply is switched to the laser. I have 2x12ohm resistors in series to control the current. I get 3.45V drop across the laser, and about 8.6V across the resistors. So I am driving the laser at 360mA (which is high for one of these diodes I think) and my resistors have to be able to dissipate 3W between them (so higher watt resistors are needed). With my regulated 12V supply (a recycled PC power supply) I don't see a need to used an LM317, the series resistor should be fine.
I will take some photos soon and post.

For anyone who is reading my posts, I now think that 360mA might be a bit too high after all. My Laser Diode died last night. It's just an LED now. I have found a replacement, but I will be dropping the current.

Hello again. Sorry for my late response. I was really busy for a while. Thank you for detailed explanations and photos. I've ordered the materials and will try to build with the 3d printer.

I have attached a couple of photos. In case my explanation wasn't clear, I have attached a simple diagram of how I drive my laser. A simple circuit with a couple of resistors. The three pin plug is arranged so that I can have a three pin plug for both the print fan and the laser, but they wire to only two terminals, so plugging in the laser connects to the RAMPS D9 output through resistors, and plugging in the fan will connect directly to the D9 output. I have a photo of the resistors. Not much to it. I printed a little platform for the circuit to mount on the extruder motor. There's another photo of the J-head and laser mount (I just modified the Wade's extruder), and one of the laser cutting.

cutting batman - black craft foam.PNGlaser and j-head together.JPGlaser driver.JPGlaser wiring.png
ioanniskar1 month ago

I opened a DVD-ROM and found out it doesn't have a stepper motor. It has a DC motor and there is a 5 wires cord. Is it possible to use it?

I found stepper motor in a laptop DVD-ROM but it's smaller and I don't know its specifications? Has anyone used a stepper from a laptop DVD-ROM? What modifications should I make on the circuit and the firmware?


you can open a DVD-ROM of PC , it very good ex HP, you should open same type!

Sad, you can't use it without the driver.

You can use the mechanism if you find any gear to fit its pitch with a stepper.

What about the second one that I removed from a laptop? It has a small stepper. Can I use it?

yes of course.

if it is the dvd drive's then its just like any other dvd/cd drive.

go ahead use it

I made my laser cutter a little different, but I was inspired and guided by this instructable. Great work!

I have found when engraving wood (ply, balsa), the laser often doesn't start burning until it is part way into the design. Once started, it keeps going fine. I have added a 'dwell' g-code at the start to hold the laser at the start point for 15 seconds or more but this doesn't seem to help either.
Has anyone found a way to get the laser to engrave reliably from the start point?

I am pushing my laser diode at 360mA at the moment, so I don't think I'm short of power (for a DVD burner laser anyway).

Z engraving.JPG

Hey all,

is it possible to kcontrol the laser via D12 with this shield? http://www.ebay.de/itm/191497328774?_trksid=p2057872.m2749.l2649&ssPageName=STRK%3AMEBIDX%3AIT

As well as anything that supports ttl, yes you can.

Though I would suggest to buy a laser module that directly supports TTL Control.

Something like this:


so you don't have to worry about the driver or the ttl module.

I got the 2W 445nm 105$ https://sites.google.com/site/dtrlpf/home/diodes/4...

Will taht work with a CNC Shield and grbl?

Yes, with the driver integrated you will just need to arrange a relay to turn it on/off by arduino automatically.

I found this cheap 1 at ebay. You will need to just remove the line type lens from the module and it will become the dot type.

larystoy1 month ago

Will 3/4 inch vertical be enough for etching wood and burning paper. Also what heat sinking will it require. Thanks

chintans2 months ago

Can any1 describe the parts in the circuit layout please?

I'm a total newbie to electronics and don't know the codes.

As a electronic newbie myself, I bought a laser driver on ebay.

works fine.

can this work?


It is wierd. It looks like an average power supply.

Plus, you won't be able to drive it via the arduino. What I have is a PCB laser diode driver.

laser driver big2.JPG

check this DIY laser driver : http://www.instructables.com/id/DIY-Laser-Diode-Driver-Constant-Current-Source/?ALLSTEPS

I do have the driver but it does't have the relay.

Can u suggest anything?

There is no relay on mine.

(see pic) 2 power in, and 2 power out.

laser driver big2.JPG

Please which pins of the arduino did you connect the laser driver power input (+ve and -ve) to?


For the laser connection, I set the + to the pin 12 of arduino, and negative ti GND.

Alright, I'll do it your way! One more question though, my ready made laser driver has an input rating of 4.2V, please how do I make pin 12 give out 4V or less, this is my first arduino project

1-40 of 749Next »