uEMG - small 4-channel EMG wearable device

A 4-channel EMG wearable (with a bracelet!) to control stuff with it.

Public Chat
Similar projects worth following
uEMG is a wearable EMG device. It started out as just a device to measure muscle activity and process and display the signal on other devices, but it evolved since then into a controller/gesture recognition device that can be used to perform actions on a computer by using hand and finger movements.

The current uEMG version has been in development for about six months now. The first prototype used wet electrodes, but in this version, we switched to a conductive bracelet worn on the arm which should be much more convenient. We played music with it, moved some rectangles on a computer screen with it, redesigned the PCB twice and are currently on our third version of the bracelet - so we're probably doing well!

Operating a computer is just one possible use for this kind of device that we decided to focus on. We hope that the finished device can also serve as a development platform or a research tool for projects with EMG.

EMG is something we started from a few years ago, and it's a relatively simple signal you can measure easily - even using an ECG device with a different algo. But we ended up using several uECGs, which looked cool, but was very bulky - so we made uEMG to streamline it a bit

Early prototypes looked more or less like our Skulljack project (a contactless EEG device) - even the hexagon shape was the same! uEMG had only four channels though, and worked with wet electrodes. We planned to showcase it at MakerFaire Rome in 2019, but couldn't make it work as intended, shelved the project, and then COVID and survival mode happened. But the idea stayed with us and we managed to revive the project in early 2021.

