IMSES Logo
01 · Overview & Prototype

A wearable that knows when your body is about to fail.

IMSES is an intelligent multi-sensor elbow sleeve with 5 biosensors and a motor actuator that classifies human behaviors in real time, warns users before fatigue causes injury, and provides active protection through motor-driven sleeve contraction. It bridges the gap between consumer fitness trackers and clinical monitoring.

Try the live demo
Hardware
XIAO nRF52840 Sense
Sensors
5 sensors + motor · 10 Hz
Interface
Web Bluetooth + Serial
Status
Working prototype
Physics
Bioengineering
Computer Science
Electrical Engineering
Embedded Systems
Biomechanics
Signal Processing

Project at a glance

This research project combines three disciplines into a single wearable: the physics of sensor transduction, the bioengineering of physiological signal interpretation, and the computer science of real-time classification and wireless communication. Navigate to any section to see the details.

IMSES system schematic

Fig 4. System schematic — sensor placement and wiring.

Fig 5. Real-time recording with prototype — live sensor data streaming over BLE.

Prototype

IMSES prototype worn on arm

Fig 1. The IMSES prototype worn on the arm. The sleeve houses all sensors and electronics in a comfortable, form-fitting design.

IMSES electronics and wiring

Fig 2. Inside view showing the XIAO nRF52840 microcontroller, sensor wiring harness, MAX30102 module, and battery compartment.

IMSES sleeve construction

Fig 3. Outer construction showing wire routing channels, motor mounting, and the flex sensor integrated along the elbow joint.

IMSES technical schematic — exploded view of smart elbow sleeve with embedded sensors

This illustration was generated using AI based on our physical prototype. It contains minor errors in component representation.

5
Biosensors
1
Motor actuator
10Hz
Sample rate
2ways
BLE + Serial

Sensor array

SymMeasurementRangeUnitHardware
EMGMuscle electrical activity0–5mVEMG sensor module
TSkin temperature28–38°CNTC 10kΩ thermistor
ωAngular velocity0–300°/sIMU LSM6DS3 (built-in)
SpO₂Blood oxygen saturation88–100%MAX30102
θElbow flex angle0–150°Flex sensor 2.2"

Actuator

SymComponentFunctionHardware
MMotorHaptic feedback & assisted motionDC motor / servo

Behavior classification algorithm

A three-tier decision tree fuses angular velocity, heart rate, joint angle, EMG, and SpO₂ to classify behavior. No single sensor can distinguish all 8 states — the matrix below shows why multi-sensor fusion is necessary.

Sensor–Behavior Fusion Matrix
Behavior ω
velocity
SpO₂
oxygen
θ
angle
EMG
muscle
T
temp
Why fusion is needed
😴 Sleeping ω alone can't separate from Resting
🪑 Resting HR distinguishes sleep vs. awake rest
💻 Office Stable θ at 70–100° separates from Walking/Eating
🚶 Walking Rhythmic ω pattern unique to gait
🏃 Aerobic Low EMG separates cardio from strength
🏋️ Strength High EMG = muscle contraction under load
⚠ Low O₂ SpO₂ < 93% overrides all classification
⚠ Fatigue Sudden ω drop + elevated T = fatigue onset
required for classification    not used    Each behavior requires a unique combination — no single sensor covers all 8 states.
Sensor Signatures — How all 5 variables shift across behaviors
Behavior ω °/s θ ° EMG mV SpO₂ % T °C Signature pattern
😴 Sleeping ↓ 2 ↓ 20 ↓ 0.1 → 97 ↓ 32 Everything low — minimal movement, relaxed muscles, cool skin
🪑 Resting ↓ 5 → 90 ↓ 0.3 → 98 → 33 Still low ω like sleep, but θ at seated angle and higher baseline
💻 Office → 25 ● 85 → 0.5 → 98 → 33 θ locked at typing angle (70–100°), low but non-zero ω from typing
🚶 Walking ↗ 75 → 95 → 0.8 → 97 ↗ 34 Rhythmic ω from arm swing, slight T rise from activity
🏃 Aerobic ↑ 150 → 100 → 1.2 ↘ 96 ↑ 35 High ω but low EMG — fast movement without heavy muscle load
🏋️ Strength ↑ 110 ↑ 120 ↑ 3.8 ↘ 95 ↑ 36 All sensors elevated — high ω, deep flex, strong EMG, hot, SpO₂ dropping
⚠ Fatigue ↓↓ 10 → 90 ↘ 1.5 ↓ 92 ↑ 37 Sudden ω crash from high → low, SpO₂ drops, T still elevated — body giving up
high   rising   baseline   declining   low   key discriminator    Every behavior produces a unique 5-sensor fingerprint.

