Introduction: Tele Operated Bionic Arm

About: STEMpedia is a place bringing project-making tools at one place- kits, online courses, coding platforms, controller app and tons of free learning resources.

In this Instructable, we will make a tele operated bionic arm, which is a robotic arm similar to human hand with six degrees of freedom (five for figures and one for wrist). It is controlled with human hand using a glove which have flex sensors attached for finger feedback and IMU for wrist angle feedback.

These are the key features of the hand:

  1. A robotic hand with 6 degrees of freedom: Five for each finger controlled by strings attached to servo and wrist movement again done using a servo.
    As all the degrees of freedom are controlled using a servo, we don't need extra sensors for feedback.
  2. Flex sensors: Five flex sensors are attached to a glove. These flex sensors gives the feedback to micro-controlled which is used to controlled the bionic arm.
  3. IMU: IMU is used for getting wrist angle of the hand.
  4. Two evive (Arduino based micro-controllers) are used: One attached to the glove to get wrist angle and flex movement and other is attached to the bionic arm which controls the servos.
  5. Both evive communicate with each other using Bluetooth.
  6. Two extra degrees of freedom is given to give the bionic arm X and Z plane movement, which can further be programmed to accomplish complex task like PICK AND PLACE ROBOTS.
  7. The two extra motion is controlled using a joystick.

As now you have got a brief idea what we have done in this bionic arm, let go through each step in detail.

Step 1: Hand and Forarm

We haven't designed the whole hand and forarm ourselves. There are many designs for hand and forarm readily available on the internet. We have took one of the design from InMoov.

We have made the right hand, so these are the parts required to be 3D printed:

  • 1x Thumb
  • 1x Index
  • 1x Majeure
  • 1x Auriculaire
  • 1x Pinky
  • 1x Bolt_entretoise
  • 1x Wristlarge
  • 1x Wristsmall
  • 1x topsurface
  • 1x coverfinger
  • 1x robcap3
  • 1x robpart2
  • 1x robpart3
  • 1x robpart4
  • 1x robpart5
  • 1x rotawrist2

  • 1x rotawrist1

  • 1x rotawrist3

  • 1x WristGears

  • 1x CableHolderWrist

You can get whole assembly guide here.

Step 2: Z Axis Design

We have designed a custom part attached at the end of the forarm which has slots for bearing and lead-screw. The bearing is used to guide the arm in z axis and the movement of the axis is controlled using lead and screw mechanism. In lead screw mechanism, when the screw like shaft rotates, the nut of the lead screw converts this rotary movement to linear motion, resulting in linear motion of the arm.

The lead-screw is rotated using a stepper motor resulting in accurate movement of the robotic arm.

The Stepper Motor, shafts and lead-screw are all attached to a custom 3D printed part between which the robotic arm moves.

Step 3: X Axis Movement and Frame

As mentioned in the previous step, a second custom part was designed for holding the stepper motor and shafts. The same part also have the holes for bearing and nut used for lead screw mechanism for X - Axis movement. Stepper motor and shaft support are mounted on a aluminum frame made with 20mm x 20mm t-slot aluminium extrusions.

The mechanical aspect of the project is done, now lets look are electronics part.

Step 4: Running the Stepper Motor: A4988 Driver Circuit Diagram

We are using evive as our micro-controller to control our servos and motors. These are the components required to control the stepper motor using a joystick:

  • XY Joystick
  • Jumper Wires
  • A4988 Motor Driver
  • A battery (12V)

Shown above is the circuit diagram.

Step 5: Stepper Motor Code

We are using BasicStepperDriver library to control stepper motor with evive. The code is simple:

  • If X-axis potentiometer reading is greater than 800 (analog read 10-bits), move the gripper up.
  • If X-axis potentiometer reading is less than 200 (analog read 10-bits), move the gripper down.

  • If Y-axis potentiometer reading is greater than 800 (analog read 10-bits), move the gripper towards left.

  • If Y-axis potentiometer reading is less than 200 (analog read 10-bits), move the gripper towards right.

The code is given below.

Step 6: Flex Sensors

This flex sensor is a variable resistor. The resistance of the flex sensor increases as the body of the component bends. We have used five 4.5" long flex sensors for finger movement.

The simplest way to incorporate this sensor into our project was by using it in as voltage divider. This circuit requires one resistor. We’ll use a 47kΩ resistor in this example.

The flex sensors are attached to analog pin A0-A4 on evive.

Given above is one of the potential divider circuit with evive.

Step 7: Calibrating Flex Sensor

The range of value we get at the analog pin of evive from the flex sensor varied for each sensor. Hence we have to note down the range for each sensor.

By using evive Pin State monitor, it was very easy to get the value at different angle.

Pin State Monitor shows the state all the digital and analog pins of evive. It shows output as high or low for digital pins and analog value for analog pins. The pins are displayed in tabular form on the evive screen.

Shown above is an example where we are monitoring the joystick value on analog pin A0 and A1.

Step 8: Stitching the Flex Sensors on Glove

Now we have to stitch the flex sensors on the glove. We choose a woolen glove. First we put the glove on the hand so that flex sensors can be attached to the glove easily. we have stitched the sensor using thread and masking tape. Using jumper wire we extended the terminals of the sensor.

Step 9: IMU

To sense the wrist angle we have used MPU-6050 sensor.

MPU-6050 sensor contains a MEMS accelerometer and a MEMS gyro in a single chip. It is very accurate, as it contains 16-bits analog to digital conversion hardware for each channel. Therefor it captures the x, y, and z channel at the same time. The sensor uses the I2C-bus to interface with the Arduino.

Shown above is the circuit diagram for integrating IMU6050 sensor with evive.

We are using MPU6050 Arduino Library for getting data from the sensor data.

The sensor is attached on the glove using masking tape.

Step 10: Bluetooth Master Slave Configuration

As told earlier, there are two evive communicating using two Bluetooth. For the communication, one Bluetooth have to be set as Master and one as Slave.

In order to do configure the Bluetooth, we need to switch to AT Command Mode. First we need connect the Bluetooth module to the evive as the circuit shown above. There is a dedicated slot for the Bluetooth module, just plug one of the Bluetooth module. Remember to press the switch on the module while putting it evive for 3-5 seconds, such that the blinking of evive is slowed. The communication is done via serial port 3 of evive.

Given below is the code for communication with HC05.

Slave Configuration

Open Serial Monitor, set the baud rate to 115200 and mode to Both NL & CR. Now type the following commands:

  • AT: Received OK
  • AT+UART?: Received the baud rate. Set it to 38400 if anything else
  • AT+UART=38400,0,0: Change baud rate to 38400
  • AT+Role=0: Set the role to slave
  • AT+ADDR?: Received Bluetooth module address

Now we need to write down this address as we will need it when configuring the master device.

Master Configuration

Ok now let’s move on and configure the other Bluetooth module as a master device. First we will check the baud rate to make sure it’s the same 38400 as the slave device.

Follow the commands:

  • AT: Received OK
  • AT+UART?: Received the baud rate. Set it to 38400 if anything else
  • AT+UART=38400,0,0: Change baud rate to 38400
  • AT+Role=1: Set the role to master
  • AT+CMODE=0
  • AT+BIND=PREVIOUS ADDRESS

Step 11: Final Code for Glove

After integrating all the sensors on the evive and the slave Bluetooth, we will now make the code which will send the status to the other evive.

We have used digital mode, by that we mean we have set a threshold for each flex sensor. If the value is less than that the finger should be open and if it is more than that, the finger will be closed.

Given below is the final code.

Step 12: Code for Arm and Stepper Motor

The evive controlling the arm have the master Bluetooth module and receives the commands from the other evive and decode it.

Servos are attached to the PWM pins of evive. Final circuit diagram is shown above.

Given below is the final code for master device.

Step 13: Conclusion

The final result was fantastic. We were able to control the bionic arm using a glove.

What is evive?
evive is a one-stop electronics prototyping platform for all age groups to help them learn, build, debug their robotics, embedded and other projects. With an Arduino Mega at it's heart, evive offers a unique menu-based visual interface which removes the need to re-program the Arduino repeatedly. evive offers the world of IoT, with power supplies, sensory and actuators support in one small portable unit.

In short, it helps you build projects/prototypes quickly and easily.

To explore more, visit here.

Wireless Contest

Participated in the
Wireless Contest

Make It Move Contest 2017

Participated in the
Make It Move Contest 2017