Skip to main content

Vibro-Tactile Gloves



Introduction

I became interested in the topic of vibro-tactile gloves when a friend told me he had used them to reduce his symptoms of Parkinson’s Disease (PD). His glove design was based on research conducted by a neurosurgeon at Stanford University, Dr. Peter A. Tass, which showed positive results in preliminary clinical trials. To quote the Tass Lab website (Research | Peter Tass Lab | Stanford Medicine): “Early research shows that wearing a vibrating glove can reorganize misfiring signals in the brain typical of Parkinson’s and might relieve symptoms.” Their research team and an outside firm are currently conducting more clinical trials. Their technique is called vibrational Coordinated Reset (vCR). 

Since the publication of the Tass papers, there have been many DIY projects to create vibration gloves for treatment of PD. This post describes my own attempt to meet the specifications of the Tass design, and to provide instructions on how to replicate it. I do not claim any neurological benefit from their use. 

The term “gloves” is used loosely in this project since there are components only at the fingertips and on the wrist. These gloves produce bursts of vibration at 250 Hz randomly shuffled between the fingertips, using a pattern outlined in the Tass literature. They are battery operated and should last through a routine of several hours of operation twice a day. According to the literature, it can take weeks of use for the effects to be significant. The following is a summary of the Tass conditions for the vibration stimulation.


Specifications

Vibration Pattern (Tass)

According to publications of the Tass group (see References in the next section), vibrators in contact with the four fingertips of each hand should produce brief and low amplitude bursts at a frequency f = 250 Hz with a random assignment to the fingers. The variables in the signal are the frequency, the duration of the burst, the delay between bursts (optionally randomized or "jittered"), the number of times all 4 fingers are stimulated and the rest time between stimulations. The order in which these signals are delivered to each finger is another process choice, as well as the coordination of these signals to each hand. For example, a “mirrored delivery” can be used in which equivalent finger types of each hand received the same signal at the same time, or a “non-mirrored delivery” with no correlation between the hands.

There are many types of sensors in the human hand. The Tass team selected to preferentially stimulate touch receptors known as Pacinian Corpuscles (FAII), which are concentrated at the fingertips. 

The Burst Signal

The vibration stimulation is an indentation at a fingertip of a constant value A0 (mm) plus a burst of sinusoidal variation at a frequency f of peak-to-peak amplitude App. The default goal for these values is f = 250 Hz, A0 = 0.5mm, and App = 0.1mm or less. In this project, each of these parameters is adjustable. The burst lasts for PULSE_TIME  = 100ms, pausing for a DELAY_TIME_0 about 65 ms until the next burst occurs at another finger. This is diagrammed below for a burst sent to the ring finger of the left hand. The finger labels are IRML for Index, Middle, Ring, Little. Each pulse is sent to a random finger, without repeats until all 4 have been stimulated. The thumb is not included in the published Tass studies.


Repeating Bursts

The time of a burst + delay for N_CH fingers (normally 4) is CR_PERIOD, which is set to 660 ms, as shown in the left diagram below. Another variation (shown on the right) is to include a random delay \(\Delta\)t between bursts ("jitter"), varying between  \(\pm\) JITTER_FRACTION* CR_PERIOD /(2*N_CH), where JITTER_FRACTION is a random number between 0 and 1. Tass utilized JITTER_FRACTION = 0.235 or 0.



Repeating CR Periods

The active portion of the sequence is repeated ACTIVE_CR_COUNT times, followed by a rest portion of REST_TIME_0 =  REST_CR_COUNT * CR_PERIOD. The Stanford team used a ratio of active to rest counts of 3:2. If jitter is applied, I chose to accumulate the total jitter delay in the active portion and subtract it from REST_TIME_0, so that the total time for the active plus rest portions remains constant throughout the session. The combination of Active + Rest is referred to as a Block and is repeated until the system is turned off. 



Assigning Signals to Fingers and Hands
  • In this project, the order of the fingers that receive vibration is shuffled every CR_PERIOD using a Fisher-Yates method that also excludes double vibrations. Examples of channel 0 – 3 for fingers IMRL are: {0,1,2,3} \(\rightarrow\) {1,0,2,3} \(\rightarrow)\ {2,0,1,3} …
  • Channel-to-finger mapping modes are set in the program by: BILATERAL_MIRROR, which can be set true or false.
    • Wiring on both hands is from control box connectors to corresponding fingers. 
    • On the right hand, channels 0-3 corresponds to the right fingers IMRL.
    • On the left hand, the code reverses the channels so ch 0-3 still corresponds to left fingers IMRL.
    • In mode BILATERAL_MIRROR = true, the same finger types on both hands receive simultaneous pulses in a random order.
    • In the mode BILATERAL_MIRROR = false, the signals are still simultaneous between the hands, but there is no correlation of the fingers.
  • Since the two hand controllers only differ in the order of the channel to connector, the units can be swapped and the same operation is maintained.


