PrintO-Bot is an inkjet printer on wheels. This robot can print on almost any flat surface- no matter what material it is made of. And it is made from a regular desktop inkjet printer!

Why did I make this? 'Cause I like printing on different materials to decorate my room. I don't want to be restricted to printing on papers and I can't pay for the costly industrial services that're usually needed to make such prints.

Step 1: Quick Intro to Inkjet Printer Mechanism

First, let's familiarize ourselves to the printer parts that we'll be hacking/ modifying. My PrintO-Bot is made from a Canon Pixma iP2702. Most inkjet printers have similar parts and mechanism so you *might* be able to use a different one but you'll have to analyze my steps and change them according to your printer while following the logic I've used.

Following the order in which the labelled parts are used/ engaged after sending a print to the printer:

..the paper feeder holds the papers and pushes a paper inside the printer when a print is received.

..the paper moving motor is responsible for pulling the paper into the print area as well as for moving the paper forward after each print swath (stripe of print across the page that the print head can create at one go)

..the paper sensor checks if the paper has entered the print area and signals the printer if it has or not; the printer either starts printing or gives us an error depending on this paper sensor signal

..print head/ ink head holds the ink cartridges and moves over the paper, ejecting tiny ink droplets onto paper.

Step 2: Hacking Plan

Now that we've familiarized ourselves to the parts, here's the logical plan to convert the inkjet printer to PrintO-Bot:

1. Bring the ink head outside of the printer so that it now faces the material we want to print on

2. Put the printer on wheels so that it moves over the material while printing

Now we proceed to the actual hacks. You'll obviously need to open up the printer first. Take out the 2 outermost covers and then..

Step 3: Hack 1: Print Head Re-positioning

Cut an ethernet cable and solder away the wires to connect the ink cartridge at one end and the cartridge housing on the other. It is easier to solder to the cartridge first and then to the housing.

Even better, instead of soldering the way I've done here (the cartridge & housing soldered on either ends), I'd recommend soldering different set of wires to both the cartridge and housing, and then soldering male/female connectors at the other ends of both so that the cartridge is easy to connect and disconnect. (Update: I re-soldered the wires this way. Last picture above shows how it looks now :) )

I've soldered only the black ink right now since it has lesser pins to solder than the color one.


