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

Picture of 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

Picture of 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.

Original kickstarter:

All the InkShield source files (PCB, schematics, sample code, etc):

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:

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

Step 2: Project Enclosure, Switch Resistor Network

Picture of 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):

Step 3: Install the Power Switch

Picture of 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

Picture of 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!

Picture of 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.


LaurentiuL4 (author)2018-01-17


I have two questions: what is the reasonable distance between nozzles and surface to print, and how to correlate horizontal speed with graphics to print (too fast result in interrupted image, to slow result in overprinted image)?

Thank you

dosman33 (author)LaurentiuL42018-01-17

Hi there!

1) 1/4" to 1" distance from the target surface gets decent and predictable results.

2) I only use this device to print text. There was someone else who made a project that allowed you to print graphics by waving the unit back and forth, but it only allowed for very rudimentary graphical printing. Again, for printing text, swipe speed just affects the font width. You just have to practice some print swipes to get the hang of it, it's fun :-).

CB703 (author)2016-10-11

This is awesome! Would you consider selling it to me? If so, how much? Thanks!

dosman33 (author)CB7032016-10-11

Unfortunately, no. I wish I could part with mine but I'm too busy to go build another one for quite some time. But thanks for the offer, it's always worth trying.

Take care,

raccarva (author)2016-10-02

Extremely interesting project!! I think it can be an good starting point for even more ambitious devices. Maybe combining it with a robot arm or 2D positioning table can lead to more capabilities....


plucas1 (author)2016-06-27

just a thought, if you put a rotary encoder and wheel on the bottom you could use it to track the speed you are going so that it prints better

dosman33 (author)plucas12016-06-27

Good idea! Thanks!

About This Instructable




Bio: Blah.
More by dosman33:Low Budget Method to Mount Antenna Masts to a BuildingBuild a Killer Plastic Bag Sealing StationHow to change the crank sensor in your 2001 Durango
Add instructable to: