It’s one of the simplest acts most people can perform, but just wiggling your finger is a vastly complex process under the hood. Once you consciously decide to move your digit, a cascade of electrochemical reactions courses from the brain down the spinal cord and along nerves to reach the muscles fibers of the forearm, where still more reactions occur to stimulate the muscle fibers and cause them to contract, setting that finger to wiggling.
The electrical activity going on inside you while you’re moving your muscles is actually strong enough to make it to the skin, and is detectable using electromyography, or EMG. But just because a signal exists doesn’t mean it’s trivial to make use of. Teasing a usable signal from one muscle group amidst the noise from everything else going on in a human body can be a chore, but not an insurmountable one, even for the home gamer.
To make EMG a little easier, our host for this Hack Chat, hut, has been hard at work on PsyLink, a line of prototype EMG interfaces that can be used to detect muscle movements and use them to control whatever you want. In this Hack Chat, we’ll dive into EMG in general and PsyLink in particular, and find out how to put our muscles to work for something other than wiggling our fingers.
We don’t see many EMG (electromyography) projects, despite how cool the applications can be. This may be because of technical difficulties with seeing the tiny muscular electrical signals amongst the noise, it could be the difficulty of interpreting any signal you do find. Regardless, [hut] has been striving forwards with a stream of prototypes, culminating in the aptly named ‘Prototype 8’
The current prototype uses a main power board hosting an Arduino Nano 33 BLE Sense, as well as a boost converter to pump up the AAA battery to provide 5 volts for the Arduino and a selection of connected EMG amplifier units. The EMG sensor is based around the INA128 instrumentation amplifier, in a pretty straightforward configuration. The EMG samples along with data from the IMU on the Nano 33 BLE Sense, are passed along to a connected PC via Bluetooth, running the PsyLink software stack. This is based on Python, using the BLE-GATT library for BT comms, PynPut handing the PC input devices (to emit keyboard and mouse events) and tensorflow for the machine learning side of things. The idea is to use machine learning from the EMG data to associate with a specific user interface event (such as a keypress) and with a little training, be able to play games on the PC with just hand/arm gestures. IMU data are used to augment this, but in this demo, that’s not totally clear.
All hardware and software can be found on the project codeberg page, which did make us double-take as to why GnuRadio was being used, but thinking about it, it’s really good for signal processing and visualization. What a good idea!
Obviously there are many other use cases for such a EMG controlled input device, but who doesn’t want to play Mario Kart, you know, for science?
The electrical signals emitted by the human body tell us a lot about what’s going on inside. But getting those signals inside your microcontroller is not straightforward: the voltages are too small for most ADCs, and the ever-present 50 or 60 Hz mains frequency makes it hard to discern subtle changes. Over at Upside Down Labs, [Deepak Kathri] developed a universal biosensor interface called the BioAmp EXG Pill to make all this a lot easier.
Its name refers to the fact that it can be used for several different bio-electrical sensing applications: ECG, EMG, EOG and EEG, which deal with signals coming from the heart, muscles, eyes and brain, respectively. To enable such flexibility, the board has connectors for two or three electrodes, as well as solder pads to mount resistors and capacitors to adjust the gain and bandwidth. An instrumentation amplifier increases the strength of the desired signal while rejecting noise and interference.
The form factor allows easy connection to electrodes on one side and a data acquisition system on the other. Measuring just 25.4 mm long and 10 mm wide, it should be easy to integrate into any type of biosensing gizmo you can come up with. [Deepak] has made several demo setups, showing him using the Pill with an Arduino to measure his heart rate, detect eye blinks, and even control a robot arm using his own arm muscles!
The EXG Pill is an evolution of an earlier EMG-only project. We’ve seen several great ECG and EEG projects before, but is the first time we’ve seen one amplifier that can do them all.
Ever felt like what your MCU of choice misses is a way to read the electrical signals from your muscles? In that case [Deepak Khatri] over at Upside Down Labs has got your back with the BioAmp EMG Pill. Described as an affordable, open source electromyography (EMG) module, based around a TL074 quad low-noise JFET-input opamp. At just over 32×10 millimeters, it’s pretty compact as well.
The onboard opamp ensures that the weak electrical signals captured from the muscles when they move are amplified sufficiently that the ADC of any microcontroller or similar can capture the signal for further processing. Some knowledge of how to set up an EMG is required to use the module, of course, and the TL074 opamp prefers an input voltage between 7-30 V. Even so, it has all the basics onboard, and the KiCad project is freely available via the above linked GitHub project.
In addition, [Deepak] also tweeted about working on an affordable, open source active prosthetics controller (and human augmentation device), which has us very much interested in what other projects may come out of Upside Down Labs before long. After, all we’re no strangers to hacking with biosignals.
As amazing as prosthetic limbs have become, and as life-changing as they can be for the wearer, they’re still far from perfect. Prosthetic hands, for instance, often lack the precise control needed for fine tasks. That’s a problem for [Bertolt Meyer], an electronic musician with a passion for synthesizers with tiny knobs, a problem he solved by hacking his prosthetic arm to control synthesizers with his mind. (Video, embedded below.)
If that sounds overwrought, it’s not; [Bertolt]’s lower arm prosthesis is electromyographically (EMG) controlled through electrodes placed on the skin of his residual limb. In normal use, he can control the servos inside the hand simply by thinking about moving muscles. After experimenting a bit with an old hand, he discovered that the amplifiers in the prosthesis could produce a proportional control signal based on his inputs, and with a little help from synthesizer manufacturer KOMA Electronik, he came up with a circuit that can replace his hand and generate multiple control voltage channels. Plugged into any of the CV jacks on his Eurorack modular synths, he now has direct mind control of his music.
Inspired by an old Old Spice commercial, [Juliodb96] decided he too wanted to make music by flexing his muscles. An Arduino and a MyoWare sensor did the trick. However, he also tells you how to make your own sensors, if you are so inclined. You can see the instrument in action in the video below.
If you use the ready-made MyoWare sensors, this is a pretty easy project. You just respond to sensor input by playing some notes. If you decide to roll your own, you’ll have some circuit building ahead of you.
In particular, the signal conditioning for the sensors involves filtering to eliminate signals not in the 20 Hz to 300 Hz passband, several amplifiers, a rectifier, and a clipper. This requires 3 IC packages and a handful of discrete components.
Unlike the original commercial (see the second video, below), there are no moving parts for actuating actual instruments. However, that wouldn’t be hard to add with some servo motors, air pumps, and the like. This may seem frivolous, but we had to wonder if it could be used to allow musical expression for people who could not otherwise play an instrument.
[John Miller] has the perfect response next time he complains about an ache or pain and one of his friends says, “You should listen to your body!” As you can see in the video below, he already does. Using two 9V batteries and some instrumentation amplifiers, [John] built an electromyography (EMG) rig.
If you haven’t heard of EMG, think of EEG or EKG, but for muscles instead of your brain or your heart. The LT1167 amplifier is well-suited for this application and even has a data sheet showing how to create an EMG circuit. [John] also used some more garden-variety op amps and the ubiquitous LM386N chip for audio amplification.