Introduction: Make a Handheld InkJet Printer! Print on ANY Surface!

I found this kickstarter for something called the InkShield. It’s an Arduino shield that drives a single black inkjet cartridge for manual operation. I backed the kickstarter and got my shield. This instructable is how I made mine into a fully functioning project. If you build this, you will have a very simple inkjet printer which you can use to print simple one-line messages on any surface!

Step 1: Build the InkShield

So the kickstarter has come and gone. However, the project is open source so all the source materials to build new PCB's are available.

Inkshield kits are still available!!! http://nerdcreationlab.com/store/

Original kickstarter: https://www.kickstarter.com/projects/nicholasclew...

All the InkShield source files (PCB, schematics, sample code, etc): https://github.com/NicholasCLewis/InkShield
The PCB schematic can be used to create your build of materials: https://github.com/NicholasCLewis/InkShield/blob/...

Photo album of the development of the InkShield project: https://www.flickr.com/photos/nicholasclewis/albu...

So I backed the kickstarter and got one of these shields and made it into a complete project for myself. It’s a lot of fun, you can inkjet-print on any surface with this device.

This repo is my modified Arduino InkShield code which gives me 5 different messages I can select to print. To change the messages just modify the code and re-upload to the Arduino:
https://github.com/dosman33/inkshield

The ink cartridges used are HP C6602A (black). They are cheap and still readily available online.

Step 2: Project Enclosure, Switch Resistor Network

You need to find a suitable enclosure. I used a standard Radio Shack enclosure I had on-hand. It needs to be wide enough for the inkshield and tall enough for the ink jet cartridge to mount correctly.

Drill the holes for the message switches and mount them. These are momentary NO (normally open) switches. Then solder up the resistor network. One end of the reisitor network runs to the Arduino 5V line, and the other end goes to ground (with a resistor between the last switch and ground). Connect the data wire toffffff input 5 on the Arduino.

My code requires one analog input on the Arduino for the resistor network. You will need to modify the code for the resistor values you use in your circuit. I borrowed code from this forum post example (wiring diagram for the resistors is included): http://www.arduino.cc/cgi-bin/yabb2/YaBB.pl?num=1...

Step 3: Install the Power Switch

The device is powered from a 9V battery. The power actually feeds to the Inkshield, and the shield then powers the Arduino. Drill and mount the power switch on the case (it's on the top just right of center in the picture), a simple SPST will work. Solder a 9V battery connector in series with one leg of the switch (does not matter which) and to the power in on the Inkshield. Be sure to observe correct polarity of course.

Step 4: Mount the Print Head

The print cartridge assembly has a couple holes in it for mounting. You can see that I drilled some matching holes in the case and then used a zip-tie to hold the print head in place. Very simple.

Step 5: Print!

You can see that different font widths can be achieved by moving the print head faster or slower. Just holding the button down repeats the messages printed. Obviously you will only get readable messages by moving the print head from left to right while printing.

It's a good idea to remove the ink cartridge from its holder before updating the sketch on the Arduino, it can sometimes spew ink out during this process. Also I keep the unit in a cheap grocery-store plastic sack when not in use. The Ink cartridge will smear and wick onto anything it touches, watch your clothes and furniture. It's also a good idea to keep a kleenex on-hand, the printhead needs occasional cleaning. Otherwise it works great.