Another Cardboard Robot-vacuum-cleaner Controlled With Arduino




This is simple robot-vacuum-cleaner controlled by Arduino.

This can be even simpler if instead of turbine and dust-bin - use a kitchen tissue or a piece of synthetic fabric.

Teacher Notes

Teachers! Did you use this instructable in your classroom?
Add a Teacher Note to share how you incorporated it into your lesson.

Step 1: Required Components

  • Arduino
  • Motor-shield - controls motors. Also known as H-Bridge. Here motor-shield is YFRobot with L298P. Therae are other models with are controlled with different contacts (like this).
  • Two motors with gears and power wires.Motor with gears has 100-200 RPM (revolutions per minute). It is good to connect ceramic capacitor 1uF to motor power contacts - to reduce electric noise.
  • Two wheels
  • Battery set, or accumulator, or power-bank - on 5 volts
  • Computer cooling turbine on 5 volts. Or on 12 volts - but this require additional 12 volt power or step-up converter 5 volts to 12 volts. A turbine can be found on ebay: "cooling blower fan 5V".

  • A set of strong magnets
  • Wires to connect to battery set. Or USB cable - to connect to power-bank with USB power connector.

  • Cable with power connector for Arduino

  • Wires for Arduino contacts (breadboard wires)
  • Cardboard
  • Glue or melting glue
  • Piece of tin (e.g. from aluminum can)
  • Plastic box - for dust-bin

The program on github

Step 2: Arrange Components on Chassis

Cut the circle from cardboard - chassis of the robot, arrange components on it.

Step 3: Setup Motors

Setup the motors (with gears) and wheels on it - cut out holes for wheels and secure motors on cardboard with ropes, wires or plastic ties.

Step 4: Setup Turbine

Cut the round hole in the chassis for turbine and glue the turbine on the chassis.

Step 5: Turbine and Motors

Turbine is on top of the chassis, motors - below it.

Step 6: Prepare to Set Dust-bin

Mark the place where the plastic box will be fixed - this will be a dust-bin. Pin holes around where the magnets will be located on the top side of the chassis.

Step 7: Fix Magnets

On the top side of the chassis Glue magnets using hols pinned on the previous step as marks.

Step 8: Fix Dast-bin

Put a piece of paper on the place where the dust-bin will be set.

Put the plastic box on top of this paper - this will protect the box to be glued to chassis!

Put magnets around the plastic box. Magnets will stick on the places above magnets glued on the top side - holding the paper below the box.

Fix magnets to the box with glue. When the glue dries - the box will be hold on the chassis by magnets and it can be removed.

Cut away the paper.

Step 9: Fix Arduino Holders

Wooden stick are fixed with glue so Arduino board can be put on these sticks.

Or use another way to fix the Arduino board with motor-shield.

Step 10: Prepare Power Wire

Use wire to connect to the battery set.

Or use USB wire to connect to a power-bank.

Be careful

  • wrong polarity will destroy Arduino and motor-shield
  • shorting of power wires will destroy batteries or power-bank

Step 11: Connect Power Wires

Connect all power wires from Arduino, turbine, motor-shield and battery-set.

Be careful

  • wrong polarity will destroy Arduino and motor-shield
  • shorting of power wires will destroy batteries or power-bank

Check before power on.

Step 12: Make Bumpers

Bumpers are made from the cardboard stripes. They bended and glued in such shape.

Step 13: Setup Bumpers

Bumpers are fixed on the chassis in the way so when they are hit - they bend a bit hitting the chassis.

Chassis is cut a bit if it is needed some space till bumpers.

Step 14: Contacts for Bumper

Clean and scratch tin and wires for better contacts. Pieces of tin are connected to wires and fixed by glue. Be sure the glue is not put between tin and wires.

Step 15: Connect Bumpers

Fix contacts from tin to bumpers with glue - connect them to Arduino inputs (e.g. pins 5 and 8).

Another wires (with contacts on its end) are fixed in-front of such contacts on chassis. Connect these two wires to Arduino GND.

When the bumper is pushed (e.g. it hits the wall) - contacts are connected, a pin gets connected to GND.

No resistors needed - internal pullup Arduino resisters are configured in program.

Step 16: Setup Filter

A piece of synthetic fabric is used as a filter.

Step 17: Rear Support

A plastic or cork is used as a rear support - it is fixed on the box by glue.

The shape or location is fixed in the way that the box is 1 mm above the floor - when the robot is on its wheels.

The thin hole in the box is where the air comes with dust from the floor.

If the box is too high - cut walls and re-glue magnets.

Step 18: Program

The program on github

Step 19: More Details About Connections

Some details about interconnections.

Motor-shield mounted on-top of Arduino board.

Turbine, Arduino and motor-shield are connected to battery by power wires (or a power-bank via USB cable).

Be careful with polarity - wrong polarity will destroy Arduino and motor-shield!

Step 20: Using Arduino Nano

Motor-shield can be connected to the Arduino board with wires. Just connect following contacts between Arduino and motor-shield: 3, 4, 5, 6, 7, 8, GND, +5V

in the way:

pin GND Arduino is connected to pin GND on motor-shield,

pin 5V Arduino is connected to pin 5V on motor-shield,

pin 3 Arduino is connected to pin 3 on motor-shield,

pin 4 Arduino is connected to pin 4 on motor-shield,


So it's possible to use such board as Arduino Nano - which is smaller than motor-shield.

Step 21: Using Motor-driver HG7881

The motor-driver on HG7881 can be connected to Arduino by wires. It is much cheaper than motor-shield but maximum current is 800mA - which should be enough for most small DIY robots.

The program is a bit different: github

Be the First to Share


    • Made with Math Contest

      Made with Math Contest
    • Multi-Discipline Contest

      Multi-Discipline Contest
    • Robotics Contest

      Robotics Contest

    141 Discussions


    Question 1 year ago

    Hello sir can use my arduino uno r3 for this project


    Question 1 year ago

    Hello sir can use my arduino uno r3 for this project?


    Question 1 year ago

    Hi sir, we are using this kind of motor shield, but our motor is not working when we have connected it to the power supply. What could be the problem for this sir?

    1 answer

    Answer 1 year ago

    I can only guess, but you can check this. Seems the shield is "e-gizmo" one. According the circuit (not sure if it is correct) - it uses pins:

    D8 - Dir-A ("Direction A"),

    D9 - PWM-A,

    D10 - PWM-B,

    D11 - Dir-B ("Direction B").

    If so (double check this) - it's needed to change corresponding pin numbers in the program:

    const int pinRightMotorDirection = 4;//"Dir A" on motor-shield

    const int pinRightMotorSpeed = 3;//"PWM A" on motor-shield

    const int pinLeftMotorDirection = 7;//"Dir B" on motor-shield

    const int pinLeftMotorSpeed = 6;//"PWM B" on motor-shield

    In this case - bumper pins need to be corrected as well - to use other free pins:

    const int pinRightBumper = 5;

    const int pinLeftBumper = 8;

    Again - I do not have this board, this is a guess and it can be wrong. Please contact shield's seller for clarification.


    1 year ago

    Good Day Sir what pins should I use in order for me to make this project using "Motor Drive Expansion Shield L293D" as my motor shield? Thank you so much sir

    1 reply

    Reply 1 year ago

    Hi. Different motor shield may be designed to be controlled with different pins. Please look at titles of signals on your shield and follow the instruction on a step #20 or on couple comments below.


    1 year ago

    Good Day Sir can i use Motor Drive Expansion Shield Module L293D For Arduino Duemilanove Mega UNO?

    2 replies

    Reply 1 year ago

    Hi. I did not try this particular motor-shield. However as long as the motor-shield supposed to drive two DC motors with their current and voltages - it may work.

    Pin numbers can be also different - in such case these pin numbers need to be set in the program.


    Reply 1 year ago

    Good Day Sir what pins should I use in order for me to make this project using this kind of motor shield? Thank you so much sir


    1 year ago

    Good Day Sir Can i use this?


    1 year ago

    Can I use L298P Motor Driver Shield for Arduino on building this?

    1 reply

    Reply 1 year ago

    It should be possible. Just check out the pins of DIR and PWM - they may be different on different shields


    3 years ago

    Regarding using another shield.

    Motor shield I have uses following pis

    (Ch.A - is to control one motor, Ch.B - is to control another motor):

    Function: Ch.A / Ch.B

    Direction: D4 / D7

    PWM: D3 / D6

    Motor shield ArduinoMotorShieldR3 uses different pins:

    Function: Ch.A / Ch.B

    Direction: D12 / D13

    PWM: D3 / D11

    Brake: D9 / D8

    Current Sensing: A0 / A1

    For bumper I used pins D5 / D8. In MotorShieldR3 the pin D8 is used for break, so it need to be changed - e.g. use D4. Connect bumpers to pins D5 and D4

    So constants need to be changed:

    //right side

    const int pinRightMotorDirection = 12;//"Channel A" on motor-driver

    const int pinRightMotorSpeed = 3;//"Channel A" on motor-driver

    const int pinRightBumper = 5;

    //left side

    const int pinLeftMotorDirection = 13;//"Channel B" on motor-driver

    const int pinLeftMotorSpeed = 11;//"Channel B" on motor-driver

    const int pinLeftBumper = 4;

    Probably it is needed to put signal LOW to break pins. In “setup()” method:

    pinMode(D9, OUTPUT);

    digitalWrite(D9, LOW);

    pinMode(D8, OUTPUT);

    digitalWrite(D8, LOW);

    This should work, but it might not - as I did not test what I wrote above - I do not have such particular motor-shield.

    1 reply

    Reply 2 years ago

    Hello, Just wondering how much this all cost you to build? Can you supply parts?


    3 years ago

    sir can i use same pin connection of this, with L293D motor shield ??

    1 reply

    Reply 2 years ago

    You can look at the comments in the following instruction regarding L293D


    3 years ago

    Hi, may I know which wires connect to which wires in the USB cable, turbine and the connector to arduino board? I am quite confusing this part..

    1 reply

    Reply 3 years ago

    Hi, I tried to show this on the step 19:

    On wiki there is a USB pinout with wire colors (however wire colors may very at different cable vendors).

    I always check wires and contacts before connect and after soldering - with voltmeter (voltage and its polarity) and ohm-meter (to avoid short circuit). Anyway - there is possibility to accidentally damage Arduino and other connected devices.