Introduction: AUTONOMOUS PLASTIC TRASH DISPOSALDRONE -THE TRASH-BOT

To build an

automatic trash robot using Arduino-microcontroller and special robotic technologies which detects and collects the plastic stuffs automatically and process it. So this reduces the requirement of manual clearance of plastic waste, to clean up this debris etc.

Step 1: INTRODUCTION

Plastics are cheap, strong, and durable and offer

considerable benefits to humanity. They potentially can enhance the benefits that both medical and scientific technology will bestow to humankind. Thus the main idea of our paper is to build an automatic plastic trash picking robot which automatically detects plastic around the beaches and store them in a container for recycling process. So this reduces the requirement of volunteers and people to clean up this debris and this TRASHBOT will do the work of human. Thus using this robotic technology to develop an autonomous trash collecting robot will provide a drastic importance in the field of sanitation and preventing plastic debris

BLOCK DIAGRAM OF TRASH-BOT

Step 2: ​HARD WARE REQUIRED:

ØArduino uno (Atmega 328 microcontroller)

Ø Motor driver shield (L2930 H-Bridge)

ØParallax Ultrasonic sensor (HSR04)

Ø DC Motor with gear

ØPick and place arm

Ø Robot body and track wheels

Ø Printed PCB boards

Ø Connecting wires

Ø Screws and Nuts

Ø Battery -12v

1.Arduino uno (Atmega 328 microcontroller

Atmel’s
ATMega328 8-Bit Processor in 28 pin DIP package. It’s like the ATmega168, with double the flash space. 32K of program space. 23 I/O lines, 6 of which are channels for the 10-bit ADC. Runs up to 20MHz with external crystal. Package can be programmed in circuit. 1.8V to 5V operating voltage.

2.Parallax Ultrasonic sensor

Ultrasonic sensor provides an easy

method of distance measurement. This sensor is perfect for any number of applications that require you to perform measurements between moving or stationary objects

3.Motor driver shield (L2930 H-Bridge)

Run four solenoids, two DC motors or one bi-polar or uni-polar stepper with up to 600mA per channel using the L293D. These are perhaps better known as "the drivers in our Adafruit Motor shield". If you accidentally damaged the drivers in a shield, you can use one of these puppies to replace it.

4.DC Motor

A DC motor is any of a class of electrical machines that converts direct current electrical power into mechanical power. The most common types rely on the forces produced by magnetic fields. Nearly all types of DC motors have some internal mechanism, either electromechanical or electronic, to periodically change the direction of current flow in part of the motor. Most types produce rotary motion; a linear motor directly produces force and motion in a straight line.

5.Robotic Arm

The robot structure consists basically of the robot body that includes arms and wheels. Some force such as electricity is required to make the arms and wheels turn under command. One of the most interesting aspects of robot in general is its behavior, which requires a form of intelligence.

Step 3: Proposed System

•Proper waste management

•Effect of plastic pollution awareness = program

•Volunteer for clean up process, etc.

Step 4: Code Part

#include

#define utrigger 13 // Arduino pin13 tied to trigger pin on the ultrasonic sensor.

#define uecho 12 // Arduino pin12 tied to echo pin on the ultrasonic sensor.

#define umaxdistance 250 // Maximum distance we want to ping for (in centimeters). Maximum sensor distance is rated at 400-500cm.

#define rightmotorinput1 3 //defining the 11 pin to motor logic1 in H-Bridge

#define rightmotorinput2 4 //defining the 10 pin to motor logic2 in H-Bridge

#define leftmotorinput1 5 //defining the 9 pin to motor logic3 in H-Bridge

#define leftmotorinput2 6 //defining the 8 pin to motor logic4 in H-Bridge

#define updownmotorinput1 7 //defining the 8 pin to motor logic4 in H-Bridge

#define updownmotorinput2 6

NewPing sonar(utrigger, uecho, umaxdistance);

int inByte; // variable to store the value read

int enb=2;

void setup()

{ // start serial port at 9600 bps:

Serial.begin(9200);

while (!Serial)

{ ; // wait for serial port to connect. Needed for Leonardo only

}

pinMode(rightmotorinput1,OUTPUT);

pinMode(rightmotorinput2,OUTPUT);

pinMode(leftmotorinput1,OUTPUT);

pinMode(leftmotorinput2,OUTPUT);

pinMode(updownmotorinput1,OUTPUT);

pinMode(updownmotorinput2,OUTPUT);

pinMode(enb,INPUT);

}

void loop()

{

delay(500);

digitalWrite(enb,HIGH);

unsigned int uS = sonar.ping(); // Send ping, get ping time in microseconds (uS).

Serial.print("Ping: "); //prints the data in between " "

Serial.print(uS / US_ROUNDTRIP_CM); // Convert ping time to distance in cm and print result (0 = outside set distance range)

Serial.println("cm");

if (Serial.available()>0)

{

inByte = Serial.read();

switch (inByte)

{

case 'r': // if serial print r bot moves right.

digitalWrite(rightmotorinput1,LOW);

digitalWrite(rightmotorinput2,HIGH);

digitalWrite(leftmotorinput1,HIGH);

digitalWrite(leftmotorinput2,LOW);

break;

case 'l': // if serial print l bot moves left.

digitalWrite(rightmotorinput1,HIGH);

digitalWrite(rightmotorinput2,LOW);

digitalWrite(leftmotorinput1,LOW);

digitalWrite(leftmotorinput2,HIGH);

break;

case 'f': // if serial print f bot moves forward.

digitalWrite(rightmotorinput1,HIGH);

digitalWrite(rightmotorinput2,LOW);

digitalWrite(leftmotorinput1,HIGH);

digitalWrite(leftmotorinput2,LOW);

break;

case 'b': // if serial print b bot moves revers.

digitalWrite(rightmotorinput1,LOW);

digitalWrite(rightmotorinput2,HIGH);

digitalWrite(leftmotorinput1,LOW);

digitalWrite(leftmotorinput2,HIGH);

break;

case 'd': // if serial print b bot moves revers.

digitalWrite(updownmotorinput1,HIGH);

digitalWrite(updownmotorinput2,LOW);

delay(1000);

digitalWrite(updownmotorinput1,LOW);

digitalWrite(updownmotorinput2,LOW);

inByte='0';

break;

case 'u': // if serial print b bot moves revers.

digitalWrite(updownmotorinput1,LOW);

digitalWrite(updownmotorinput2,HIGH);

delay(1000);

digitalWrite(updownmotorinput1,LOW);

digitalWrite(updownmotorinput2,LOW);

inByte='0';

break;

case 't':

digitalWrite(rightmotorinput1,HIGH);

digitalWrite(rightmotorinput2,LOW);

digitalWrite(leftmotorinput1,HIGH);

digitalWrite(leftmotorinput2,LOW);

break;

case 's': // if serial print b bot moves revers. al:

digitalWrite(rightmotorinput1,LOW);

digitalWrite(rightmotorinput2,LOW);

digitalWrite(leftmotorinput1,LOW);

digitalWrite(leftmotorinput2,LOW);

break;

case '2': // if serial print b bot moves revers.

if(uS/US_ROUNDTRIP_CM<20 && uS/US_ROUNDTRIP_CM!=0) // check for distance if distance less than 5cm and not equal to zero

{

Serial.println("iof");

digitalWrite(rightmotorinput1,LOW);

digitalWrite(leftmotorinput2,LOW);

digitalWrite(rightmotorinput2,LOW);

digitalWrite(leftmotorinput1,LOW);

if (Serial.available()==1)

{

inByte = Serial.read();

if(inByte=='s')

{

goto al;

}

}

delay(1000);

digitalWrite(rightmotorinput2,HIGH);

digitalWrite(rightmotorinput1,LOW);

digitalWrite(leftmotorinput2,HIGH);

digitalWrite(leftmotorinput1,LOW);

if (Serial.available()==1)

{

inByte = Serial.read();

if(inByte=='s')

{

goto al;

}

}

delay(2000);

digitalWrite(leftmotorinput1,HIGH);

digitalWrite(leftmotorinput2,LOW);

if (Serial.available()==1)

{

inByte = Serial.read();

if(inByte=='s')

{

goto al;

}

}

delay(2000);

digitalWrite(rightmotorinput1,LOW);

digitalWrite(rightmotorinput2,HIGH);

if (Serial.available()==1)

{

inByte = Serial.read();

if(inByte=='s')

{

goto al;

}

}

delay(1000);

}

else

{

Serial.println("else");

digitalWrite(rightmotorinput1,HIGH);

digitalWrite(rightmotorinput2,LOW);

digitalWrite(leftmotorinput1,HIGH);

digitalWrite(leftmotorinput2,LOW);

}

break;

}

} /*

delay(1000);

digitalWrite(rightmotorinput1,LOW);

digitalWrite(rightmotorinput2,LOW);

digitalWrite(leftmotorinput1,LOW);

digitalWrite(leftmotorinput2,LOW);

digitalWrite(rightmotorinput1,LOW);

digitalWrite(rightmotorinput2,LOW);

*/

}

Step 5: FINAL OUTPUT

Move It

Participated in the
Move It