The inspiration

The idea for IMSES started with a scene from Ready Player One — the haptic suit that lets the wearer feel every punch, every touch, every impact in the virtual world. A full-body wearable covered in sensors and actuators that understands what the human body is doing in real time.

I thought: what if we built something like that, but for the real world? Not for gaming — for safety. A wearable sleeve that senses your muscles, your joints, your vital signs, and tells you when to stop before your body breaks down. That question became IMSES.

Ready Player One — Haptic Suit
🎬
From fiction to physics
The haptic suit in Ready Player One uses an array of sensors and actuators to create a feedback loop between body and machine. IMSES takes the same core idea — multi-sensor fusion on a wearable — and applies it to a real engineering problem: preventing injury during strength training.

The problem

Over 530,000 weightlifting injuries occur in the US annually, many caused by loading past the fatigue threshold without warning. Commercial wearables like the Apple Watch carry only 3 sensors (heart rate, accelerometer, SpO₂) — none measuring muscle force, joint angle, or real fatigue onset. Clinical-grade EMG rigs that can detect these signals cost upwards of $5,000 and are confined to research labs. There is no affordable, wearable device that monitors both biomechanical and physiological signals during strength training and provides real-time safety feedback.

530K/yr
Weightlifting injuries

Annual injuries in the US alone. Most occur at the fatigue threshold — exactly when feedback is needed most.

3
Sensors on a smartwatch

Heart rate, accelerometer, SpO₂. No muscle force, no joint kinematics, no fatigue detection.

$5K+
Clinical EMG setup

Gold-standard muscle monitoring exists — but only in labs, never in the gym where it's needed.

What makes IMSES novel

IMSES addresses this gap not through a single technological breakthrough, but through the integration of seven complementary sensing modalities into a single wearable form factor — an elbow sleeve — with on-device behavior classification. Three aspects distinguish this work:

Multi-modal sensor fusion

Unlike single-signal devices, IMSES fuses physiological signals (SpO₂, temperature, EMG) with kinematic signals (flex angle, angular velocity) to achieve behavior classification that neither modality can accomplish alone.

Real-time edge classification

The three-tier decision tree runs entirely on the nRF52840 microcontroller at 10 Hz — no cloud, no phone dependency, no latency. Classification happens at the edge, enabling sub-second safety alerts during exercise.

Accessible & open design

Built entirely from off-the-shelf components (total hardware cost under $50), with an open-source web dashboard that connects via Web Bluetooth — no app store, no backend, no subscription. Designed to be reproducible by other researchers.

Temperature · Steinhart–Hart equation
NTC 10kΩ thermistor, β = 3950
Rsensor = Rref · Vout3.3 − Vout 1T = 1T + 1B · lnRsensorR T°C = TK − 273.15 where T₀ = 298.15 K, R₀ = 10 kΩ, B = 3950 K

The NTC thermistor's resistance varies non-linearly with temperature. The β-parameter form of the Steinhart–Hart equation gives absolute temperature in kelvin, which is then converted to Celsius.

Flex angle · Linear resistance
Flex Sensor 2.2" (25 kΩ nominal)
Rflex = 10000 · Vout3.3 − Vout θ = Rflex − 100000.044 Output: 0° to 150° elbow angle

