Introduction: Accelerometer Controlled Robot (pickup and Place)

Most of industrial robots are still programmed using the typical teaching process, through the use of the robot teach pendant. In this paper is proposed an accelerometer-based system to control an industrial robot using two low-cost and small 3-axis wireless accelerometers. These accelerometers are attached to the human arms, capturing its behavior (gestures and postures). An Artificial Neural Network (ANN) trained with a back-propagation algorithm was used to recognize arm gestures and postures, which then will be used as input in the control of the robot. The aim is that the robot starts the movement almost at the same time as the user starts to perform a gesture or posture (low response time). The results show that the system allows the control of an industrial robot in an intuitive way. However, the achieved recognition rate of gestures and postures (92%) should be improved in future, keeping the compromise with the system response time (160 milliseconds). Finally, the results of some tests performed with an industrial robot are presented and discussed.

Guys in this project we are going to use two communication standards to control our robot one is xbee for gripper motion control in three axis and GSM to control mobility of drone.

In this project we learn about XBEE standards, types, its configuration, interfacing with microcontrollers, DTMF decoding, DTMF signal processing, basic robot control, motor driver circuits, servo motor control, PWM signal generation.

Step 1: Collect This All..............

· Flex Sensor X 1 for controlling of Gripper

· Accelerometer ADXL 335 X 1 for controlling direction of gripper

· Arduino UNO X 1 to program and burn bootloader in Atmega 328

· Bootloaded Atmega 328 P-PU X 2 as an controller at both side transmitter and receiver

· Xbee S1 X 2 for wireless communication

· Xbee Arduino shield X 2 to fix Xbee on it

· DC Motors 12V X 2 to control drone motion

· Chaises X 1 build drone

· Tiers X 4

· Dummy wheels X 2

· Servomotors MG995 X 2 to move gripper in two axis

· Servo gripper x 2 pick n place object

· IC 8870 x 1 DTMF decoder IC

· IC L293D X 1 control DC motors

· Regulator 7805 x 2

· And all miscellaneous components

o 10K Ohms resistance x 5

o 100K Ohms resistance x 5

o 300K Ohms resistance x5

o Two pin pushbutton x 5

o Bug strips x 2

o 22pF capacitor x 2

o 0.1uF capacitor x 3

o 33pF capacitor x 2

o 16MHz crystal oscillator x 1

o 3.58MHz crystal oscillator x 1

o IC sockets 28 pin, 20pin, 16pin x 1 each

o Two pin connectors x 10

o and wires for connections

o 9V Battery Radio Battery

o 6V 4.5A Battery

Step 2: Get Our Board Ready ; - O

Pcb designing carried out with PCB WIZARD software ,

you can download software from this link

http://pcb-wizard.software.informer.com/4.0/

PCB WIZARD is simplest one software to design circuit, even beginner can use it directly because this software is very much user friendly ..... it has number of function which is reduced time consumption to design circuit like DRAG and Drop option ....

Once circuit design completed, we have attached the .pcb file a designed PCB Take print out of the Art work of that circuit layout on Photo paper or glossy paper then trace the printed art work of circuit on copper clad board by ironing process, During ironing process you must pay attention that all art work of circuit layout should traced completely on copper clad board , after tracing art work of circuit layout on copper clad completely, make solution of Fecl3 with water and keep it traced copper clad into that solution about 30 to 40 minutes ...... during this process you should continuously check the copper clad within some interval, copper of copper clad board should disappear except traced part of art work of circuit layout...... means only circuit should remain...

Once it complete take out board from solution then clean it and polish with sand paper for drilling , after drilling holes apply soldering flux and complete tinning process with the help of soldering iron after tinning start mounting component and soldering operation .........

Use images to follow all processes and position of each components. Please follow the circuit diagram to make your own PCB. If we are using Arduino UNO on the place of own made breakout board then only Atmega 328 controller section get neglected rest of connections are same and connect it on Arduino UNO.

Now our hardware is ready to run, next step is to connect external devices like xbee shield, robotic gripper

before that we build some mechanical parts to mount motors and gripper

Step 3: Welcome to Workshop............. ;-)

Guys your choice to buy ready-made 3 DOF Mechanical Arm or to waste some sweat for engineering . ;-p

here are some links to buy arms and servo motors

http://www.ebay.co.uk/itm/3-DOF-Mechanical-Arm-Claw-Steering-Gear-Bracket-3-Axis-with-Gripper-for-robotic-/121146257424?pt=LH_DefaultDomain_0&hash=item1c34e13010

http://www.ebay.co.uk/itm/2pcs-MG995-Digital-Metal-Gear-Servo-Motor-2BB-Torque-RC-Servo-High-Speed-for-HPI-/121118385882?pt=Radio_Control_Parts_Accessories&hash=item1c3337e6da

http://www.ebay.co.uk/itm/2-Axis-Original-FPV-Special-dedicated-Nylon-PTZ-NO-Servo-for-SG90-MG90-Servo-/400567245823?pt=LH_DefaultDomain_0&hash=item5d43ab1bff

To build by own follow these steps

1. get your servo shaft ready first for that take aluminium strip of 6mm thickness 15mm width

2. cut it into small parts of 65mm length make 10 pcs of same dimension

3. Now make a punch ready to make hole in your shaft with same shape n size to fit perfectly with servo motor shown in image

4. make some holes in the shaft to fit it on the servo clamps

5. to reduce the weight of the servo shaft make use of lathe machine and cut the unnecessary part

Now using your ready shaft and servo clamp make arrangement of the gripper which can move in two axis

connect the all servos and make connections on our board shown in previous stage

make our car ready for motions by joining chaises, DC motor, tiers and dummy wheels together

and get ready to run the project next step to upload code and work mechanical and electronic together

Step 4: Configuration...........

Check for preloaded Atmega 328p-pu Arduino UNO compatible controller in your electronic market it costs you 0.5 $ more than blank one.

or one can buy from these links

http://www.ebay.co.uk/itm/Atmel-ATMEGA328P-PU-AVR-preloaded-with-Arduino-UNO-bootloader-16Mhz-2x-22pF-/121308732531?pt=UK_BOI_Electrical_Components_Supplies_ET&hash=item1c3e905c73

http://www.ebay.co.uk/itm/ATMEGA328-ARDUINO-BOOT-DIL-16MHz-crystal-2x-22pf-cap-/131311034944?pt=UK_BOI_Electrical_Components_Supplies_ET&hash=item1e92bf6240

otherwise yo can simply upload an bootloader by making own breakout board or using breadboard

follow this instructable to learn about bootloader

https://www.instructables.com/id/Burning-the-Bootloader-on-ATMega328-using-Arduino-/ by manu08

Next step is to configure Xbee modules

there are several software's but I recommend PuTTY or X-CTU to configure Xbee module

links to download these software's

http://www.digi.com/products/wireless-wired-embedded-solutions/zigbee-rf-modules/xctu

http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html

Configuration of Xbee is very simple follow these links n video tutorial

https://sites.google.com/site/xbeetutorial/xctu

Step 5: Coding

//Code :- for transmitter

int sen0 = A0; // x axis of accelerometer

int sen1 = A1; // y axis of accelerometer

int sen2 = A2; // Flex sensor

void setup()

{

Serial.begin(9600);

}

void loop()

{

int val0 = map(analogRead(sen0), 260, 450, 100, 210); // map those incomming values in requried range Serial.print(val0); // send data through Xbee

int val1 = map(analogRead(sen1), 260, 450, 100, 210);

Serial.print(val1);

int val2 = map(analogRead(sen2), 450, 620, 100, 210);

Serial.print(val2);

delay(50); // delay of 50 ms

}

.

.

.

.

// Code - for Receiver

#include <Servo.h>

int servo0Pin = 6;

int servo1Pin = 7;

int servo2Pin = 8;

Servo myservo0;

Servo myservo1;

Servo myservo2;

int val0=2;

int val1=3;

int val2=4;

int val3=5;

int buttonState0 = 0;

int buttonState1 = 0;

int buttonState2 = 0;

int buttonState3 = 0;

int out0=9;

int out1=10;

int out2=11;

int out3=12;

int d,i,n;

int u,v,w;

int dlast,nlast,ilast;

void setup()

{

Serial.begin(9600);

pinMode(out0, OUTPUT);

pinMode(out1, OUTPUT);

pinMode(out2, OUTPUT);

pinMode(out3, OUTPUT);

pinMode(val0, INPUT);

pinMode(val1, INPUT);

pinMode(val2, INPUT);

pinMode(val3, INPUT);

myservo0.attach(servo0Pin);

myservo1.attach(servo1Pin);

myservo2.attach(servo2Pin);

}

void loop()

