top of page

"Armless Interface Mouse" using Electromyography

  • Photo du rédacteur: dov azogui
    dov azogui
  • 11 oct. 2023
  • 3 min de lecture


ree

In the innovative intersection of biomedical engineering and computer interfacing, Electromyography (EMG) emerges as a transformative tool. Our project embarked on the journey to harness EMG signals from arm muscles to control a mouse, leveraging the power of modern electronics and software.



Technical Highlights:


EMG Fundamentals:

EMG measures the electrical activity produced by skeletal muscles. Our system aimed to capture these signals, particularly from the forearm and upper arm muscles, translating them into mouse movements and clicks.


Electrode Placement:

Strategically positioned on specific muscle groups, our electrodes detected muscle contractions, mapping them to named muscle groups. This allowed for precise control, from simple clicks to multi-directional mouse movements.


Circuit Evolution:

Our journey began with a rectifier circuit prototype, aiming to convert AC signals to DC for Arduino processing. However, challenges led us to adopt a more reliable single supply approach, which provided a consistent DC offset.


Instrumentation and Amplification:

Our design incorporated an instrumentation amplifier for precise signal amplification. This was crucial for detecting the minute voltage fluctuations from muscle contractions.


Filtering:

To ensure signal clarity, our circuit integrated both high-pass and low-pass filters. These filters were meticulously tuned to capture the most relevant frequency range of muscle signals.


Arduino Integration:

The heart of our system was an Arduino Leonardo, which processed the EMG signals and translated them into mouse controls. Our code was optimized for both 3 degrees of freedom (3DOF) and 5 degrees of freedom (5DOF) controls.


Testing & Results:


Crosstalk Analysis: We employed a multi-graph code to assess crosstalk between electrodes, ensuring that each muscle's activation did not inadvertently trigger another.


Threshold Calibration:

Through rigorous testing, we determined optimal thresholds for each muscle, ensuring precise and unintentional-free mouse control.


Functional Testing:

Our system underwent various tests, from simple click tests using reaction time metrics to more complex 5DOF tests. The results showcased the system's reliability and precision.


Discussion & Future Prospects:


While our EMG-based mouse control system showcased promising results, its evolution into a commercial product would require:


Safety & Ergonomics: Ensuring user comfort and safety, especially during prolonged use, would be paramount.


Software Refinement: While our current system effectively translates muscle activity into mouse movements, a dedicated software could offer more nuanced control and customization options.


User Training: A user-friendly guide or training module could help users quickly adapt to this new mode of control, ensuring a seamless experience.

In conclusion, our project illuminated the potential of EMG in revolutionizing human-computer interaction. With further development, this concept could redefine accessibility and offer a novel way for individuals to interface with technology


CODE:


Code for displaying multiple analog input graphs

• Multiple Signal Observation Code: o made by printing each analogRead offsetted by +/- 2046, +/-1023 or 0 o makes it easy to see all graphs at once, but not useful for thresholding because the axis is drastically changed and zoomed out



ree


Code for left, right and click

Only 2 electrodes to control left and right. Excess variables are present (int at start of code but not used in loops or setup) just to save time later when converting from 3DOF to 5DOF code



ree

ree

Flowchart for our 5 degrees of freedom code:



ree

Code for 5 DOF:


ree

  • We use analogRead() and store the analog values of A0, A1, A2, A3, A4. in a variable “EMGPin𝒙”

  • We define threshold values with EMG(direction) = x; which we obtained by using a simple AnalogReadSerial code

  • We used our multiple graph code to measure crosstalk by attaching electrode pairs to all the different muscles and doing each movement individually (up, down, left, right, click), seeing if there was a response in the other electrodes so that we could counter any interference with either different electrode position OR using ‘and’ statement in the threshold code.


 
 
bottom of page