The flex sensor's conductive ink increases in resistance as it bends. A voltage divider converts this to analog voltage; linear calibration gives angle in degrees.

EMG · Muscle electrical activity
Surface electromyography signal processing
Vraw = ADC · 3.34096 Vfiltered = bandpass(Vraw, 20 Hz, 450 Hz) RMS = √Σ Vfiltered²N RMS envelope in mV, window N = 50 samples

Raw EMG signals are bandpass-filtered to isolate muscle activation frequencies (20–450 Hz), then converted to an RMS envelope that represents contraction intensity. Higher RMS indicates stronger muscle engagement.

Blood oxygen · Pulse oximetry (SpO₂)
MAX30102 dual-wavelength photoplethysmography
R = ACred / DCredACir / DCir SpO₂ = 110 − 25 · R Beer–Lambert law: ratio of pulsatile (AC) to baseline (DC) absorption at 660 nm vs 880 nm

The MAX30102 emits red (660 nm) and infrared (880 nm) light through the skin. Oxygenated and deoxygenated hemoglobin absorb these wavelengths differently. The ratio R of the AC/DC components at each wavelength is mapped to SpO₂ via an empirical linear calibration derived from the Beer–Lambert law.

Heart rate · PPG peak detection
MAX30102 infrared photoplethysmography
signal = lowpass(IRraw, 5 Hz) IBI = tpeakitpeaki−1 HR = 60000mean(IBI) IBI = inter-beat interval in ms; HR in beats per minute

The infrared PPG waveform tracks blood volume changes with each heartbeat. After low-pass filtering to remove motion artifacts, peaks are detected to find inter-beat intervals. Heart rate is computed as 60 seconds divided by the mean interval between peaks.

Joint torque · Biomechanics
Personalized by user's forearm length
Fload = mweight · g M = Fload · Lforearm · sin(θ) M in N·m, personalized elbow torque under load

Torque at the elbow joint is the load force times the moment arm (forearm length times sine of the elbow angle). Cross-referenced with safe thresholds to warn about dangerous combinations of weight and joint angle.

From physics to firmware

The formulas above aren't just theory — they run as C++ on the XIAO nRF52840 at 50 Hz. Below are key excerpts from the actual firmware (full source).

Steinhart–Hart temperature conversion
NTC thermistor ADC → resistance → Celsius
float computeNtcResistanceOhms(int adcValue) {
  if (adcValue <= 0) return -1.0f;
  float ratio = ADC_MAX / (float)adcValue;
  return NTC_FIXED_RESISTOR_OHMS * (ratio - 1.0f);
}

float computeTemperatureCFromResistance(float resistanceOhms) {
  if (resistanceOhms <= 0.0f) return -1000.0f;
  float inverseT = (1.0f / NTC_T0_KELVIN)
                  + (log(resistanceOhms / NTC_R25_OHMS) / NTC_BETA);
  return (1.0f / inverseT) - 273.15f;
}
Flex sensor angle mapping + kinematics
Raw ADC → elbow angle → angular velocity → angular acceleration
float mapFlexRawToAngleDeg(float rawValue) {
  float slope = (FLEX_BENT_ANGLE_DEG - FLEX_STRAIGHT_ANGLE_DEG)
              / (FLEX_BENT_RAW - FLEX_STRAIGHT_RAW);
  float angle = FLEX_STRAIGHT_ANGLE_DEG
              + (rawValue - FLEX_STRAIGHT_RAW) * slope;
  return clampFloat(angle, FLEX_BENT_ANGLE_DEG, FLEX_STRAIGHT_ANGLE_DEG);
}

// Called at 50 Hz — computes ω and α from successive angle readings
void updateFlexKinematics(unsigned long nowMs) {
  float dt = (nowMs - lastKinematicsSampleAtMs) / 1000.0f;
  filteredFlexRaw += FLEX_FILTER_ALPHA * ((float)flexRaw - filteredFlexRaw);
  float previousAngleDeg = currentAngleDeg;
  currentAngleDeg = mapFlexRawToAngleDeg(filteredFlexRaw);
  angularVelocityDegPerSec = (currentAngleDeg - previousAngleDeg) / dt;
}
Motor protection state machine
Rapid bend detection → forward/settle/reverse cycle
// Triggered when bend speed exceeds 200°/s for 2 consecutive samples
enum MotorProtectionState : uint8_t {
  MOTOR_STATE_IDLE    = 0,
  MOTOR_STATE_FORWARD = 1,   // tighten sleeve
  MOTOR_STATE_SETTLE  = 2,   // hold 2 seconds
  MOTOR_STATE_REVERSE = 3    // release
};

void maybeStartMotorProtectionCycle(unsigned long nowMs) {
  if (motorProtectionState != MOTOR_STATE_IDLE) return;
  if (bendClosingSpeedDegPerSec >= BEND_SPEED_TRIGGER_DEG_PER_SEC)
    bendSpeedTriggerSamples++;
  else
    bendSpeedTriggerSamples = 0;
  if (bendSpeedTriggerSamples >= BEND_SPEED_TRIGGER_CONFIRM_SAMPLES) {
    motorCycleCount++;
    enterMotorProtectionState(MOTOR_STATE_FORWARD, nowMs,
                              getMotorPhaseDurationMs());
  }
}
BLE packet construction
Packing sensor data into 20-byte BLE characteristics
// Three BLE characteristics, each ≤20 bytes (BLE 4.2 MTU limit)
BLECharacteristic vitalsPacketChar("19B10011-...", BLERead|BLENotify, 20);
BLECharacteristic motionPacketChar("19B10012-...", BLERead|BLENotify, 20);
BLECharacteristic imuPacketChar   ("19B10013-...", BLERead|BLENotify, 14);

// Fixed-point encoding: heartRate × 10, temperature × 100
int16_t heartRateX10 = clampToInt16((int32_t)(heartRateBpm * 10.0f));
int16_t tempX100     = clampToInt16((int32_t)(temperatureC * 100.0f));

uint8_t vitalsPacket[20] = {0};
writeU16LE(vitalsPacket, 0, packetSequence);
vitalsPacket[2] = buildStatusFlags();
writeI16LE(vitalsPacket, 4, heartRateX10);
writeI16LE(vitalsPacket, 6, spo2X10);
writeI16LE(vitalsPacket, 8, tempX100);

Live sensor streaming, behavior detection, and safety alerts

Open the dashboard, tap Connect, and the elbow sleeve streams 5 sensor channels at 10 Hz. Real-time gauges, behavior classification, safety override alerts, and joint torque analysis — everything visible at a glance during training.

Web Bluetooth pairing (no app store)
5 live sensor gauges with sparklines
Daily and weekly summaries
Safety override alerts (SpO₂, fatigue)
Real-time joint torque risk analysis
Personalized training feedback
Mobile-first responsive design
Demo mode (no hardware required)
Launch live demo
IMSES · Live sensor feed
Heart Rate
--
BPM
SpO₂
--
%
Temperature
--
°C
Elbow Angle
--
DEG
EMG Raw
--
ADC

Simulated sensor data — open the full app →

Planned improvements

A · External form factor and aesthetics

The current prototype prioritizes function over appearance. Future revisions will integrate decorative design elements, smoother fabric transitions, and a more streamlined silhouette so the sleeve looks like a wearable product rather than a lab prototype. The goal is a device users would actually want to wear in public.

B · Wiring, component mounting, and durability

External wiring needs to be routed through dedicated fabric channels or replaced with a flexible PCB. Component mounting must be reinforced against repeated bending and sweat exposure. The firmware also needs closed-loop optimization, where sensor feedback directly adjusts motor behavior without manual threshold tuning.

C · Additional motion sensors

Adding more motion-oriented sensors, such as additional IMU axes, strain gauges, or pressure arrays, would increase the device's ability to detect complex movements like rotational exercises, asymmetric loading, or multi-joint coordination. This would expand the classification from 8 behaviors to potentially dozens.

D · Contraction mechanism optimization

The current motor-driven cable contraction works but is limited in force and comfort. Future designs will explore stronger micro-motors, improved cable routing geometry, and padding at pressure points. The goal is a contraction that feels supportive rather than restrictive, providing meaningful joint stabilization during heavy lifts.

E · Flexibility and skin comfort

The sleeve fabric must balance structural rigidity (to hold sensors in place) with flexibility (to allow natural joint motion). Exploring medical-grade silicone, breathable mesh zones, and hypoallergenic contact materials would improve long-wear comfort and make the device suitable for extended training sessions.

Long-term vision

IMSES is a proof-of-concept for a broader idea: that affordable, multi-modal wearable devices can bring clinical-grade physiological monitoring into everyday environments. The same sensor fusion and classification approach could be applied to other joints (knee, shoulder, wrist), other activities (physical therapy, rehabilitation), and other users (elderly fall detection, workplace ergonomics). The physics doesn't change, only the form factor and the classification rules.

Looking further ahead, I see IMSES as an early step toward soft robotic exoskeleton clothing. Imagine a full-body suit, like the one in Ready Player One, that doesn't just sense what your body is doing, but actively responds: contracting to stabilize a joint under load, loosening to allow free movement during rest, and alerting you the moment your physiology signals fatigue. The technology exists in pieces across labs worldwide. What's missing is the integration into something wearable, affordable, and useful. That's the direction I want to push: from a single elbow sleeve to a system that wraps around the body and works with it, not just on it.

Jiayang Bai

Jiayang Bai

Dongying No.1 Middle School · Applying to study Physics

I am a high school student interested in physics, robotics, and Human-Computer Interaction (HCI). I am especially drawn to devices that do not only measure the body, but also respond to it under real physical constraints.

IMSES began as my attempt to turn a passive elbow sleeve into a responsive prototype. I designed the sensor layout, and built the prototype by selecting and connecting the electronic components, built the firmware, and created a web dashboard to visualize motion and physiological signals. Throughout the process, I kept running into practical trade-offs. Sensing accuracy had to be weighed against comfort. Wiring had to coexist with power demands and mechanical support. None of these could be optimized in isolation.

What I learned from this project was not simply how to connect sensors or write Arduino (C++) code. I learned that engineering is often about narrowing a broad idea into a workable system: deciding which signals matter, which features to cut, and how to make separate parts function together in a wearable form. AI tools helped me enter unfamiliar technical areas faster, but the core challenge was still judging, testing, and refining the system myself.

I hope to study physics because I want to understand the principles behind real-world systems and use them to build tools that interact with the physical world. For me, IMSES is an early step toward that goal: a project where physics, electronics, robotics, and human-device interaction meet in something someone can actually wear.

Research

Research paper

Applications and Challenges of Intelligent Robot Systems in On-orbit Collaboration and Planetary Surface

Co-author. Explored the engineering challenges of deploying autonomous robotic systems in space environments, including orbital assembly, surface exploration, and multi-agent coordination under communication constraints.

Community & leadership

Fitness club · Founder

Founded and lead the school fitness club. Organized training sessions, introduced safe lifting techniques, and saw firsthand the gap in real-time injury prevention — the direct motivation behind IMSES.

Dongying Aid-Xinjiang program · Co-founder & volunteer

Co-founded and organized the Dongying Aid-Xinjiang volunteer initiative, coordinating resources and volunteers to support communities in Xinjiang.

Strengths & skills

Physics Chemistry Biology Computer Science
Circuit design Robotics Soldering C++ / Arduino React / TypeScript AI / Classification PCB prototyping
IMSES · A research project by Jiayang Bai · 2026 · Physics · Bioengineering · Computer Science