MyoSense is a armband designed to wirelessly track and interpret muscle activity in the forearm to predict handmovements. It uses a custom designed 2.4GHz interface to transmit the signals collected by up to eight sensors to a receiver that can be read out over a standard serial interface. The armband uses dry stainless steel electrodes incorporated into the sensor modules that can pick up the electromygraphic signal generated by muscle activity. Using external adhesive electrodes that can be attached to each sensor MyoSense is also able to read out activity of bigger muscles extendig it's possible usecases to tracking movements of all extremities.
As mentioned before the MyoSense Sensor Modules use dry stainless steel electrodes to pick up the small voltages generated by muscle activity on the skin above the monitored muscle. These voltages get amplified, bandpass-filtered and rectified using analog circuitry. It should be noted that filtering includes a 50Hz mains frequence notch filter, since the body picks this noise up very strongly. After the rectification the signal gets smoothed, or averaged, by a lowpass filter stage. This results in a DC voltage level that is proportional to the strength of muscle activity. Smoothing the signal has the advantage to be able to sample it at very low frequencies, On the other hand Information that could be extracted from the frequency of the EMG śignal, like the level of muscle fatigue is lost.
The processed signal gets digitized by an Attiny85 microcontroller that in turn uses an I2C interface to send the measured voltages to the control module. A push-button on the sensor allows the user to set the I2C adress of the module, allowing up to eight sensors to be used with one control module. The modules consist of a custom design PCB, 3 stainless steel plates serving as the electrodes and a 3D-printed housing. The Kicad design files for the PCB and STL files of the housing can be found in the repository.
The control module not only is responsible for reading out the senors and transmitting the collected data via a 2.4GHz interfaceto the receiver unit described below, it also contains circuitry to charge a 250 mAh Lipo Battery and supply the requiered 3V and -3V power rails to the sensor modules. In addition it also contains a MCP2221 I2C/UART to USB interface IC enabling direct wired acces to the I2C bus through the same Micro-USB port that is used for charging. The wireless communication module used is custom designed and uses the Nordic Semi nRF24L01 2.4GHz transciever IC controlled by an Attiny85 mircrocontroller that also controlls the sensors over the I2C bus. Both the control and the sensor modules can be reprogrammed using the ICSP compatible connector that is also used to connect them with eachother.
The wireless receiver also uses the nRF24L01 transciever and Attiny85 microcontroller as the transmitter module. The microcontroller then connects to another MCP2221 USB interface IC to be able to transmit the received data to a computer over a standard serial interface. The repository also contains an UI-Program implementet in c++ using QT that allows easy access to the receiver module and visualizes the data collected. The repository also contains a python script that implements a neural network that can be used to classify different movement patterns. At the moment this functionality is not available in the GUI, but it is planned to integrate this feature.