Voice Controlled Robot Hand

5,326

44

24

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

Images

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

Notes

[1]

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

[2]

MIT AppInventor 2 is freely available from https://appinventor.mit.edu/ .

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 https://www.aliexpress.com/ :

  • 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

Note

[1]

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 https://www.instructables.com/id/Robot-Hand-2/, 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]

Note

[1]

I intended to use the pantograph-arm in my actuator plotter https://www.instructables.com/id/CNC-Actuator-Plo... 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.

VTT.apk

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 https://play.google.com/store
  • Run the installer.

VTT.aia

An alternate method of installing the code is to:

  • create an MIT AppInventor account
  • Download and install MIT AppInventor 2 from https://appinventor.mit.edu/
  • Download and install “MIT AI2 Companion” from https://play.google.com/store 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.

Attachments

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” ..............................................................one keyword “open” [1]
  • “Give me a hand”..............................................one 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

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.

Note

[1]

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

Be the First to Share

    Recommendations

    • Backyard Contest

      Backyard Contest
    • Water Speed Challenge

      Water Speed Challenge
    • Summer Fun: Student Design Challenge

      Summer Fun: Student Design Challenge

    24 Comments

    0
    doeeru
    doeeru

    4 months ago

    I do not know how but I do not get any results can you help me in any manner possible?

    0
    lingib
    lingib

    Reply 4 months ago

    Can you please be more specific ...

    0
    doeeru
    doeeru

    Reply 4 months ago

    So here is the issue we have for a more detailed question
    1. we have used a different resistor, you have included a 1/8watt of 1200 and 2200 ohms but instead, we used a 1/4watt of 1200 and 2200 ohms
    2. we use a different stepper motor namely a 17HS08-1004S Nema 17 Stepper motor
    3. we use Arduino Uno instead of the R3
    4. Bluetooth module suddenly has no red light
    5.when uploading on the Arduino Uno this shows (REFER TO PHOTO 1)

    but when we delete your note and your copyright claims (just to try, we can now then upload it) (REFER TO PHOTO 2)
    p.s. I do not know if what I have done is correct or not, I am a beginner in this field such that it is needed for a school requirement

    In the serial monitor, I have tried so many times however there are no results showing up. I believe if you send a voice something will show up here or if you type commands? something will show up? (REFER TO PHOTO 3)

    6. We have used a regular 12V DC power supply, is this okay?
    and with that my question follows as with the materials we bought different from yours, is it possible to make it happen? we only need the grab and the release and I cannot simply edit the sketch into simpler codes to be received by the HC 06 module


    sorry if this seems too desperate of me but we only have a week to make this happen, maybe you could tweak it into much simpler code for the materials we have bought and the command we only need (OPEN AND CLOSE)


    Hoping you are our last hope
    with regards, Thank You!

    1.png2.png3.png
    0
    lingib
    lingib

    Reply 4 months ago

    1. we have used a different resistor, you have included a 1/8watt of 1200 and 2200 ohms but instead, we used a 1/4watt of 1200 and 2200 ohms
    *****
    The wattage doesn't matter

    2. we use a different stepper motor namely a 17HS08-1004S Nema 17 Stepper motor
    *****
    You have a problem here ....
    My circuit uses 17HS3430 12 volt 400mA stepping motors
    The motors you are using are 3.5 volt 1amp motors
    You will need to adjust the motor supply voltage to match your motors and
    adjust the Big Easy Driver Current limits to 1amp. Your motor torque is also
    different. Compare the two motor sopecifications ...

    BUT BEFORE YOU DO THIS
    get your hand to recognise "open" and "close" buttons on the cellphone app.
    Pressing either of those buttons will cause a message to appear on your
    Arduino Serial Monitor

    3. we use Arduino Uno instead of the R3
    ******
    This shouldn't matter

    4. Bluetooth module suddenly has no red light
    ******
    This is normal when a connection is made

    5.when uploading on the Arduino Uno this shows (REFER TO PHOTO 1)
    but when we delete your note and your copyright claims (just to try, we can now then upload it) (REFER TO PHOTO 2)
    p.s. I do not know if what I have done is correct or not, I am a beginner in this field such that it is needed for a school requirement
    *****
    What you have done is okay
    The highlighted line appears to have been corrupted ... it shouldn't have the
    asterisks in front of the original // comment

    In the serial monitor, I have tried so many times however there are no results showing up. I believe if you send a voice something will show up here or if you type commands? something will show up?
    *****
    The Arduino Serial Monitor only listens ... it is only used for displaying the
    Serial.println(" ...") messages. All input is through the through the
    SoftwareSerial bluetooth.serial() port using the cellphone app.

    6. We have used a regular 12V DC power supply, is this okay?
    ******
    Only if the power supply can provide enough current for the motors

    and with that my question follows as with the materials we bought different from yours, is it possible to make it happen?
    *******
    See my comments above about your motors

    we only need the grab and the release and I cannot simply edit the sketch into simpler codes to be received by the HC 06 module
    ********
    No need ... just press the "open" and "close" buttons on the cellphone app

    sorry if this seems too desperate of me but we only have a week to make this happen, maybe you could tweak it into much simpler code for the materials we have bought and the command we only need (OPEN AND CLOSE)
    ********
    You already have that ... just press the "open" and "close" buttons on the
    cellphone app ... the code doesn't need to be modified.

    Good luck with your project :)

    0
    doeeru
    doeeru

    Reply 4 months ago

    thank you for the help, I have decided to use servos instead of stepper motor then revising the codes to suit the open and close functionality.

    0
    lingib
    lingib

    Reply 4 months ago

    That should work fine :)

    0
    YvanV
    YvanV

    Question 4 months ago

    can i know the purpose of the pcb terminal block?

    0
    lingib
    lingib

    Answer 4 months ago

    The terminal block allows you to connect the flexible wires from your 12 volt DC power source to the Arduino shield.

    0
    YvanV
    YvanV

    Reply 4 months ago

    so I need to use that pcb terminal block to connect my 12V DC power supply instead using that one in the arduino itself?

    0
    lingib
    lingib

    Reply 4 months ago

    The motors MUST be connected to a 12 volt power supply capable of at least 2 amps. The terminal block is used for this purpose.

    The arduino gets its power via the USB cable.

    If you wish to run the Arduino standalone (without the USB cable to your PC) you will need a wire from the 12 volt supply to your Arduino Vin pin

    0
    lingib
    lingib

    Reply 11 months ago

    Thank you for your interest in my project :)

    The cell-phone code, "VTT.apk", is available for down load in "Step 6: Software ... Android". This code was created using MIT Appinventor 2 ... see text for details.

    The Arduino code, "VTT_voice_to_text_7.ino", is available for download in "Step 7: Software".


    1
    botinabox
    botinabox

    1 year ago

    This is excellent! And you used readily-available parts so anybody could make a bunch of these wondrous voice-controlled robo-hands for... science, of course.

    :]

    0
    lingib
    lingib

    Reply 1 year ago

    Thank you for your interest in my project :)

    Regarding your comment "so anybody could make a bundh of these wondrous voice-controlled robo-hands for... science, of course." ......

    The "attribution" for this "voice-controlled robot hand" is "Non-commercial Share Alike (by-nc-sa)" as defined below:

    "This license lets others remix, tweak, and build upon your work non-commercially, as long as they credit you and license their new creations under the identical terms. Others can download and redistribute your work just like the by-nc-nd license, but they can also translate, make remixes, and produce new stories based on your work. All new work based on yours will carry the same license, so any derivatives will also be non-commercial in nature."

    Translated, this "Voice Controlled Robot Hand and all derivatives, are free for personal use only.


    0
    botinabox
    botinabox

    Reply 1 year ago

    Oh, of course. That's a good license, and you totally deserve the credit for this amazing project.

    I guess I trying to make a joke based on the video game series Portal, where the main villain does things "for science" that really amount to little more than personal amusement on her part.

    And add to that the fact that you've so clearly documented the process, and done your best to ensure that it was easily-reproducible, so someone could, for purposes of their own enjoyment, make several of them.

    0
    lingib
    lingib

    Reply 1 year ago

    I haven't seen the video game series Portal ... thanks for the explanation :)

    0
    nearly_trainable
    nearly_trainable

    Reply 1 year ago

    Or.... to Rule the World.

    1
    botinabox
    botinabox

    Reply 1 year ago

    Well, you know... That too.

    0
    nearly_trainable
    nearly_trainable

    1 year ago

    Just brilliant! I may never make a robot hand (although there's this one spot on my back that's really hard to scratch), but I learned a lot just reading this. I like the mix of high and low tech!

    0
    lingib
    lingib

    Reply 1 year ago

    Thank you for your comment ... I'm glad you found the instructable helpful :)