This project started during some research into 3D powder printing, but there are other applications which require full/more flexible control over print head than can easily be obtained with hacking an existing printer:
  • Ping pong ball printer
  • Wooden nickel printer
  • Direct to garment printing
  • Turtle bot printers
  • Ticker tape printers
It was discovered that there is a lack of DIY inkjet kits available. Parallax made a kit which is no longer available and the book “Inkjet Applications” by Matt Gilliland is now out of print.
I was able to borrow a copy of this book which became the primary resource used in developing this project. It contains information about directly controlling the HP 51604 cartridge with a microcontroller and Darlington arrays. The problem with this head is that the cartridge holder is not available. Some research was done into these small 12 nozzle cartridges and the HP C6602 was found. This head has a carriage holder that is available to purchase. Initial tests were done with just Darlington arrays and required 12 output pins on the Arduino. They were also done using 32v power supplies regulated down to 21v vs 12v boosted up.
Below is the development history of this shield. It started as an Arduino only shield which was designed to be as small as possible (v0.1). I then decided to make the shield more versatile and started the KickStarter to see if there was enough interest to make a production run. This lead to the 3 iterations of the v1.0 board. These should probably have been different version numbers but I failed to change that for the boards I produced.

Initial Prototype (v0.1)
Assembled prototype InkShield with printed text


  • Compatible with Arduino
  • Uses pins 2-6
  • On-board 18.5V boost converter for Inkjet head
  • Accepts 9-12V input via barrel jack connector or from the Vin of the Arduino
  • Power switch
  • Auxiliary output header supports an extension cable to the inkjet head (not room to install header, see below)
  • Power and Pulse activity LEDs
  • ISCP header and Reset button
  • All through-hole components

Initial version issues

  • P1 – Rear hole too small for my specific barrel jack. Others fit fine.
  • SW1 – Hole pattern wrong, required bending the switch legs slightly.
  • R4 – Both holes too small, required fix as shown below.
  • D1 – Both holes too small, required fix as shown below.
  • P3 – Too close to C1 and header pins, this was an optional aux header anyway.
  • Shield holes only fit stackable headers.

R4 fix
R4 fix

Pre-release (v1.0)

Feature Changes

  • Compatible Arduino Mega
  • Uses 5 user selectable pins
  • Stackable (up to 11 Inkshields on Ardunio, 15 on Mega)
  • Auxiliary input header offers support for other microcontrollers
  • Auxiliary output header has more room
  • Fixed all the Issues from above

New Issues

  • Barrel jack takes up a lot of space
  • Power switch is unnecessary
  • Auxilliary input is close to other components


Pre-release board #3 (v1.0)
Almost final version (assembled)


Feature Changes

  • On-board 20.5V boost converter for Inkjet head
  • Accepts 9-12V input via optional JST connector, 0.1″ header, or from the Vin of the Arduino
  • Replaced small inductor (250mA) with larger one (1.08A)

New Issues

  • No way to isolate the Vin on the shield from the Arduino Vin

Final Release Version (v1.0)
Assembled shield

Feature Changes

  • Added jumper to allow Vin on the shield to be isolated from the Arduino Vin