Floor Vacuum Cleaner Robot. Version #13





Introduction: Floor Vacuum Cleaner Robot. Version #13

This robot has vertical container which collects dust using 12 volts cooler turbine. 

Most parts were bought on eBay.

It is controlled by Arduino board with very simple algorithm.

3 to 6 volts motors are used for moving. H-Bridge motor driver on HG7881 - a board controlling motors.

Base was made from plastic kitchen board - soft enough to be drilled, sawn and cut without much efforts.

Lithium battery (with solar cell) gives 5 volts and allows to work the robot about one hour.

Step-up circuit provides 12 volts to a turbine which collects dust. This circuit is made using standard design of MC34063 and induction.

Too tall - more than 12 centimeters (should be 11 cm maximum to go under a sofa).
Too slow - gear mounted on motors has too high ratio.

Other cons can be fixed:
thin bumper, simple algorithm for moving, no sensor on getting stuck.



    • Water Contest

      Water Contest
    • Creative Misuse Contest

      Creative Misuse Contest
    • Oil Contest

      Oil Contest

    42 Discussions

    can u share the complete details regarding this project.

    the info you provided isn't sufficient to build this robot.

    please help.

    i need to know about the schematic for this program and the component to build this project,really need your help

    tq for your schema picture,it very help me..what do mean by a mistake?

    When bumpers are not pressed and a motor is rotated wrong direction - swap wires for this motor in a green connector of the motor driver.
    If motors run in correct direction but when one of bumpers is hit (pressed) and the robot is turned wrong direction (an opposite to what was expected) - swap wires connected to Arduino connectors 7 and 8.

    can i use 'arduino uno' instead of 'arduino leonardo'? should need to made any change in programming for it?(not asking for pin confugiration,..terms of void loops etc) if any,please explain

    can i use more than one computer cooler fan for cleanning large area? or can you suggest anything else that is working on 12v or 5v?

    what kind of vacuum are used in romba?

    1 reply

    I did not work with different type if Arduino but if they are compatible - they should work without modifications of this program (not sure).
    Two coolers is a good option to increase performance even though this will increase power consuming as well.
    Roomba has relatively small vacuum turbine because it uses rotating brush as a major cleaning tool. I used such approach on one of previouse prototypes and it worked well - a rotating brush throw dust to a dustbin and vacuum did not allow dust go away. But this is mire noisy approach.

    i asked robotics parts manufacture.they told me that i can work with 2 ultrasonic sensor with arduino leonardo that give complate wall and object detection performance.
    they also suggest me i can use two ultra sensor with some other pins given on board(except 2,3,4,5,7,8 that we used for bumpers and other purposes)

    is it right and possible to use two ultra sensor with pins expcept 2,3,4,5,7,8 (means there are availability of pins for two ultra sensors? if yes then which are they?)

    coz i haven't purchase arduino because of this confusion.

    3 replies

    I have only one sensor. I tried to use pins A1,Digital 10 for it and than I tried to use pins A2, Digital 13. In both cases it works similar. But I did not try two sensors at once - I do not know if they interfere each other.

    ok i will try it using two sensors, and you'hv also mentioned in previous comments that we can also use optical sensor for this, photo transistor and ir-led( i'hv already made it for my previous project) but if i wanted to use it in this project with arduino ,should i need to add some clarification in program?(as you done before for ultrasonic sensor)or just manualy connect it to arduino(no changes in program!).
    (actualy i'hv made transistor and led circuit for line follower robot(2 led and 2 trasistor) it will ok to use with this circuit

    If circuit with ir-sensor you made gives as output logical 1 or 0 - just check if program flow reacts on it as expected in verify* methods. Possibly you will need to invert returning value of checkBumper* method:
    return !readDigital(

    1)  http://dx.com/p/hc-sr04-ultrasonic-sensor-distance-measuring-module-133696

    2)  http://trollmaker.com/article3/arduino-and-hc-sr04-ultrasonic-sensors

    3)  http://www.youtube.com/watch?v=lFwe3QFLp-k

    sir,i'hv studied your both vacuum cleaner project,i need to discuss with u for some better modification in this robot than i wanted to apply in my project.you'hv used jumper and connected it to arduino to avoid obstacles like chair and etc.you wrote con. that 'no sensor on getting stuck' i want to fix this bugs. and moreover it also can replace sensitive and much error occuring jumper.... we can use 'ultrasonic distance measuring sensor' to avoid obstacle and outcooming problem of getting stuck. i'hv put here one link of this practicle..1) photo of this sensor 2) ready complate successful practice on arduino with programming 3) video of vaccum robot using this sensor.check this,it's realy amazing! now the problem comes,we r going to replace bumper with this 4 pin ultrasonic sensor,so what are the changes we should need to make in arduino leonardo programming.(pin confugiration and logic) in link no 2) it's programme nd practicle given and as i knw your programme is also there on git hub. so are u geting any idea how can we merge this two programme with modifiction? please write down or attech file. i'hv tried soo many times but i haven't done vacuum project practicaly so m getting confused. please help.thank you. flag[delete]

    6 replies
    I would not replace bumpers with other sensors because these sensors may have blind zones and miss obstacles. Seems ultrasonic sonar works well for detecting and ranging distance to round and flat objects but works weak for corners - it is good idea to have this sensor in addition to bumpers

    yes,exactly.. well said.!!.i'm too thinking of doing same.if sensor will not work in some case than that work is done by bumpers.
    but what i was asking..what type of changes we need to make in programming.,if u'hv seen the link i'hv posted in last comment..their is already a programme given for this ultra sonic sensor,but how can we merge this two program(in case of using sensor & bumper both)
    example....in programme u have given this type of pin connection.ok..
    onst int pinLED = 13;
    //right side
    const int pinRightMotorDirection = 2;
    const int pinRightMotorSpeed = 3;
    const int pinRightBumper = 7;
    //left side
    const int pinLeftMotorDirection = 4;
    const int pinLeftMotorSpeed = 5;
    const int pinLeftBumper = 8;
    so now..which pin number we should give to ultrasonic sensor?
    and what are the changes we need to make in 'main loop'
    u'hv already done practicle and made that programme,so u can only know how to do this change.
    if possible than right down.
    i'll also try.
    coz i wanted to use both sensors.

    It need to be decided what should robot do when an object is detected in some distance. If the robot should turn like it hit the bumper than one more methof can be added and called in the method loop():
    void verifyAndSetSonar(){
    //put the code you referred by abow link calculating distance from sonar data - without "delay(500)"
    if(distance > 20)//checks if there is no objects close than 20 (put your number here)
    if(checkCounterIsNotSet(countDownWhileMovingToRight))//if the counter is not yet counting down
    runRightMotorBackward();//run the right motor backward
    countDownWhileMovingToRight = turnTimeout;//set the counter to maximum value to start it counting down

    It is not necessary to use LED connected to pin 13 - this was just for presentation.

    ohk i got this one...two more doubts..1. where should i write this 'void verifyandsetsonar() loop ....? in vacuum cleaner programme's 'main loop' ?
    and one more thing want to ask..2. i wanted to use 3 ultrasonic sensor for more accurate result left,right,and back.
    so there should be 6 more pins i need to use so which connection i can give to this 3 ultra sensor?
    2,3,4,5,7,8 already alocatted as per your program,so in which order i should give pin connection?any random pin available in arduino?(it's ok about trig and echo pin..but in this case theres 3 ground and 3 vcc pin for 3 ultra sensor. so how to give them power supply?

    3.what's meanning of this ..why i should right distance without 'delay(500)?

    1. verifyandsetsonar() is not a loop - it is a method beside others, but it can be called as other verify* methods in the main loop(). I did not check this - this is suggestion to try.
    2. I did not try to connect more than one ultrasonic sensor - I cannot suggest anything. May be search "multiple ultrasonic sensors arduino" or "several ultrasonic sensors arduino" give a hint how to connect it. At start - bumpers can be disconnected and pins for it reused for sensors.
    I had to join two wires with one pin connector to provide power from one Arduino board. Power can be also provided from external plug as I did for step-up. Ensure connect correct with polarity - sometimes I break my circuits with wrong +/-!
    3. When I mentioned "no need for delay(500)" I forgot to tell I used for testing exist program taken from Internet which has delay(500) at the loop in the method where distance was calculated - delay already exists in main loop(), so no need to add one more delay in verify method.

    i got this,thanks a lot.
    can you please provide the link of that program of sonic sensor you have tested?
    and if i use 'several ultrasonic sensor arduino' i just need to change pin configuration? main loop program for vacuum cleaner will remain same in both the board?