Instructables
Picture of Wireless Controlled Robotic Hand

This is my school project for the 5th year of high school (I'm Italian, we have 5 years of high school).

It consists in an artificial hand controlled by a glove with flex sensors. The artificial hand reproduces the movements of the hand with the control glove, wirelessly. The hand and the glove works both with Arduino.

I just wanted to share my work for everyone interested :)

This guide is still in development, sorry if some parts are not clear, I'll put some 3D images in future.

I'm sharing something about my project on my facebook page: https://www.facebook.com/Gabry295

 
Remove these adsRemove these ads by Signing Up

Step 1: Materials needed

Picture of Materials needed
flexsensor1.jpg
Arduino_Uno_Angle.jpg
0002228.jpg

I bought almost everything from https://www.sparkfun.com/, they have fair prices (I don't mean to advertise!)

Total cost: ABOUT 160$

The materials needed for the control glove are:

  • an elastic glove;
  • LilyPad Arduino board (there are different versions, which usually only have 4 analog inputs, so pay attention and buy the one in the image): it works exactly like the classic Arduino UNO, so you can use even an Arduino Nano, but pay attention to the voltage needed;
  • XBee module: for the radio communication;
  • Shield to connect the Xbee module;
  • 5 Flex sensors;
  • 5 resistors: 47 KΩ;
  • battery pack with 3x1.5 V batteries (Lilypad can be powered from 2.7 to 5.5 V, so 4.5 V it's ok);
  • LilyPad FTDI adapter: to connect the LilyPad board to the PC and load programs with the Arduino IDE (quite optional, because you can use also the Arduino UNO board removing the ATmega chip, but it's tricky to make this kind of connection every time).

-

The materials needed for the robotic hand are:

  • a steel structure for the palm of the hand and wood for the fingers;
  • Arduino UNO board;
  • XBee module;
  • 5 servomotors;
  • a servomotor shield for Arduino UNO: to connect the servomotors I used the Robot_Shield from FuturaElettronica, which has also a switching regulator to power the entire circuit, but you can use any shield made for controlling servomotors. Link: https://store.open-electronics.org/index.php?_route_=Robot%20shield%20for%20Arduino;
  • Shield to connect the XBee module (I made an horrible one, but it's economic and I needed to make one small because of the size of the Robot_Shield);
  • fishing wires;
  • fihing sinkers (to secure the fishing wire);
  • 9 V Battery.

-

Tools needed:

  • angle grinder (mainly to cut wood and steel);
  • axial grinder;
  • welding machine (with electrodes);
  • drill;
  • soldering station and solder;
  • electrician's scissors;
  • pliers;
  • heat shrink tubing.

Step 2: Making the glove

Picture of Making the glove
DSC_1205.JPG
DSC_1205 - Copia.JPG

To make the control glove I suggest first to choose the right position of the different components, then connect everything with the proper length of wire.

To make an analog read with Arduino LilyPad you need to make a voltage divider, since that flex sensors don't work like potentiometers (they have only 2 contacts).

So following the scheme, first solder the 5 resistor on the LilyPad board, one side to the 5 different Analog pins, the other in common to the ground. Then solder the flex sensors, one side to the 5 different Analog pins and the other in common to the positive.

Then connect the XBee Shield: two wires for the power, the oter two for the signal. Solder the Tx pin to the Rx and vice versa.

Now you need the battery pack, and the glove it's done.

BE CAREFUL: don't power the Arduino LilyPad over 5.5 V and don't power it conversely (even if sometimes I did it by mistake... And it still works!)

Step 3: Making the Robotic Hand

Picture of Making the Robotic Hand
20140618_172124.jpg
DSC_0345 - Copia.JPG
1.jpg

This is the most complicated part, because you have to choose the proper materials to make the hand, but it can be also easy if you have the possibility to 3D print the hand (there are many different 3D projects on the web for printing hand parts).

I started making the fingers with cork, to find the proper structure for the movements, then I made it with a branch.

So make three wooden cylinder per finger, two of them with 1 cm over the normal lenght of your phalanx, needed to fit one piece into another.

Then with an angle grinder make the grooves to make the pieces fit together (see the images, you'll understand better).

You'll need some sandpaper to make the pieces curved, so that they can rotate.

Use a drill to make the holes for the hinge, then you have to make other two holes for the fishing wire, vertically, one towards the inside of the hand and one outwards. So when the wires are set at the top of the finger, when you pull the one inwardsthe finger will close, and when you pull the one outwards the finger will open.

The palm was problematic, beacuse I made it initially with wood and the thinner parts always broke. So I decided to make it of steel and I've had no problems.

Cut it and do some protrusions similar to those made for the fingers to fix them to the palm (see the images as a reference). Then use the drill to make the other holes for the fishing wire, the thumb will be tricky because it's not vertical as the ther fingers.

Afer making the hand, you need to make a support for the five servomotors and a support for the Arduino UNO boards. Be sure to choose the right position of the servos, so they don't touch each other while rotating.

The last part consists in connecting the fingers to the servomotors: fix the fishing wires at the top of the finger and make them pass through the holes; then, when the wires are at the bottom of the hand, turn the rotor (manually, without powering it) at his maximum rotation (180°) so that it's in a vertical position, then set the wire that closes the finger to the lowest hole of the rotor, for example making a knot; turn again the rotor at 0° (it's again vertical and the knot made before is at the top) then set the other wire (wich opens the finger) to the lowest hole of the rotor. Follow the last image in this step to understand better.

So, when the motor is at 0° (vertical) the finger is opened and when the rotor is at 180° (vertical again) the finger is closed.

Step 4: Circuit of the Robotic Hand

IMG_20140618_192959 - Copia.jpg
20140618_171340.jpg

For the circuit, you can choose to use a servomotor shield for Arduino UNO (search on eBay or Amazon) with a XBee shield, or make a custom shield (I'll make one as soon as possible) with the XBee Module and the pins for the servomotors, and power the Arduino UNO by its jack port.

So I used what I had already bought, but you can use everything that let you control the servomotors and the XBee.

The servomotors have 3 wires:

  • yellow: signal;
  • red: power;
  • brown: ground.

So now you won't make mistakes :)

I used the simplest type of servomotor, working at 5 V, with a rotary angle of 180 degrees (that's the perfect angle, we don't need more).

Step 5: The programs

The program of the hand and the glove, with all description, are in links below.

REMEMBER: to load the program you have to remove everything connected to the TX and RX pins of the Arduino (in this case the XBee module), else the program won't load. Remember also to set the correct kind of Arduino in the IDE (LilyPad or Arduino UNO).

1-40 of 76Next »
mason1019810 days ago

Hello Gabry. I have a problem. I can't get a connection between my XBees. I made all the connections the same as yours. I also uploaded the code to both arduinos before connecting the RX and TX pins, however when I plug everything in and turn them on, the connection lights on the Arduino Uno are good, but the connection light on the LilyPad stays on for only a second or two, and bending the flex sensors doesn't do anything. I have checked my connections multiple times, and I'm sure its just because I'm not experienced with XBees, but could I get some help? Thank you!

Some of my connections are not shown in the pictures because I took them earlier, but you get the idea. I have the same connections you do. I just organized some of them on a PCB.

IMG_0212.JPGIMG_0213.JPGIMG_0214.JPGIMG_0210.JPGIMG_0206.JPGIMG_0211.JPG
Gabry295 (author)  mason101989 days ago

Hi, did you use the Series 1 XBee? Did you change something via software in the XBee module? Did you use 9600 baud rate for Seria.begin in the code?

I'm sorry but I can't understand from the pictures if you made any mistake in the connections, because I think that the problem you have is caused by something in the circuit.

At the moment I don't know others solutions, could you eventually take a video?

I am using a series 1 Xbee from Sparkfun. https://www.sparkfun.com/products/11215

I did not change anything in the code. I will take pictures and possibly a video as soon as I can. For the LilyPad XBee, I have the RX connected to the TX and vise versa. For the Arduino Uno, I am using a Seeed XBee shield with the same pin selection shown in the picture on the below website.

http://www.seeedstudio.com/wiki/XBee_Shield_V2.0

As I said, when both Arduinos are powered on, the connections lights on the Arduino Uno's XBee shield are good, and stay good as long as both Arduino's are powered, but the connection light on the LilyPad XBee only stays on for about two seconds or so.

Also, I just want to make sure you know that I have not changed anything having to do with software or code on either the Arduinos or the XBees. I am using the Xbees as they came, and I simply downloaded your codes and uploaded them. Thank you!

Gabry295 (author)  mason101986 days ago

I really don't understand what's the cause of your problem, I'm sorry :/

Try to do some test with the LilyPad using some LEDs, even a PWM just to try if only that board works properly... Because I'm quite sure that the problem with the light on the LilyPad isn't a software mistake. Your problem is only on the XBee side of the glove circuit or also the LilyPad? I could be stupid for you but you may put in the wrong way the XBee on its shield (sometimes I make this mistake and put the XBee module inversely).

I can assure you, the XBee modules are both placed in the correct orientation. They are matched with the guiding marks on the PCBs.

I have tested and confirmed that the Arduino boards both function properly. I do not know about the XBees however, because I do not know how to use them. Is there something that needs to be configured on the XBees? Like I said, I'm just using them as they came.

The only thing I can think of, is that the problem is either the selector pins on the XBee shield of the Arduino Uno (I have attached pictures), or there is something either in the code or in the XBees that needs to be changed. Unfortunately, I do not know how to either of these things.

I have attached a link to a video of me trying to use the project, and the problem occurring. (the video plays best if you just click "download" at the top and watch it after downloading it, because dropbox does not play videos well).

https://www.dropbox.com/s/2379lky1zhi40nb/20141014...

IMG_0237.JPGIMG_0236.JPGIMG_0235.JPGIMG_0233.JPGIMG_0232.JPGIMG_0231.JPGIMG_0230.JPGIMG_0229.JPG
Gabry295 (author)  mason101986 days ago

Firts thing: I really like your glove :D

Anyway, now I'm quite sure that it's a software problem :/ because it's the transmission LED of the XBee LilyPad shield that goes off, and I had something like this problem too...

Try to change the programs and in the glove remove the line:

Serial.write("<");

and in the hand remove:

startPackage = Serial.read();

and this part:

if(startPackage == '<'){

(remember the closing brace)

Tell me if at least the transmission LED stay powered

Please tell me if this is how you want me to change the code:

hand: https://codebender.cc/sketch:45980

glove: https://codebender.cc/sketch:53721

Gabry295 (author)  mason101986 days ago

Exactly! :)

Unfortunately, this did not fix my problem. I am still getting the same problems. :(

Gabry295 (author)  mason101985 days ago
Darn...I don't have any other ideas unless trying to change settings of the XBees via PC. I'm really sorry about that :/

However, after powering on and off multiple times, and also pressing the reset button on the LilyPad XBee, the servo on the Uno started going crazy. I bent the flex sensor and didn't seem to get a legitimate response, it just kept rotating randomly.

Gabry295 (author)  mason101984 days ago

Hi, try to upload this code for the Hand

https://codebender.cc/sketch:55014

I added some "messages" that should be shown in the Serial Monitor.

Open
the Serial Monitor and tell me what it shows to you when you power up
everything. So we can understand better where's the problem.

Did you have to change anything on your XBees? if that's what needs to be done I don't think I will be able to do it as I don't know how to modify the XBees. I don't understand why it would not work. I have the same setup as you, and the same code. I'm not sure...
Gabry295 (author)  mason101985 days ago

I didn't change anything on my XBees. And I don't have any idea why your circuits don't work if are the same as mine with the same code... You sholdn't need to re-program the XBees theirselves but in this case I can't find other possible solutions. I never plugged my XBees to a PC, but there are some guides by searchin in Google, just try to set again 9600 as baud rate. I'll try to think about other solutions :/

vilelaig16 days ago

hi Gabry,
Fantastic job! I will try to do it but only a doubt, can i connect the servomotors in the Arduino (UNO) without a servomotor shield or a robot shield?

Gabry295 (author)  vilelaig14 days ago

Yes, you can use the digital outputs to control the servomotors, but you will need to make your own shield with the pins to connect them.

nah8916 days ago

Would it be possible instead of sending the signals from the control glove to an animatronic hand to rather a computer and then a computer model?

Gabry295 (author)  nah8916 days ago

I think it would be possible, but I don't know at the moment how to do something like that. I suggest to use eventually something like an Arduino Leonardo (this is different from Arduino Uno or LilyPad, it can be used like a mouse by a PC).

Hi Gabry, your project is fascinating! Only a doubt...why did you suppose to use a servomotor shield or a robot shield instead to use the PWM outputs from the Arduino Uno board? Thanks in advance for the explanation...

Gabry295 (author)  123mechatronic1 month ago

Thank you!

I decided to use that shield because it has a switching regulator to better use the battery. Anyway that shield uses the PWM outputs to control the servos :)

I could make a DIY board, using the PWM outputs, but since that I found that shield I thought it was more convenient for the presence of the switching regulator and easier to build.

ship.shines1 month ago

Hey, can you please post the code on which arduino of robotic hand is working on ?

Gabry295 (author)  ship.shines1 month ago

Hi, you can download them from the links at the last page!

mason101982 months ago

This this is awesome! I'm planning on starting on one myself but I just don't have the time or resources to make the actual 'hand' part. Are there any places I can get one already made? 3d printed maybe? If you could point me to a site that would be great! Thanks!

Gabry295 (author)  mason101981 month ago

Hi mason, at the moment I don't have enough experience in the world of the 3D printing, I can only suggest you to search about "3D printed hand" and see what interest you more.

Searching on google I found some sites:

http://www.openhandproject.org/downloads.php

http://www.thingiverse.com/thing:18939

http://www.thingiverse.com/thing:287638

I hope you will find a way :)

443891 month ago

could you use a arduino nano for the glove instead of the lilypad arduino?

Gabry295 (author)  443891 month ago

I think there's no problem using the Arduino Nano, it has enough analog inputs and the Tx - Rx pins, that's everything you need

(I took the informations from http://arduino.cc/en/Main/arduinoBoardNano)

justinliu3 months ago

Back again. :D (found out the answer to my two previous questions) I came back with two more, haha.

1. How is the gripping force of the hand? I see that you're using micro servo, and I know that they don't have the most torque. They're very low-profile, however, so I'm wondering how viable weak servos can be for this project. Can it, say, grip a hammer by itself?

2. I looked at your new schematic with the servo and finger and don't entirely understand how you're able to bend the finger with such a small travel distance from the servo. Obviously you managed to do it (seen in the video); I'm just baffled by how that works. The servo, especially because it's so small, doesn't seem to have a particularly long travel distance. How is it that it is able to pull the string down only so much and have the entire finger bend fully?

Once again, thanks so much for answering all these questions everyone has for you and I look forward to your response. :)

Gabry295 (author)  justinliu3 months ago

Hi justinliu :) Sorry for the last question, I'm quite busy in this period... Anyway I'm happy you found out the answer!

Well, for the first question, the hand has enough force to grip an hammer, but not enough to use it... It would be necessary to use a different material for the finger, at first, for example a light metal; second, a different material for the "tendons", something very resistant; third, a different kind of motor, not so plasticky. I only wanted to make something at the lowest possible cost :)

For the second question, I set the fishing wire at the rotor with the right proportions: to close the finger, I turned the rotor until it stops and pulled the wire in the "inner" part of the hand, closing the finger, and then fixed it at the lowest point of the rotor. This means that the wire is pulled of a length equal to the diameter of the rotor, and since that the rotor can cover only 180° then it stops, the finger is properly closed when you reach the final point. The same happen for the other wire, at the opposite. So when the servomotor is rotating one wire is pulled and the other is released. Anyway, the length necessary to close/open the finger isn't so much :)

Tell me if I didn't answered well and you have still any doubts!

(At the moment I lent the hand, so I can't make any video until August... I'll remember to recorder also the grip :D )

M.C. Langer3 months ago

this is awesome!

Gabry295 (author)  M.C. Langer3 months ago

Thank you!!! :D

ymasur made it!3 months ago

Hello Grabri295, congratulation for this good work! I am interested in the construction of the hand; the step 3 is not clear for me. How are the fingers opened? In my realisation (see at the URL

http://yvesmasur.ch/gallery/index.php/Main-LPC/670-main_LPC-paume-index-et-pouce-ecarte-L ) I need back spring. This is difficult to calibrate and to adjust; the motors must pull a lot again it to close the fingers. And I have a segment less on each finger...

668 main_LPC dos complet L.jpg670 main_LPC paume index et pouce ecarte L.jpg
Gabry295 (author)  ymasur3 months ago

Thank you ymasur! :)

I made now these schemes, I hope you can understand better how it works.

You can see the two wires in yellow, pulling one the finger closes and pulling the other it opens. When the servo is in its initial position (0°) the "external" wire is pulled and the finger is open. When the servo rotates it release this wire and pulls the other one. So when the rotor has covered 180° the "external" wire is released and the "internal" is pulled.

I suggest to choose the right lenght of the wire by fixing it at the top of the finger and then making some tries with the servo.

Cattura di schermata (237) - Copia.png
ymasur Gabry2953 months ago
Okay, I see. Very good system, without extra effort for the motors.
Thanks for the explanation.
Gabry295 (author)  ymasur3 months ago

You're welcome! At the beginning I thought about using a back spring too, then I realized that I could pull back the finger with another wire :)

vak_3 months ago

Awesome project!

Gabry295 (author)  vak_3 months ago

Thanks! :D

epicalien3 months ago
Now make it so you can control an arm part with your arm. BTW I love this creAtion
Gabry295 (author)  epicalien3 months ago

If i had time I surely would do that :)

And thank you! :D

Coldfire12153 months ago

Wow! Very impressive!

1-40 of 76Next »