Introduction: 3D Printed Robotic Hand With Bluetooth Control

Picture of 3D Printed Robotic Hand With Bluetooth Control

Need a hand? This is a fully 3D Printed and actuated robotic hand and arm which can be applied to a multitude of use cases like as a prosthetic hand, or just a third 'hand.' It is also fully actuated using 5 servo motors for controlling each individual fingers.

Each of these fingers are controllable by any sensors that can be interfaced with an Arduino, such as the MyoWare EMG sensors, or in this case with Bluetooth using the built-in Bluetooth Low Energy functionality of the Arduino 101.

I was inspired to make this project for two reasons:

1. Enabling the Future's "Build a Hand" initiative which aim to make cheaper 3D printed prosthetics that is mainly aimed towards children who will grow up and need to get fitted to a new hand as they grow which gets very expensive.

2. The application of an animatronic hand in virtual reality environments for tactile and haptic feedback.

Now, you can make your own robotic hand that's ready to lend everything it has at your aide (well, it is just a hand), so that you don't have to go around borrowing hands from other people.

Step 1: 3D Print Materials

Picture of 3D Print Materials
  • Print one copy of each stl part.

All the structural components of this robot hand are custom made through 3D printing. I am providing the 3D printable models below so you can print it with your own 3D printer or from a local 3D print-shop.

This was designed in Autodesk's Fusion 360 and you can find the parts here:

http://autode.sk/2wryFMW

http://autode.sk/2wruMYi

http://autode.sk/2wsmz6u

http://autode.sk/2ws93Q7

http://autode.sk/2vOCCcJ

http://autode.sk/2vwDGqp

http://autode.sk/2wsfwe0

http://autode.sk/2vwFYWE

Step 2: Mounting Thumb Joint Motor

Picture of Mounting Thumb Joint Motor
  • Glue the servo horn to the thumb base joint
  • Connect servo horn onto Servo motor and glue it in place with super glue.

Give it some time to dry, the longer you wait the stronger the bond is (within a 24 hour period)

Step 3: Connecting the Fingers

Picture of Connecting the Fingers

Chain link the fingers with a nylon or fishing wire. The one I have is a bit thicker than fishing wire since Home Depot did not have any thin ones.

  • Attach base joint to the anterior ligaments by threading a the wire one of the base holes, looping through the top and threading it back out of the other base hole.
  • Leave about 5cm of wire on both ends of the base holes before cutting it.
  • Thread another wire through the top hole. This will be the posterior ligament which will stabilize finger to complete the push-pull pair.
  • Extend the fishing line from your palm to your elbow to have enough line for the servo mount.

Step 4: Attaching the Tension Wire

Picture of Attaching the Tension Wire
  • Insert the base joints of each finger into corresponding slots in the 3d printed palm.
  • Tie a knot between the two slots for the base joint. Then, further secure it by adding a bead of glue over the holes and knot so that the wire does not slip

I found it easier to temporarily glue the base joints of each finger onto the palm piece with hot glue which is easily removable.

Step 5: Attaching the Thumb

Picture of Attaching the Thumb
  • Like the fingers, thread a nylon wire through one of the base holes of the thumb joint attached to the servo motor through to the two distal joints of the thumb.
  • Loop it through the top hole then back around and out the second base hole of the thumb joint.
  • Tie a knot at the base hole and secure it with some hot glue with a hot glue gun.

Step 6: Mounting the Servo Holder

Picture of Mounting the Servo Holder
  • Install servo holder assembly into the arm structural component using 4-40 machine screws. There are 4 screw-down points designed in the CAD model.

Step 7: Gluing the Wrist

Picture of Gluing the Wrist
  • Glue the wrist onto the base of the palm. Apply sufficient amount of pressure to ensure a secure attachment.
  • Add a thin layer of glue around the wrist to secure it further.

Step 8: Gluing the Arm

Picture of Gluing the Arm
  • Attach the arm to the wrist with the lock cap using a hot glue gun.

Step 9: Connecting Tension Wire to Servo

Picture of Connecting Tension Wire to Servo
  • Wrap the tension wire around the 3d printed servo mount part.
  • Screw or Glue the Servo horn onto the circular mount with a hot glue gun.

Step 10: Mounting the Elbow

Picture of Mounting the Elbow
  • Attach the assemble hand-wrist complex to the elbow base to complete the structural assembly of 3D printed parts.

Step 11: Wiring

Picture of Wiring

Follow the table below for a full concise guide on wiring each of the servo motors to the Arduino:

Servo Servo Wire Arduino Pin Breadboard Pin
ThumbBrownGND*Ground Rail
ThumbRed5V*Power Rail
ThumbOrange2-
IndexBrown-Ground Rail
IndexRed-Power Rail
IndexOrange3-
MiddleBrown-Ground Rail
MiddleRed-Power Rail
MiddleOrange4-
RingBrown-Ground Rail
RingRed-Power Rail
RingOrange5-
PinkyBrown-Ground Rail
PinkyRed-Power Rail
PinkyOrange6-

