uMyo - wearable EMG device with wet/dry electrodes

single channel open source hardware wireless EMG device, used with a bracelet or stuck to skin directly

Public Chat
Similar projects worth following
Starting from
ultimaterobotics has 163 orders / 3reviews
Ships from Ukraine
uMyo is a single channel wearable muscle sensor with wireless data transmission. uMyo was created as a lightweight, inexpensive version of our 4-channel uEMG.

The main advantages of this device are:

- 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

If you have any questions regarding our device or your project with it, then feel free to write to us on Discord

The project was started spontaneously in November 2021 - it was more of an idea that was interesting to implement. But from January to February we had no time to work on it, and then the war began in Ukraine... And only in May we returned back to this project and decided to finalize it.

Initially, we did not think much about the way it will be attached to a hand, so we used 6mm textile button connectors but they were rather useless without some matching fabric electrodes. Yet at the same time they inspired us to try dry metal contact - an option that never worked well enough before so we didn’t consider it here initially. Also, the design of the board had several mistakes and missed an important property of the front-end amplifier we used there, and fixing that involved quite extreme soldering with 3 SMD components forming a filtering network not present in design.

In this design we decided to drop external ADC and use nRF52 in-built ADC - which turned out to be not that bad, but only after proper signal amplification. We added AD8293 fixed-gain zero-drift input amplifier, seduced by its low price - although its input properties are far from stellar, so we weren’t sure if it would work well enough. Turns out, it works, more or less - but tends to saturate the signal to upper or lower rail due to its high bias current. Well, you should fight fire with fire - we added a heavily filtered PWM with 10M resistor that adds bias current on itself - and PWM width is dynamically adjusted to keep the amplifier’s output between the rails. That sounds quite fishy - but the result is not only usable, it turns out to be quite good!

Now, in parallel with the firmware, we are working on changing the design of the board and purchasing the necessary additional elements. Therefore, follow the logs - it will be interesting soon!

  • New light patterns for LED clothes

    Olya Gry12/16/2022 at 15:50 0 comments

    We decided all the same to use more muscle control capabilities with the help of uMyo.

    The code and control details can be found here:

    And here is the result:

  • LED clothes controlled by uMyo

    Olya Gry11/30/2022 at 13:31 0 comments

    When we started making uMyo, one of the concepts was relative ease of use, for a wider range of possibilities. Because EMG is often perceived as something medical, prostheses, rehabilitation. We wanted to add more variety and application possibilities for our future devices. 

    Toward the end of development, we began to try to create small projects to demonstrate the possibilities of muscle control. One of the unexpected directions was this project - smart clothes. The idea of   the project is to change the LED patterns that are right on your clothes with the help of hand movements! 

    The implementation is very simple, it is described in more detail here

    And here is the result: 

    In the future, I want to expand the functionality of movements and use triangles. So stay tuned for updates!

  • uMyo is officially on sale

    Ultimate Robotics11/26/2022 at 08:13 0 comments

    We have launched uMyo sales! 

    It actually happened a few days ago - we submitted the product on Tindie, it got approved, we started writing posts about sales launch, first orders started coming in... and then we got hit with massive air strikes targeting infrastructure, which caused country-wide blackouts. You probably already read about that in the news. 

    Because of that, we didn't have internet (or stuff like running water for some time, although it came back after a day or so). But electricity was harder to restore, mostly because this time nuclear plants turned off and needed some effort to bring them back on. They produce a lot of energy, a major chunk of the total power supply in Ukraine. It also didn't help that russians stole all solar panels and equipment from our Tokmak solar power plant in the south... Why can't they ever buy their own stuff? Eventually power came back for a few hours a day for some of the city areas, but a part of our team didn't have electricity for exactly 61 hours and 16 minutes... During this time, they were mostly only able to charge devices in the city and check the restoration effort updates when the mobile networks were not overloaded.

    Blackout looks like this. This is taken at rush hour at a busy intersection near several large shopping malls.

    Anyway, the light came back a few hours ago, so we're writing this project log. 

    We're very happy to finally launch uMyo. It's the first batch, and there will be more versions and updates in the future, but it's finally tangible and available for everybody to use in their EMG projects. 

    You can check it out and buy here in our Tindie shop

    We'll be shipping the first orders soon - most probably by Monday. We'll also update the instructions so you can have more details about uMyo and how to use it. The power will probably come on and off, so we'll be working around that.

    Most of all, we're very excited to get the first uMyos to our buyers, get feedback - and start working on new features and updates! (and, of course, bugfixes :)

  • The fifth challenge is disposable electrodes

    Olya Gry11/10/2022 at 20:31 0 comments

    According to our observations, existing EMG sensors often use disposable electrodes to receive a signal. We initially began to look for an alternative to them, and as you can see from past logs, we found it.  

    But when we already debugged uMyo using dry connectors, it became interesting what kind of signal quality a gel electrode would give for comparison. And while we were looking for a way to check this, the idea came to make the possibility of a combined use, a kind of device with a hybrid attachment method. Because gel electrodes are still the classic way to receive a signal and perhaps some people will want to use it, and not the dry ones.  

    To begin with, we had a hard time finding metal buttons of the right diameter for the 3.9 mm connector of standard medical electrodes. After, we tried to solder them to uMyo. It turned out to be easier than soldering the connectors to the uECG... 

    Also, the distance between the connectors on the board is about 34 mm, so the diameter of the electrodes should be no more than 30 mm.  It wasn't easy, but we found 20x20mm square baby electrodes and used them for testing.  

    Then we tested them - basically just attaching it to a hand over a particular muscle. Results turned out to be great - it was practically immune to noise and able to pick signal from a muscle that controls particular finger, while other fingers movement produced barely visible response.

    Let's summarize - uMyo can now be used in two ways, depending on the required signal quality. Dry electrodes are quite suitable for all purposes - yet when high precision is necessary gel electrodes outperforms them, to the point that they can be used on muscles not functioning properly like in rehabilitation.

  • The fourth challenge is the design of the bracelet vol 2

    Olya Gry11/06/2022 at 21:35 0 comments

    Initially, the conceptual design of uMyo, as a device, was in a simple modular assembly, not only for the user, but also for us. Therefore, I wanted to find existing bracelets - if there are chest belts for pulse trackers, maybe there is something for our case too.

    After a long search, it turned out that wrist bracelets for fitness trackers also exist! They are used for a certain category of devices, but the very concept of fastening was also suitable for uMyo. Yet in order to check how well these bracelets actually fit our case, we had to wait for their delivery for about a month ...

    Therefore, I made the first prototypes of bracelets from the previous log, for testing and improving the firmware. In any case, the bracelets we were waiting for would be either hit or miss so it couldn't be out only plan.

    When we had already forgotten about these bracelets and were thinking about finding a seamstress, we received a notification about the delivery of the package. We had the bracelets and... they exceeded our expectations! Their texture, design, functionality suited us perfectly!

    But in order to decide on the right variant, we ordered another batch of different sizes and colors.

    After the whole team tried on bracelets for different hand sizes we chose the optimal lengths, and selected colors that suited our PCBs.

    In the meantime, the prototype boards of the second version arrived. The black "cocoon" of uMyo's first prototype has turned into a beautiful orange butterfly!

    And the first tests of the new board and bracelet can be seen on the video!

  • The third challenge is board design 

    Olya Gry11/03/2022 at 18:48 0 comments

    As I said in the first project log - to mount the first uMyo prototype, we printed the case on a 3D printer. But it was a temporary solution... 

    We had to come up with a bracelet connected directly to the board, otherwise the uMyo manufacturing process would become unnecessarily complicated. Therefore, we had to change the design of the board... 

    To find the ideal shape, I drew several sketches... 

    Dmytro implemented one of them in the form of a new board design. uMyo looks like a butterfly now, but will it be durable and functional enough to use?  

    This we had to find out after the production of a trial batch. But not only that!

  • The second challenge is a bracelet

    Olya Gry10/30/2022 at 23:17 0 comments

    It would seem that this is a simple task - just attaching a device, with the ability to adjust depending on the diameter of the hand, a minimalistic design. But while developing uEMG for a whole year, we already knew some nuances... 

    First, it is not so easy to find fitting textile solutions, especially among rubber bands and velcro. Some elastic bands are quite thin and stretch and lose their shape quickly enough. Velcro is often quite rough and sticks very tightly, which is good for semi-permanent fixation, but bad for our case.  

    Second, the diameter of people's hands can vary greatly and it is very difficult to make a universal bracelet. More precisely, you can cover 70% of medium and large hands with one size, but 30% of small hands cannot be covered with the same bracelet length. Therefore, it was necessary to determine two lengths of the bracelet.  

    Third, it seems that with a minimalistic design it should be easier, because you don’t have to invent a lot. But in fact, to make a simple practical bracelet that will perform its functions well and be wear-resistant... More precisely, for textile designers it is possible and simple, but for us, who do not have experience in this area, it is not easy) 

    Well, every journey begins with one small step. uMyo needed a wristband for testing! So for experiments I bought samples of elastic bands and velcro, which were available in Ukraine. 

    Due to the russian attack on Ukraine, in many areas, including electronic components and textiles, the assortment has significantly decreased, because some stores stopped working, people began to order less, and shipment to Ukraine took longer than before.  

    From what I had, I sewed three bracelets of different lengths, with different types of velcro. Which made it possible to start testing uMyo and determine the minimum dimensions.  

    But, as you remember, we would like to make uMyo a very simple device and finding a seamstress, purchasing materials for a bracelet, several iterations to the ideal option, serial sewing of bracelets in different colors, sizes, did not make the device simple and inexpensive... Therefore, this was the plan B. What was the plan A? I'll tell you in the following logs! 

    The next log will be about board design.

  • Challenge One - Dry Electrodes

    Ultimate Robotics10/28/2022 at 20:45 0 comments

    First of all, we began to solve the problem with dry contact.  

    After uECG, and in general researching the market for EMG sensors, I wanted to avoid using disposable electrodes. In addition to being environmentally friendly and economical, disposable electrodes are not a practical solution, every time you use the device you need new ones and if they suddenly run out, then you simply cannot do things.  

    But what's the way out? The first thing we thought about was practicality. It was necessary to find a solution that would not use soldering, preferably a removable design. Detachable structure... 

    Having a construction background, I got the idea that it could be some kind of bolt! Googling the existing options, I found what is called a connecting or belt bolt, or a binding screw. These bolts are used in construction, textile fittings and stationery. Despite the prevalence, a 2-3 mm high bolt was not so easy to find. After checking several dozen online stores, I was able to find belt screws with a height of 5 mm (and available in single quantity, which was not that easy to find!)  

    But this was only half the solution - which provided a smooth surface with a diameter of 8 mm for picking up the EMG signal. The design of the board was very compact with only 5mm of room on the side of the components. Therefore, we decided to replace the bolt component with ordinary screws, slightly longer to compensate for the height of the board. And what came of it?  

    Testing showed a fairly good signal, plus the height of the belt bolt made it possible to level out skin changes during muscle contraction (as disposable electrodes do).  

    Here is a simple solution to a difficult problem. The next task was to attach the device to the arm.

  • Shall we begin?

    Ultimate Robotics10/24/2022 at 16:34 0 comments

    The absence of logs here does not mean the absence of work on the project! It's time to synchronize current events.

    As you learned from the "details" section, the first uMyo prototype turned out to be quite controversial.

    From the positive points:

    - the printed circuit board turned out to be quite small (46x18 mm)
    - after a little debugging, we were able to work on the firmware
    - by testing dry connectors (which we originally planned), we were able to expand the ways to receive an EMG signal
    - we even printed the case to make it easier to attach to hand

    Of the not-so-positive ones:

    - although the debug was successful, the fix was hard to make - It was necessary to solder three SMD components with no pads for them, all in one place...
    - as the optimal connectors were chosen, it became clear that the hole for the connectors needed to be expanded, which required changing the location of some tracks and components
    - we printed a case for uMyo, but the idea was to create the simplest EMG sensor in the hardware part and give more functionality in the firmware part. Therefore, we had to think about how to implement the uMyo attachment to the hand using only a printed circuit board...

    So that's what we did in May.

    Next, you will learn how we solved the problems of connectors, board design, mounting methods, and also learn more about the functionality.

View all 9 project logs

  • 1
    Getting started with uMyo

    uMyo is a fairly versatile device, so we designed it so that some users do not spend money on additional components or can purchase them in any online store (or local) if necessary.

    We have created a Discord Chat for additional support or feedback, join us!

    What components are we talking about?

    1. Battery. You can solder any lipo battery to uMyo, but you can also plug in any battery with a 2-pin 2mm JST-PH connector. Links to some suitable batteries are below: - this one is from Adafruit and can be ordered quickly if you're in the US. - this one is from AliExpress and will take more time to arrive if you order. There are several options: you need the '2 line 2mm' option. If you order, make sure the red and black wires match the + and - of the JST connector on uMyo.

    2. Arduino: uMyo can be used with any Arduino via nRF24 radio module.

    3. ESP32: uMyo can be used directly with ESP32 BLE radio, with no additional hardware required

    If you still have questions, feel free to email us

  • 2
    Power on/off

    1. Before turning on, you need to attach the battery to the uMyo:

    • You can use a battery with a JST connector cable (links to suitable ones can be found above);
    • You can also solder any lipo battery directly to BAT+ and BAT- pads on uMyo;
    • Always use only one battery for all connected uMyo devices;
    • After plugging the battery, it's ready for use;
    • Charging the battery: you can plug a USB-C cable into any uMyo connected to the battery to charge it, even if it's one of several uMyos connected together.

    2. Press button to turn uMyo on;

    3. You should see several LED blinks: - red-red-green, blue, then it will blink 3 times indicating current radio mode:

    • pink - nRF24 mode
    • blue - BLE mode
    • green - PC station mode

    4. Turning off: hold button for more than 2 seconds. LED will switch from blue to red, release the button -> uMyo stays off.

    See video instruction for more details:

  • 3
    Using uMyo with bracelet and dry connectors

    1. First you need to attach dry connectors to uMyo. The board has two holes for attaching connectors (see the figure above) - a cross-shaped screw is inserted on the side of the components, and a bolt with a flat head is screwed into it on the back side, flat surface contacts the skin.

    2. Pass through the "ear" (see picture above) one end of the bracelet and fix it with Velcro. Pass the second edge of the bracelet through the second "ear".

    3. Put the bracelet in this form on your hand and find the necessary muscle position by alternately squeezing your fingers or fist.

    4. After determining the required active muscle, place the uMyo connectors on it and tighten the bracelet so that it sits tightly, fix the selected position with Velcro (which is located on the second end of the bracelet).

    5. After placing it is necessary to check whether the position is optimal by repeated contraction of the selected muscle. The Muscle Activity LED (see picture above) should glow brighter with each contraction. This way you will know that the device captures your movements.

    See video instruction for more details:

