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.
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.
Prototype
5 sensors, one microcontroller, and a classification brain.
Five biosensors and a motor actuator stream to a Seeed XIAO nRF52840 Sense microcontroller, which runs a three-tier classification algorithm and broadcasts results over Bluetooth Low Energy at 10 Hz.
Sensor array
Actuator
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.
Why this project exists, and what makes it different.
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.
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.
Annual injuries in the US alone. Most occur at the fatigue threshold — exactly when feedback is needed most.
Heart rate, accelerometer, SpO₂. No muscle force, no joint kinematics, no fatigue detection.
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:
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.
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.
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.
Real physics. Real biomechanics. Real code.
Every sensor value is converted from raw signals using closed-form equations derived from device physics — not canned library calls. Here are six of the core formulas, spanning thermodynamics, optics, signal processing, and biomechanics.
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.
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.
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.
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.
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.
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).
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;
}
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;
}
// 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()); } }
// 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);
A dashboard that runs in your browser.
Built in React and TypeScript. Connects to the device via Web Bluetooth — no app store, no installation. Pairs with the phone in your pocket or the laptop on your desk.
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.
Simulated sensor data — open the full app →
Where IMSES goes from here.
The current prototype demonstrates the core concept — multi-modal sensing with real-time classification. Several planned improvements would bring IMSES closer to a deployable system.
Planned improvements
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.
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.
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.
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.
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.
Why I built this.
Jiayang Bai
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
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
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.
Co-founded and organized the Dongying Aid-Xinjiang volunteer initiative, coordinating resources and volunteers to support communities in Xinjiang.
Strengths & skills
Let's talk.
Try the live demo in your browser, read the source code, or get in touch directly. I'd love to hear what you think.