From ShapeOko
Revision as of 20:51, 26 April 2017 by Pepik (Talk | contribs) (Mandatory laser security warning: security --> safety)

(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to: navigation, search


Created by: User:SnapFracturePop

Description: Convert the Shapeoko to a low-power laser cutter

Status: Fully functional


  1. Cut things with lasers (w/in the limits of the selected laser)
  2. Mark/label with high precision (again, such materials as the selected laser is suited for)
  3. See #1 - lasers!!!


  1. 1x 800mw or higher TTL laser with driver (like $100

Cost: $100+, depending on the laser


I had been eying the $3,000 FSLaser 40w cutters, but didn't have the funds to make that happen. So, here's the second best thing - less than a watt, but only $100.

The GRBLShield has a "tool enable" output on pin 12, controlled by M3 (enable) and M5 (disable) in the GCode. Most of the time those codes aren't used because the code generator assumes that the tool will run constantly through the program, or because the feature just isn't used on hobby mills. Either way, I've got a script that will add it back in.

Mandatory laser safety warning

Lasers are extremely focused light. Even at 800mw, this is like a good LED flashlight focused to a point the size of a pinprick - able to burn you, start fires or permanently blind you instantly. Invisible IR or UV light is just as dangerous as visible. Always use caution, wear laser safety glasses, only apply power to the laser when properly mounted, and don't put your hands in the work area. Don't put any reflective metal in the laser's path. Don't aim the laser at friends/pets/ill-tempered sea bass/James Bond and say menacingly "No, Mr. Bond, I expect you to die." Do not taunt happy Fun Ball. Got it?

Material Safety Considerations

Also consider the chemical makeup of the material which you are cutting/engraving. Some such as PVC emit dangerous fumes when exposed to high temperatures. Materials: PVC

Step 1

Any TTL-enabled laser should work, but mine is an 800mw, 808nm, 12v laser from China. The driver has two pairs of wires, 12v in & ground, and TTL & ground. Connect the 12v & ground to a power supply, and the TTL to pin 12 & ground on the Arduino or GRBLShield. As a side note, the wires I got were reversed from the standard colors - black was + and red was -, white was + and blue was -. The driver was labeled properly, though.

Step 2

Roughly find the focus length of the laser. On mine, that means setting the focus lens as far out as possible & positioning the laser 6.75" from the material. Mount the laser so it has a bit of room to move vertically.

Once mounted, write some GCode to find the focus point:

g21 (nn)
g0 x0 y0 z0 (zero point)

g3 (turn on laser)
g1 x10 (burn a test line)
g5 (turn off laser)

g0 x0 y2 z2 (go to the beginning of the next line)

g1 x10 (burn another test line)
(and repeat)

Choose the cleanest line as your focus point, measure & record in case the laser gets moved, and you're ready to start burning things!

Using the laser

I've written a script ( to convert GCode to laser-friendly GCode. All Z movements are removed, as are feedrate changes. A single F command at the beginning sets the rate for all movements, M3 is inserted before starting a block of G1, G2, or G3 commands, and M5 before any G0's. Let me know if you want the code from script through the Shapeoko forum. You could also use the M3/M5 commands manually or edit your code by hand if you really wanted to. A 2d GCode previewer is available at

Create GCode with a standard generator, making sure the cutting pass depth is large enough to finish in one pass. Run the GCode through the script above, edit to insert the appropriate feedrate, and send to the laser.

Discussion of focusing: