Control Robotic Arm With Gloves, Android Phone and Arduino

11,734

191

14

Today, we have almost 2 techniques to play with Robotic Arm, either by buttons for example as on Game shield or using gloves that include sensors. Yet, today I will show you a new technique by using only your Android Phone and Arduino.

Basically, The project illustrate how to send the mobile sensors data via Bluetooth to Arduino using 1Sheeld and then controlling the motion of the servos.

Teacher Notes

Teachers! Did you use this instructable in your classroom?
Add a Teacher Note to share how you incorporated it into your lesson.

Step 1: Components

1- Arduino Uno (18$)

2- 1Sheeld (60$)

3- Servo X2 (1.8 $)

4- Gripper for Robotic Arm with 2 DOF (2.3$)

5- Any Metallic heavy Base.

6- Any kind of strong adhesive (glue)

7- Android Smart Phone/ Tablet.

Step 2: Arm Fabrication

Actually, I'm don't have too much experience in mechanical things. Yet, I tried as much I could to implement the Arm as shown in figure. Basically, all you have to do firstly is to estimate how much load each servo will carry in order to get the right servo with the required torque.

Step 3: Mobile Application

Basically, All you have to do here is to download 1Sheeld application from Play Store. This Application gets rid of the headache for developing the Android Application. Download the App and 1Sheeld library

Actually,we use Orientation shield, On/Off Button Shield and Gravity shield in this project.

Step 4: Arduino Sketch

As shown below the code is so simple. Actually, any one even who is new in using Arduino can get it.

All we have to declare the pins for 4 PWM for each servo and then map the Value of the sensor from (0 to 180) which are the whole region the servo can rotate.

#include <OneSheeld.h>
#include <Servo.h>

Servo myservo1;
Servo myservo2;
Servo myservo3;
Servo myservo4;

void setup() 
{ 
  OneSheeld.begin();
  myservo1.attach(3);
  myservo1.write(90);
  myservo2.attach(5);
  myservo2.write(0);
  myservo3.attach(6);
  myservo3.write(180);
  myservo4.attach(9);
  myservo4.write(15);
}

void loop() {

if (ToggleButton.getStatus ())
    myservo2.write(120);
  else 
    myservo2.write(0);

if(OrientationSensor.getZ()>0 && abs(OrientationSensor.getZ())<= 83 && GravitySensor.getZ() > 0)
    myservo1.write(map(OrientationSensor.getZ(),0,90,90,0));   

if(OrientationSensor.getZ()<0&&  abs(OrientationSensor.getZ()) <= 83&& GravitySensor.getZ() > 0)
    myservo1.write(map(abs(OrientationSensor.getZ()),90,0,180,90));   

 if(OrientationSensor.getY() < 0 && OrientationSensor.getY() >= -90 &&  abs(GravitySensor.getZ()) >= 2.5) 
    myservo4.write(map(abs(OrientationSensor.getY()),0,90,15,105));    

if(OrientationSensor.getY() > 0 && OrientationSensor.getY() <= 50 &&  abs(GravitySensor.getZ()) >= 2.5)
    myservo4.write(map(abs(OrientationSensor.getY()),0,50,15,0));

if(OrientationSensor.getX() > 0 && OrientationSensor.getX() <= 180 &&  abs(GravitySensor.getZ()) >= 2.5)
    myservo3.write(map(abs(OrientationSensor.getX()),0,180,180,0));   
}

Step 5: Test

Finally, all you have to do to open 1Sheeld mobile Application, then choose the required shields (Orientation, gravity and Button) .

Be the First to Share

    Recommendations

    • Made with Math Contest

      Made with Math Contest
    • Multi-Discipline Contest

      Multi-Discipline Contest
    • Robotics Contest

      Robotics Contest

    14 Discussions

    0
    None
    SumukhU

    Question 1 year ago

    when i compile the code it says
    fatal error: OneSheeld.h: No such file or directory

    #include

    compilation terminated

    exit status 1
    error compiling for board Arduino/Genuino Uno.

    can you please correct it

    0
    None
    SultanK7

    2 years ago

    hello, im having a trouble, i upload the code and as soon as i turn my motors on they keep rotating forever. I need help ?

    0
    None
    SFanaki14

    3 years ago

    Sorry, I'm kinda new at arduino, which holes in the circuit board do the servos. That probably sounds like a dumb question, sorry

    1 reply
    0
    None
    itstidiSFanaki14

    Reply 3 years ago

    the pwm ports
    the one that are having a tild(~) this type of notation.

    0
    None
    HassanT5

    4 years ago on Introduction

    Hey! I'm sorry but I'm a real novice at using arduino so could you tell me how am I going to make my servos take only a 35 degree rotation? Please do reply. Thank you! XD

    0
    None
    FernandoM13

    4 years ago on Introduction

    Hi, i'm having some trouble

    could you contact me at lfernandomr25@gmail.com

    Please!! thanks.