1. Take the ink cartridge out. Make a sketch of the pads on it. Do the same for the pins inside the housing (they're obviously of same layout but just draw both of them).

2. Now use a digital multimeter to record the resistance between the first pad and any other pad which gives a finite resistance. Repeat so that you have a value of resistance between each pad with atleast one other. Do the same with the pins inside the housing. We're going to use these values to check if we have soldered all wires correctly.

3. Solder away! Use a lot of flux. Hot glue the wires after soldering every second/ third wire depending on how carefully you can solder. Once hot glued, verify if the resistance you had recorded for that pad/pin has stayed almost same (it will NOT be exactly same).

4. Be patient and take breaks in between. It takes a really long time the first time. Once all wires are properly soldered, secure the whole thing with more hot glue.

Step 4: Check the New Printhead

Tape the cartridge onto a temporary holder/ thing and give the printer a one or two line thing to print on your favourite material! We still need to feed in a paper to make the printer print.

Also, make sure whatever you're printing is black and white (not grayscale).

Step 5: Hack 2: Bypassing the Paper Sensor

The printer uses an optical sensor as a paper sensor. A lever is offset from its position when the paper goes in and that causes the optical path in the sensor to complete. Here's a good explanation of an optical sensor. The sensor in this printer is almost same but the circuit connections are pretty different. Above is the modified version of that circuit. Picture 3 shows the sensor board. It has 3 pins that I've soldered to different colored wires for debugging: White wire pin: Chip select/power

Black wire pin: Ground

Blue wire pin: Sensor output

So, in normal working conditions, there is a fixed time interval between the feeding of paper and detection of paper by the sensor. If the paper is not detected within that interval, an error is generated by the printer and it stops printing. To simulate this exact signal exchange abiding specific time intervals, I built a small mechanism to detect the start of printing process. Explanation in the video

Using an oscilloscope, I could determine that the printer expects paper around 268 millisecond after it tries to push the paper in. So, I coded an arduino to detect the switch close, wait for 268 msec and then send a fake 'paper detected' signal:

const int mySwitch = 7;<br>const int fakeOutput = 8;

void setup(){
  pinMode(mySwitch, INPUT);
  pinMode(fakeOutput, OUTPUT);
  digitalWrite(fakeOutput, HIGH);
void loop(){
  if(digitalRead(mySwitch) == HIGH){
      digitalWrite(fakeOutput, LOW);
      digitalWrite(fakeOutput, HIGH);

This fake signal is given to the printer instead of sending the sensor output. So, break the sensor output wire as shown in picture 4 and connect Arduino's fakeOutput pin to this wire such that the fake signal goes to the printer. Make sure to connect the grounds of your Arduino & the sensor together.

Step 6: Hack 3: Making the Printer Move!

Take the signal going to the paper moving motor, step it down and give it to the wheels of the PrintO-Bot via an H-bridge: In the circuit diagram, the "PWM tapped.." is blue (or light colored) wire of the paper moving motor, while "Ground point.." is the black wire pin on the paper sensor (shown in previous step).

You'll have to experiment with the voltage given to the bot's motors- change the voltage to adjust the speed of PrintO-bot so that the print swaths align well enough to give an almost accurate print. (I'm making a more robust method to do this. I'll update it here)

I used high torque dc motors to drive my robot as it has to start and stop very precisely, while carrying itself. The motors, wheels and mounts were from Pololu sales. Since we've to mount all the wheels very accurately, it is a good idea to laser cut the base with the exact dimensions for all the components that'll be mounted on it.

Parts used:

Once that's done, I 3D printed the parts required to assemble the 4 wheeled chassis

Step 7: Build a New Sturdy Housing for the New Print Head

I made a 3D printed 'holder' for the now-outside-the-printer cartridge. I made it in 3 parts- starting from the bottom most one. That was made in Vectorworks and printed using the Makerbot Desktop

Step 8: Make It Work!

Now I have tonnes of stuff that can be used to decorate my room!

Gadget Hacking and Accessories Contest

Participated in the
Gadget Hacking and Accessories Contest



    • Barbecue Challenge

      Barbecue Challenge
    • DIY Summer Camp Contest

      DIY Summer Camp Contest
    • Planter Challenge

      Planter Challenge

    61 Discussions


    5 years ago on Step 3

    You can alternatively use thin wire(not stranded) and reusable jumper cables to make it easier than ethernet cable,as it's more pliable and thin.

    1 reply

    5 years ago on Introduction

    This is quite an imaginative use of printer internals...I have an image in my mind to turn it loose on a huge floor-size piece of paper....!


    5 years ago on Introduction

    Cool build...would love to make one but hahahaha i think i will regret doing it. maybe someday in the future "thumbs up" :D


    5 years ago on Introduction

    Lol that's so awesome ^^. Thanks for posting this, I must try it!


    5 years ago on Introduction

    That's a great hack! Next old pritner I get my hands on I won't cannabalise for parts but try this.


    Question 1 year ago

    Great project! i'd love to copy it (no pun intended) but i wonder if you could provide more detail on the paper feed bypass. I can't work out what the limit switch is for.


    2 years ago

    onde eu compro os componentes?


    2 years ago

    I wanted to hack a canon printer to print on thick (30 to 40mm) materials. I wanted to do away with the ASF (automatic sheet feeder) and Paper Entry (PE) IR sensors and related mechanicals. Hence removed all those. But unfortunate I lost the timing I noted before ripping the printer. Hence googled for "Canon Paper Entry Sensor timing" and came across this instructible. Great one. Here are my comments:

    1. Unable to search this from Key words "Canon printer" "printing on floor" "printer on wheels" did not show up this ible. Had to search google again to get back this link.

    2. I think it is possible to move the "carriage slider" to print on the floor doing away with the difficult wiring/soldering part. You could do away with the ASF, the head cleaning unit etc. In that case you need to emulate the ASF and PE sensors.

    Good Job. Thanks.


    3 years ago

    Hi Sanni-t. I want to discuss paying you to assist me with a similar project. mike dot yearwood at


    5 years ago on Introduction

    Thanks everyone! Let me know if you're making your own PrintO-Bots and have any questions!

    1 reply

    Reply 4 years ago on Introduction

    why dont you use higher torque motor to replace paper loading motor and keep encoder?


    4 years ago on Introduction

    So I'm coming back to this quality project, a bunch later, with some ideas:
    I recently had a major stencil project fail, when I got to the laser cutting part and found out all the crazy curves on my part had jacked up the prices majorly.

    It occurred to me, if I had made one of this printO-bots, I could have printed a ton of ink onto a large sheet of 5mil steel, and then used acid to etch away the parts I wanted cut out. I don't know how perfectly it would work, but would be a kickass application, and with a much higher quality stencil material (steel vs. PET)


    5 years ago on Introduction

    Help! I am stuck. Can you list all the parts you used? (especially specific part #'s from

    I wanted to match your "ible" exactly, so I searched/found a used Canon PIXMA IP2702 and mounted it to my wooden base, but I am stuck at these 4 points:

    1. Your specific two motors from part #?

    2. Step-down signal using H-bridge?? (where can I learn what an H-bridge is?)

    3. The metal dowel size/parts used for your new printer slider rod rail?

    4. Is there a large/loose circuit board in the paper input?

    Thank you for your help. I hope I can make this work!! Appreciatively, dave & daughters in austin, texas

    ps: Your "ible" truly is great! Thanks for creating this...WOW!!!

    3 replies

    Reply 5 years ago on Introduction


    By the way, did you get ink cartridges with the printer? You need them you know.. If you did not, it's probably cheaper to just get a new printer


    Reply 5 years ago on Introduction

    Just realized, I forgot to add the rod: