A wrist wearable that applies haptic vibration to a user's wrist to dampen/diminish impacts of tremors.

Public Chat
Similar projects worth following
This project is an open-source haptic wristband inspired by the EMMA Watch.

It utilizes hobbyist electronics to build a physical device, Arduino coding to calibrate the motors and a custom machine-learning model process using Edge Impulse to train the watch to adapt vibrations applied to a users wrist to minimize tremor severity. Since every tremor patient is unique, the goal is to empower the user to use these tools to tweak their watches personal model to maximize the dampening effect of the vibrations.

1) 3D printed watch casing (PLA) and band (TPU) (for electronics and motors)
3) Arduino Nano 33 BLE Sense Rev 2
4) 3.7 V LiPo 500 mAh
5) Sparkfun LiPo boost/charging board
6) Coin Cell motors/driver boards
7) Jumper wires

1) Arduino IDE
2) Edge Impulse

DISCLAIMER: This project is in no way associated with Microsoft Research. Furthermore, there is no rigorous scientific evidence beyond anecdote that this concept is scientifically repeatable or useful. The primary current goal of this project is to develop the hardware, software and procedure necessary to test the hypothesis that haptic feedback applied to the wrist of an individual with tremors can dampen/diminish some of the impacts of Parkinsonian/Essential tremors.

A variety of approaches have been explored to help manage the impacts of neurological tremors that impact up to 1% of people worldwide (including individuals with essential and parkinsonian tremor). Invasive methods as well as pharmacological solutions show promise, but can be cost-prohibitive and not easily accessible. Mild electrical stimulation to a users arm, coupled with real-time tremor monitoring with an IMU has proven to be successful in reducing tremor severity by roughly 40%, but this requires applying electrical signals that can be uncomfortable. An approach that is similar to this but replaces electrical shock with simpe, surface haptic motor vibration (i.e. putting a tiny motor on top of a users nerves) was developed in 2017 and is commonly known as PROJECT EMMA. This was a research project that garnered great interest from the Parkinson’s community. As recently as December of 2022 the only known prototype to exist is the Emma Watch. The publically available information that exists is in the form of press releases and media coverage which suggests that there are tiny, coin cell motors inside of a watch band. These motors can be pressed against an individual’s wrist when they are experiencing a tremor. Some references in media coverage to “machine-learning” suggest there is an algorithmic process to determine a vibrational frequency pattern for these coin cell motors (as controlled by an accompanying tablet) that mitigates impacts from tremors. It appears in videos and press that while the watch doesn’t completely negate a tremor, it does allow Emma, the recipient, the ability to draw straight lines. The conceptual framework believed to be operating is that the surface vibration of the coin cell motors on the wrists “short-circuits” the brain so that it doesn’t send as strong of a correctional signal. In principle, the vibrating watch concept is not dissimilar to the commercially available TouchPoints product, which uses wrist mounted units to apply low, medium and strong vibrations as a means to mitigate stress. While no rigorous academic studies confirm their efficacy for Parkinson's patients, case studies published on the web portal for the product indicate potentially positive impacts on users. As of the initial publication of this project page (5/17/2023) there have been no published followup studies into this technology. The only formal, published research study that has been conducted into this type of intervention found that it was not effective for individuals with essential tremor. They found no clear correlation between motor vibration frequencies applied to a users arm and tremor frequencies. This finding informs the design of this work in several key ways: 1) Parkinsons and Essential tremors may have different underlying mechanisms - perhaps something is unique in Parkinsonian tremor that makes surface haptics more effective 2) longer term vibration patterns yield different results than shorter term - a device that is simple to use for long periods of time will allow for gathering more data in real-life situations 3) tremor severity may be impacted by anxiety and conditions of testing within a lab environment - a device that is unobtrusive and usable in everyday life can reveal different (and I would argue more helpful!) results when compared to tightly controlled laboratory data - solutions in the lab are great to inform research but mean nothing if they don't apply to real-world situations 4)...

Read more »


Initial arduino code for reading IMU and setting a vibration motor frequency.

ino - 1.19 kB - 05/17/2023 at 19:58


View all 6 components

  • Github Update

    Eric05/26/2023 at 14:14 0 comments

    Project has been updated and relevant code pushed to Github here. It now includes a fully functional implementation of the tremor IMU/frequency data collection code and an exported Arduino Library for tremor frequency determination from real-time IMU data. 

    Still to be done: Add method to determine the frequency that will minimize tremor amplitude.

  • Video of Alpha circuit prototype

    Eric05/23/2023 at 00:42 0 comments

    This is a video describing the general workflow for gathering tremor/haptic motor data to feed into an Edge Impulse ML model.

View all 2 project logs

  • 1
    Hardware Build Guide


  • 2
    Data Taking for Model Training


    This initial project will take the form of a case study that will take place using multiple laboratory visits of participants.

    Visit 1) Participants will wear the wrist mounted IMU to gather baseline data on tremor severity and frequency. Participants will wear the IMU on their wrist while performing 1 of 5 classifications in 10 second increments for a total of 2 minutes. Combined this will require 10 minutes of active time: 

    1.  idle, 
    2. moving their hand up and down, 
    3. moving their hand left and right, 
    4. lifting a glass
    5. lifting an eating utensil. 

    This baseline data will be analyzed through fourier analysis to determine the dominant frequency of the tremor. This dominant frequency will be the starting point for haptic vibrations to be applied to the participant’s wrist in a second visit.

    Visit 2) Participants will wear the wrist mounted IMU and have haptic feedback applied to their wrist while performing the same actions. The haptic frequency will initially be set to be equal to the dominant frequency of the individual’s unique tremor. Vibration frequencies will then be adjusted in reasonable increments to allow for potential development of a fitted machine-learning model to minimize tremor frequency based on input vibration. A randomized pattern of vibration will also be applied to compare with the non-random results. IMU data from this visit will be collected and fed into a Machine-Learning model developed using Edge Impulse to create a model linking motor vibration frequency to minimized tremor amplitude. This model will be deployed to the Arduino Nano 33 BLE Sense Rev2 for use by the participant in Visit 3.

    Visit 3) The developed model will be deployed to the wrist mounted IMU device and utilized by the participant over the span of a week to determine efficacy of the machine-learning model in minimizing tremor frequency from surface vibrating motors. Results will be analyzed and the process repeated/adapted as necessary.


    Complete the Installation Process here to setup your environment for using EDGE IMPULSE:

    Note: I completed the Windows installation and most of the steps were simple downloads to install through GUI’s. The exception was this one line. On Windows you need to open a WINDOWS POWERSHELL (you can access WINDOWS POWERSHELL from the Search bar)

     and type the following:

    > npm install -g edge-impulse-cli --force


    To get Data from the Nano 33 BLE Sense Rev 2 complete the following to use the DATA FORWARDER feature of Edge. This will connect you through the web to upload data from the SERIAL port of your ARDUINO. For this tremor watch device, we are interested in the accelerometer values (ax, ay and az) to get tremor frequency. In theory this is a temporary process until EDGE can officially support the Nano 33 BLE Sense Rev2.

    Open a Windows Terminal and type the following:

    > edge-impulse-data-forwarder

    You may get an error message stating “cannot be loaded because running scripts is disabled on this system.” To fix this issue, you need to change the execution policy using the Set-ExecutionPolicy cmdlet, so that the PowerShell script runs on your particular machine. Here is how to permit PowerShell script execution (determined using Google Bard accessing source :

    1. Open PowerShell Console by selecting “Run as Administrator” and get the execution Policy with the command: Get-ExecutionPolicy to get the current policy applied, such as “Restricted”.
    2. Set the execution Policy with the following command: Set-ExecutionPolicy RemoteSigned. Type “Y” when prompted to proceed.

    Once you have changed the execution policy, you should be able to run the PowerShell script without any problems and can then collect data. If you see the following:

    You probably have your Arduino IDE open and taking up the PORT that EDGE is trying to access. Keep your Arduino plugged in but close any IDE windows that might be accessing your Arduino port. Once you do that you should see the following:

    Hey! Look at that. You now have a weblink to visit to start collecting your data! Here’s what mine looks like. You will use the START SAMPLING to begin data collection according to the suggestions below.

    Now lets collect some data! You want to have your individual wear the nano accelerometer and gather data for multiple situations in Edge Impulse. We have THREE core situations and variations on each of these. For each situation, you want to gather data in 10 second increments for a total of approximately 2 minutes for each situation. This will give a total of 18 minutes of data. The situations of interest:

    1. Idle: hand not moving
    2. UpDown: hand moving up and down in a continuous motion
    3. LeftRight: hand moving left and right in a continuous motion
    4. IdleCup: hand holding a cup
    5. UpDown: hand moving up and down in a continuous drinking motion while holding a cup
    6. LeftRight: hand moving left and right in a continuous motion while holding a cup
    7. IdleUtensil: hand holding a utensil (fork/knife/spoon/etc)
    8. UpDownUtensil: hand moving up and down in a continuous drinking motion while holding a utensil (fork/knife/spoon/etc.)
    9. LeftRight: hand moving left and right in a continuous motion while holding a utensil (fork/knife/spoon/etc.)

View all instructions

Enjoy this project?



Similar Projects

Does this project spark your interest?

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