I wanted to convert a manual milling machine I had to CNC. Having no experience with CNC at all, I thought it would be nice to have something easily debuggable. Having a couple of Pi's laying around Python and GPIO came to mind. Some people warned me that I should use a realtime system. Well, let's challenge that thought. Started out with default raspbian.
Furthermore, being inexperienced I wanted to use readily available parts, ie. 3d printer parts I could pick up at a local shop. (NEMA 17, pololu, mcp230016)
To make connecting stuff convenient and easier I decided to make a Raspberry Pi shield for mounting the pololus and the io expander.
Software on github/noisegate, machine. PCB follows.