When I was looking at controller options, I wanted something a little different than a parallel port-based stepper controller. While they are tried and true, I was looking for something that 1) was a little more readily available on modern machines, and 2) didn't require a full sized computer to operate. Most implementations have all of the "smarts" in the PC, and the processing capabilities of modern embedded systems are more than capable of doing the work.
I considered Linux-based single board computers, but ended up trying out the TinyG controller from Synthetos. It has 4 motor drivers on board with a decent current limit, and talks to the upstream PC via USB. Best of all, you can program it with your machine profile (feed rates, etc), and it will process gcode files directly. For the price, it seemed worth the experiment.
As I mentioned before, one of my goals was to eliminate a big PC from the toolchain if I could, and having the PC act as a glorified serial terminal for the TinyG made even less sense. So I wrote an Android app to act as the GUI for TinyG! At the moment, it can talk to the TinyG directly via USB on supported devices, or though the network. It displays machine status and allows jogging and zeroing of the axes. I'm still working on it though, and I expect to add gcode file downloads and some other features soon.
The app is up on Google Play, and the source is on github for those of you who enjoy programming.
The full details of my CNC quest are listed on my blog, but most of the focus isn't on the mechanical build, since I think there are many good examples of that already.
I'm finally ready to actually make some dust!
-Matt