This project was inspired by a commercial product called AxiDraw that I saw a video of recently from Evil Mad Scientist Laboratories.
It was a combination of reasons that made me consider to do it myself, cost, availability and customs playing a role in the equation (that, and having a 3D printer at home).
This is just a drawing machine quite similar a to a pen plotter but that can adapt to any size of document and any type of paper.
It can use regular felt-tip pens, ball pens or fountain pens as pen orientation is variable. It is a new version of an XY plotter using a single belt and two stepper motors in a configuration called h-bot.
Bill of materials
(*) Stepper motors should be 40mm or shorter, unless you chose the taller parts that I later created for some users willing to use 48mm tall steppers (like many use for 3D printers).
There is a live 3D model you can see for yourself in here. The explode feature may give you an idea of what is inside of another part.
I recommend the following building sequence:
Use two M3 screws and two nuts to attach the servo support part and later add the microsevo using the two screws that come with it.
Make sure the vertical two holes in the servo support part are 4mm diameter and that the carbon fiber tubes can be inserted into them (if not, drill the holes with a 4mm drill bit). Insert both tubes from the top but only mid way. And next insert from the top the vertical carriage (the one that looks like a smiling face). Gently push it down till you can insert the remaining half of the carbon fiber tubes so they are inserted into the bottom holes of this carriage.
Using a couple of M3 screws and nuts fix the pen-holder part to the vertical carriage.
Push the Arduino holder into the protruding smooth rods on one of the stepper motor holders. Use a couple of M3 screws to attach the Arduino board to the plastic holder.
Congratulations, the mechanical assembly has been completed.
This project uses a special flavour of GRBL software created by robotini user. It enables GRBL to handle a servo on digital pin 11 using commands M3 and M5. This way it can raise and lower the pen on the paper.
Installing the software is better explained here, please read it carefully as some people may find it difficult as is not the typical Arduino program (in essence the code is created as a library).
How do you know it is all working?
You can connect using the Arduino Serial Monitor to your board at 115200 bps and a welcome message: grbl 0.9i ['$' for help]
Before inserting the CNCShield over the Arduino you want to do this trick, that will allow to power everything from the Arduino power jack.
On top of Arduino you insert the CNCShield board and on top of it, two of the Pololu StepStick stepper driver boards. But before inserting these two boards for axis X and Y, make sure you put three jumpers in the headers (that will later be obstructed by the Pololu carrier boards).
A three-wire cable will be coming from the servo and two four-wire cables come from the stepper motors.
Servo cable has to go to (red) +5V, (black) GND and (white or brown) Digital pin 11. Servo cable is too short, so an 250mm extension cable will be needed.
Each stepper motor goes to X and Y axis four pin headers on the CNCShield.
There is an optional improvement: make the plotter wireless by adding a Bluetooth module, but I would only do this once everything else is up and running.
There are two types of programs to use in your computer (until someone creates one that does both): one for creating the code for a given graphical design. And a second program to send the code just created so the plotter will draw it on paper.
For the first part I use Inscape free vector drawing program with a plugin I hacked. Install may be a bit tricky for the non tech savvy user.
For the second part I use UniversalSerialGCodeSender Java program that allows you to load the file created with Inkscape and send it to the plotter.
You want to setup the proper scale for your machine, but that is not stored in GRBL firmware but on the Arduino UNO EEPROM memory. So you will need to set that right before starting to draw. (Following text comes courtesy of Erivelton user):
I think this a fun project can easily take a weekend to get it done (depending on your skills).
This is my first instructable and I can see there is yet much more that could be said about the details of the project, but once the basic stuff has been laid out I would try to improve it by addressing user comments.
And if you would like to say thanks in ways different than a comment, you are welcome.