Vibro-Tactile Glove Designs from Tass Group and Collaborators

Tass Style Gloves

Stanford (Tass) gloves: Featuring the early vibrator housing with tactor disk, controller located on a belt, connected by cables. https://www.ncbi.nlm.nih.gov/pmc/articles/PMC8636796/ 


Synergic gloves for clinical trials (collaboration with Tass group). The two units are wireless, with controllers on the wrist. Synergic Medical Technologies, Inc.



Vibrator used by Tass Group and Collaborators

Supplement: Coordinated reset vibrotactile stimulation induces sustained cumulative benefits in Parkinson’s disease.


Collaboration of Tass with Engineering Acoustics, Inc. Partial glove with finger housings using EAI C3 tactors (0.8” diameter). EAI info



References Regarding vCR (Tass):

Partial list of papers from P. A. Tass regarding vCR:
  1. Tass P.A. (2017) Cureus 9(8), e1535. Vibrotactile Coordinated Reset Stimulation for the Treatment of Neurological Diseases – Concepts and Device Specifications. 
  2. Pfeifer, K.J., Kromer, J.A., Cook, A.J., Hornbeck, T., Lim, E.A., Mortimer, B., Fogarty, A.S., Han, S.S., Dhall, R., Halpern, C.H., Tass, P.A. (2021) Frontiers in physiology 12:624317. Coordinated reset vibrotactile stimulation induces sustained cumulative benefits in Parkinson’s disease. 
  3. P.A. Tass, Neural Regeneration Research. 17(7):1495-1497 (2021)  Vibrotactile Coordinated Reset Stimulation for the Treatment of Parkinson’s Disease. 
  4. “Clinical Efficacy and Dosing of Vibrotactile Coordinated Reset Stimulation in Motor and Non-motor Symptoms of Parkinson's Disease: A Study Protocol”, 2021, https://www.ncbi.nlm.nih.gov/pmc/articles/PMC8636796/ 
  5. Mov Disord. 2017 Nov 18;33(1):179–180. Coordinated reset vibrotactile stimulation shows prolonged improvement in Parkinson's disease – PMC   doi: https://doi.org/10.1002/mds.27223 
  6. US2021/0401664 A1, Safe and Efficient Vibrotactile Multi-channel Stimulation for the Treatment of Brain Disorders; Dec. 30, 2021
Dr. Tass Stanford web site:
In the Media | Peter Tass Lab | Stanford Medicine

Dr. Tass (YouTube):

Dr. Frank Middleton (SUNY Upstate Medical University): discussion regarding Tass vibration effects


Other DIY Vibrational Glove Designs

TactileDesign “Blue Buzzah”

Utilizes Adafruit Feather nRF52840 Express as the MCU for size reduction and battery charging. Uses 400 mAh LiPo battery. Utilized JLCPCB to create assembled PCB. Pulse jitter is included. Uses spring or foam under an LRA (see below) in a 3D printed housing to deliver mostly indentation vibration. Control unit is placed on top of the glove near the wrist.



*LRA (Linear Resonant Actuator) uses a magnet that oscillates vertically in a fixed coil, all encased in a small metal box. Vybronics Inc. VLV101040A 170 Hz. Typical IC driver: DRV2605 and TCA9546APWR multiplexer from TI. 

BlueBuzzah-Gloves/BUILD DOCUMENTATION PDFS/Blue Buzzah Build Documentation vs 1-2.pdf at main · PWPInnovator898/BlueBuzzah-Gloves · GitHub


Voice coil is a DAEX-9-4SM haptic exciter (Dayton Audio) using a fixed magnet and a vertically vibrating coil. A plastic nut and bolt is attached to the coil and acts as the contactor vibrating against the finger. The height of the contactor can be adjusted. The system appears to utilize an external audio amplifier.




Rice University (2024) 

Featured a 3D printed clamshell housing for each vibrator, a “bead” tactor, straps for wiring, a wrist-worn controller, Bluetooth sync between hands, hook and loop attachment, and either Eccentric Rotating Mass (ERM) or Linear Resonant Actuator (LRA) vibrators using DRV2605 drivers. Foam is used to help decouple the LRA vibrations from the housing. Both vibrators can oscillate laterally. The group does not appear to be taking orders, and the website is inactive. 



Espanola GloveWorks

Steve Cox, associate professor of engineering at Northern New Mexico College. As of 4/1/26 they sold 400 glove pairs. Their design utilizes 10 mm x 3 mm Mini Vibration Motors (ERM), DC 3V 12000rpm, Flat Coin Button-Type, driven by a MOSFET 2N7002 discrete circuit, producing multi-directional vibration. The control box is on the hand or wrist. There is a PCB design with Bluetooth communication for control by phone to adjust amplitude. The phone app also monitors the user’s gate data. Their MCU is a Xiao SEEED ESP32-C3, and it is powered by a 450 mAh LiPo battery.



