Run Your First Job

From ShapeOko
Jump to navigation Jump to search

These are the instructions for the SO1 and are here for historical reasons only.

If you are building an SO2, please see the instructions at


Let's see what we have done:

  • Unit assembled?
  • Electronics connected?
  • Software installed?

If you've met all three of those criteria, then you're ready to run your first job!

Before we get carried away and start throwing chips all over the place, let's start with the basics.

  1. Plug your arduino into your computer.
  2. Do not turn on your ShapeOko power supply yet, but make sure it's connected to your stepper shield.
  3. If the spindle is already mounted, it might be a good idea to take it off and move it out of the way. It's easy enough to slide back on when the time comes.


File:First job gcodesender.png
gcodesender by Otto
  1. Open up GcodeSender (Windows) or Universal-G-Code-Sender (Mac / Linux / Windows).
  2. Select the correct com port from the dropdown menu on the left. Mine is COM17, yours is probably COM3 or COM4. If you plugged in your arduino after launching gcode sender, just hit the refresh circles next to the dropdown menu. That will rescan for new hardware.
  3. When you've connected to your arduino you'll see something like this: $ dump settings. GREAT! That means we're talking to the arduino.
  4. you might have to toggle the /n/r /n options at the top.
  5. Go ahead and type '$$' into the input box. This will dump GRBLs current settings to the screen.
  6. Assuming you have set 8x Microstepping on the X&Y axis and full step on the Z Axis:

Your settings should look like this...

Grbl 0.8c
$0 = 43.74 (steps/mm x)
$1 = 43.74 (steps/mm y)
$2 = 320.00 (steps/mm z)
$3 = 30 (step pulse, usec)
$4 = 500.000 (default feed, mm/min)
$5 = 500.000 (default seek, mm/min)
$6 = 28 (step port invert mask, int:00011100)
$7 = 50 (step idle delay, msec)
$8 = 25.000 (acceleration, mm/sec^2)
$9 = 0.050 (junction deviation, mm)
$10 = 0.100 (arc, mm/segment)
$11 = 25 (n-arc correction, int)
$12 = 3 (n-decimals, int)
$13 = 0 (report inches, bool)
$14 = 1 (auto start, bool)
$15 = 0 (invert step enable, bool)
$16 = 0 (hard limits, bool)
$17 = 0 (homing cycle, bool)
$18 = 0 (homing dir invert mask, int:00000000)
$19 = 25.000 (homing feed, mm/min)
$20 = 250.000 (homing seek, mm/min)
$21 = 100 (homing debounce, msec)
$22 = 1.000 (homing pull-off, mm)

If something isn't set correctly, you can set it by typing the value you want (e.g. $0=87.49). Settings are stored in EEPROM and will be retained when the Arduino is turned off.


  1. Move the z axis to the middle of the work area we'll call this 0,0,0
  2. Now, if you're ready, turn the power on to your Power Supply. You should hear a very satisfying "click" and "whooooosh" noise as your steppers engage. Great! We have power.
  3. Type X10 into the input box and press enter. If everything goes well, your X axis (left and right) will travel 10mm to the right! Whooohooo! Hello World.
  4. Type X0 into the input box and press enter. Your X axis should move to the left to return to it's starting point.
  5. Do the same thing for the Y and Z axis. The Y axis needs to move to the back for positive values and to the front for negative values. For the Z axis, positive is up and negative is down.
  6. If your axes move the wrong way, you need to play around with the inversion bit setting of your Grbl (Setting $6 on Grbl 0.8)
  7. Spend some time playing around with your machine.

Helpful G-code instructions

  • F = feed (this is your speed). So something like F1100 would be 1100mm/minute. F100 would be 100mm of travel per minute. If you do not specify an F setting grbl will either use the last one entered, or if you do a G0 it will resort back to your default seek speed.
    • Example: F100 Z-10 (move the z-axis down 10mm at 100mm/m)
  • G20 = inch mode. If you enter G20, then all units after will be interpreted as inches.
  • G21 = mm mode. If you enter G21, then all units after will be interpreted as millimeters.
    • Be careful when switching back and forth. It's easy to overrun the axis. If you feel like you might hit an edge, just press the reset button on the stepper shield! That will stop the machine and prevent any further movement until the next command is entered.
  • G0 (Rapids) = This tells your machine to go as fast as it can (default seek speed) to whatever coordinates you're entering.
    • Example: G0 X100 Y100 Z-25 (move the X and Y axis 100mm in the positive direction, and the Z axis 25mm in the negative direction (down)
  • G1 (Linear Feed) = This tells your machine to travel in a straight line at the last specified F(####) or the Default Feed ($4 in GRBL)
    • Examples:
    • G1 F1000 X100 Y100 = tells your machine to move in a straight line at 1000mm/m to X100 Y100 from it's current position
    • G1 X0 Y200 = tells your machine to move in a straight line at 400mm/m ($4 from the GRBL settings above) to X0 Y200 from it's current position

Drawing in the air

Got the hang of it? If you think you're ready, let's draw some stuff, in the air.

(Here is the sample file we'll be working with: Hello World ShapeOko)

  • Browse for the sample file using the browse button on the right hand side. Find the file and open it.
  • Move your machine to the center of the work area
  • Be sure your z axis is at least an inch above the table.
  • Press the reset button on the stepper shield (this will essentially home the machine - 0,0,0)
  • Take a deep breath
  • Click "Print"!

You'll see GCodeSender start streaming the text file line by line to the arduino. Once the arduino received a command, it will start interpreting the gcode into step and direction pulses to be sent to the pololu drivers. The pololu drivers will in turn move the stepper motors in the correct direction and speed.

Sit back and enjoy. Try to listen to the machine and get used to what it sounds like under regular conditions with no load. The more you're in tune with how the machine sounds and acts, the better you'll be at troubleshooting and figuring out how to solve problems. This job should take about 2 minutes to run. notice how in between "letters" the z-axis comes up a certain height, then "rapids" to the next location before going down. That rapid is also refered to as your "Seek Speed", it's one of the variables defined when configuring grbl. If it's too fast, you risk loosing steps and/or stalling the motor completely. Seek should be quick, but doesn't have to be blazing fast.

Drawing on paper

Now that the "air job" has finished. Let's move on to Phase 2: A ballpoint pen (or sharpie marker).

  • Use a piece of tape (or use a nut, bolt and metal bracket) to attach a ball point pen or sharpie marker to the z-axis extrusion. make sure the pen's point is below the bottom of the extrusion. Alternatively you could mount a pencil lead or something like that in the collet of the spindle (without turning it on, obviously), that might give better results.
  • After our pen is mounted, go ahead and slowly move the z-axis down until the pen is barely touching the paper. It should be right in the middle.
  • Once you're satisfied with the pen's height, press the reset button to home the machine.
  • Take a deep breath.
  • Press the print button.

Sit back and watch as the machine draws out the gcode. This should sound and "feel" a lot like the "air job" we ran earlier. There's really no forces involved here other than gravity and friction, so things should run pretty smooth. The gcode was generated with an F of 60ipm. (G20 F60). That's pretty fast, a little faster than we would run if we were actually cutting something.

What's Next

If everything came out well, you can try running your second job! or verify your accuracy using the test pattern from this forum post: Prototype Calibration Pattern (with G-Code)

If not, see the page on fine tuning showing different problems w/ the "Hello World" file and their solutions.

Look at the Upgrade Overview page and consider the relative merits of each upgrade, weighing them against your needs.

Examine creating and cutting 2D files in the next step Basic workflow 2D