ARDUINO PROJECT-5:ROBOTIC HAND

Material used –

Arduino UNO

5 servo motors

5 sensors bending

5 resistance

the material to build the robotic hand (tubes, paper, glue, wire, etc …)

glove.

In this tutorial we make a robotic hand (low cost) can replicate the movements of our hand.
We insert the sensor flex on the fingers of a glove, we analyze the value of these sensors and servo motors move 180 ° pulling a wire connected to each finger of the robotic hand.
The electronics then consists in creating a glove with sensors and robotic hand with the five scooters.

SENSORE_DI_FLESSIONE

The sensors of flexion (picture above) are small flexible rods that indicate the amount of bending to which they are subjected. Attacking the fingers of the glove know exactly the movement of each finger.
The flex sensors must be connected to Arduino with resistors. They can be purchased online at Robot-Italy.
Sensor: www.robot-italy.com/it/flex-sensor-2-2.html – 8 €
Resistances: www.robot-italy.com/it/resk-kit-500-resistenze.html – 5 € (Kit 500)
Otherwise you can buy at any electronics store of resistance from 2.2 Kohms
This tutorial was made ​​in 2014, prior to purchase online if you check other sites sell cheaper sensors downturn. Currently reported this is the cheapest.

flex_sensor_1_bb

The sensor must be connected bending this way: the sidebar closer must be powered with 5V Arduino. The largest bar must be connected to GND Arduino passing through a resistance. The cable that comes to analog pin Arduino (used to read the value of the sensor) must be paid before the resistance (see diagram above). What is the resistance?
In this case the resistance serves to decrease and make visible the sensor value.
Inserting a resistance of 2.2 Kohms as we read analog value equal to 50 if the sensor is not bent, equal to 90 if the sensor is flexed in one direction and a value of 10 if the sensor is bent in the opposite direction.
Below is a small chart to see the sensor values ​​of flexion.
NB: if you use another type of resistance these values ​​will be different.

hands

SENSOR VALUE = 50

SENSOR VALUE = 10

We start with only one sensor. Made the circuit of the previous page and open the Arduino software to start programming. For the moment we do not use either the glove or the robotic hand.
The assembly will be done at the end, when the code and the circuit of a single finger will be completed.
Computer Science

To test the operation of the sensor open the file inside the Arduino program for reading analog sensor (FILE – EXAMPLES – BASIC – ANALOGREADSERIAL).
This sketch allows you to read any sensor positioned in pin 0 Arduino.

Uplodate code tab and open the Serial Monitor.
Holding the sensor stopped the displayed number should be a 50.
Bending it forward reach the number 10, by folding it in the reverse direction the number 90.
If you used a different resistance value changes.

Write down the values ​​of the sensor retainer and bent forward. You will have to replace them with those that I will use in the tutorial.

COMMAND MAP (Open the sketc _2_1_sensore_1_motore_val)
Now to the servo motors.
We connect a servant Arduino following the diagram below.

flex_sensor_1_motor_1

When the sensor will be bending bent, the motor will move proportionally.
We have already seen that with the command myservo.write (90); we move our servant in any angle between 0 and 180 °. Is there a command in the Arduino program that allows us to pass a value to the motor in proportion to that which occurs in the sensor.
The sensor sends a fact that there is between 90 and 10. The motor needs a value between 0 and 180.
The map command executes the relationship between the two values. Ex: value = map (value, 90, 10, 0, 179);
The first two numbers refer to flex sensor while the other two to the servant. Based on the incoming number have a value suitable for the motor.
Try to load the code below to better understand the operation of the MAP command (or open the file _2_1_sensore_1_motore_val)

#include <Servo.h>
Servo myservo;
int index;
void setup () {
Serial.begin (9600);
myservo.attach (9);
// We attack the servant to pin 9
}
void loop () {
index = analogRead (A0);
Serial.print (“original value”);
Serial.println (index);
index = map (index, 90, 10, 0, 179);
myservo.write (index);
Serial.print (“scaled value:”);
Serial.println (index);
// We print the original value of the sensor and then modified by the map command
delay (150);
}

If we bend the sensor motor moves and pulls the wire which is connected the finger of the robotic hand.
We begin to realize the glove and the robotic hand.
We take a glove and attach the sensor on the index finger. The best way to fix it is to sew it or fix it with duct tape.
If possible we settle the long electric cable to the sensor and link to them with Arduino.
We’re still making a very basic prototype, once you understand the operation and the amount of cables that we’ll use to mount the glove final.

robot_hand_1

With diagram we settle five red wires to the positive pin sensor flex. The ends of the red wires must be welded together on the back of the hand. To 5 wires we add a longer one that connect to pin 5V Arduino.

flex_sensor_5_dita_nero

Take 5 small wires blacks and we settle them at the other end of the sensor flex. For every black cable must weld resistance. At the other end of the resistance we settle another 5 wires blacks who join at the center of the hand. From the latter part of a last longest black wire that we insert into Pin GND Arduino.

flex_sensor_5_dita_giallo

At this point we have to connect 5 wires long yellow. Each yellow wire must be welded in the first end of the resistance and must be connected to analog pin Arduino. Each of the yellow wires in the end, therefore, pin A0, A1, A2, A3 and A4. These wires will send to Arduino data of each sensor flex.

flex_sensor_5_dita_bb

robot_hand_arduino

glove-interactive

Now for the robotic hand.
Realize the hand is the hardest part of the entire tutorial.
Stumble this tutorial (click here) made very well. The purpose is to create a hand with fingers connected to wires. When the motor pulls the wire, the finger bends.
If you do not want to build the robotic hand alone can buy this toy 4M:
Robotic Hand Kit – www.amazon.com/4M-3774-Robotic-Hand-Kit/dp/B005MK0OPO
robot_hand_4m

Once mounted just connect the various threads to 5 scooters.
The realization of the hand I leave it to your imagination. Please send me email ( puccimarco76@yahoo.it ) your creations, I will publish on the site and on the page
Facebook Tutorials Arduino:
https://www.facebook.com/pages/Tutorial-Arduino/1377902315765530?fref=ts .

Below are some pictures of the robotic hand made with a wooden frame and fingers toy presented above.
The structure is the key part of the hand. The five motors must not move (glue them to the wooden dowels or screws to secure them with metal bars).
With the fishing line to connect each finger scooter built and assemble the electronic part of the 5 scooters.

mano_robotica

mano_robotica_arduino

mano_robotica2

mano_robotica_guanto-arduino

(Open the sketc _4_tutti_sensori_tutti_motori_val)

Below is the complete code to manage the sensors 5 and 5 scooters.
The values ​​to be included in the MAP command, for example. map (inch, 20, 40, 0, 179);
may vary depending on your sensor, your strength, the type of scooters, etc …
I recommend you do the tests by changing the numbers until you find the right compromise between movement of the glove and answer the robotic hand.

#include <Servo.h>
Servo myservo_pollice;
Servo myservo_indice;
Servo myservo_medio;
Servo myservo_anulare;
Servo myservo_mignolo;
int inch;
int index;
int average;
int ring;
int little finger;

void setup () {
Serial.begin (9600);
myservo_pollice.attach (9);
myservo_indice.attach (10);
myservo_medio.attach (11);
myservo_anulare.attach (12);
myservo_mignolo.attach (13);
}

void loop () {
analogRead inch = (A0);
index = analogRead (A1);
average = analogRead (A2);
annular analogRead = (A3);
pinky = analogRead (A4);
Serial.println (little finger);

inch = map (inch, 20, 40, 0, 179);
index = map (index, 20, 40, 0, 179);
average = map (average, 20, 40, 0, 179);
ring = map (ring, 20, 40, 0, 179);
= map pinky (little finger, 20, 40, 0, 179);

myservo_pollice.write (thumb);
myservo_indice.write (index);
myservo_medio.write (average);
myservo_anulare.write (road);
myservo_mignolo.write (little finger);

delay (150);
}

Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s