Introduction: Robotic Arm Controlled by Glove
Purpose: Gain experience, and problem-solving skills by creating a project to complete
Outline- Use a glove to connect through an arduino to control a 3-D robotic printed "arm". Each of the joints on the 3-D printed arm has a servo which connects to the flex sensor on the glove and moves in proportion to how far the finger is flexed.
Step 1: Material List
3- 10k resistors
3- flex sensor resistors
3- servos
Breadboard
Arduino Uno
Wires
Zip-ties
4- 3-D printed pieces
I attached a links to the exact materials I used so the could easily be looked up even if you do not order from these exact links
3- 10k resistors https://www.amazon.com/Projects-25EP51410K0-10K-R...
3- flex sensor resistors https://www.amazon.com/Creatron-Inc-Flex-Sensor-4...
3- servos https://www.amazon.com/Hitec-RCD-USA-31422-Standa...
Step 2: Wiring
The image of the wiring exactly as I have it set up is in the fritzing file. The wiring can be best looked at in two different parts. 1) Connections from the breadboard and arduino to the 3-D printed “arm” 2) Connections from the breadboard and arduino to the glove.
3-D Printed Arm connections The wires hooked up to the pins 11, 10, 9 as well as the positive and negative regions are connected to the 3 different servos. The black wires on the servo connect to the negative regions, namely the negative column on the breadboard. The red wires on the servo connect to the positive regions, namely the positive column on the breadboard. Finally the yellow signal wires connect to the arduino.
In my set up pin 9 connects to the base servo and is controlled by the thumb In my set up pin 10 connects to the top servo and is controlled by the middle finger In my set up pin 11 connects to the middle servo and is controlled by the pointer finger
2) Glove Connections There are two connections available on the flex sensors, on the side with the thin line runs the connection to both the signal and the negative terminal. The side with a thicker patterned side is a connection to the positive terminal. On the side where you connect the signal and negative wire attach both a 22k resistor and a secondary wire. The wire runs straight to the negative terminal through the breadboard. The resistor connects with one end to the flex sensor and the other connects to a wire which runs to the breadboard before hooking up to the arduino analog in pins. The three analog pins I used were A0, A1, A2. Then the other flex sensor connection runs to the breadboard and connects to the positive column on the breadboard. On the fritzing file there is a secondary more clear sketch which shows the positive, negative and signal connections.
(Note- Most of the physical connections of the wires not in the breadboard were soldered, and shrink wrap was used to protect the connections)
The final components to the wiring are the connections from the 5V power on the arduino to the positive column and the ground (GND) connects to the negative column. There is also bars running across the breadboard which connects the negative columns together on either end of the board and the positive columns together on either end of the board.
Additional note- longer wires can be used to extend the amount of slack available between the breadboard and the glove or the breadboard and the 3-D printed arm if needed
Attachments
Step 3: Wiring and Code Explanation
The basis of the program is similar to the knob turning program in arduino, and works overall as potentiometer. The flex sensors on the glove send signals based off the position change, when the fingers on the gloves move the change in position sends a signal to the arduino which then calls for the 3-D printed “hand” to change in the same proportion.
Within the code the 3 servos are defined under the pins 9, 10,11 The analog pins A0, A1, A2 connect the potentiometer
In the void setup the servos are attached to the pins
Then the void loop consists of using 3 functions analogRead, map, write, and delay
analogRead- reads the value from the analog pins (the ones communicating to the potentiometer) and gives a value between 0 and 1023
Map- (value, fromLow, fromHigh, toLow, toHigh) the map function changes the range of values from the analog read value from 500, 1000 to 0, 180 since 0-180 are ranges of values that the servo can read, and names the new value under the first in the list
servoWrite- the arduino writes a value to the servo and moves its position accordingly
Delay- The delay then causes the program to wait before looping over again
Step 4: Mechanical Structure of 3-D Printed Parts
There are four STL files attached as well as images and videos of each of the parts. There is not an image of the assembly of the files but there is an image of the 3-D printed version. The four different pieces are connected through the 3 servos at each of the joints. The base part connects to the shoulder through the servos which is then attached to the first arm file, and then finally to the second arm file.
Attachments
Step 5: Mechanical Construction of Glove
The construction of the glove was fairly simple, the flex sensors were hot glued to three fingers on the glove and zip ties were used to keep the wires in place.
Note- It was found that if these particular flex sensors which were used become too dirty it can begin to affect how the flex sensors work, so pieces of tape were placed over the sensors to keep them clean
Additional Note- The motion of the 3-D arm can be a little bit jerky when only a usb cord running to the arduino is used to power it, it can be improved by hooking up more power through batteries and connecting the positive and negative terminals to the positive and negative columns on the breadboard