Bilal Shihab / Projects

Ease-O-Meter

A glove my junior design team built to detect the physical signs of an anxiety episode and respond with a calming vibration:

Junior design projectCollaborated with Ruchi Birur, Stanislav Shevkoplyas, Saniya Chaudhari and Kashvika Thurvas RatheeshBME 261L, UT AustinFeb – Apr 2026
Specfrom our design history file
Controller
Arduino Nano 33 IoT (BLE)
Heart rate
MAX30102 PPG, red + IR
Skin conductance
Grove GSR, fingertip electrodes
Haptics
ERM motor, DRV2605 driver
Sampling
10 Hz
Power
3.7 V LiPo
Heart rate, tested
68–101 bpm
GSR, tested
2.4–7.7 µS
BLE pairing
~8 s
Dashboard update
~1 s
The back of the glove with an Arduino, a battery booster, a haptic driver and wiring on a small breadboard, and a coin vibration motor on a lead
Fig. 1The electronics on the back of the glove during integration: the Arduino Nano 33 IoT, a PowerBoost 500C for the LiPo battery, the DRV2605 haptic driver, and the coin vibration motor on its lead.
The finished black glove with snap electrodes on two fingertips and wiring taped down
Fig. 2The finished glove, with the skin-conductance electrodes on two fingertips.
KiCad layout of the main board, with the Arduino footprint in the middle and connectors for the heart-rate sensor, skin-conductance sensor and haptic driver
Fig. 3The team also designed a PCB for the main board, but it didn't work properly, so the final glove kept the breadboard in Fig. 1. I wasn't involved in the PCB.

Why I built it

It was our team's junior design project. We took the device from customer needs through requirements, design reviews and verification testing, and documented every step in a design history file.

We picked anxiety because so many people live with it, and we wanted the monitor to have a seamless form factor. We chose a glove over a watch or a wristband because it held the skin-conductance electrodes firmly against the fingertips and left room on the back of the hand for the electronics.

The hard part

The hardest part was getting continuous, reliable readings from the sensors. All of the filtering ended up in software. The sensor library removes the steady (DC) part of the optical signal and applies a 4-point moving average, which together act roughly like a band-pass filter. On top of that, my firmware throws away readings the library marks invalid, averages the last six heart-rate values, and then smooths the result, moving less the bigger the jump, so a single bad reading can't swing the heart rate.