Introduction: Remote Controlled Copy Hand

About: I like building stuff

This Instructable was created in fulfillment of the project requirements of the Makecourse at the University of South Florida (www.makecourse.com).

When I was a child I always dreamed about becoming an Inventor. That desire grew even more when I saw futuristic cybernetic prosthesis in Deus Ex: Human Revolution. That game catapulted me into my obsession with programming software, developing electronic devices, and focusing my career path on becoming a Biomedical Engineer. However, it was not until I got my hands on an Arduino Uno micro controller did I finally get to stretch my creative muscles and attempt to bring my imagination to life. The inspiration to actually attempting to make my RC Copy Hand came from a line from SpaceBoy by Stephen McCranie (Ep 62): "When I design these appendages, I'm thinking more about biology than mechanics. I don't work with servos or pistons or pumps-- I use synthetic muscle and bone and cartilage. I even wire in an artificial nervous system. This little girl will not only be able to hold objects with these hands, she'll be able to touch and feel things with them." Constructing this Hand brought me a step closer to realizing that statement where prosthesis (appendage or otherwise) could be made more human like and versatile for the wearer. Thus a part of my dreams has turned into reality with this project!

Step 1: Gathering Resources & Preparation

Below are some of the critical resources you will need to build this project with some optional trade outs that I would have used (Links take you to the sellers I utilized):

  • 2 x Arduino Uno
  • 2 x nRF24lo1 Wireless Transmitter
  • 2 x nRF24lo1 Adapter
  • 5 x Long Flex Sensor
  • 9v Battery Clips (I personally made them out of spare toys and electronics I had lying around)
  • 2 x Half- size Breadboard
  • 5 x MG90S High Torque Metal Gear Servo
  • 20+ x Male/Male Jumper Wires
  • 20+ x Female/Female Jumper Wires
  • 2 X 9v Battery
  • Through-Hole Resistors 470 ohms
  • 2 x USB Development Cable (to either power or program both Arduinos)
  • 150 M of Nylon String (Bought from Walmart)
  • Variable Output Power Supply (optional, Utilized one at my local university)
  • Soldering Iron (Utilized one at my local university)
  • Heat Shrink Tubing
  • Electric Tape (purchased from dollar store)
  • Hot Glue Gun (purchased from Walmart)
  • Gloves (purchased from dollar store)
  • Access to a 3D Printer
  • Assorted Rubberbands (Thicker rubber bands work better)
  • Paper Clips
  • Digital Caliper
  • Tweezers
  • Pliers
  • Screw Driver

Software Used

The Arduino library I used for the nrf24l01 library was located on GitHub

RC Copy Hand requires some slight understanding of C++ language as that is what you will use to code in the Arduino IDE. Attempting some of the Arduino IDE tutorials is highly recommended.

Step 2: Designing the Control System

The RC Copy Hand itself is very simple in design when it comes to controls. It has 5 (five) metal gear high torque servos that move the digits with a nRF24L01 and nRF24L01 adapter that acts as a receiver for commands. 2 (Two) 9V batterys are connected in series for power. Although, the batteires are also the only downside of the current set up, because the servos are energy hogs and the batteries will only last a good 2 (two) - 5 (five) minutes before they are drained.

The RC "power" glove is where the more complicated circuitry comes into play. The "power" glove has 5 long flex sensors that are either taped or ties down to the fingers of the glove. The ends of the flex sensors will be solder to Male/Male cables that have 470 ohm resistors in series with it that act as controls for the variable resistance of the flex sensors. The variance in the resistance is picked up by one of the Arduino Unos and a code is transmitted via the nRF24L01 and nRF24L01 adapter complex attached to that Arduino Uno board.

For the nRF24L01 and nRF24L01 adapter complex it is very important to utilize both devices. The nRF24L01 transmitter can be used by itself without the adapter however the adapter helps to build up a charge to allow the nRF24L01 to function unencumbered.

Step 3: Understanding the Basic Structure of the Hand

Before I constructed the RC Copy Hand I did some research into how our actual hands function. I utilized Wikipedia for this end and learned that basically the hand has two major muscles that move the digits: Flexors and Extensors. The flexors have tendons that branch out to and attach to the end of each digits' distal phalanges with junctures at the proximal and intermediate phalanges. These flexors curl the fingers while extensors which are attached to the back of the phalanges straighten them out again. In essence the digits' tendons are strings that pull the fingers into a curling or straightened position.

You can see just as much by placing your thumb just below one of your wrist and then squeezing the tendons below and watching your relaxed hand curl in on itself. The human body is already a very confusing but fascinating machine, discovering that we move via such simple but elegant means that compound into complicated and beautiful systems shows just how intriguing our design is.

Step 4: 3D Printing

Before you dabble into any 3D Files I suggest you look at some tutorials to get familiar with how to go about manipulating a virtual 3D space. For example I learned Autodesk Inventor straight from the beginner tutorial offered inside the software itself. You could also check out youtube videos on how to get started for Inventor, Blender, and much more.

Originally the idea was to measure my own hand and then simulate and construct it in Autodesk Inventor (the software I used). However, after nit picking over the measurements in the program I ended up developing a slightly larger scale which ended up creating a slightly bigger hand than my very own funnily enough.

Designing the hand became more so intuitive than it was analytical, however I was careful to consider the size of the bed of my 3D Printers available to me at my University. I utilized the Visualization center run by Mr. Howard Kaplan at the University of South Florida, he had a myriad of 3D Printers however, I wanted to make sure I didn't over constrain all the printers by making an excessively large print.

Step 5: Assembly & Wiring

Background

This design was made as a beginner's attempt constructing a RC hand. Therefore more ready made materials such as paper clips were used as axles for the phalanges. I utilized pliers in straightening out the paperclips and then jamming it into the phalanges' axle holes, since my fingers were too big too actually do any benefit. Also on the 3D Prints the Axle holes were measured specifically to the paperclips that I had at the time which were 0.1 mm. So I made the Axle holes 0.15 mm so the 3D Print had room to expand depending on the type of plastic used. So if you were to tackle this project I suggest measuring your own paperclips or axle rods before printing out any of the fingers.

Assembling the hand

  1. Take your caliper and measure the distance between the outer radi of one of the distal fingers' axle holes. Once you have this measurement it would be easy enough to measure out the exact length of paperclip that you would want to snip off for the axle hole. (However, longer is better when you are trying to fiddle it into two of the phalanges holes at the same time.)
  2. Assemble all of the phalanges together taking careful note of which ones are for the Ring, Pinky, Thumb, Index, and Middle fingers and which phalanges are for the Distal, Intermediate, and Proximial regions. (This is not strictly required but the finger lengths would line up more realistically)
  3. After assembling the digits you can now axle down the fingers to the base of the hand at the respective proximial phalange zones.
  4. Once the fingers are in place you can now thread fishing line through the back and front squares of the hand and fingers. Construct intricate knots in the fishing line at the top of the hands to make nylon balls large enough that they won't slip through the square holes when pulled. Make sure that the fishing line that is cut off as a good amount of remainder because it makes threading the line much easier later on.
  5. Now that hand assembly is done we will connect the hand to the forearm base (the one that will hold our servos) via the male connector on the forearm. (Note: in previous versions of the forearm the male connector would snap; hence the high cylindrical support wall. If the male connector snaps off while fiddling with the assembly I find it is simple enough to take the base and snapped end and fire the points until soft with a lighter and then connect them again while firing them from all sides.The residual structure is thrice as strong now.)
  6. Take 5 - 10 rubber-bands and tie them repeatedly in knots until you have a ball like structure that will not go through the holes on the bottom of the forearm
  7. Take 5 of these structures and thread a single rubber band "leaf" from the ball through the hole and connect the finger's back string through the slot at the top wall of the forearm and tied taut to the rubber-bands. (the rubber-bands should be slightly stretched to ensure that the fingers are constantly upright when the servos are not engaged.)
  8. With the 5 servos connect the single arm head with the screws that come with it.
  9. Place the 5 servos in the servo slots on the forearm and slip screws or snipped nails into the holes on the forearm wall to secure the servos in place and hot glue the make shift rivets in place or use a washer to ensure that they do not move when the servos are activated.
  10. Now you will very carefully and with much patience thread the fishing lines of the fingers through the servo arm holes starting from the very first hole and then threading it back to the second from the front hole and then tying several knots to keep the line secure and taut.
    1. Note if the fishing line's length is too small to handle with your hands using tweezers helps greatly.
  11. Take the servo wiring and connect them to the breadboard with the analog cables connecting to the Arduino
    1. It is very important that at this juncture you take note of which servo is connected to which finger and which servo is connected to which Analog Pin)
  12. Test out the connections via your Arduino IDE with some simple test code to ensure that the fingers can fully curl and extend back to normal.

Assembling the glove

  1. First it would be beneficial to solder the flex sensors to some long male/male connections
  2. Simply get one of the sides of your glove and put it on the corresponding hand.
  3. Take a soldered flex sensor and place the end of the sensor (circuit looking side facing up) at the end of your finger (any will do for now) and use the electric tape to secure the sensor to all three phalanges.
  4. Now repeat with other fingers.
  5. Take off the glove once this is done to make it easier to make the necessary connections to the breadboard. (Take note of the wiring diagram above)
  6. Special note when wiring the nRF24L01 Wireless transmitter. The correct wiring of the circuit is as follows:
    1. SCK - Pin 13
    2. MO - Pin 12
    3. MI - Pin ~11
    4. CSN - Pin ~10 (This is actually optional because in the code you can denote an input and output pin for the nRF24L01)
    5. CE - Pin ~5 (This is actually optional because in the code you can denote an input and output pin for the nRF24L01)
  7. now take your breaboard and arduino assembly and place it on the back of the wrist of the glove and put your hand through the glove at the same time.
  8. Electric tape down the the breadboard to the glove and attach a 9V battery that has easy access to the Arduino's 9V battery source at all times.
  9. After this is done boot up the Arduino IDE and upload the programs to both respective boards (the "Receiver" and the "Transceiver") and do calibration testing for the servos to figure out which servos move which digit (necessary if you didn't label each wire connecting the servos)

When your assembly is done and works to your satisfaction it is time to make it more permanent by using Permanent glue on the fishing line at the top of the Distal Phalanges and then once cured trimming the excess nylon wire.

Step 6: Programming

I believe that the Arduino sketches are pretty self explanatory except for what the flexmap function was doing. For that function:

int flexmap(int x, int in_min, int in_max, int out_min, int out_max)
{ int num = (x - in_min) * (out_max - out_min) / (in_max - in_min) + out_min;

if (num >= out_min && num <= out_max) { return num; } else if (num < out_min) { return out_min; } else if (num > out_min) { return out_max; } }

I was basically making a constrained map function. The normal map function usually takes in a couple of values and utilizes basic proportionality to interpolate an equivalent value on a newly dictated scale from a single input of data. However, that can go overboard quickly. For example the transmitter code was monitoring the analog read of the resistance of the flex sensors when they flexed and setting the servo positions based on the resistance read. Now the region to be monitored needs to be hard coded and calibrated depending on the individual flex sensor and finger position. Now if that region you are monitoring is small and there are fluctuation spikes with the readings the normal map functions extrapolates rather than interpolates the data giving you servo positions that can never be made with a standard servo. So with my newly made function flexmap I can constrain the output value if the reading goes beyond or below the hard coded region.

Also you may have noticed that when the radio was sending a message ( msg ) that it seemed to be using the same channel repeatedly. That was the only limitation of the nRF24lo1 but it was easily overcome by "developing" your own custom channels to send data on. For example Index finger data was sent on the 0 - 35 channel while Middle was sent on the 36- 71 channel and so on.