Introduction: CleanBOT- Your DIY Floor Cleaning Robot
The CleanBOT ( Remote Controlled Autonomous Floor Cleaning Robot) is designed to clean floor in two different ways: with vacuum or active mop. It has auto mode but you can also control it manually by using bluetooth connection and android app.
Most parts of the robot are made from electronics garbage for example:old inkjet printer.This allowed me to significantly reduce the cost of the robot . Current cost of the robot is between 50-60 $ it depends how many parts already you have.
In this inscrutable I will guide you through the steps that I've followed in building my robot.
Step 1: How It Works - Video
Step 2: Parts & Tools
Components: - You might find it difficult to find all the parts that I have used
- .2x DVD player,
- Some plywood,
- Some wires,
- Cooling fan,
- Old inkjet printer,
- Carbon filter,
- Glue for wood,
- Gel battery 12V 7Ah,
- Some screws with nuts,
- Rotary wheel,
- Sealing tape,
- Heatsink for LM350,
Some electronic components:
- 2x Buz11 Mosfet , Buzzer , 2/16 HD44780 display, 100nF ceramic capacitors,2x7805 voltage regulator,8x Fast Diodes 1N4149 , Atmega 32, Some LED,s and 200 Ohm resistors for them,
- Some Goldpins,100k Ohm Resistors,4017 counter, 1k Ohm resistors,BC-548 transistor, 2x10k potentiometer7xButton, HC-05 bluetooth module,HCSR-04 sonar,
- Sharp GP2Y0D810Z0F,Pololu #2460,1000uF and 220uF electrolytic capacitors,6x ARC-2 connectors,LM350 voltage regulator1uF electrolytic capacitor, 240 Ohm resistor, Sockets for chips, Analog servo, 10k Ohm resistors,
You can check the exact amount of elements like capacitors and resistors on the schematics.
- Wood file
- Burner for welding
- Hot glue gun
Step 3: Some Hardware and Frame
I used 6 mm plywood which allows me to make strong and light robot frame. Some parts are connected with glue and some with wood screws.Later you can paint it in the way you like.
Step 4: Motors
Robot is driven by two high speed DC motors with gears which are from DVD player- they have enough torque to move the robot which weighs about 5kg. I made a separate PCB for motor controller using thermal transfer method. Motor controller is made on L298N dual H-bridge wich can handle up to 2 amps per channel. Using square wave with variable filling generated by the microcontroller i can control speed of the engines .Wheels and axes are made from Lego bricks as y can see in the picture above. In addition, the cooling fan was used to cool down overheating engines. On the front of the robot i used a rotary wheel which allows robot to turn in every direction.
Step 5: Vacuum Cleaner
Vacuum cleaner is the most important part of my robot wich allows it to clean every floor.
It consists of :
- Vacuum chamber (B)
- Suction element (A)
- Seal between the floor and the suction element(C)
- Blower speed regulator with radiator(made on LM350) (F)
- Blower (G),
- Lid which allows you to empty the vacuum chamber of the dust and other impurities(I)
- Carbon filter wich stops dust (H)
- Tray for larger impurities (D)
- Element for directing an air flow (E)
How it works:
Dust and other impurities are sucked in to suction element and later they go to the vacuum chamber. I used element for directing an air flow (E) which allows to separate lighter impurities from heavier ones wich settle in the tray (D) Dust is stopped by carbon filter (H) .Blower (G) creates enough suction that allows smooth operation of the vacuum cleaner with a relatively small power consumption.
The arrows illustrate the direction of air flow on the illustration above.
Step 6: Active Mop
Used system is made to mop the floor accurately and efficiently . The whole mechanism is made from processed part of an inkjet printer.I had to shorten this part and weld it again. Principle of operation: The mop moves sideways (it bounces from the edges) its moved by belt connected to a motor. Active mop driver is very simple it uses 4017 integrated circuit , you can see schematics in the picture above.
Step 7: Battery
I decided to use big car battery, because its easy to charge,it haves high capacity(7Ah) and its very cheap. This solution haves also disadvantages : its big and heavy- so i had to use better engines. Robot can work on fully charged battery for about 6 hours. Lithium-ion batteries are also a good choice. But they are quite costly and require a dedicated charger.
Step 8: Sensors Intro
My robot is equipped with following sensors that allow it to operate in completely automatic mode: HCSR-04 Sonar mounted on servo, IR proximity sensor (pololu #2460), Sharp GP2Y0D810Z0F digital IR proximity sensor ,Some Bumpers. In next steps i ll show how this sensors work and what they are supposed to do.
Step 9: Bumpers & Thick Carpet Sonsor
1 Bumpers(impact sensors) -
One of the primary sensors in each autonomous mobile robot . Robot can detect a collision with an object that was not detected by other sensors to prevent the engines from burning. CleanBOT is equipped with 3 bumper zones:
- A - Left Bumper
- B - Right Bumper
- C- Coupled front bumpers
When robot collides with an obstacle it performs the following exercises:
- C * Crash of the front - the robot goes back and then performs measurements with ultrasonic sonar to find the best way and then continues moving forward until it reaches the next obstacle
- A * Crash of the left - the robot rotates 90 degrees to the right and then continues moving forward until it reaches the next obstacle
- B * Crash of the right - the robot rotates about 90 degrees to the left and then continues moving forward until it reaches the next obstacle
2. Thick Carpet Sensor
Robot stops and go back when it detects thick carpet that could cause blockage of the robot or burn engines. The principle is very simple: it is a piece of bent wire (B) attached to the front bumper plate (E). After moving to the carpet wire presses on the bumper mounted on hinges (A) that presses the button (C). In all of the bumpers i have used additional spring (D) which triggers the bumper back to its previous position.
Step 10: Stairs Sensor
I have used sharp GP2Y0D810Z0F for detection of the stairs . Sharp sensor allows to detect a drop to prevent the robot from falling down the stairs. It is a digital sensor operating in the range of d = 2<-->10cm when the floor is in the sensor field of view (low state is at output) When sensor detects stairs, state on the output will be high. Once stairs are detected, the robot immediately is going back to safe distance and then it will continue to operate.
Step 11: Sonar Mounted on a Servo
By using the servo attached to sonar I can take measurements in the range of 180 degrees .
The robot determines the distance from obstacles in any direction and then decides which side has more "space" and begins to drive to this place until it finds next obstacle. On fig 2 above robot measures 3 distances d1 is the longest one so robot ll go over there. Number of measurements depends on the program you have written.
Step 12: IR Proximity Sensor
Pololu #2460 38kHz is an additional sensor designed to detect the obstacles which have not been detected by Ultrasonic sonar it provides more control over the area in front of the robot. With this sensor, it is also possible to detect small obstacles standing right on the floor for example cables and other flat things.
Step 13: Display
LCD display is coupled together with a micro controller. On the screen are displayed all important messages for the user. For example when you enable auto mode via Bluetooth display shows the message: "Auto Mode Enabled"
Step 14: Bluetooth & Smartphone App
Bluetooth with a smartphone has been achieved through HC-05 module that allows to comunicate with the microcontroller using serial transmission.
App on smatphone works in the following way: when you press button smartphone send one byte of information (one char)which is received by micro controller . The micro controller also sends the same byte back to the smartphone to check transmission errors. It is possible to: connect to and disconnect from the robot, manual control, enable and disable: auto mode, active mop , blower.
Step 15: Robot Brain
Main PCB is based on an 8-bit micro controller AVR Atmega32 which have its own power supply section . I made this PCB also with thermal transfer method. Program is written in C (GCC) and its completely based on interrupts. To receive and transmit data to Bluetooth i used built in hardware USART. The micro controller is clocked at a frequency of internal resonator 8 Mhz. PWM signal for steering motors and servo is generated by hardware timers. Pulse length of sonar also is measured with a hardware timer. Blower is driven directly from main PCB by Mosfet transistor.