UW-Eau Claire
 
Marc McEllistrem; Nick Beltz; Dr. Fogoso (Mayo); Stanford medical Patient Care Issue 2 2021 Good Vibrations, Hilly MacCormick Oct 14 2021. Features: Full glove, probably ERM vibrators with MOSFET drivers, actuators placed on thin 3D printed plates within the glove fingers. (last posting July 2025)


Other

Uses ERM coin motors as vibrators directly against the fingers. Uses Arduino Nano for an MCU. Wire leads connect the controller to the vibrators without a glove.



This Project

Download CAD and PCB Files:

Use this link to download the necessary files for the PCB, 3D parts, and the firmware. The source files for the PCB and 3D parts are also given.

The README files have additional information about each component.




Project Details

Vibrator Choice

Also known as haptic transducers, vibrators can operate by several principles including piezo-electric benders, eccentric motors (ERM), linear resonant actuators (LRA), and voice coils (exciters). The initial Tass vibrators appear to have been piezo-electric and may have used a cantilever contactor to achieve sufficient vibration amplitude. This evolved into voice-coil exciters supplied through Engineering Acoustics, Inc.  The voice-coil primarily produces a purely up and down motion of the coil that can be directly connected to a contactor, with sufficient amplitude, and can vibrate sinusoidally. A reasonable low cost and compact choice is the Dayton Audio DAEX-9-4SM Haptic Feedback Transducer, as also discussed in the WTP design. PUI Audio also distributes the ASX02404, which is nearly identical to the DAEX, but has a more robust connector. A potential alternative is the LRA if it can be supported to oscillate mostly vertically, as appears to be the case for the TactileDesign effort. The ERM vibrations probably differ significantly from the Tass specification.

Based on the Tass publications, I chose the Dayton Audio DAEX-9-4SM for its uniaxial vibration and linear response. I was unaware of the ASX02404 at the build time. Both should fit into the housing design discussed below with a slight modification to the ASX02404.

Haptic Exciter


Dayton Audio DAEX-9-4SM Haptic Feedback Transducer 9mm 1W 4 Ohm (~$5)


ASX02404 EXCITER 0.25W 4OHM 78DB 480HZ (improved contacts)



Electronics

Electronics Requirements
  • Given the complexity of the vibration pattern, a Micro Controller Unit (MCU) is essential. 
  • An amplifier between the MCU outputs and each exciter is required. 
  • Some type of visual indicator for each exciter is useful because after continuous use it can be difficult to detect the vibrations. Four green LEDs (3 mm) were used, located on top of the control box. 
  • There needs to be a way to adjust the volume of the stimulation. A potentiometer connected as a voltage divider is read by the MCU for this purpose.
  • A typical session might be 2 hours long, twice per day, so the controller and amplifier electronics should be portable and battery powered, requiring low power consumption and a means to recharge the battery. A LiPo 1000 mAh battery was chosen that is located under the PCB in the controller box.
  • Another goal of this project was to eliminate wire connections between the hands, while still coordinating the signals to each hand. This requires both controllers to have wireless communication, such as Bluetooth. To initiate the communication and start the vibration sequence, a button was added to each controller so that pressing either one will start both units simultaneously.
  • The wire connection between the controllers and exciters uses compact connectors (JST-PH type), with wires that can be cut to size. 
  • All of these features need to fit into a compact wearable enclosure with accessible controls. 
  • If a control box is placed on top of the hand, it can restrict putting the hand into a pocket. If it is placed on the wrists, it can displace a watch often needed to time a session. A digital clock is optionally placed on the unit located on the wrists.
  • The schematics and PCB layout were all done using KiCAD, with AI assistance. Some of the board pin connectors were listed as Do Not Populate (DNP) to create just the plated holes.
  • The files were sent to JLCPCB for manufacturing and assembly. Links to the files and detailed instructions on how to order these boards are in the vCR-Glove/PCB/JLCPCH_Production folder on GitHub.
Amplifier Circuit for the DEAX Exciter

The exciters are essentially speakers that can be driven by conventional audio amplifier components. A common method is the D-class amplifier, which has the advantage of high efficiency that helps extend battery lifetime. Since there are 4 exciters per control unit, a compact solution is to use two stereo chip PAM8403D from Diodes Incorporated. Class D amplifiers use their input signals to modulate the duty cycle of a carrier square wave, followed by a low pass filter to remove the carrier frequency. The DAEX can be directly connected to the PAM8403D outputs.

The inputs to the amplifiers must be sine waves at the frequency f (typically 250 Hz), generated by the MCU (that detail is described later). A low pass filter must be added between the MCU and the amplifiers to remove the carrier frequency. This is accomplished by joining two RC filters in series. 

Diodes Incorporated PAM8403 stereo D-class amp, SOP-16 size

Haptic circuit:



MCU breakout board: Seeed Studio XIAO nRF52840
  • Provides ultra-low power consumption: 5 μA in deep sleep mode while supporting lithium battery charge management
  • Thumb-Sized Design: 21 x 17.5mm, Seeed Studio XIAO
  • Pins can be ordered pre-soldered to the breakout board




MCU Circuit:



User IO Circuit

Power Circuit


KiCAD PCB Design



Ordering the PCB from JLCPCB:
  1. Download the following PCB related files from https://github.com/HobbyPhysics/vCR-Glove/commits?author=HobbyPhysics 
    1. Gerber and drl Files (Zip Folder): DAEX_system_v1-job-1.zip
    2. BOM file: DAEX_system_v1_BOM.csv
    3. Position file: DAEX_system_v1-top-pos.csv
  2. If desired you can also download the KiCAD project file to view the schematics, PCB layout, and 3D rendering. 
  3. Sign up and Log in at https://jlcpcb.com/ and click on Order.
  4. Upload the Gerber and drl zipped folder. This will generate top and bottom images of the PCB. Click on these to enlarge and carefully inspect, comparing with the KiCAD PCB image shown previously. Do not exit the images, just go back if needed (otherwise the session may end).
  5. Check that the thickness (1.65mm) and number of layers (4) is correct. 
  6. Important: Scroll down and click on the switch to request Assemble. Otherwise, you will only get the unpopulated PCB.
  7. Click on Continue. Upload the BOM and the Pos files. If errors occur to inventory shortages, you may have to find substitutes for components that are in stock using their part catalog.
  8. It is crucial to check the orientation of all components, especially ICs, connectors and electrolytic caps. The JLC app allows you to manually adjust components, so they appear as they do in the 3D rendering shown above. 
  9. Continue to payment. Shipping and duties tend to double the parts and labor costs. Note the delivery time.

Mechanical & Assembly

Vibrator Housing Design

The top surface of the housing has a finger groove with a hole for the contactor, as discussed in the Tass references. Such a design 1) provides good contact between the fingertip and the vibrating contactor, 2) gives a static indentation of 0.5mm, 3) prevents the finger pressure from dampening the vibration, and 4) provides a comfortable and stable fit. In this project’s design there is a cavity underneath that allows the DAEX exciter coil to freely move vertically while locking down the ends. The back cover has a cavity with small slots for ventilation in case the coils become warm. The top and bottom sections are held together by 4 M3 self-tapping screws. 

All housing parts can be made using the 3D stl files (see the GitHub links) and were generated with OpenSCAD. To minimize the builder tasks and achieve the necessary precision for best operation, I had the parts fabricated at JLC3DP, but other fab companies could be used. The housing material was PA12-HP black nylon for durability and sound absorption, using their Multi-Jet Fusion (MJF) process.

OpenSCAD Renderings of the Housing



OpenSCAD Renderings of the Enclosure Box

The post holes can be threaded using an M3 tap or self-tapping screws.


Ordering 3D Printed Parts from JLC3DP:
  1. Download the following files from https://github.com/HobbyPhysics/vCR-Glove/tree/main/3D_Printing/DAEX_Housing/STL : 
    1. DAEX_lower_plate.stl
    2. DAEX_tapper.stl
    3. DAEX_upper_housing.stl
  2. Download the following files from https://github.com/HobbyPhysics/vCR-Glove/tree/main/3D_Printing/Electronics_Enclosure/STL : 
    1. vCR_glove_enclosure_bottom.stl
    2. vCR_glove_enclosure_top.stl
  3. These files were generated using OpenSCAD. If you download OpenSCAD, you can view and alter the DAEX housing using the SCAD files found in
    1. https://github.com/HobbyPhysics/vCR-Glove/tree/main/3D_Printing/DAEX_Housing/OpenSCAD_Source 
    2. https://github.com/HobbyPhysics/vCR-Glove/tree/main/3D_Printing/Electronics_Enclosure/OpenSCAD_Source
  4. To order parts, sign up and Log in at https://jlc3dp.com/ and click on Order Now.
  5. Click on 3D Printing, then Upload 3D models and specify all stl files. You should see images of each part.
  6. For each part, select Edit Specifications:
    1. For the 3 DAEX housing parts, select MJF (Nylon), PA12-HP Nylon, Black, surface finish Yes, thread No, and quantity 8 or more each (enough for two hands), Product Desc: select Enclosure, Plastic Enclosure. Click Save. If there is a printing risk indicated (thin walls), select yes to accept the risk.
    2. For  the 2 enclosure parts, select Edit Specifications and select SLA Resin, Black Resin, Surface Finish Yes, thread No, and quantity 2 or more (enough for two hands), Product Desc: select Enclosure, Plastic Enclosure. Click Save. If there is a printing risk indicated (thin walls), select yes to accept the risk.
  7. Click on Submit Order.
  8. Continue to payment. Shipping and duties tend to double the parts and labor costs. Note the delivery time.

