CAM-GCode software

G-code generators

A) grbl-controller 3.0
Grbl Controller sends GCode to CNC machines. Version 3.0 is has been optimized for the Arduino to control Grbl shields. Grbl Controller can use the QextSerialPort library to simplify choosing the correct USB serial port.

B) Makercam
MakerCAM is a web based CAM program. Simple by design, MakerCAM allows you to produce toolpaths for 3-axis CNC machines that accept standard RS274D GCode.
link: Getting started tutorial
link: about makercam

C) Easy cnc
The goal of the project is the realization of a modular firmware that allows to control a CNC machine with different utensils.

D) cnc-masteryou
A small program to quickly generate GCode. It can generate circular pockets, square pockets, etc. Now you can generate a simple program from DXF.
Use the tab “Cutting a path” or “Array of elements”. Added engraving by DXF file.

E) gcodetools – inkscape plugin

F) JSCUT – a cam in your browser

G) benbox


G-code senders

A) Universal g-code sender
AA) Universal g-code sender SHAPEOKO

B)  Chilipeppr – read the github information


GCode Ripper Wrap GCode for 4th Axis or do Engraving on Irregular Surfaces after Probing
LinuxCNC / EMC2 Free CNC Control Software
Jedicut CNC Foam Cutting
Ace Converter DXF to G-Code
2linc Engraving Software: Light Version Engraving Software
and fonts
DeskEngrave Engraving Software
Image to G-Code Image or bitmap to g-code
MaxCut Nesting


grbl on python: pyGerber2Gcode
3 x 4 Pin Dupont Female Connectors
GRBL firmware…

GRBL workflow – Arduino

INSTALL WORKFLOW using an arduino uno and an arduino cnc shield:

1) Grbl is a motion control GCode Interpreter. The controller is written in highly optimized C to achieve precise timing and asynchronous operation. It is able to maintain up to 30kHz of stable, jitter free control pulses.
download GRBL 1.1 here

2) Flash the file to the arduino in various ways:
compile in the Arduino IDE
— download  the Arduino IDE for mac – pc – linux


get inspired from some nice examples from the original author


Protoneer directions for customized GRBL



Nema 17 Stepper Motors

NEMA 17 – 12V – four-phase unipolar permanent-magnet stepper-motor
1.8° full step – 200 steps-per-revolution
0.9° half-step – 400 steps-per-revolution

NEMA chose to label stepper motors (e.g. “NEMA 17”) with the size of their faceplate in tenth of inches. So a “NEMA 17” has a 1.7 inch by 1.7 inch faceplate. By standardizing the stepper motors (the faceplates, flanges and screw holes), you know ahead of time that one NEMA 17 motor will fit into the mounts of another NEMA 17 without having to redesign anything. This makes swapping components easier.

1.5 kg-cm 6 Wire NEMA 17 Stepper Motor – Item no. 42BYGH34-04
12VDC, Rated current 1.3A, 500rpm, Torque 0.26NM, size: 42x42x34mm

17HS1352-P4130 – hybrid
2.2 kg-cm 6 Wire NEMA 17 Stepper Motor
12-24VDC, Rated current 1.33A, 500rpm, Torque 0.26NM, size: 42x42x34mm

1.7A – 1.8degrees

42BYGHW609D4P1 Stepper Motor (Makeblock 81042)
STEP ANGLE : 1.8+-5%°/STEP



Grbl is a no-compromise, high performance, low cost alternative to parallel-port-based motion control for CNC milling. It will run on a vanilla Arduino (Duemillanove/Uno) as long as it sports an Atmega 328.

The controller is written in highly optimized C utilizing every clever feature of the AVR-chips to achieve precise timing and asynchronous operation. It is able to maintain up to 30kHz of stable, jitter free control pulses.

It accepts standards-compliant g-code and has been tested with the output of several CAM tools with no problems. Arcs, circles and helical motion are fully supported, as well as, all other primary g-code commands. Macro functions, variables, and most canned cycles are not supported, but we think GUIs can do a much better job at translating them into straight g-code anyhow.

Grbl includes full acceleration management with look ahead. That means the controller will look up to 18 motions into the future and plan its velocities ahead to deliver smooth acceleration and jerk-free cornering.

download at github

Arduino CNC Shield V3


  • GRBL 0.8c compatible. (Open source firmware that runs on an Arduino UNO that turns G-code commands into stepper signals
  • 4-Axis support (X, Y, Z , A-Can duplicate X,Y,Z or do a full 4th axis with custom firmware using pins D12 and D13)
  • 2 x End stops for each axis (6 in total)
  • Spindle enable and direction
  • Coolant enable
  • Uses removable Pololu A4988 compatible stepper drivers. (or DRV8825)
  • Jumpers to set the Micro-Stepping for the stepper drivers. (max 1/16)
    (The DRV8825 board can do up to 1/32 micro-stepping)
  • Stepper Motors can be connected with 4 pin molex connectors.
  • Runs on 12-36V DC. (Only the Pololu DRV8825 can handle up to 36V)

Using two jumpers the 4th axis can be configured to clone the X or Y or Z axis. It can also run as an individual axis by using Digital Pin 12 for Stepping signal and Digital Pin 13 as direction signal. (GRBL only supports 3 axis’s at the moment)

Clone X-Axis to the 4th stepper driver(Marked as A)Arduino-CNC-Shield-V3-4th Clone X-Axis

Clone Y-Axis to the 4th stepper driver(Marked as A)Arduino-CNC-Shield-V3-4th Clone Y-Axis

Clone Z-Axis to the 4th stepper driver(Marked as A)Arduino-CNC-Shield-V3-4th Clone Z-Axis

Use D12 and D13 to drive the 4th stepper driver(Marked as A)Arduino-CNC-Shield-V3-4th D12-D13

End Stop Configuration

By default GRBL is configured to trigger an alert if an end-stop goes low(Gets grounded). On the forums this has been much debated and some people requested to have active High end-stops. The jumpers in the picture provides the option to do both. (To run with default setting on GRBL the jumper need to be connected like the left shield in the image below)(This Jumper was only introduced in Version 3.02)
End-stop Configuration Active LOWorHIGH

End-stop switches are standard “always open” switches. An End-stop gets activated when the end-stop pin connects to ground(When setup with default GRBL settings).

Configuring Micro Stepping for Each Axis

Each axis has 3 jumpers that can be set to configure the micro stepping for the axis.


In the tables below High indicates that a Jumper is insert and Low indicates that no jumper is inserted.