HackCNC Assembly Tips

=Mechanical Assembly=

Get the PDF guide from github

Mechanical Tips

 * You may need to sand/file some of the wooden pieces before they'll push together.

=Electronics Assembly=


 * Soldering headers, capacitors.


 * If possible, solder the capacitors lying down to make room for the LCD panel to sit on top.


 * The cable order for the stepper motors is red-green-yellow-blue:


 * Solder the servo header with the tab facing inwards, and connect the micro servo as shown.

=Software=

Getting The Software
Get the software from the HackCNC repository on github. If you don't use git, click the "ZIP" button to download the repository contents as a zip file.

Everything you need is in the Software/ directory.

Programming the Arduino
You need use the Arduino IDE to upload a firmware program to the HackCNC board.

Arduino programs are called sketches. The firmware sketch, "EmcArduinoFirmware", makes a bridge between the LinuxCNC software (also called EMC), and the interfaces on the HackCNC board.

On Linux
Get the Arduino software the same way you usually install software, from your Linux distribution's package manager. For example from the Ubuntu Software Centre, Fedora Package Installer, or from a terminal with apt-get install arduino or yum install arduino.

You will need Arduino 1.0.1 or newer. If your Linux system has an older version then you may want to download the newer version direct from the Arduino site.

On Other OSes
Download Arduino from the Arduino website.

Installing Libraries
You need to install some libraries into your Arduino's sketchbook directory. The libraries are used by the firmware sketch.

Create Directories
On Linux, the sketchbook directory is called "sketchbook" in your home directory. On Windows & Mac OS, it is called "Arduino" inside your Documents directory.

Create the Arduino sketchbook directory, then create a subdirectory "libraries" inside it:


 * sketchbook directory
 * libraries

On Linux, you can do this from the command line by opening a terminal and typing: mkdir -p ~/sketchbook/libraries

From the HackCNC directory Software/EmcArduinoFirmware, copy the folders "digitalWriteFast" and "NewLiquidCrystal" into the libraries folder. The structure should look like this


 * sketchbook directory
 * libraries
 * digitalWriteFast
 * NewLiquidCrystal

Then copy the EmcArduino_07b_32u4 directory directory to the sketchbook directory itself. The final structure should look like this:


 * sketchbook directory
 * EmcArduino_07b_32u4
 * libraries
 * digitalWriteFast
 * NewLiquidCrystal

(Linux) disabling modem-manager
On my Linux distro (Ubuntu 12.10) I found that the built-in "modem-manager" made it very hard to upload a sketch correctly (Arduino IDE says "Upload Completed" but nothing was actually uploaded.) We need to tell Modem Manager to ignore the Freetronics bootloader on the HackCNC board.

If you are on a recent Linux distro (definitely recent Ubuntu & Fedora) with network manager or modem manager, you may need to do this as well. If you're not sure if you have to do this, it won't hurt to do it anyhow.

Open a terminal window and carefully run these two commands:

echo -e '# Freetronics\nATTR{idVendor}=="26ba", ENV{ID_MM_DEVICE_IGNORE}="1"' | sudo tee /etc/udev/rules.d/77-mm-blacklist-freetronics.rules sudo /etc/init.d/udev restart

The first command creates a file in /etc/udev/rules.d, and the second command restarts the udev daemon.

Verifying and Uploading the Firmware

 * Open (or close and reopen) the Arduino IDE.


 * Go to the File menu and the Sketchbook submenu. You should see "EmcArduino_07b_32u4" in the list of sketches. Select this sketch to open it.


 * If you can't see "EmcArduino_07b_32u4" in this list, check your sketchbook directory is in the right place (see the previous section.)


 * Go to the the Tools menu, Board submenu, and choose "Arduino Leonardo" for the board type.


 * To verify the sketch is correct, click the "tick" icon on the Arduino IDE toolbar. verify.png


 * After a little while you should see a message "Done Compiling" towards the bottom of the IDE window. If you see "Error Compiling" then something has gone wrong, look at the message and try to guess what's happened - it may be one of the libraries is not in the right place.


 * To upload the sketch to the board, connect the HackCNC to a USB port and then press the Arrow icon (next to the tick icon) on the Arduino toolbar. upload.png


 * If you get an error uploading the sketch, you may need to choose a different serial port (under Tools -> Serial Port.) On Linux, the serial port name will start with "/dev/ttyACM".


 * Once the HackCNC is running successfully, after a few seconds you should see some messages coming up on the LCD panel. If you don't see any messages, it means there was either a problem uploading the sketch or a problem with the solder connections on the LCD panel.

The final message on the LCD should say "Waiting for LinuxCNC":



Time to set up LinuxCNC!

LinuxCNC Setup
You can either just use a prepared LinuxCNC USB stick, or install and configure it yourself on your computer.

Easy Way
If you get a LinuxCNC USB stick, as prepared by John, then you can boot into a pre-prepared LinuxCNC environment.

Installing on Ubuntu/Debian
To install LinuxCNC on an Ubuntu/Debian system, navigate to http://buildbot.linuxcnc.org/ and follow the steps to set up a new package source /etc/apt/sources.list.d/linuxcnc-buildbot.list

You want the v2.5 branch, simulation version, for your distro (ie v2.5_branch-sim).

If you're on Ubuntu 12.10 (Quantal), then the steps for Ubuntu 12.04 (precise) will work fine without any changes.

Follow the rest of the steps on that page to install the linuxcnc-sim package:

sudo apt-get update sudo apt-get install linuxcnc-sim

Installing on other distributions
TBD (anyone got any tips?)

Configuring LinuxCNC
Your LinuxCNC installation needs some custom configuration to work with the HackCNC.


 * Copy the directory 'linuxcnc' from Software/EmcArduinoFirmware/ to your home directory.


 * If your HackCNC USB port is not /dev/ttyACM0 then edit the script "~linuxcnc/configs/my-mill/3axis_arduino" and change the serial port name to the correct name (it will be the same port as you used from the Arduino IDE.)

sudo cp ~/linuxcnc/configs/my-mill/3axis_arduino /usr/bin sudo chmod +x /usr/bin/3axis_arduino
 * You need to copy the 3axis_arduino script to /usr/bin and mark it executable. Run the following commands in a terminal:

``NB: If you'd rather not copy this file to /usr/bin/, you can optionally edit the file linuxcnc/configs/my-mill/custom.hal and change the path at the top to point to 3axis_arduino in your home directory. The script still needs to be executable.``

Using LinuxCNC

 * Launch linuxcnc (you can just run 'linuxcnc' from a terminal.)


 * Choose "my mill" from the configurations menu:


 * To start jogging the stepper motors, first disable the E-Stop button (top-left on the toolbar) and then enable the mill (second to top-left on the toolbar)


 * You can then use the jog controls to move the motors around.