Assembly

Tools for the project


Vibrator Housing Components

Housing Screws (McMaster Carr)


Contactor screw for Tapper: nylon 92492A70, McMaster-Carr; use steel M2.5 as tap for the tapper hole. Make sure the tap is perpendicular to the disk (see the jig diagram below).


0.6” wide elastic strap https://a.co/d/0ff3GFZ1

VELCRO Brand Heavy Duty Fasteners, Black, 4 x 2 in Strips, 8 Sets | Industrial Strength Adhesive Stick On Tape Fasteners


Assembling the Vibrator Housing
  1. Tap threads into the Tapper disk hole, using a jig such as the one shown to clamp the disk and a M2.5 tap or screw. Make sure the tapped hole is axial, not crooked.
  2. Thread a nylon M2.5 bolt (the contactor) into the Taper hole a few threads.
  3. Peel off the release liner from the exciter ring and adhere it to the Tapper disk, with the cylindrical protrusion pointing into the ring hole, and the contactor bolt pointing out.
  4. Solder AWG 28 leads to the exciter connectors on the contactor side (red wire to red contact). For the DAEX, these contacts are fragile PCB tabs. For the PUI exciters, solder to the rivet (not the lug) on the contactor side. Clip off the lugs so the exciter can fit into the housing. For either exciter, solder quickly to avoid melting and distorting the plastic. (Image A).
  5. Insert the exciter + contactor into the upper housing with the contactor pointing into the housing. Push the wire into the channel around the exciter frame and out the side channels. (Image B)
  6. Screw down the lower plate as shown in Image C, using the self tapping M3 bolts.
  7. The contactor bolt should be approximately centered in the housing hole. Adjust the height of the contactor bolt to be ~ 0.5 mm above the finger groove using a small Phillips screwdriver while pressing down to avoid twisting the tapper disk off the adhesive ring. (Image D)




Vibrator Strap Assembly

*For best adhesion you can add 5-minute epoxy between the elastic strap and the adhesive on the hook and loop. 



Enclosure Box Components

APIELE 12mm Momentary Push Button Switch Mini Round Switch Waterproof 1A 250V AC SPST NO 2 Pin PBS-33B with Pre-soldered Wire 6Pcs (Green)

MECCANIXITY 10pcs RK097N B20K Potentiometer, 3Pin Single Linear Rotary Seal Amplifier Logarithmic Potentiometers 15mm Knurled Shaft with Green AG2 Plastic Knob Vertical for Audio Amplifier

mxuteuk 8pcs MTS-102 3 Terminal 2 Position SPDT Mini Miniature Toggle Switch Car Dash Dashboard ON/ON 5A 120V 2A 250V


MakerHawk 3.7V Lipo Battery 1000mAh Rechargeable Lithium Polymer Battery 803040 Micro Ph1.25 Connector Integrated Protection Circuit with USB Cable for Electronic Device (2 Pcs)


TUOFENG 28awg Flexible Silicone Wire, 43 ft Each | Tinned Copper Wires, Silicone Rubber Insulated, 6 Different Colored 43ft Each, OD: 1.2 mm, Stranded Wire Hook up Wires


Chanzon 3:1 Ratio 1/16" (1.6mm) Heat Shrink Tubing 8Ft Roll Black | Marine Grade Waterproof Adhesive Lined Polyolefin Sleeving Wrap 2.5M Roll


Wiring the Control Unit
  1. Left and Right control units are identical.
  2. The battery is adhered to the bottom of the enclosure with double-stick foam tape (1mm thick). The existing battery connector was replaced with a JST PH 2.0mm connector, soldered and heat shrink insulated. Keep it disconnected until the wiring is complete.
  3. Solder pin headers to the Xiao breakout board.
  4. Solder short leads to the + and – Batt pads under the Xiao board BEFORE soldering the Xiao header to the PCB. Solder each lead to the corresponding pads Batt +/- on the PCB.
  5. Solder the Xiao nRF52840 pins to the PCB, oriented with the USB in the enclosure slot. Make sure the board is pressed flush into the PCB holes.
  6. Connecting wire is 28 AWG silicone insulated, used for the potentiometer, switch, and button connections. Trim each wire, remove about 3mm of insulation from the ends and tin them with solder. Solder each to the PCB, as shown below. Orient the switch so that ON is up.
  7. Press in the 3mm LEDs and orient their short leads to face the same direction. Secure with adhesive such as 5-minute epoxy. Solder all the cathode leads (shorter lead) together. Solder the longer anode leads and the common cathodes to the PCB as shown in the image.
  8. Press the battery connector into its connector, threading the wire through the PCB slot. You may have to unscrew the PCB to do this.
  9. Screw on the lid, making sure the LED wires do not interfere with the 4 JST connectors.


Wrist Strap

The wrist straps were cut from NEOLOOP sheets (North Coast Medical NEOLOOP Sheets, Black, 1/8in (3.2mm), 12in x 18in (31cm x 46cm) (NC15758-B) UPC 768627001229). Rolls of strap material are also available. North Coast Medical NEOLOOP Sheets – Rehab Supply Shoppe

The top surface of the strap has loop fabric that sticks to a piece of hook material adhered to the bottom of the control unit. Another piece of hook material is adhered near the end of the strap on the neoprene side to secure the strap around the wrist.


Optional Clock

A digital clock (or other timepiece) can be adhered to the control box using hook and loop fabric adhered to the back of the clock and the top of the box. One option for a clock is:

Frienda (3 Pieces) Mini Digital Clock, Stick-on, Battery-Operated Self-Adhesive Bracket


Connecting Control Units to Exciters
  • Leads from the exciter are threaded through holes in the elastic straps for each finger. They are trimmed to a short length and tinned. 
  • Female JST-PH 2.0 connectors and pigtailed male connectors were purchased, described below. The exciter leads were soldered to the female connectors and insulated with shrink tubing (1/16”). 
  • The cables between the exciter and control unit connector are made from pigtailed JST-PH 2.0, cut to length, soldered together and insulated with shrink tubing. The leads are twisted to reduce clutter and for stiffness. 
  • The 4 leads can be organized between hook and loop fabric as needed.

All connector leads were made from: 60 Pairs 28AWG 150mm Mini Micro JST PH 2.0mm Pitch 2 Pin Female Connector and Male Plug Wire Cable, from Amazon.

Completed Devices



Parts Cost

Many of the parts for this project were bought at quantities greater than what is needed to make just two units, so the cost per device may be inflated. The most expensive items were the assembled PCBs (minimum of 5) and the 3D printed parts. You may be able to find lower cost suppliers for the PCB and 3D print parts. 

With those caveats, the cost for a pair of devices is about $500. For four devices the cost per pair is about $400.


Firmware

Firmware Overview

The firmware that is loaded into the MCU was written in C++ with considerable AI assistance. There are over 1100 lines of code. Rather than discuss every detail, only some of the basic concepts are described. The parameters that configure the operation are listed at the top of the code to simplify access. The basic flow after turning on the power is:
  • Initialize components
  • Check if the Start button is pressed
  • Search for a companion unit using Bluetooth
  • Synchronize timing with the other unit and start
  • Cycle through the vibration sequence until power off
Open the README file in the Firmware folder for details on how to upload the firmware to the left and right control units.


Control Parameters (set in Arduino IDE)

Open the README file in the Firmware folder for details on how to change the session parameters.

TIMER_ON:  starts the timer with reminder that the glove is still powered and should be switched off.

BILATERAL_MIRROR: switch between  both hands use the same shuffle sequence, or uncorrelated. 

ALL_ON: every burst slot activates all four fingers simultaneously, or normal operation of random single finger.

SINGLE_FREQUENCY: every burst uses 250 Hz, or randomized multi-frequencies. 

JITTER_FRACTION: sets the fraction of delay time to start each burst (usually 0 or 0.235)

LED_ENABLE: allow LEDs to blink during each channel burst
 
SINGLE_CHANNEL_TEST: causes steady repeated bursts or normal operation


How Controllers are Synchronized using Bluetooth

  • Both hand units have identical programs (except for a left/ right setting related to finger order only). There is no primary/ secondary role.
  • After Power-up (each unit):
    • Starts the PWM carrier with 50% duty cycle, creating zero sine output into each amplifier.
    • Disables the exciter amplifiers.
    • Turns off the LEDs.
    • Starts the Bluetooth (BLE) to broadcast (advertise).
  • After Button is pressed on either unit (call this unit A):
    • Unit A waits > 40ms for de-bouncing
    • Unit A starts a timer for SCAN_TIMEOUT_MS = 5000 ms while it scans for unit B.
    • If B is advertising and is detected by A:
      • Unit A connects with B and sends a start message: “S”.
      • Unit B acknowledges with “A”.
      • Unit A receives “A” and sends “G” to unit B and calls its scheduleStart routine.
      • Unit B receives “G” and calls its scheduleStart routine.
      • Each scheduleStart waits for a time SYNC_DELAY_MS = 700 ms from their current local time (he start times will only differ by a few milli-seconds at most). 
        • Both units stop scanning and advertising. 
        • Both units disconnect and enable their amplifiers and start the vibration and LED sequence. 
    • If unit A does not get an acknowledge “A” from unit B after 250ms, it re-transmits “S” again. If there is no result after 3 attempts, unit A will disconnect and resume scanning until it finds unit B or SCAN_TIMEOUT_MS is up.
    • If unit A does not detect or receive an “A” acknowledgement from unit B after SCAN_TIMEOUT_MS :
      • Unit A stops scanning and advertising disconnects.
      • Unit A calls scheduleStart routine and starts its vibration and LEDs after SYNC_DELAY_MS = 700 ms.
      • Start time for a single unit is therefore about 5.7 seconds after the button press.
  • Both units continuously monitor their button and listen for a BLE signal.

How a Sine Wave is Generated

The outputs of the Pulse Width Modulation (PWM) generators on the Xiao board are square waves with fixed amplitudes. The period of oscillation and the duty cycle can be altered in the program. If this were used directly as the input into the amplifiers, the exciters would receive a periodic impulse that creates ringing at the natural frequency of the exciter, leading to a complex waveform (non-sinusoidal). The solution is to modulate the duty cycle of a high frequency square wave (carrier wave) sinusoidally, then eliminate the carrier frequency using electronic filtering. This process is shown in more detail in the following diagrams.

Pulse Width Modulation (PWM) for Carrier Wave


Pulse Width Modulation (PWM) for Sine Wave


  • Carrier Frequency = Clock Frequency/ TOPCOUNT = 16 MHz/ 250 = 64 kHz (fixed)
  • Sine Frequency = Carrier Frequency / R/ Nsample= 64 kHz/ 4/ 64 = 250 Hz
  • For Sine frequencies = 60 – 350 Hz, the integers R and Nsample are internally determined to get within 0.6% of the target frequency

The Finger Shuffling Method

Each 4-finger cycle, the assignment of an MCU output to a finger channel changes using a random shuffling method (Fisher-Yates). 1234 \(\rightarrow\) 2314 \(\rightarrow\) 4132 \(\rightarrow\) etc. The same seed for the random number generator is used for both hand units if mirror mode is chosen.


A check is then made to see if the last and first values are the same to avoid a double stimulation. For example, if the sequence is 1234 and the next one is 4312, the second 4 is avoided by swapping it with the next value in its sequence: 4312 \(\rightarrow\) 3412.

Usage

Attaching to the hands
  • Note the wire leads to the small finger vibrator are shorter than for the other fingers. Use this to distinguish left from right units. On the left unit, the shorter lead is channel 1. On the right unit the shorter lead is channel 4.  
  • Place the digital clock on the desired control unit.
  • Adjust the straps for each tactor to each finger using a tabletop for support. The tactor straps are elastic with hook/loop fabric. The finger should be pushed up to the curved end of the finger groove. Adjust for a snug fit, not too tight. Remove the vibrator, keeping the straps as adjusted.
  • Adjust the contactor screws up or down so they protrude about 0.5mm (thickness of about 6 sheets of paper). Make the adjustment with a small Phillips screwdriver, pushing down until the contactor is at its lowest point then turning to the right to reduce the height, or to the left to increase it. You should be able to feel the contactor protruding from the hole with the power off.
  • Wrap the strap for each control unit around your wrist with the controls facing toward the body. Adjust until snug but not too tight.
  • Starting from left to right, place the vibrators on each finger, making the sure the wires are along the left side of the finger, above the hand and are not tangled. Adjust so that the contactors are directly under each finger. Use the top hook and loop strips to help organize the leads.
  • To remove, place your hands on a tabletop and slide off each tactor. Then undo the wrist straps.

Starting and Stopping
  • Each control unit has a Power switch, a Start button, and a Volume control.
  • To operate using both hand units:
    • Turn on both unit’s power switches (up). You should see a flashing blue LED looking into the USB connector.
    • Press a green Start button briefly on either unit to begin operation.
    • Operation begins almost immediately with contactors vibrating and corresponding LEDs flashing.
    • One finger on each hand should receive a vibration at the same time. In Mirror mode, the same finger type on each hand receives the same signal. The finger selection is random.
    • Vibration amplitude is controlled by the Volume knob and can be adjusted anytime during operation.
    • To end operation, turn off the Power switches (down) on both units.
  • To operate a single unit:
    • Turn on the power switch (up). You should see a flashing blue LED looking into the USB connector.
    • Press the green Start button briefly.
    • Operation begins after about 6 seconds.
    • Vibration amplitude is controlled by the Volume knob and can be adjusted anytime during operation.
    • Turn off the power switch to end operation.
  • Recharging the batteries: Connect each unit to a USB-C charger, with the power switch ON. It will not charge if the switch is off. This prevents the battery from draining while the system is not in use. Do not push the start button. 
  • Session timer: Using the Arduino IDE, set TIMER_ON = true, and set TIME_LIMIT_MIN (duration in minutes) in each hand unit to automatically disable the unit after the set time. An LED will blink every 30 sec to remind you to turn the power off.