View all 8 instructions

Enjoy this project?



msuicc wrote 01/08/2023 at 17:20 point

It looks like this device doesn't have a ground electrode. Is it not neccessary?

  Are you sure? yes | no

Ultimate Robotics wrote 01/08/2023 at 20:02 point

Yes, it doesn't - it's much simpler to get clean signal with ground electrode, but it also makes it much more inconvenient to wear. So we put some effort into it and got clean enough results without ground electrode (there is very high 50/60 Hz noise on the ADC input, but it can be partially filtered out, partially ignored since most relevant EMG part is in 150+ Hz area)

  Are you sure? yes | no

msuicc wrote 01/09/2023 at 12:25 point

Isn't the most relevant EMG part between 50-150 Hz? I've read that most of the signal energy is between that range so it's quite hard to deal with the power line noise.

  Are you sure? yes | no

Ultimate Robotics wrote 01/09/2023 at 12:57 point

It somewhat depends on applied effort (the higher the effort, the higher is median frequency) - but even for minimal activity there is a significant energy in 200+ Hz range. You can check this video: - I'm applying barely visible effort to 2 different fingers, and spectrogram from 2 uMyo devices produces very clear response in upper frequency bins.
Each spectrogram has 4 bins obtained from ~1100 Hz stream using 8-point FFT, so first bin represents DC component, 2nd bin - frequencies in 0-180 Hz range, 3rd in 180-360 and 4th in 360+ Hz range. When even such a small effort is applied, 3rd bin level clearly increases - and 4th bin also gets noticeable increase.

While a lot of energy is below 180 Hz, there is still enough in 180+ range - and detecting that part is much simpler due to absence of 50/60 noise and its harmonics (only 3rd+ harmonics gets there - and they are small enough)

  Are you sure? yes | no

Alan Jousting wrote 12/24/2022 at 13:20 point

Can the uMyo transmit data on more than one muscle group at different times. For example, could the uMyo transmit data on the thumb’s muscle group when the thumb is moved, and then transmit data on the ring finger’s muscle group when the ring finger is moved?

  Are you sure? yes | no

Ultimate Robotics wrote 12/27/2022 at 22:37 point

Single uMyo device is physically placed in a fixed place - so it can read only muscle group over which it is located. For such functionality you need more than one device - but data from multiple devices can be received on a single Arduino or ESP32 (they all stream in parallel, we tested up to 4 devices and there are next to no packet overlaps, and overall up to 12 should be still usable - although we hadn't tested that much yet)

  Are you sure? yes | no

James Kissel wrote 12/15/2022 at 00:53 point

7ms spectral shots appears to be the best solution.  The reading of the IMU is a very low overhead.  Is there a wired method of access of the spectral shots?  I2C preferred but I could change to SPI if required.

  Are you sure? yes | no

Ultimate Robotics wrote 12/15/2022 at 02:08 point

No, any wired connection would introduce a (relatively) huge noise, decreasing sensitivity at least 10x - or more likely 100x times, so we don't even have a wired connector there. We have ADC resolution of ~2 uV (and typical noise of ~10 uV). The only way to reach that was to make it completely isolated - it uses on-board battery and radio channel to transmit data.

In terms of programming complexity, it's very simple: we made an Arduino IDE library which handles everything - you just need to add ~10 lines of code from an included example. The only restriction is that radio handler function must be called at least once in 5 ms (preferably once per 2-3 ms) - even though it will work if it's called less often, that would definitely lead to lost packets

  Are you sure? yes | no

James Kissel wrote 12/14/2022 at 22:42 point

I need to determine in time, when a tremor signal is transmitted to one of the forearm muscles and plot that time vs the semi-sinusoidal movement of the forearm as measured by a IMU gyroscope.  The movement is the  Pronation-Supination movement of the forearm.

Any help you could provide  in regards to using the uMyo for my project would be greatly appreciated.

  Are you sure? yes | no

Ultimate Robotics wrote 12/15/2022 at 00:39 point

In fact we have a tool (initially created for uEMG development, then adapted for uMyo) which we can configure to plot (and record) exactly these data - but it's Linux only, porting it to other platforms would be unreasonably complicated. If you are willing to try it, we can make a build tailored for your task (this tool is meant to be open source as well - at the moment its code is in quite terrible state so it's not published yet, but its time will come soon)

If you will use uMyo in combination with PC base (also available on Tindie) - then it can stream full set of data (raw EMG at 1100 Hz, 7 ms spectral shots and IMU data at 140 Hz) - the main advantage here is that EMG and IMU data would be always synchronized by design.

Alternatively, you can connect uMyo to your current system via nRF24 module: it has the same data rate (but with some lost packets). ESP32 BLE mode won't work for this purpose, packet rate is only ~30 Hz there (so no raw data are sent, only spectral shots).
In this case you can plot/record high part of calculated spectrum directly. That may be simpler to implement - and if IMU processing doesn't take much time, it also will be in good sync with IMU data

  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