Now control the prosthetic hands using your brain power. Imagine operating hundreds of prosthetic body parts with your thoughts. Isn’t it amazing?”
Sometimes while multitasking, you wish you had more than one hands attached to your body, which you can control using your mind just as if you were controlling your natural hands. But given that it’s unrealistic and only sci-fi, you would have rejected the idea straight away. What if I told you that such a machine could actually be built. With the help of brain waves, you can control any prosthetic or robotic hand. By adding pneumatic actuators, you can provide extra power for lifting heavy loads without pressing any buttons. All you need is mental strength.
Thanks to artificial intelligence, the possibilities don’t end here. You can apply it in different other dimensions and explore more. This all looks very cool. You will be eager to know more. So without further ado, let’s begin the wonderful journey of building this project by gathering the following materials.
bill of materials
Optional: – Audio bonnet for servo contact steering and control.
Prosthetic hand assembly
There are many open source artificial body parts available in the market. If you don’t want to buy it, you can 3D print it at home instead. Here, I’m using a robotic arm made by InMoov. The complete prosthetic/robotic hand after assembling the required parts including servo motors and fingers looks as shown below.
To read mind waves, the EEG sensor must be connected to the Raspberry Pi. To further handle these signals, a Python module is required. Therefore, install the NeuroPy library that can connect to the EEG sensor and get the measured value. Since the data obtained must also be streamed via Bluetooth, you need a pyserial library that will enable EEG data to be communicated via the Bluetooth serial port.
To drive the servo motors, the gpiozero library must be installed so that you can control the GPIO pins. So to install this and the above-mentioned Python modules, open a Linux terminal and run the following commands.
sudo pip3 install NeuroPy sudo pip3 install pyserial sudo pip3 instal gpiozero
You are now ready to encode. First import NeuroPy, pyserial, gpiozero and other libraries into your code. Then specify the servo min-max and PWM range values along with the Raspberry Pi’s GPIO pin number to control them.
Next, create variables to store the values of the servo motor, which will accordingly control the finger or knuckles of the robotic arm using brain waves. So start the NeuroPy connection so that your EEG sensor, i.e. NeuroSky, connects to bluetooth and establishes a connection to the serial port for the data stream.
In the next piece of code, create a while loop to get the focus level on a particular idea based on data from brain waves like Alpha, Beta, Theta, and Delta.
After doing that, create several files if Conditions for selecting a suitable servo motor connected to various joints on the prosthetic/robotic arm. For example, to move the little finger of a prosthetic hand/robot with brain signals, focus on the servo motor associated with it. When the preset threshold value present in the code is met, the servo motor will move and thus the little finger. Likewise, the same should happen with the rest of the fingers and wrist.
An algorithm for selecting finger movement using brain waves
Choosing the correct joint movement such as the movement of the wrist or fingers in a prosthetic/robotic hand using different brain waves is a bit complicated to understand. So, I did my best to explain briefly how it works.
Brain signals generally fluctuate when we try to close and open our eyes. These fluctuations lead to a spike in the brain signals that fully and correctly control the blinking of the eyes. By utilizing this height, you can select and move the desired finger joint(s) accordingly. Let’s say you want to move the little finger connected to its servo motor. To do this, blink once with your thoughts focused on moving that finger. To move the second finger, blink twice and focus. Likewise, blink depending on the number of the finger you wish to move. To put this into practice, write a piece of code to discover the appropriate height of the brain wave corresponding to each eye movement duration.
Now connect the servo motor to the Raspberry Pi. If you also (like me) use an AIY hood, use PIN_A, PIN_B, PIN_C, and PIN_D to connect the servo motors to the joints. Make sure to use the hood power pins to connect with the Raspberry Pi power and the GND pins that will supply current to the servo motors. However, if you don’t have an AIY hood, you can make the relevant changes in the code and use any of the PWM pins on the Raspberry Pi to power and control the servo motors using an external 5v to 6v power supply.
Connect the MindWave EEG sensor to the Raspberry Pi Bluetooth and then run the code. Now focus and think about moving your finger. Make sure the eye blinks in the order of the finger you chose and the eye is closed for 5 to 10 seconds before focusing on the next finger movement.