Test Method & Results 

This section describes measurements made during development, and is not necessary for its use or for construction.

Optical Measurement of Vibration Amplitude

A light shadowing method was used to measure the oscillation height of the contactor. A thin metal fin was adhered to the contactor, which partly blocks a focused laser beam, casting a shadow onto a light detector. The detector signal vs. time was measured with an oscilloscope during the vibration. The change in light intensity as a function of height was calibrated using a z-stage micrometer. 


Vibration Measurement Apparatus


Vibrational Measurement Result



Uniformity of DAEX Exciters (no load)
  • For each DAEX (labeled 1 – 8) the PD signal vs. z0 height was measured for calibration. 
  • In the firmware, MAX_AMPLITUDE_COUNTS = 50 for these tests (sets the range for the volume control).
  • Using the calibrations, the peak-peak z motion Zpp was measured at 4 volume levels for each DAEX, plotted below. The vertical bars indicate the min (7:00) and max (17:00) volume levels.
  • All DAEX showed sinusoidal oscillation, almost inaudible, until the volume level was at the 15:00 position. At that level and beyond, the waveform was distorted (second harmonic component) and very audible. As a result, MAX_AMPLITUDE_COUNTS = 40 is recommended to keep primarily in the sinusoidal range.
  • One DAEX unit showed strong distortion and erratic behavior at all volume levels and was replaced.


Conclusions

Project Features

  1. Wireless connection between hands with synchronous stimulation
  2. Session timer 
  3. Mirror and non-mirror modes, with or without pulse jitter
  4. Quiet sinusoidal indentation vibration, with little housing vibration
  5. Variable peak to peak vibration from 0.01mm – 0.09mm
  6. Adjustable static indentation, to meet 0.5mm requirement
  7. Rise time < 2ms with ~15 ms end decay time
  8. Vibration frequency range of 60 Hz – 350 Hz
  9. Random finger shuffling without double stimulation
  10. Low power operation with rechargeable battery
  11. External manufacturing of mechanical parts and assembled PCB
  12. Adjustable finger elastic for vibrators and wrist Neoloop straps for control units
  13. LED indicators to visualize pulse action
  14. JST connectors for wiring to control unit
  15. Reconfigurable using Arduino IDE
  16. Compact and lightweight design
  17. Method to measure contactor height variation in real time
  18. Option of multiple frequencies, single channel testing, or regular simultaneous pulsing


Potential Enhancements


Speculations

Musical Note Vibrations

The vibrators can be audible, especially if the housings contact a solid surface, such as a tabletop. In the Tass study, the frequency of 250 Hz was chosen as an optimal stimulation frequency for Pacinian (FAII) corpuscles in the fingers. This frequency is close to the musical note of B below middle C, which is 246.94 Hz. If the vibration is effective over a broader frequency range, then 4 musical frequencies near B could be useful, and may provide a more interesting listening experience. Notes separated by half-intervals tend to sound dissonant. Pentatonic notes are often used for wind-chimes and can usually be played in any sequence without dissonance. The four notes near B on such a scale are G# (207.65 Hz), A# (233.08 Hz), C# (277.18 Hz), and D# (311.13 Hz). The sound file below demonstrates these notes played in a random shuffle sequence. 


The firmware in this project provides this option using the flag: SINGLE_FREQUENCY. If it is true, then the only frequency of vibration is 250 Hz. If the flag is false, then in addition to shuffling the order of the fingers, the 4 frequencies are played, independently shuffled between the four notes described above.

It should be emphasized that the multi-frequency mode is a significant deviation from the Tass prescription and is outside the scope of their current clinical trials. The effect of using the option of SINGLE_FREQUENCY = false is unknown.


Proximal Digit Stimulation

The Pacinian corpuscles (FAII) also exist in high concentration under the proximal digits of the fingers. If these receptors produced similar neurological results (which would have to be validated), this would allow the vibrators to be located off the fingertips, allowing greater freedom for the user, and would be closer to the control unit. They could be directly attached to a partial glove on the dorsal side, reducing wire leads. An extender between the DAEX and contactor could be used to optimally locate the vibration at the center of the digits.

Despite the ergonomic advantages, the effectiveness of using the proximal location would have to be rigorously tested. If the fingertips are also in use during the session, there could be complications due to their stimulation. 



Comments