Introduction: AUTONOMOUS HOOVER (Intel IOT)

About: designer,programmer,soon a developer..

This project works on an

excellent deal of reflex mechanism.It involves a basic idea of developing an “AUTONOMOUS HOOVER”,that helps to reduce the daily work chores at houses,offices etc..

Step 1: Idea

This project works on an excellent deal of reflex mechanism.It involves a basic idea of developing an “AUTONOMOUS HOOVER”,that helps to reduce the daily work chores at houses,offices etc..The work of this device is to suck dust and stack those in the storage section provided along with.

To facilitate targeted functions, interactivity with high quality infrared and dirt sensors play an essential role.

Additionally, a navigator is suited to accomplish the task by the device itself so that, it could detect any obstacle on its path and move accordingly without the user’s intervention, by fixing rotator at the base of the device. Moreover, it could sense steep drops and retrace a portion of the path taken in order to avoid falling.

This versatile device could carry metal detectors that can be incorporated within the device in order to filter out valuables along the cleaning area.

According to a particular sequence of interacting with the hoover and the user,this machine can be operated anywhere by using Intel Edison Hence the data can be updated in cloud database for monitoring purpose.

Besides the involuntary sucking function,a wireless voice command is used remotely and also the path can be recorded.

To achieve this, an Intel Edison board would suffice.

The benefits of this device are many besides keeping the surface cleaner, can operate remotely saving time for people and lower maintenance cost as well.

Step 2: Hardware Required

Intel Edison

servo motor

proximity sensor

Infrared sensor

Dust sensor

Brushless motor

Small propeller

LCD display


2-channel relay board

Temperature sensor

Step 3: Procedure


Design a 4 wheeled bot for the hoover to run.

Ø Back wheeled motors are each connected to 12V DC supply.

Ø Inorder to interface the intel board with the bot,a 2- channel relay board is connected which helps in stepping down the voltage as well.

Ø The system with arduino software connected with the intel Edison board, is programmed and dumped into the same for the following result:

The dust sensor is used for sensing the dust and displaying the dust value in the LCD display. The proximity sensor is programmed so as to avoid any obstacle.

Ø The machine would stop automatically when it detects an obstacle and proceeds by sucking the dust.

Ø For sucking the dust,the machine uses the air blower that’s set in front of the bot.

Ø The air blower runs on 12 V DC supply.

Ø To store the dust,a stack session is provided along the sucking out section of the air blower.

Ø A scrubber is placed at the back of the bot to clean the area soon after it sucks dust.

Step 4: Programs


#ifndef _IRSENDREV_H_

#define _IRSENDREV_H_

// len, start_H, start_L, nshort, nlong, data_len, data[data_len]....

#define D_LEN 0

#define D_STARTH 1

#define D_STARTL 2

#define D_SHORT 3

#define D_LONG 4

#define D_DATALEN 5

#define D_DATA 6

#define USECPERTICK 50 // microseconds per clock interrupt tick

#define RAWBUF 300 // Length of raw duration buffer

// Marks tend to be 100us too long, and spaces 100us too short

// when received due to sensor lag.

#define MARK_EXCESS 100

#define __DEBUG 0

// Results returned from the decoder

class decode_results {


volatile unsigned int *rawbuf; // Raw intervals in .5 us ticks

int rawlen; // Number of records in rawbuf.


// main class for receiving IR

class IRSendRev



decode_results results;



int decode(decode_results *results);

void enableIRIn();


void Init(int revPin); // init

void Init();

unsigned char Recv(unsigned char *revData); //

unsigned char IsDta(); // if IR get data

void Clear(); // clear IR data



void sendRaw(unsigned int buf[], int len, int hz);

// private:

void mark(int usec);

void space(int usec);

void enableIROut(int khz);


void Send(unsigned char *idata, unsigned char ifreq);


extern IRSendRev IR;


Dust sensor:

int pin = 8;

unsigned long duration;

unsigned long starttime;

unsigned long sampletime_ms = 30000;//sampe 30s ;

unsigned long lowpulseoccupancy = 0;

float ratio = 0;

float concentration = 0;

void setup() {



starttime = millis();//get the current time;


void loop() {

duration = pulseIn(pin, LOW);

lowpulseoccupancy = lowpulseoccupancy+duration;

if ((millis()-starttime) > sampletime_ms)//if the sampel time == 30s


ratio = lowpulseoccupancy/(sampletime_ms*10.0); // Integer percentage 0=>100

concentration = 1.1*pow(ratio,3)-3.8*pow(ratio,2)+520*ratio+0.62; // using spec sheet curve

Serial.print("concentration = ");


Serial.println(" pcs/0.01cf");


lowpulseoccupancy = 0;

starttime = millis();