Introduction: ¿Need a Hand?

Hi everyone!

For my High School Senior Project I wanted to do something a little creative and fun so I decided to create a robotic hand. The goal was to learn about circuits, wiring, and construction (which I accomplished) and in order to achieve this goal, I made a robotic hand, and I wanted to share this knowledge with others, so instructions to creating this hand are down below for all to utilize and learn from.

The basic components of the hand and glove are the hand itself, the servos, the Arduino, and the battery. The five servo motors are attached to the five fingers of a plastic toy hand with fishing line, and when a motor moves it pulls strings that act as tendons, allowing the fingers to move. All the movements of the servos are done from coding done on my laptop and can be changed depending on your liking.

Leave any comments or questions you have - thanks for checking it out :)

Juliette Langari

Step 1: Gather All Your Materials

All of the parts cost approximately $90

Here's the list of the exact parts and links I used for this project:

1 Arduino Uno

20 Wires (For this project you just need male-to-male wires)

1 Arduino Wire

1 Robotic Hand Kit

5 Servo Motors

1 Breadboard

1 6V Battery

Superglue and Glue gun

5 Zipties

Possibly will need:

Heat Shrink

Electrical Tape

Step 2: Create Hand

This step is fairly simple if you set aside a good amount of time don't get frustrated because it is by far the most tedious and time consuming step of the project.

Make sure you have plenty of fishing line, superglue, and zipties before proceeding.

Start by inserting the black fingers into the grey piece of plastic and weave the fishing line through the fingers and the grey tips. To keep the fishing line in place i wrapped it around the first joint of the finger several times and then superglued it; although its not the most attractive it was the only way I could get the fishing line to stay. I also suggest supergluing the grey fingertips to each black finger so that way they don't move around. Then superglue and ziptie each motor in the exact arrangement pictured above. The top right and middle motors both turn counterclockwise, while the rest turn clockwise. Feel free to test your own arrangements but if you follow my layout you shouldn't run into any problems.

Once all of the superglue has hardened you can move onto threading the fishing line. First you will want to tie the line to the last hole in the motor attachment. You will want to make sure the knot you tie can withstand a lot of tension before threading it through the finger. If the knot comes undone after threading through the finger you will have to start over. Once you have a strong knot and plenty of extra slack line, thread the line through the motor's corresponding finger. In my picture, the motors are connected so that the top left goes through the second finger, bottom left through the first finger, middle through the fourth finger, bottom right through the third finger, and top right through the fifth finger. You will want to make sure there is some tension between the finger and motor when you tie it, so it may take a couple tries to get it right.

Step 3: Make the Circuit

You should be able mimic the arrangement of my wires from the picture above but here it is in written language.

I started out by inserting 5 separate wires into the Arduino Uno. One in Digital 10, Digital 9, Digital 6, Digital 5, and Digital 3. Then I connected each of these wires to the yellow/orange wires on the 5 separate servo motors. From there I inserted wires into the red and brown wires of the servos and attached them to my breadboard as shown above. Red to positive and brown to negative.

Lastly I connected a wire from the Arduino ground to the negative in the breadboard and attached two wires to the positive and negative at the bottom of the breadboard (these two will be hooked up to the battery later).

Step 4: Coding

This is the last step! Plug the USB wire into your computer and the other end into your Arduino, it'll be blinking - this is normal. Visit http://www.arduino.cc, click on the download tab, and follow the steps for your specific computer.

Once done, open the Arduino app and you're ready to code. If you're more experienced with Arduino and know how to test the input values of your particular sensors, you can adjust the range in the program so it works best for you but here is the code that I made and it should work if you've followed all the steps exactly as they are thus far: (in order for it to run you must connect to positive and negative wires to the battery, this can be done using tape if you like, I just held the wires to the battery whenever I needed the hand to work)

#include 
Servo myservo1;
Servo myservo2;
Servo myservo3;
Servo myservo4;
Servo myservo5;
int pos = 0;    // variable to store the servo position
void setup() {
  myservo1.attach(5);
  myservo2.attach(10);
  myservo3.attach(3);
  myservo4.attach(6);
  myservo5.attach(9);
}
void loop() {
  for (pos = 0; pos <= 180; pos += 1) { // goes from 0 degrees to 180 degrees
    // in steps of 1 degree
    myservo1.write(pos);              // tell servo to go to position in variable 'pos'
    delay(5);                       // waits 15ms for the servo to reach the position
  }
  for (pos = 180; pos >= 0; pos -= 1) { // goes from 180 degrees to 0 degrees
    myservo1.write(pos);              // tell servo to go to position in variable 'pos'
    delay(5);                       // waits 15ms for the servo to reach the position
  }
  for (pos = 60; pos <= 240; pos += 1) { // goes from 0 degrees to 180 degrees
    // in steps of 1 degree
    myservo2.write(pos);              // tell servo to go to position in variable 'pos'
    delay(5);                       // waits 15ms for the servo to reach the position
  }
  for (pos = 240; pos >= 60; pos -= 1) { // goes from 180 degrees to 0 degrees
    myservo2.write(pos);              // tell servo to go to position in variable 'pos'
    delay(5);                       // waits 15ms for the servo to reach the position
  }
  for (pos = 0; pos <= 180; pos += 1) { // goes from 0 degrees to 180 degrees
    // in steps of 1 degree
    myservo3.write(pos);              // tell servo to go to position in variable 'pos'
    delay(5);                       // waits 15ms for the servo to reach the position
  }
  for (pos = 180; pos >= 0; pos -= 1) { // goes from 180 degrees to 0 degrees
    myservo3.write(pos);              // tell servo to go to position in variable 'pos'
    delay(5);                       // waits 15ms for the servo to reach the position
  }
  for (pos = 0; pos <= 180; pos += 1) { // goes from 0 degrees to 180 degrees
    // in steps of 1 degree
    myservo4.write(pos);              // tell servo to go to position in variable 'pos'
    delay(5);                       // waits 15ms for the servo to reach the position
  }
  for (pos = 180; pos >= 0; pos -= 1) { // goes from 180 degrees to 0 degrees
    myservo4.write(pos);              // tell servo to go to position in variable 'pos'
    delay(5);                       // waits 15ms for the servo to reach the position
  }
  for (pos = 0; pos <= 90; pos += 1) { // goes from 0 degrees to 180 degrees
    // in steps of 1 degree
    myservo5.write(pos);              // tell servo to go to position in variable 'pos'
    delay(5);                       // waits 15ms for the servo to reach the position
  }
  for (pos = 90; pos >= 0; pos -= 1) { // goes from 180 degrees to 0 degrees
    myservo5.write(pos);              // tell servo to go to position in variable 'pos'
    delay(5);                       // waits 15ms for the servo to reach the position
  }
}

If you're new to coding and want to play around with the app a little more I suggest going to File, Example, Servo, andit should be a good area to start and just play around with, or you can alter my code to your liking.

But by now your hand should be alive and running! Congratulations!

Please leave any questions or comments below, thank you :)