Driven by the desire to help others in need, I designed and 3D-printed a fully articulated prosthetic arm to challenge myself in engineering, design, and real-world problem-solving. This project explores biomechanics, CAD modeling, and the power of accessible technology—all for under $50. The design demonstrates how determination and the right tools can create functional assistive devices without the typical five-figure cost of commercial prosthetics.
The bionic arm uses a tendon-driven system with fishing line connecting each finger to a central MG995 servo motor. The thumb operates independently via an MG90S servo for precise opposition movements. Elastic return springs maintain finger extension when not actuated, creating a natural resting position. The linkage design translates servo rotation into coordinated finger flexion, enabling both precision grip and power grasp capabilities.
Each finger requires elastic return springs to maintain extension when not actuated. The elastic string runs through holes at each joint, creating a natural resting position. Without these return springs, fingers would remain in awkward positions rather than returning to an open, ready-to-grasp configuration.
Push button → Arduino Uno → Servo drivers → MG995 (fingers) + MG90S (thumb) → Tendon linkages → Finger flexion. Feedback from button state prevents over-travel.
All structural components are 3D-printed using PLA filament for cost-effectiveness and ease of modification. The tendon system uses fishing line for durability and low friction, while elastic return springs maintain finger extension. The design prioritizes accessibility—using common materials and tools that anyone can obtain for under $50 total cost.
Note: Mirror STLs for right arm assembly
I want to iterate this bionic hand into a modular research platform—swappable end-effectors, better sensing (force/position), and safer actuation with closed-loop control. I'm excited to collaborate on rapid CAD-to-prototype cycles and human-in-the-loop testing to turn practical ideas into reliable assistive hardware.
#include <Servo.h>
#define BTN_PIN 7
#define SERVO1_PIN 3
#define SERVO2_PIN 5
Servo servo1;
Servo servo2;
int buttonState = 0;
int lastButtonState = 0;
bool servosActivated = false;
void setup() {
servo1.attach(SERVO1_PIN);
servo2.attach(SERVO2_PIN);
pinMode(BTN_PIN, INPUT_PULLUP);
servo1.write(0); // Set initial position of servo1 to 15 degrees
servo2.write(180); // Set initial position of servo2 to 90 degrees
}
void loop() {
buttonState = digitalRead(BTN_PIN);
if (buttonState == HIGH && lastButtonState == LOW) {
// Button is pressed
if (!servosActivated) {
servo1.write(100); // Set servo1 to 90 degrees
servo2.write(60); // Set servo2 to 180 degrees
servosActivated = true;
} else {
servo1.write(-30); // Return servo1 to 15 degrees
servo2.write(180); // Return servo2 to 90 degrees
servosActivated = false;
}
}
lastButtonState = buttonState;
}