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.
1-40 of 85Next »
hi gabry, awesome project!! I made a hand and tried to follow your set up, I bought all the same parts on your list and to the best of my knowledge have everything connected and soldered correctly. I loaded the programs for both the hand and glove before i ever started connecting anything. When the switch is pushed to on position on the robot shield the servos will twitch and then it seems to go through a sequence of twitches for each servo and one of the leds will flicker after each twitch. is this part of program? The xbees are not talking either, the xbee on the control glove had red led that shows it on and that's it. but nothing happens when i bend fingers. Thanks for your help!!!!
Gabry295 (author)  tiguety.potter13 hours ago

Hi, I suggest you to try some code just to check some things:

Load this code on the glove and opern the Serial Monitor, try to move the fingers and see if the values change correctly:

https://codebender.cc/sketch:56264

If there are no problems with the glove with the code before then reload the original GloveTX_v2 and upload this code to the hand:

https://codebender.cc/sketch:55014

Open the Serial Monitor and see what is displayed.

I'm sorry for your problems, tell me the results with this codes :)

mason1019814 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)  mason1019813 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)  mason1019811 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)  mason1019810 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)  mason1019810 days ago

Exactly! :)

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

Gabry295 (author)  mason1019810 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)  mason101988 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.

For whatever reason, after uploading this code, the green connection lights stay on. However, the messages in the serial monitor do not appear correct, and the servomotor is still not responding to the flexing of the fingers. I have attached a video. (again, this video plays better if you download it first and then play it)

https://www.dropbox.com/s/o26rw188k4dhu0x/handtest...

Gabry295 (author)  mason101982 days ago

Thank you so much for the video, it's really clear!

I thought about another try, only on the glove using the serial monitor:

https://codebender.cc/sketch:56264

This is to check if the values from the flex sensors are correctly taken by the LilyPad board. I hope we can solve this problem step by step :)

Thank you! I will try this code as soon as I get the chance!

Gabry295 (author)  mason101982 days ago

Another thing: I just realized that it's ok that the green LED on the XBee LilyPad shield stays on only for few seconds... So that's not problem :/

Anyway tell me what you get when you try the last code :)

Thank you so much! I am only getting a read from the pinky finger, and that is only if I wiggle the circuits. It seems as though my circuits are indeed the problem. I will re-make all the connections and let you if it works!

I believe I have found the problem... all of my resistors were soldered in the same direction except the pinky finger. I am not an expert in resistors, but do they have to be attached a certain direction? I thought that both ends were the same.

Gabry295 (author)  mason10198yesterday

Resistors don't need to be attached in a certain directions, but it's important the way you have soldered them together :)

I looked at your photos, but I couldn't see exactly how you soldered the resistors, could you have made any mistake?

(removed by author or community request)
Gabry295 (author)  mason101989 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 :/

vilelaig20 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)  vilelaig19 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.

nah8920 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)  nah8920 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)  mason101982 months 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 :)

443892 months ago

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

Gabry295 (author)  443892 months 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

1-40 of 85Next »