Technical requirements
To operate your CNC machine, we should first discuss some basic requirements that will be needed to fully take advantage of your machine:
- A Computer-Aided Design (CAD) application: Unless you are downloading pre-generated G-code, you will need to either create or convert a drawing to G-code. There are several avenues for this. I use Tinkercad (a simple and free cloud-based CAD application) to import STereoLithography (STL) files or draw my own. From there, I save the drawing as an SVG file, which I subsequently convert to G-code using a conversion tool such as JSCut (http://jscut.org/jscut.html), which is also cloud-based. JSCut also allows me to visualize the G-code so that I can see how the cuts will proceed on the machine.
TinkerCAD is not your only option; there are other more sophisticated packages. However, in my years of garage tinkering, I have had little need for more complex (and possibly more expensive) tools. You can create an account on Tinkercad at https://tinkercad.com.
- A personal computer (PC): While there are solutions that cater to Linux-based or Apple/Mac computers, I have found that Windows-based software is the most prevalent and easiest to install and use. That is not to say a non-Windows machine is not viable, just that the offerings are fewer. The machine itself does not have to be a top-of-the-line machine. I run most of my CNC and laser machines using Intel i5-based machines with anywhere from 4-8 MB RAM and hard drives as small as 125 GB; most of the space is taken up by the operating system itself. The personal computer should have suitable USB ports (USB 2.0 and later) as you will need these to operate most machines as well as upload firmware.
You may also choose to run your machine using a Raspberry Pi single-board computer (SBC), which you would use as both the machine controller and the G-code sender. For this, you will need to install a suitable daughterboard (often called a hat) such as the Protoneer. We will not be exploring this approach in this book, but the concepts should not be too difficult to extend to something such as this. Add a small monitor and a keyboard, and your CNC machine is also a fully functioning (albeit dedicated) PC. Note: You will only require the PC to generate G-code and not connect it to your CNC machine if you have another means to send G-code to the CNC controller (such as an LCD controller with an SD card slot).
- Administrative rights to your PC: You should have the ability to load drivers and install software on your computer. If you are using a shared or work computer, you will need administrative rights from your system administrator to be able to prepare the computer for use with the CNC machine, including unblocking USB ports (for security reasons, many corporate PCs have their USB ports disabled or severely limited).
- An SD or Micro-SD card and suitable reader: If this isn’t built into your PC, SD card readers that plug into your USB port are easily available just about anywhere. I frequently use high-capacity Micro-SD cards that fit into an SD card shell, which is then inserted into a USB SD card reader. This allows me to move this storage media (the Micro-SD card) from PC to PC and from CNC machine to 3D printer to laser wherever an SD card slot is available.
- Arduino IDE: This is for compiling your own custom firmware. If you only plan to load precompiled firmware, you do not need this. Download the IDE from https://arduino.cc.
Note
As we deep dive into getting our machine set up and ready, you might consider heading over to https://howtomechatronics.com/tutorials/how-to-setup-grbl-control-cnc-machine-with-arduino/. This article breaks down CNC controllers further (many are Arduino-based) using a basic controller commonly available on Amazon. Look closely at the step calibration section because we will explore this deeper in this chapter as we get our machine ready.
- GRBL .hex file: You will either create this yourself (for a custom implementation) or download a specific vendor’s implementation of G-code Reference Block Library (GRBL). You can also download the baseline version from the GRBL GitHub repository at https://github.com/grbl/grbl.
- z-axis setting probe: While optional, I prefer to use this little tool (available from several vendors) to ensure I set the origin point (Z=0) for my z axis. The tool is cheap and precisely sets the origin point on the workpiece no matter what its thickness. If you have endstops on your machine, you may not need this as much because it is a simple calculation to determine where Z=0 as the top of the z-axis limit is a known value and is the distance from the tip of the carving/cutting bit to the worktable. The thickness of the wasteboard and workpiece is added and then subtracted from this height to determine where Z=0 is. I much prefer to let the machine determine this instead, which is why I used this probe, especially since I may have different-length bits and different-thickness materials. It just gets tedious to keep measuring the differences, so of course, I resort to automation. There is a great tutorial on how to use the probe at https://buildyourcnc.com/PrimeronHomingandLimitSwitches.aspx.