{

while(Serial.available() == 0);

//int data = Serial.read() - '0';

byte a= Serial.read();

byte b= Serial.read();

byte c= Serial.read();

byte f= Serial.read();

byte g= Serial.read();

byte h= Serial.read();

byte k= Serial.read();

byte l= Serial.read();

byte m= Serial.read();

d= (c-48) + (b-48)*10 + (a-48)*100;

d = map(d, 100, 210, 20, 130);

d = constrain(d, 20, 130);

i= (h-48) + (g-48)*10 + (f-48)*100;

i = map(i, 100, 210, 20, 130);

i = constrain(i, 20, 130);

n= (m-48) + (l-48)*10 + (k-48)*100;

n = map(n, 100, 210, 20, 130);

n = constrain(n, 20, 130);

if(d<130 && d>20)

{

if (dlast-d<=20)

{

if (u

{

u=u+2;

}

if (u==d)

{

u=u;

}

if (u>d)

{

u=u-2;

}

myservo0.write(u);

Serial.print(u);

Serial.print("\t ");

}

}

if(i<130 && i>20)

{

if (ilast-i<=20)

{

if (v

{

v=v+2;

}

if (v==i)

{

v=v;

}

if (v>i)

{

v=v-2;

}

myservo1.write(v);

Serial.print(v);

Serial.print("\t ");

}

}

if(n<130 && n>20)

{

if (nlast-n<=20)

{

if (w

{

w=w+2;

}

if(w==n)

{

w=w;

}

if (w>n)

{

w=w-2;

}

myservo2.write(w);

Serial.print(w);

Serial.print("\t ");

}

}

Serial.println();

//Serial.flush();

//int d=(int)a;

//int e=(int)b;

//int f=(int)c;

dlast=d;

ilast=i;

nlast=n;

buttonState0 = digitalRead(val0);

buttonState1 = digitalRead(val1);

buttonState2 = digitalRead(val2);

buttonState3 = digitalRead(val3);

if (buttonState3 == LOW && buttonState2 == LOW && buttonState1 == HIGH && buttonState0 == LOW) {

digitalWrite(out0, HIGH);

digitalWrite(out1, LOW);

digitalWrite(out2, LOW);

digitalWrite(out3, HIGH);

}

if (buttonState3 == LOW && buttonState2 == HIGH && buttonState1 == LOW && buttonState0 == LOW) {

digitalWrite(out0, HIGH);

digitalWrite(out1, LOW);

digitalWrite(out2, LOW);

digitalWrite(out3, LOW);

}

if (buttonState3 == LOW && buttonState2 == HIGH && buttonState1 == HIGH && buttonState0 == LOW) {

digitalWrite(out0, LOW);

digitalWrite(out1, LOW);

digitalWrite(out2, LOW);

digitalWrite(out3, HIGH);

}

if (buttonState3 == HIGH && buttonState2 == LOW && buttonState1 == LOW && buttonState0 == LOW) {

digitalWrite(out0, LOW);

digitalWrite(out1, HIGH);

digitalWrite(out2, HIGH);

digitalWrite(out3, LOW);

}

if (buttonState3 == LOW && buttonState2 == HIGH && buttonState1 == LOW && buttonState0 == HIGH) {

digitalWrite(out0, LOW);

digitalWrite(out1, LOW);

digitalWrite(out2, LOW);

digitalWrite(out3, LOW);

}

delay(50);

}

Step 6: Working Videos

Comments

author
Suleman AbuHassan (author)2017-02-02

thank you very much for this :)

author
setco8888 (author)2016-04-01

hello kiran

i have configure zigbee in 2 diffrent mode the first one is zigbee router at and second ine is coordinator at in xctu configuration software is it right ?

also i have one question i have usb explorer , arduino xbee shild and also i have zigbee rs232 board is this 3 all same for our project...

author
yuvap (author)2016-02-01

hai..the developer..your invention is awesome..i am trying this as my project for 2 months and now i came to know about you..can you please help me out in compeleting my final year project..the dead line is one month..please do reply as soon as possible...

email: yuva.rathinasamy@gmail.com

phone: +919042416004

author
ibenkos (author)2014-10-27

Really smart idea!!! Good job, thanks for shearing :)

author
kiran197 (author)ibenkos2014-11-01

thanks ibenkos .

author
MsSweetSatisfaction (author)2014-10-26

Woah that's amazing! The robot follows you really well, honestly that looks like magic to me. Awesome job sharing your process!

author

thank u for comment.. MsSweetSatisfaction

About This Instructable

7,286views

28favorites

License:

More by kiran197:Accelerometer controlled robot (pickup and place)
Add instructable to: