Skip to content

๐Ÿ›  How I built it

CAD, circuits and a parts list.

This is the engineering half of the bracelet โ€” the housing dimensions, the full circuit, everything on the bill of materials and the logic that decides when it buzzes. Total build cost: about $48.

The CAD

Modelled as one printed housing with a snap-in lid, sized so the sensor sits flat against the wrist. Contact quality matters more than any other design choice.

42 mm34 mm42 mm11 mmTop view โ€” LED strip & strap lugsSide view โ€” sensor boss on undersideoptical sensor window20 mm strap slotsensor boss, 1.2 mm proud

42 ร— 34 ร— 11 mm

Small enough for a teenage wrist, deep enough for the battery underneath the board.

Snap-in lid

No screws. The lid clips over four posts so the electronics can come out during testing โ€” which happened a lot.

Standard 20 mm strap

Quick-release lugs, so it takes any ordinary watch strap instead of a custom band.

The circuit

Six components on one 3.3 volt rail. Nothing exotic โ€” every part is something a student can order and solder by hand.

LiPo 3.7 V400 mAhUSB-C chargerTP4056 + protection3.3 V regulatorLDO, 500 mAMicrocontrollerSeeed XIAO nRF52840Heart-rate sensorMAX30102 (I2C)LED strip5 ร— WS2812BVibration motor10 mm coin, 3 VMomentary buttonmode / reset3V3 / GNDSDA ยท SCLD0 โ†’ 470 ฮฉD1 โ†’ MOSFET + flyback diodeD2 (pull-up)Power: battery โ†’ charger โ†’ 3.3 V rail โ†’ everything else. Every ground is common.The motor never runs off a microcontroller pin โ€” it switches through a transistor, with a diode across it so the coil cannot kick current back into the board.The sensor sits on the skin side of the board so the window presses flat against the wrist.

The parts list

Bill of materials for the TEEN stress bracelet prototype
PartWhat it doesSpecCost
Seeed XIAO nRF52840Brain of the bracelet21 ร— 17.8 mm, Bluetooth LE, built-in battery charging pins~$16
MAX30102 pulse sensorReads the pulse signalGreen + IR LEDs and a photodiode, talks over I2C~$7
WS2812B LEDs ร—5Color changes with the trend2020 package, one data line, 470 ฮฉ series resistor~$4
10 mm coin vibration motorThe buzz3 V, driven through a small MOSFET with a flyback diode~$3
LiPo battery, 400 mAhPower3.7 V, 30 ร— 20 ร— 5 mm, protection circuit included~$8
TP4056 USB-C charger boardRecharging1 A charge current, over-discharge protection~$3
3D-printed housing + strap lugsHolds it all on the wristPLA, 0.12 mm layers, 42 ร— 34 ร— 11 mm, 20 mm strap slots~$1 of filament
20 mm silicone watch strapComfort and contact pressureOff-the-shelf quick-release strap~$6
TotalPlus solder, wire and a lot of reprints~$48

Prices are what I paid in small quantities; they move around a lot.

How it decides you're stressed

It never sees your homework or your group chat. All it has is the rhythm of your heartbeat โ€” so the logic stays deliberately simple.

1. Sample

The sensor streams raw light readings at 100 Hz. The firmware finds the peaks in that waveform โ€” each peak is one heartbeat.

2. Measure the gaps

The time between beats is never identical. Those tiny differences (heart-rate variability) are what the bracelet actually watches, averaged over five minutes.

3. Learn your normal

For the first few days it just records, building a personal baseline. There is no universal 'stressed' number โ€” only your own.

4. Nudge, don't nag

If the readings stay away from baseline for more than ten minutes, the LEDs shift warmer and the motor gives two short buzzes. Then it stays quiet for at least half an hour.

Three things that went wrong

The signal was garbage at first

The sensor was sitting a millimetre off the skin. Adding a 1.2 mm raised boss around the window โ€” so the sensor presses flat โ€” fixed more than any code change did.

The motor kept resetting the board

Driving it straight from a pin browned out the microcontroller. It now switches through a transistor on its own rail, with a diode across the motor.

Movement looks exactly like stress

Walking up the stairs raises heart rate too. The firmware ignores any window where the readings are also very noisy, which is a rough stand-in for motion.

One important limit

This is a student prototype, not a medical device. It estimates signals associated with stress; it does not diagnose, treat or prevent any condition, and its readings should never be used to make a health decision.