Introduction: Voice Controlled Robot Hand

About: 55+ years in electronics, computers, and teaching ... now retired.

This instructable explains how to build a voice-controlled robotic hand using an Arduino Uno R3, an HC-06 Bluetooth module, and five stepping motors. [1]

Bluetooth voice commands are sent from your Android cell-phone to the Arduino Uno R3 interpreter which controls the hand.

MIT AppInventor 2 was used to write the Android app which harnesses the power of Google-Speech-To-Text. [2]

The hand, which is made from a length of 20mm x 3mm aluminium extrusion and a wire coat-hanger, was constructed to test some ideas. The construction techniques and code may be of interest to others.

Features include:

  • Simple to make
  • Individual finger movements
  • Group finger movements
  • Programmable hand-shapes for various tasks
  • Light-weight
  • Each finger is cable-operated ...
  • Works under water should that be necessary (no motors to short)

Excluding your cell-phone, the estimated cost to build this project is less than $100


Photo 1 shows the mechanical hand.

Photo 2 shows the hand attached to the motor-assembly.

Photo 3 shows the Bluetooth (cell-phone) voice controller

Photo 4 is a screen shot showing a typical dialog

The video demonstrates the voice-controlled hand in action



The stepping motors are from past projects. Servo motors should work equally well with a few code changes.


MIT AppInventor 2 is freely available from .

The VTT.apk app (Voice To Text) and the VTT.aia code for this project are presented in this instructable should you wish to adapt it.

Step 1: Parts List

The following parts were obtained from :

  • 1 only Arduino UNO R3 with USB Cable
  • 1 only Prototype PCB Breadboard for Arduino UNO R3
  • 1 only HC-06 Bluetooth Module
  • 5 only 17HS3430 Nema17 12 volt Stepper Motors
  • 5 only Big Easy Driver v1.2 A4988 Stepper Motor Driver Boards
  • 5 only GT2 20 tooth Aluminium Timing Pulley Bore 5mm Width 6mm with Screw
  • 5 only GT2 Idler Pulley Bore 4mm with Bearing for GT2 Timing belt Width 6mm 20Teeth
  • 5 only GT2 Closed Loop Timing Belt Rubber 6mm 160mm
  • 1 only pkt 120pcs 10cm male to male + male to female and female to female jumper wire Dupont cable for Arduino diy kit

The following parts were obtained locally:

  • 1 only length 20mm x 3mm aluminium extrusion
  • 1 only 120mm x 120mm piece of scrap aluminium
  • 1 only 200mm x 100mm x 6mm composition board (for hand & wrist extension)
  • 1 only 500mm x 500mm x 6mm composition board (for base-plate)
  • 1 only short length (approx 520mm) scrap 18mm x 65mm timber (for base-plate legs)
  • 1 only wire coat-hanger (approx. diameter 2.4mm)
  • 1 only length curtain-wire
  • 1 only curtain-eye
  • 1 only reel 30lb nylon fishing line
  • 1 only short length of hat-elastic
  • 1 only pkt cable ties
  • 1 only 1200 ohm 1/8 watt resistor
  • 1 only 2200 ohm 1/8 watt resistor
  • 1 only 1N5408 3 amp power diode
  • 1 only SPST (single pole single throw) switch
  • 1 only 2-pin PCB terminal block
  • 15 only M3 x 9mm threaded nylon stand-offs
  • 30 only M3 x 5mm bolts (for nylon stand-offs)
  • 30 only M3 x 10mm bolts (for fingers & motor mounts)
  • 2 only M4 x 15mm bolts (for wrist extension)
  • 5 only M4 x 30mm bolts (for idler pulleys)
  • 17 only M4 nuts (for idler pulleys)
  • 12 only wood screws (for base-plate legs)

The estimated cost of these parts is less than $100

Step 2: Circuit Diagram

The circuit diagram for the robot hand is shown in photo 1

The matching motor / Bluetooth shield is shown in photo 2

The Big Easy Drivers are shown in photo 3.

The Big Easy Driver motor controllers support daisy-chain wiring

Motor Wiring

It may be necessary to reverse the two center wires from each 17HS3430 Nema17 12 volt stepper motors as the Big Easy Driver v1.2 A4988 stepper motor driver boards expect the wires from each of the coil-windings to be adjacent.

To achieve this it is necessary to swap the two center wires from each motor (photo 4).

The default color sequence for the 17HS3430 cables (for my motors) is red, blue, green, black. The color-sequence following the modification is red, green, blue, black.

The red, green winding is connected to the “A” terminals of the Big Easy Driver.

The blue, black winding is attached to the “B” terminals of the Big Easy Driver.

Big Easy Driver Current Limits

The current-limit on each of the Big Easy Drivers must be set to 400mA (milli-amperes) .

To achieve this:

  1. Switch off the power [1]
  2. Unplug your Arduino
  3. Unplug each motor cable
  4. Turn each of the current-limit potentiometers on the A4988 Big Easy Driver Boards fully clockwise
  5. Apply 12 volts to the Big Easy Drivers ... you should get a current reading between 90mA and 100mA. This is the current being drawn by LEDs.
  6. Turn off the 12 volt supply [1]
  7. Plug the “Thumb” motor in, apply power, and adjust the supply current to 490mA
  8. Turn off the 12 volt supply [1]
  9. Unplug the Thumb motor.
  10. Repeat steps 6, 7, 8, 9 for each of the remaining motors

Plug all motor cables in to their respective controllers.

The total supply current will be just over 2 amps when power is applied



NEVER plug, or unplug, a stepping motor with the power applied. The inductive “kick” (voltage spike) is likely to damage the controllers.

Step 3: Hand ... Concept

My first robot hand, described in, has many small parts and uses duct-tape for the joints.

This alternate hand is more rugged, has fewer parts, and is easier to make.

The above photos show the basic concept ... if you remove the center bolt from a pantograph the “joint” has a minimum of 90 degrees rotation [1]



I intended to use the pantograph-arm in my actuator plotter but abandoned the idea as there was too much unwanted movement due to the large number of joints.

Step 4: Hand ... Prototype

The above photos show how a “finger” can be created from a length of aluminium extrusion and a wire coat-hanger.

The joint has a smooth action and is remarkably sturdy.

Nuts and bolts are not required ... a solder blob on each wire-end secures them in place.

Step 5: Hand ... Construction

Few tools are required to make this hand ... just a hack-saw, a few drills, and a file.

Step 1

  • Trace an outline of your hand onto paper. (photo 1)
  • Mark your “knuckle-line” and main “finger joints”
  • Ignore your finger tips ... they don’t normally bend that much ... a bevel is sufficient. If a slight bend is required that can be added later.

Step 2

  • Cut finger length sections from the aluminium extrusion (photo 2)
  • Drill four coat-hanger diameter holes ... one in each corner of the aluminium extrusion. (photo 4)
  • Drill a smaller diameter hole behind each of the first holes. These are used for the hat elastic and the nylon tendons. (photo 4)
  • Cut lengths of wire from the coat-hanger and bend each end 90 degrees
  • Cross the wires when joining the aluminium finger-sections. The wires are inserted from opposite sides.
  • Secure the wires by applying solder to each wire-end. Don’t worry about the solder sticking to the aluminium ... it doesn’t.
  • Remove any solder flux from the joints using mineral turpentine (or similar) then apply a drop of sewing machine oil. Blot any excess oil with a paper towel.

Step 3

  • Attach each finger to the wooden hand-shape using “L”-shaped aluminium brackets fashioned from a scrap of sheet aluminium.
  • File the backstops such that the fingers are straight when fully extended. (photo 4)

Step 4

  • Attach the thumb (photo 2). The thumb bracket looks complicated but is simply an “L”-shaped piece of sheet-aluminum cut at an angle. The 90-degree bend is then cut and the ends splayed out.

Step 5

  • Tie a piece of hat-elastic between the remaining top holes (photo 4).
  • Adjust the tension until the fingers just extend.

Step 6

  • Attach nylon tendons (fishing line) to the lower finger holes.
  • Pass each nylon tendon though 2mm diameter holes drilled in a (curved) piece of wood. These holes act like curtain eyes. (photo 2)

Step 7:

  • A curtain-eye is used for changing the direction of the nylon thumb-tendon. The curtain-eye is screwed into an M3 threaded nylon stand-off located on the other side of the hand.

Step 6: Software ... Android

Photo 1 shows the MIT AppInventor 2 “Design” screen for my VTT (Voice-To-Text) application.

Photo 2 shows the “Blocks” used in this application.

Photos 3, and 4 are the small PNG graphics that I used. The microphone is a free graphic from somewhere ... the Bluetooth icon is mine.

Reading the code

  • The top two left-hand “blocks” connect your phone to the Arduino when you press the “Bluetooth” button.
  • The middle two left-hand “blocks” send your voice command to the arduino when you press the “microphone” button. The text is created using Google Speech_To_Text.
  • All voice commands appear as text above the “microphone” icon.
  • The bottom two left-hand “blocks” transfer this text to the “custom” button should you wish to repeat a command when testing.
  • The lower two right-hand blocks send the words “open” and “close” to the hand. I thought these would be useful when testing.
  • The top three right-hand “blocks” control the timing.


The attached VTT.apk file is the actual Android phone application.

To install VTT.apk :

  • Copy VTT.apk to your phone (or email it to yourself as an attachment)
  • Change your phone settings to allow third party apps to be installed
  • Download an apk installer from
  • Run the installer.


An alternate method of installing the code is to:

  • create an MIT AppInventor account
  • Download and install MIT AppInventor 2 from
  • Download and install “MIT AI2 Companion” from to your phone.
  • Mimic Photo 1 on your “Design” screen
  • Replicate the blocks shown in photo 2
  • Run “MIT AI2 Companion” on your phone
  • Click “Build | App (provide QR code for .apk)”
  • Click the QR option on your phone when the QR code appears
  • Follow the prompts.


Step 7: Arduino Software

Installation Instructions

Download the attached file “VTT_voice_to_text_7.ino”

Copy the file contents into a new Arduino sketch and save.

Upload the sketch to your Arduino.

Design Notes

The English language is extremely complex.

Often there are multiple ways of saying the same thing. In the following examples “hand” and fingers” have the same meaning:

  • “Open your hand” ............................................. refers to your hand
  • “Open your fingers” .......................................... refers to your hand

But keywords can also have different meanings:

  • “Open your fingers” ......................................... refers to your hand
  • “Open your index and middle fingers” ............ refers to specific fingers

Meaningful commands require at least two keywords. The following commands do not result in a hand action as they only have one keyword:

  • “Open” keyword “open” [1]
  • “Give me a hand” keyword “hand”
  • “Hand me a spanner” ....................................... one keyword “hand”

To interpret these commands I have grouped keywords with similar meanings as follows:

  • Multiple fingers: “hand”, “fingers”, “open”, “close”, “release” [1]
  • Specific fingers: "thumb", "index", "middle", "ring", "little"
  • Open fingers: "open", "raise", "extend", “release” [1]
  • Close fingers: "close", "lower" [1]
  • Tasks: "carry", "hold", "pick", "demo", "calibrate"

Each keyword-group is associated with a “flag”. To interpret natural speech a flag or flag-group is triggered whenever a keyword is detected. The speech interpreter only needs to look at the flag combinations to work out what actions are required.


Recursion occurs when a command calls itself one or more times.

Let’s assume that some of your fingers are extended and some are closed. Let’s also assume that you want to have your thumb extended and your fingers closed as in when you are carrying something.

Method 1

The following two voice commands will achieve this:

  • “open your hand”
  • “close your index middle ring and little fingers”

Method 2

Instead of issuing two separate commands your could create a “carry()” task:

  • “carry this for me”

This command activates the “carry()” function which then issues :

  • process(“open your hand”);
  • process(“close your index middle ring and little fingers”)

This recursive action allows complex hand-shapes to be created.



For convenience I have programmed the interpreter to accept “open”, close, and “release” as single-word commands.

Step 8: Summary

This instructable shows how a robot hand may be constructed from a short length of aluminium extrusion and a wire coat-hanger.

The hand was constructed to test some ideas. Earplugs are attached to the finger-tips to improve the grip.

Features include:

  • Simple to make
  • Each finger is cable-operated.
  • Individual finger movements
  • Group finger movements
  • Programmable hand-shapes for various tasks
  • Low cost
  • Light-weight
  • Works under water should that be necessary (no motors to short)

Each finger is cable-operated. Nylon fishing line is used for the tendons each of which are fed through a length of flexible curtain-wire.

Photo 2 in the Intro section shows two cables ... one with 2 tendons ... the other with three. This is okay if the bending radius is large otherwise the fingers tend to stick when the cables are flexed. This was overcome by using five separate cables in the video

While nylon fishing line works it tends to stretch. Stainless steel fishing trace would be a better choice ... I have a reel on order.

The actuators are made from stepping motors and endless belts. The tendons are attached to the drive-belts by means of a cable-ties.

This project should work equally well with servo motors. Minor code changes will be necessary if you choose to use servos.

Bluetooth voice commands are sent to your Arduino from an Android cell-phone app.

The code for the cell-phone app was developed using MIT AppInventor 2 and is published in this instructable.

The Arduino voice interpreter is extremely reliable. The code, which is included in this instructable, may be of use in other projects.

Excluding your cell-phone, the estimated cost to build this project is less than $100

  Click here   to view my other instructables.

Arduino Contest 2020

Participated in the
Arduino Contest 2020