First, we ditched the hexagon shape for a more fashionable bullet type. The four channels stayed, but instead of wet electrodes and wires we designed a custom bracelet with conductive fabric, worn on the arm, to measure and receive the signal. This required several design iterations, a lot of research into which muscles do what, actually mapping the muscles on the arm, a lot of brainstorming how the design would be worn and how it will be used, and a lot of time and effort finding a seamstress who would make our bracelet design into an actual bracelet. But as of October 2021, we think we finally have something we can use (it just needs some more changes - it's a process!).

Hardware-wise, the device is based around an MCP3912 and an AD8608 opamp for analog signal measurement, and an nRF52832 SoC for signal processing, RF and Bluetooth. This is a similar setup to uECG, only with more channels! The current version also switched to an IPEX2 antenna for better signal quality. On the analog side of things, five button connectors (four channels and one for the ground) hold the device in place and connect to conductive fabric pads using conductive thread.

All project files can be found on github:

  • 1 × nRF52832 SoC Bluetooth SoC
  • 1 × MCP3912 Generic AFE chip
  • 1 × AD8608 4-channel analog op-amp
  • 1 × micro USB Female microUSB-B connector
  • 1 × 100 mAh 302035 battery Generic rechargeable LiPo, soldered to PCB

View all 7 components

  • Launch of sales of a new EMG device - uMyo!

    Ultimate Robotics12/04/2022 at 16:12 0 comments

    Hi all! The previous log was for October 27, 2021, about a month later we froze work on uEMG for a while. But at the same time, we started a new project - uMyo!

    In order to eat the elephant, we decided to do it in pieces... uMyo is also an EMG device that reads the signals of body muscle contractions, but single-channel. After exhausting work with the uEMG bracelet, we wanted to make something as simple and affordable as possible, but at the same time quite functional.

    Therefore, uMyo is:

    • It's wireless! No more mess of wires when working with EMG
    • Works with any Arduino via nRF24 radio module (we wrote an Arduino library for that)
    • Works with ESP32 with no additional hardware (we wrote an Arduino library for that as well)
    • Multiple units (up to 12 in current version) can send data to the same Arduino/ESP32
    • Sends out detected muscle activity level, 4-bins spectrum and in nRF24 mode - also raw EMG data
    • You can use it with a bracelet and dry electrodes, or solder/attach another connector and stick them via gel - electrodes, if you need more precision

    uMyo is also already available on Tindie! But that's not all, on the project page we will post projects of various types and complexity using uMyo, which you can repeat or be inspired by! Subscribe!

    I think that work on uMyo will allow us to eventually return to work on uEMG.

  • We were able to control FreeCAD with it!

    Ultimate Robotics10/27/2021 at 13:57 0 comments

    We got a significant progress with signal recognition over past several days - and compiled it all in a single video. It's easier to show than to explain :)

  • Interpreting EMG signals was harder than we initially anticipated

    Olya Gry10/24/2021 at 21:06 0 comments

    Simple methods - from thresholding on individual channel to neural network processing raw input data to PCA calculated over high part of the spectrum - failed miserably, providing like 60% recognition rate on humble 4 gestures set. It became clear that something more sophisticated is necessary - but we desperately wanted to keep required calculations at minimum (so that in the worst case one core of a weak laptop could handle it, and ideally simple enough to place it on-board).

    After some trials, we ended with an unusual method of visualizing data. We have 4 channels, and on each channel most EMG information is located in 2 upper bins of 8-point FFT calculated on-board. So we have 8 numbers, two for each channel. Representing each channel as a point on XY plane was obvious - and for more intuitive representation, we added offsets to them so when signal is zero, they form a perfect square.

    At this point it became interesting. With right scaling, different combinations of muscle activity both shifted this square as a whole, and deformed it - in quite distinct ways. Looking at those shapes, it became immediately obvious which gestures can be recognized and which look the same and no matter how complex machine learning would be applied, results still won't be great.
    But this was only the first step.

    After some more experiments, we decided to apply k-means clustering to these data. Creating proper distance functions took some time (euclidean distance led to unsatisfactory results - our goal was to separate clusters by shapes, not by signal amplitude), but a combination of angle differences and center distance produced really good clusters.

    This was a big step forward - but on top of it, we added signal renormalization using mean and standard deviation calculated over all currently detected clusters. That approach extracts really a lot of information and gives its immediate visual representation, which you can see on this video (9 clusters are shown on the right, and current signal on the left in purple, with green square drawn to provide a visual reference).

    Adding MLP on top of that processing gave much, much better results - but more on that later!

  • Controlling PC with uEMG

    Olya Gry10/18/2021 at 13:48 0 comments

    Our main goal with this device is to control stuff with muscle signals. And this is the first step! In-built IMU is used to control mouse cursor, and various combinations of muscles generate mouse click, scroll up and scroll down events.

    Squeezing 4th and 5th fingers together results in mouse click, thumbs up results in scrolling up, and for scrolling down we used some less obvious combination of 2nd and 3rd fingers squeezing.

    What is interesting - fingers motions that are easy to describe are not so convenient for processing, and in fact not that convenient for performing. We take individual finger motions for granted, that's what we learned in early childhood - but in order to achieve it, our motor cortex performs a complex activation pattern of multiple muscles which is not only hard to recognize from activity pattern, but it's also not the simplest way of utilizing available muscles! With some - quite brief - training, strange muscle patterns that produce hard to describe finger motions are in fact easier to perform and much easier to recognize. 

    We just started exploring those patterns - but it seems to be a totally new way of interaction. Instead of gestures that are visually distinct, we are going to use gestures that are _electrically_ distinct, even though describing or showing them is not that easy.

  • uEMG learning process

    Olya Gry10/07/2021 at 00:25 0 comments

    As uEMG was developed, it became clear that training a neural network for gesture recognition is necessary not only for the development of the device, but also for future users. That is, the idea came up to make a multilevel teaching process, where not only uEMG will learn to recognize your movements, but you will also learn to use the bracelet. 

    Because our device is like an alternative joystick / mouse / controller, which has its own specifics of use. In order to make that work, user experience at the beginning should be interesting.

    We shot a short video where Dmitry learns to control the square, and the program learns to understand what Dmitry wants from her with one gesture or another)

  • Evolution of the uEMG bracelet

    Olya Gry10/04/2021 at 19:12 0 comments

    We started thinking about the design of the bracelet at the end of 2020, but the first prototype for proof-of-concept was made on January 8, 2021. We took the most basic materials - conductive thread and tape, metal sew-on buttons and two ties. This is how smart textiles formed the basis of the future bracelet.

    And already on March 3, to help develop the design of the bracelet, we found a seamstress. For the first prototype, she suggested trying a new material for us - EVA. On May 8, we received the first samples. They looked unusual and very promising. We finalized the specification and on May 30 the seamstress sent us two more samples. The form was interesting, but did not fully meet our expectations. Also, using EVA didn't seem like a good idea anymore.

    In the summer, we started thinking again. We broke off cooperation with the seamstress and tried to think over the design and functionality of the bracelet ourselves. And we started with the materials. On June 21, we ourselves sewed a sample from a 3D mesh and a sports mesh. The prototype looked interesting, but lacked design. And on June 25, we found a solution - we tried to duplicate the conductive zones from the lower part in the upper part of the bracelet. It looked unusual in terms of design and functional to use.

    Already on June 29, we again began to look for a seamstress to sew an already thought out idea. This time we wrote to 18 seamstresses, of which only 2 agreed. And already on July 15 we got a professionally sewn prototype of the bracelet. Which, after several weeks of testing, showed several shortcomings that needed to be eliminated. Therefore, we spent several more weeks working on a new bracelet design. We have changed the way of attaching the bracelet to the wrist, optimized the way of sewing, as well as the way of attaching uEMG.

    And on September 20 we received new samples! And now we can finally continue working on uEMG signal recognition. During this year we have been working on the device from time to time. But most of the development is possible only with a full-fledged bracelet, because the quality of the signal, as well as the zone for retrieval of this signal, depends on its design. Therefore, the bracelet became larger and larger with each iteration.

    Although right now, when I'm writing this post, we already have more ideas for improving the bracelet which we'll try very soon. And meanwhile you can see some of our evolution in this short video:

  • Packaging design uEMG Part Two

    Olya Gry04/06/2021 at 10:41 0 comments

    Here are the four uEMG packaging design sketches. Which one do you think is the best? Write please!

  • Packaging design uEMG Part One

    Olya Gry04/05/2021 at 10:30 0 comments

    It so happened that among the logs of our uECG project there is no information about the process of creating packaging design. Perhaps we did not find this topic "technical" enough or simply did not have the time/effort. But after going through this process with one device, we realized how complicated, important and time-consuming it is. Therefore, as we worked on the uEMG board and bracelet, we also started working on the box design.

    This process is constant. You think about design all the time, to one degree or another, and then a week, a month or two later, it suddenly dawns on you and you draw several illustrations. For about two months we were in this relaxed state of thinking. And suddenly, in January of this year, I drew four sketches. And only at the end of March I was able to transfer these sketches to paper "sleeves" in order to try them on the boxes.

    In addition to thinking about package design for uEMG specifically, I also wanted to leave some kind of general visual concept for all of our devices - both existing and future ones. We call them uDevices. So I decided to keep the title and side text from uECG packaging and draw the rest for uEMG. I used an illustration of four channels of EMG signals and the muscles themselves. In uECG, the signal itself was important - its image is primary and easy to read, and the signal source itself can be confusing to draw: for example, drawing of a heart with the signal might be mistaken for a heart implant. But in uEMG, the muscles themselves are more likely to be the primary image, and then the signal which can be obtained from them. Even during the creation of the device itself, there was a separate process for optimal placement of electrodes on the muscles.

    What came of this - we will find out in the next log!

  • Second uEMG bracelet prototype

    Olya Gry04/01/2021 at 10:43 0 comments

    For the second prototype of the uEMG bracelet, we decided to use the most promising fasteners (Velcro straps). I bought a number of bike straps for different bicycle sizes (they fit functionally and were stiff enough).

    Side note: early in the process of creating the prototype, we brainstormed the problem of bracelet connection wear. The original idea was to sew uEMG to the bracelet with a conductive thread. But there was a risk that during operation, the thread could eventually fray at the connection between the PCB and the fabric and break. Also this design was not suitable for washing. It was necessary to come up with a removable design. 

    To do this, I bought several of the smallest sewing snap buttons to use with the bike straps - first to test their conductivity. Later I found buttons of even smaller diameter, which Dmitry soldered to the uEMG board, and I sewed the other half to the bracelet. This was quite problematic, since the fabric was very dense. But after a few finger pricks snap buttons and the conductive zones were ready!

    We attached uEMG to the bracelet and the moment of truth has arrived. First tests showed good results. We can work with this! 

    But now we can move on to the next stage: look for a good seamstress (or a seamster) and the development of a third - hopefully final - prototype. And then we can sew the first batch of EMG bracelets!

  • First bracelet prototype for uEMG

    Olya Gry03/26/2021 at 13:34 0 comments

    Designing PCBs is interesting, but testing the materials for the EMG bracelet turned out to be no less interesting.

    After googling similar devices and brainstorming all possible types of electrodes and connections, we decided to use a different approach - conductive fabrics, also known as “smart textiles”. We have been thinking about them for a long time and now decided to finally put them in practice. 

    As soon as the New Year holiday hassle died down, I ordered all the necessary materials and moved on to the tests. The materials consisted of an elastic band, double-sided Velcro, conductive fabric tape, conductive thread, a needle and several metal buttons. While I waited for them, I sketched and cut out a paper mockup of the board.

    I filmed the whole process, but since it lasted about an hour, I made a one-minute version.  

    In short: I sewed the Velcro to the elastic band, glued conductive tape in the desired zones to serve as electrodes, and secured the zones with conductive thread that connected them to the button. Then I attached our uECG device to the buttons to check if there was a signal.  And… there indeed was a signal!

    So we have successfully tested smart textiles - in the form of conductive fabric and thread - and embedded electrodes in a bracelet for uEMG! The next step is to make a fully working bracelet and test the signal on a new board...

View all 12 project logs

Enjoy this project?



Dan Maloney wrote 10/07/2019 at 16:06 point

This is for input only, right? IOW, not for stimulating muscles but for getting data from muscle contractions. Correct?

  Are you sure? yes | no

the_3d6 wrote 10/14/2019 at 20:38 point

Yes, it is 4-channel system that sends raw data via radio link to PC - will fill details soon. For stimulating there will be another project, we made an experimental board that even worked :) but it isn't ready for publishing - need to change it a lot (our goal was to get pulse width control in microseconds and ability to use forward and backward current - but we mostly failed, got only semi-square pulses of single polarity with several milliseconds precision)

  Are you sure? yes | no

Similar Projects

Does this project spark your interest?

Become a member to follow this project and never miss any updates