3D Printed Prosthetic Arm

The main goal of the project was to minimize the use of the wires, and creating a fully functional arm that can replicate the gestures of the person controlling it. Using a hacked mind flexed, the user can send brain waves to to create a gesture for the hand.

Engineer

Koshiq H

Area of Interest

Medicine

School

Bard High School Early College

Grade

Incoming Senior

Final Milestone

For my Final Milestone I got my robotic hand to be controlled via a flex sensor. All fingers are fully functional. The flex sensors have four servos. Each servo controls a different finger. When the flex sensor is bent, then the sensor sends a certain message that mimics a gesture that replicates the flex sensor. From here, I hope to use a EEG headset to control the robotic hand. The EEG headset will use brainwaves to send messages to the servo instead of using the flex sensor. I expect to connect it to NRF24 but this is not a hundred percent certain yet.

Final Code


#include

/*
Analog input, analog output, serial output

Reads an analog input pin, maps the result to a range from 0 to 255 and uses
the result to set the pulse width modulation (PWM) of an output pin.
Also prints the results to the Serial Monitor.

The circuit:
– potentiometer connected to analog pin 0.
Center pin of the potentiometer goes to the analog pin.
side pins of the potentiometer go to +5V and ground
– LED connected from digital pin 9 to ground

created 29 Dec. 2008
modified 9 Apr 2012
by Tom Igoe

This example code is in the public domain.

http://www.arduino.cc/en/Tutorial/AnalogInOutSerial
*/

// These constants won’t change. They’re used to give names to the pins used:
const int analogInPin = A0; // Analog input pin that the potentiometer is attached to
const int analogOutPin = 9; // Analog output pin that the LED is attached to

int sensorValue = 0; // value read from the pot
int outputValue = 0; // value output to the PWM (analog out)
Servo servo1;
Servo servo2;
Servo servo3;
Servo servo4;

void setup() {
// initialize serial communications at 9600 bps:
Serial.begin(9600);
servo1.attach(10);
servo2.attach(6);
servo3.attach(9);
servo4.attach(11);

}

void loop() {
// read the analog in value:
sensorValue = analogRead(analogInPin);
Serial.println(sensorValue);
// map it to the range of the analog out:
outputValue = map(sensorValue, 700, 300, 20, 260);
// change the analog out value:
// analogWrite(analogOutPin, outputValue);

// print the results to the Serial Monitor:
Serial.print(“sensor = “);
Serial.print(sensorValue);
Serial.print(“\t output = “);
Serial.println(outputValue);
servo1.write(outputValue);
servo2.write(outputValue);
servo3.write(outputValue);
servo4.write(outputValue);

// wait 2 milliseconds before the next loop for the analog-to-digital
// converter to settle after the last reading:
delay(200);
}

Third Milestone

Code for Hand


#include

Servo thumb;
Servo index;
Servo middle;
Servo ring;
Servo pinky;

int flex[] = {0, 0, 0, 0, 0};
int angle[]= {180, 180, 180, 180, 180};

void setup() {
Serial.begin(9600);
thumb.attach(9);
index.attach(8);
middle.attach(7);
ring.attach(6);
pinky.attach(5);
}

void loop() {
for(int i = 0; i < 5; i++){
flex[i] = analogRead(i);
}

for(int finger = 0; finger < 5; finger++){ angle[finger] = (flex[finger]); angle[finger] = (angle[finger]*18)/30; if(angle[finger]>179){
angle[finger] = 179;
} else if(angle[finger]<0){
angle[finger] = 0;}
}

//thumb.write(180);
angle[3]=map(angle[3], 90,200,180,0);
Serial.println(angle[3]);
thumb.write(angle[3]);
Serial.println(angle[3]);
index.write(angle[1]);;
middle.write(angle[2]);
ring.write(angle[3]);
pinky.write(angle[4]);
delay(100);
}

For milestone number three of my 3D printed robotic hand, I finished the flex sensor glove and connected to the 3D printed hand itself. The glove has 4 flex sensors, the flex sensors are variable resistors which means that if it is bent in a certain angle, then the flex sensor sends out a correlating voltage to the servo motors. The servo motors then moves in order to mimic the flex sensor. The flex sensor glove consist of the 4 flex sensors, Lilypad Arduino, and four 15k resistors. There is also a USB that is connected to connect the Lilypad Arduino and everything to a power source. The power source is a 5V portable charger. Overall, I think everything went well. However, the main issue I had was that 3 out of the 4 flex sensors broke due to overheating. For my modification and last milestone, I plan on making the whole device controlled by my brain. I know it will be difficult, but anything is possible if you work hard to achieve it.

Second Milestone

For my second milestone, I finished the construction of the robotic hand. There were many obstacles, but at the end, everything came out good. For the robotic hand, the fingers had to be organized in order to create a realistic replication of the hand. So each finger consist of three separate parts. These parts are important because it controls how the finger bends and moves. There are three joints for each finger. The joints are the most crucial part for the movement of the fingers. From there, we got different washers and screws. The washers helps keep the screws secured. If the screws aren’t secured, then the different parts of the finger wouldn’t bend well. Another component for the hand is the fishing wire. The fishing wire has a strong material that can bend well, so that’s why it was used in this project. The fishing wire had to be placed into each finger and then each end of the fishing line had to be placed in opposite sides of the servo. So one fishing line is pulling down, where the other is moving the fingers up. In order for this to be perfect, the fishing line has to be placed in a position where there is a lot of tension. This helps create much more realistic movements of the fingers and hand in general. The hardest part for me was when the part of the hand that connects the palm with the forearm broke. When this broke, it was hard to do the project because everything kept falling apart. However, using a zip tie, the issue was solved. Overall, I enjoyed this milestone because it is one of the major achievement for the project.

First Milestone

For my first milestone, I programmed the Arduino Uno to make the servos move when the flex sensors are bent. The movement of the servos are directly proportional to the angle of the flex sensor when it’s bent. The flex sensor, servo, and the Arduino Uno were all connected to a breadboard. The breadboard helps connect the resistor and many jumper wires were used in order for the circuit to fully function. I think the hardest part for me was the code. I am not fully done with the code yet, but now that I know what I need to do for one servo, I can apply that to the other three. From here, I expect to program the Lilypad Arduino and create the arm and glove.

Starter Project

My Starter Project is the TV B-Gone. The TV B-Gone is a universal remote that can turn on and off most televisions that require Infrared Light. To the naked eye, Infrared Light isn’t visible. This is why for this device we needed an indicator light which helps humans know that the device is working. The 1k resistor, also known as R5, sets the brightness for the indicator LED. It helps stabilize the current from overflowing, which prevents the LEDs from blowing out. Compared to the R5 resistor, there is the R1 resistor which controls the brightness of the Infrared light. Then there are parts like the microcontroller that is attached to an 8 pin chip. This allows the microcontroller to be removed easily compared to desoldering. The microcontroller is like the brain of the device, it stores all the code that functions the device. The source of voltage for the device is two AA batteries. There are also transistors which amplify and switch the electronic signals.There are two different types of Infrared LEDs, the blue shaded one has a longer and narrower range, whereas the clear one has a shorter and wider range. Soldering some parts of the board was hard because I couldn’t clip off the leads perfectly, so the solder sometimes attached to one another. Overall, I am proud of my project.

Reflection

BlueStamp is a place for creators who are willing to change the world. In just 6 weeks I made a countless number of friends. I learned many life lessons that will always stay with me. I always had the plan to become a doctor. So, at BlueStamp I decided to create the 3D Printed Robotic Hand in order to make bridge between my interest in medicine and engineering. The initial plan was to create a robotic hand that is controlled by flex sensor glove wirelessly. However, that changed to creating a hand that can be controlled by brain waves. I faced many challenges in my project. For instance, one of them was 3 out of the 4 flex sensors of mine broke. At the end, I am planning to create a mind controlled robotic hand. BlueStamp was an amazing experience, it taught me the importance of Google.

Bill of Materials

3D Printed Parts

Comments
  • Stephanie Nudelman
    Reply

    Koshiq, this is so cool! I’m excited to watch your project progress.

Leave a Comment

Start typing and press Enter to search