What if you had an extra pair of hands to carry out tasks somewhere else while you controlled them from another location wirelessly. Seems unrealistic, right? But it’s possible.
This project describes how to design a prosthetic hand that can replicate natural hand movements and muscle contractions. Although artificial, it works like a biological hand by following the muscle signals.To achieve this, the muscle contraction and stress values are captured and then through muscle signals used to wirelessly control the prosthetic arm located somewhere else. The project can be developed further to help the physically challenged and also to grip objects lying in places where you do not want to dirty your own hands.
There are various open source prosthetic body parts available in the market. You can also 3D print them at home. In this project, the InMoov robotic arm has been used. After getting the required parts comprising fingers and servo, assemble the prosthetic hand as shown in the figures.
Fig. 1: Inside view of the prosthetic arm
Fig. 2: The prosthetic arm with servo move mechanism
Fig. 3: Outside view of the prosthetic arm
Fig. 4: The prosthetic hand
We need to make two devices—a prosthetic hand data transmitter and a prosthetic hand data receiver with servo move mechanism. For each of them we need to create separate codes.
The code for transmitter is required for EMG data transmission to the prosthetic hand. For that we first define the pin numbers for the sensor and variables to store the EMG sensor data. Then we create a setup function where the baud rate is set for the Bluetooth and serial port communication.
Fig. 5: Transmitter code1
Fig. 6: Transmitter code for updating value from EMG sensor
Fig. 7: Connection for the receiver
Fig. 8: Receiver code loop function
The Arduino Pro Micro offers two hardware serial ports—one for USB and the other for receiver and transmitter pins. Use Serial1 for Bluetooth communication by setting its baud rate to 9600, which is the default for Bluetooth HC-05. Then create a loop function (see Fig. 6) for sending updated EMG sensor values to the Bluetooth in a regular interval of time.
For receiver, include the servo library servo.h in the code to control it. Then create a setup function to set the pin number for connecting the PWM signal wire of servo to control it.
Arduino Pro Micro has several PWM pins; we will use pin number 9 for servo PWM control. Start the serial to read the transmitter device value and then create a loop function to get the EMG sensor value over serial. Apply the EMG value to the servo degree rotation range, which is 0 degree to 180 degrees for servo and has values 60 to 800 for the EMG sensor.
Write the mapped value to the servo move position to move the prosthetic hand finger as per signals generated from muscle movement.
Connect the components for both transmitter and receiver as shown in Fig. 10 and Fig. 9, respectively. For the EMG transmitter circuit, you need to add the Bluetooth module in the receiver circuit as well.
Fig. 9: Receiver circuit connections
Fig. 10: Transmitter circuit connections
Please note, you need to configure both the Bluetooth modules for them to pair with each other and transmit/receive data accordingly. To do that, you can follow the instructions available online for setting up master and slave mode of HC05.
Fig. 11: Electrodes connection for EMG
To test, attach all fingers to the servo pulley for the prosthetic arm and power the transmitter and receiver-cum-controller for the prosthetic arm. Attach the electrodes to your controlling arm as shown in Fig. 11. The prosthetic arm will mimic your hand’s finger movements whenever you close and open your palm.
Congrats! You have just made an extra hand, which can be controlled wirelessly.
Ashwini Kumar Sinha is a technology enthusiast at EFY
This article was transferred from EFY Magazine February 2022 issue. Also, this was first published online, you can also read the 1st draft here.