Introduction: CNC G-Code Interpreter Using Processing

Hi guys, for years I'm trying to make my own CNC router so I can make PCB easier.

What I'm trying to make is a G code interpreter who can sends signals to an arduino board. So the arduino board can control a simple CNC router to draw a circuit over a PCB.

I hope this project inspirer some peoples to support, improve, and make this things gonna real.

Any suggestions, comments, bug, improvement, please send to me.


Step 1: The Processing Code.

The code is real simple. I generate an G file in Eagle Layout editor. Read this file in processing. And I move, or Draw, the lines.

On the next step I will shoe how to generate the G file, and use my code to draw the PCB on screen.

The file named as 12.txt is a G file to use as example.

The file named as "motor shield" is a example already routed on the eagle. You just need to generate the G-file.

The file named as "teste" is simple example already routed on the eagle. You just need to generate the G-file too.

Step 2: Generating the G File.

Open any project that you already made, or just download the example above.

Open the *.brd file.

Click on the CAM Processor icon, the one that looks like a movie film.

On the layer windows deselected all, and select only the Top OR Bottom layer. Make sure you deselected all other layer or my program will won't recognize the code.

Make sure that on the Style tab this check-box are checked. Mirror, Upside Down, pos. Coord.

Click on file button and save the file inside of your sketch folder. Something like this: C:/Users/Otavio/Documents/Processing/cnc/data/12.txt

Change my name for yours.

Then click on the "process job" button.

A warning message will appear, ignore it. Just click on OK.

Nice, if you do everything right. the file will be create, and locate inside the data folder of your sketch.

If you open the file you will see some codes like this one:

G01*
X000000Y000000D02*
D10*
X005919Y003615D02*
X005842Y003802D01*
X003086Y006558D01*

Ok, now on Run your sketch and see the results. It looks amazing, don't?

Step 3: Lets Check the Results.

On the images below you can see and compare both circuits.

I know that the pads aren't draw, but I intend to leave this part to the arduino board handle.

The part that send messages to arduino is not done yet.

Any suggestions are welcome.



Please guys, if you like it, rate it.