Moo-Vacuum:A Remotely Controlled Desktop Sweeping Robot

by emilycanhelp in Circuits > Robots

69 Views, 2 Favorites, 0 Comments

Moo-Vacuum:A Remotely Controlled Desktop Sweeping Robot

face copy.jpg
cattle-drawing-animation-png-favpng-bw4NKqQS7EAJsLGiPzqcjsgpR_t.jpg
Weixin Image_20250510094425.jpg
IuRWLQWu3s.jpg
Weixin Image_20250510092702.jpg

This project is a remotely controlled desktop sweeping robot in the shape of a little cow eating grass, combining creativity with functionality. The robot is controlled by an UNO R3 microcontroller, and its body is made from cardboard to keep it lightweight and easy to assemble. The sweeping mechanism uses sticker film ("instant adhesive sheets") to pick up dust and small debris on a desktop surface. It offers a playful yet practical approach to robotics and home-made cleaning robots, ideal for educational purposes and hands-on learning.

Supplies

Weixin Image_20250428152243.jpg
OIP (4).jpg

Arduino UNO R3

Motor driver module

2 DC motors

Cardboard (for body structure)

Instant adhesive sticker film (for sweeping wheel)

IR receiver module (for remote control)

Remote controller

Jumper wires, battery pack, and switch

Scissors,Hot Glue Gun,Marker Pen,Rubber Band,Bamboo Sticks (1/4" diameter) ,Craft Knife

Design the Body

15570dd07709c3c569d897d19f18522e.jpg
Weixin Image_20250506184350.jpg
Weixin Image_20250510093222.jpg
Weixin Image_20250510092820.png
Weixin Image_20250510094559.jpg

Sketch the shape of a cute cow face and body with AutoCAD,print it.

Cut the body parts form cardboard

Leave space underneath for wheels and electronics.

Decorate the surface to look like a cow with ears, spots, and a smile.

Downloads

Build the Sweeping Mechanism

Weixin Image_20250510094616.jpg
Weixin Image_20250510093145.jpg
May-2025-Moo-Vacuum: Build the Sweeping Mechanism

Wrap sticker film around the sticks with the adhesive side out.

Mount it underneath the body so that it rolls slightly along the surface when the robot moves.

Install Motors and Wheels

Weixin Image_20250510093306.jpg
Weixin Image_20250510093300.jpg
Weixin Image_20250510093255.jpg
Weixin Image_20250510093250.jpg
Weixin Image_20250510093216.jpg
Weixin Image_20250510093150.jpg
Weixin Image_20250510093207.jpg

Attach the DC motors with wheels on both sides of the body.

Add the back wheels for balance.

Secure all parts using glue or tape.

Connect the Electronics

Weixin Image_20250506105332.png
Weixin Image_20250510093212.jpg
Weixin Image_20250506105517.png
Weixin Image_20250510092925.jpg

Connect the motors to the motor driver module.

Connect the motor driver and receiver module (IR) to the UNO R3.

Upload the control code to the UNO R3.

Power the board using a battery pack and add an on/off switch.

Code & Test

Weixin Image_20250512162426.jpg
Weixin Image_20250512162347.jpg

Use an infrared remote control to send commands.Use an infrared receiver to receive the commands and convert them into digital codes (hexadecimal).Control the motor driver module (L298N or similar) based on the codes corresponding to different buttons.Control the actions of the car.

(1),Code copy to Arduino Uno R3 :

#include <IRremote.h> //


const int RECV_PIN = 8; //

IRrecv irrecv(RECV_PIN); //

decode_results results; //


void setup() {

Serial.begin(9600); //

irrecv.enableIRIn(); //

}


void loop() {

if (irrecv.decode(&results)) { //

Serial.println(results.value, HEX); //

delay(200); //

irrecv.resume(); //

}

}


(2),IR receiver code:

#include <IRremote.h>


const int RECV_PIN = 8;


void setup() {

Serial.begin(9600);

IrReceiver.begin(RECV_PIN, ENABLE_LED_FEEDBACK);

Serial.println("Ready to receive IR signals");

}


void loop() {

if (IrReceiver.decode()) {

Serial.print("Received code: 0x");

Serial.println(IrReceiver.decodedIRData.command, HEX);

IrReceiver.resume(); //

}

}

(3)Read the display codes for the remote control's: Up, Down, Left, Right, and input them into the code below:

#include <IRremote.h>


const int RECV_PIN = 8;



const int IN1 = 3;

const int IN2 = 5;

const int IN3 = 6;

const int IN4 = 9;


void setup() {

Serial.begin(9600);

IrReceiver.begin(RECV_PIN, ENABLE_LED_FEEDBACK);


//

pinMode(IN1, OUTPUT);

pinMode(IN2, OUTPUT);

pinMode(IN3, OUTPUT);

pinMode(IN4, OUTPUT);


Serial.println("Ready");

}


void loop() {

if (IrReceiver.decode()) {

unsigned long command = IrReceiver.decodedIRData.command;

Serial.print("IR Code: ");

Serial.println(command, HEX);


switch (command) {

case 0x18: //

forward();

break;

case 0x52: //

backward();

break;

case 0x08: //

left();

break;

case 0x5A: //

right();

break;

case 0x1C: //

stop();

break;

default:

stop(); //

break;

}

IrReceiver.resume();

}

}


void forward() {

digitalWrite(IN1, HIGH);

digitalWrite(IN2, LOW);

digitalWrite(IN3, HIGH);

digitalWrite(IN4, LOW);

}


void backward() {

digitalWrite(IN1, LOW);

digitalWrite(IN2, HIGH);

digitalWrite(IN3, LOW);

digitalWrite(IN4, HIGH);

}


void left() {

digitalWrite(IN1, LOW);

digitalWrite(IN2, HIGH);

digitalWrite(IN3, HIGH);

digitalWrite(IN4, LOW);

}


void right() {

digitalWrite(IN1, HIGH);

digitalWrite(IN2, LOW);

digitalWrite(IN3, LOW);

digitalWrite(IN4, HIGH);

}


void stop() {

digitalWrite(IN1, LOW);

digitalWrite(IN2, LOW);

digitalWrite(IN3, LOW);

digitalWrite(IN4, LOW);

}


Final Assembly and Decoration

Weixin Image_20250510092630.jpg
Weixin Image_20250510092645.jpg
Weixin Image_20250510092740.jpg
Weixin Image_20250510092702.jpg
Weixin Image_20250510092731.jpg
Weixin Image_20250510092652.jpg

Use the remote controller to move the robot forward, backward, left, and right.

Observe how the sweeping wheel collects dust as it moves.

Make sure all parts are secure, and wires are tucked inside.

Add final touches to the cow's face and body.