Make a Handheld InkJet Printer! Print on ANY Surface!




Intro: 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.

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

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

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.

Makerspace Contest

Third Prize in the
Makerspace Contest



    • Metalworking Contest

      Metalworking Contest
    • Furniture Contest 2018

      Furniture Contest 2018
    • Audio Contest 2018

      Audio Contest 2018

    9 Discussions


    4 months ago

    I know the inkshield uses the HP C6602A , but are there any reasons why this couldn't be modified to use ANY printer cartridge?

    1 reply

    Reply 4 months ago

    The short answer is yes. I don't know what typical differences and similarities exist between the driver chips of various inkjet carts, if they are similar enough then you should be able to drive any inkjet cart once the physical modifications have been made to accommodate it. As far as doing that though, I have no idea.


    8 months ago


    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

    1 reply

    Reply 8 months ago

    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 :-).


    1 year ago

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

    1 reply

    Reply 1 year ago

    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,


    1 year ago

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



    2 years ago

    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

    1 reply