* I decided to use a small portion of the breadboard -- the power and ground rails -- which snaps off of the breadboard easily and added some tape on the bottom to prevent accidental short circuits.

** Optionally, instead of getting power from the Arduino you can attach a small Rx LiPo Battery (so it can supply the needed current) to power the ground rails instead such that you may power all 5 servos at a time.

Step 12: Demo Program

Picture of Demo Program

This is demo program that moves each of the fingers to it's full extent:

#include <Servo.h>
Servo thumb;
Servo index1;
Servo middle;
Servo ring;
Servo pinky;
void setup() {
    thumb.attach(2);
    index1.attach(3);
    middle.attach(4);
    ring.attach(5);
    pinky.attach(6);
}
void loop() {
  for (int i = 0; i<180; i++){
    //thumb.write(i);
    index1.write(i);
    middle.write(i);
    ring.write(i);
    pinky.write(i); 
    delay(10);
  }
  delay(1000);
  //thumb.write(0);
  index1.write(0);
  middle.write(0);
  ring.write(0);
  pinky.write(0);
}

Step 13: Adding Bluetooth Functionality

Picture of Adding Bluetooth Functionality
  • Copy the following code to the Arduino 101:
#define BLYNK_PRINT Serial<br>
#include <BlynkSimpleCurieBLE.h>
#include <CurieBLE.h>
#include <Servo.h>
// You should get Auth Token in the Blynk App.
// Go to the Project Settings (nut icon).
char auth[] = "30c0d37503f84aaf8f01483cbb14f20e";
BLEPeripheral  blePeripheral;
Servo thumb;
Servo index1;
Servo middle;
Servo ring;
Servo pinky;
BLYNK_WRITE(V1)
{
  thumb.write(param.asInt());
}
BLYNK_WRITE(V2)
{
  index1.write(param.asInt());
}
BLYNK_WRITE(V3)
{
  middle.write(param.asInt());
}
BLYNK_WRITE(V4)
{
  ring.write(param.asInt());
}
BLYNK_WRITE(V5)
{
  pinky.write(param.asInt());
}
void setup()
{
  // Debug console
  Serial.begin(9600);
  delay(1000);
  blePeripheral.setLocalName("Tech Martian");
  blePeripheral.setDeviceName("Tech Martian");
  blePeripheral.setAppearance(384);
  Blynk.begin(blePeripheral, auth);
  blePeripheral.begin();
  Serial.println("Waiting for connections...");
   thumb.attach(2);
   index1.attach(3);
   middle.attach(4);
   ring.attach(5);
   pinky.attach(6);
}
void loop()
{
  blePeripheral.poll();
  Blynk.run();
}
  • Change the name of your device, I named mine "Tech Martian."

Step 14: Setting Up the Bluetooth App

Picture of Setting Up the Bluetooth App
  • Download the Blynk App
  • Select Create a New Project and name your project appropriately.
  • Choose the Arduino101 as your device and BLE (Bluetooth Low Energy) as the connection type.

Step 15: Assigning Auth Token

Picture of Assigning Auth Token
  • On the line 10 of the code change "your auth token" to the auth token that was sent to your email by creating a project on Blynk that was done on the previous step.

Step 16: Making the Bluetooth App

Picture of Making the Bluetooth App
  • Drag and drop the following widgets onto the Scene though the widget side bar by swiping from the right edge of your screen.
    • BLE
    • 5 Vertical Sliders

Step 17: Assigning the Sliders

Picture of Assigning the Sliders
  • Select the vertical slider widget.
  • Name each of the vertical slider according to each of the five fingers -- thumb, index, middle, ring, and pinky.
  • Change the angle of each of the slider from 0 to 180, as it corresponds to the angle range of a servo motor.
  • Assign a virtual pin to each of the sliders from V1 to V5 from the thumb to the pinky finger, respectively.

Step 18: Testing

Picture of Testing
  • Select the BLE icon and connect to the Arduino 101 BLE Device which you will recognize as the name you assigned your Arduino 101.
  • Change the slider values and this will actuated each of the fingers of the robotic hand.

Enjoy!

Comments

ronhenderson65 (author)2017-09-02

Now, if you can figure how to make it work off of my remaining limb, it would be useful to me. Missing left arm at elbow.

There's a sensor called myoware that is easily interfacable with the Arduino. However, I do not have one. I do have a Myo Armband, which also has an Arduino API. Unfortunately, I broke the USB Dongle on mine. I will do a follow up tutorial on it once I fix it. Stay tuned! Tech Martian

So am I. Check out my page for some one handed hacks. I recommend using the myoware sensor or The Veear Voice Recognition (EasyVR Arduino Shield).

laffi (author)ronhenderson652017-09-03

there is an arduino hat for that...the ada hand uses it

Droxz (author)2017-09-01

Wow nice job! Thanks for sharing :)

About This Instructable

1,222views

21favorites

License:

Bio: Aerospace Engineer working in Software Development with a passion for Hardware.
More by TechMartian:Flying Captain America's Shield - RC PlaneWide Angle ShotsLED Ping Pong With Shift Register
Add instructable to: