MotionPI

MotionPI: a privacy-first wearable-sensing platform that captures clean, free-living PPG (for HR/HRV), tri-axial accelerometry, and ENMO for an NIH health study — with real-time on-device MVPA detection, ~7.7M records/day, and zero malformed writes.

A Privacy-First Wearable Biosignal Platform

The problem

A wearable health-sensing algorithm is only ever as good as the physiological data it learns from — and the hardest place to keep that data clean is real life. In a lab, a PPG or accelerometer signal is pristine; out in the free-living world, phones die mid-afternoon, Bluetooth cuts out on a walk, networks vanish, and the OS kills the app to save battery. Every reading lost or malformed to those failures is a hole in the very substrate a health model is trained and evaluated on.

How I solved it

So I built MotionPI around a single assumption: everything will fail, and no signal may be lost when it does. It captures wristband biosignals — PPG for heart rate and HRV, tri-axial accelerometry, and wristband-computed ENMO — writing every reading locally, validating it against a schema, and syncing only when it is safe, so a dropped connection costs seconds of buffering rather than hours of sensor data. On-device, a real-time rule-based detector classifies moderate-to-vigorous activity — 70% of ENMO in a 7-minute sliding window above 100.6 mg — and fires an EMA survey at the moment the behavior occurs. Through an active NIH field study it has sustained ~7.7M records a day with zero malformed writes: clean, timestamped, free-living physiological data.

I built MotionPI in the Kahlert School of Computing at the University of Utah, advised by Jeff M. Phillips — a privacy-first wearable-sensing platform that turns BLE wristbands and a smartphone into a reliable source of clean, free-living physiological data. It captures the biosignal modalities health-sensing models are built on — PPG (for heart rate and HRV), tri-axial accelerometry, and wristband-computed ENMO — and couples them to a real-time, on-device activity detector and in-the-moment EMA surveys. I engineered it for signal quality, robustness, and participant privacy, and built and deployed it through close collaboration with the Department of Health & Kinesiology, the Huntsman Cancer Institute, the College of Social & Behavioral Science, and wearable-hardware teams at the College of Engineering at The Ohio State University.

  • 7.7Mrecords / day
  • 0malformed writes
  • 5 sGPS sampling
  • 3 × 1 wkwaves / cohort

Signals captured — one timestamped, multimodal stream

  • PPG (optical cardiac) — wristband green-light sensor kept active for heart rate & HRV
  • Tri-axial accelerometry (IMU) — inertial motion streamed from the wristband
  • ENMO — gravity-adjusted acceleration magnitude, computed on the wristband and sent as 15-s averages
  • GPS location — free-living trajectories sampled ~every 5 s from the phone
  • EMA self-report — in-the-moment surveys fired at detected activity: contextual labels tied to the sensor stream
  • Device telemetry & logs — battery, storage, charging, BLE-state and survey events — every element timestamped

Animated ENMO-based activity detection: when 70% of the ENMO values in a 7-minute window (green) exceed 100.6 mg, MotionPI flags moderate-to-vigorous physical activity and fires a survey at the moment it happens. Open full visualization → Code on GitHub

The Study

MotionPI powers an active, multi-million-dollar NIH-funded behavioral study — Using Momentary Measures to Understand Physical Activity Adoption and Maintenance among Pacific Islanders in the United States, led by PI Professor Neng Wan. The study uses momentary, in-the-wild measurement to understand how Pacific Islander communities in the U.S. adopt and sustain physical activity over time.

Each study runs in small cohorts of 15–20 participants, observed across three separate one-week intervals, with data collected daily from 8:30 AM to 10:00 PM. Participants carry a smartphone running the MotionPI app and wear BLE wristbands developed by the team; the wristbands measure movement and communicate with the phone, which relays data to a secure backend. Formal participant data collection began on May 23, 2025.

Privacy by design

All data is keyed by participant ID and stored on the University of Utah’s Center for High-Performance Computing (CHPC). The research team never has direct access to participants’ identities.

What the platform collects

During an active session, MotionPI captures:

  • Movement — a single magnitude value from the wristbands, sampled ~every second
  • GPS location — from the phone, ~every 5 seconds
  • Battery level — for both the wristbands and the phone, ~every 30 minutes
  • EMA surveys — triggered on the phone when movement stays high enough over a ~7-minute window; completed responses are uploaded to the CHPC server
  • System logs — survey triggers, connection-state changes, and similar events

Every data element is timestamped.

MotionPI Publication

Paper: arXiv:2510.19938

This interdisciplinary effort resulted in the SmartSP 2025 paper. For more technical details about the system design and reliability framework, see our preprint on arXiv:
Designing a Secure and Resilient Distributed Smartphone Participant Data Collection System.

MotionPI App Example Screens

MotionPI app screenshots

Example MotionPI app states, including connectivity status, wristband battery and storage, data-collection indicators, BLE connection status, and Ecological Momentary Assessment (EMA) survey interfaces.

At its core, MotionPI uses a Flutter-based mobile application that performs continuous sensing, manages background processes, buffers data offline when necessary, and automatically recovers from interruptions. Custom wristbands developed at OSU stream IMU and ENMO data along with battery, storage, and charging information, while the app maintains stable BLE communication through intelligent reconnection and resubscription logic. All sensor data is sent to a Node.js and Express backend, where MongoDB stores only schema-validated records. This strict validation pipeline enabled the system to handle nearly 7.7 million records per day without producing a single malformed write during deployment.

Privacy and reliability are built into the system’s foundation. No login information or PHI is ever collected; instead, the app uses the device’s advertising ID as a pseudonymous participant identifier. MotionPI is designed to withstand real-world constraints, including Bluetooth dropouts, background task interruptions, and intermittent network availability, automatically restoring full functionality and synchronizing buffered data.

MotionPI Wristband Hardware

MotionPI wristbands

The study extends the MotionSense HRV research wristband. Each device carries a full biosignal sensor suite, on-device signal processing, and 30-day onboard storage — streaming motion summaries and activity triggers to the phone over BLE while archiving the raw high-rate waveforms locally.

PPG (optical cardiac)Analog Devices MAX86141, green + infrared (OSRAM SFH701), 64 Hz — for heart rate & HRV; optical barriers and adaptive illumination for a cleaner signal
Inertial (IMU)TDK InvenSense ICM20948, 9-axis (accel + gyro + mag), 32 Hz — the source of ENMO and motion context
On-device computeENMO (gravity-adjusted acceleration) computed on the wristband; a real-time MVPA rule (100.6 mg over 4.9 of every 7 min) emits an activity-trigger bit over BLE
MCU / radioNordic nRF5340 BLE SoC — dual-core, low-power, Bluetooth Low Energy to the phone
Onboard storage4 GB NAND + 8 MB NOR with a custom Flash Translation Layer that separates the file table (NOR) from data (NAND) for wear-free durability and up to 30-day raw PPG/IMU recording
Security & backendAES-256 (CBC) GPS encryption on-device; JWT device-level auth with offline sign-in; Express.js + Podman-managed MongoDB with Mongoose schema validation and retry/backfill

Pre-Pilot System Validation

During pre-pilot testing, we validated the end-to-end pipeline: left- and right-hand wristbands were shaken in separate bags to simulate continuous activity and trigger the 7-minute MVPA rule. The wristbands detected activity, sent a trigger bit over BLE, and the phone delivered an Ecological Momentary Assessment (EMA) survey notification. PPG sensors (green indicator) remained active during activity for HR/HRV measurement. This confirms firmware, BLE sync, app logic, and sensor integration before the pilot study.

32-second validation clip: wristbands trigger Ecological Momentary Assessment (EMA) survey after 7-minute activity threshold.

High-Resolution Location Accuracy

MotionPI collects GPS samples every five seconds during study periods, enabling precise reconstruction of movement patterns while maintaining strict privacy safeguards. The trajectory shown below is a decrypted-for-visualization validation example from a test participant, illustrating the high positional accuracy achieved after secure processing. All location traces remain encrypted at rest, pseudonymized, and kept separate from direct personal identifiers; only aggregated or de-identified outputs are accessible, and solely to a restricted group of authorized study researchers.

5-second GPS trajectory accuracy demonstration

Five-second GPS trajectory from a test participant, showing MotionPI’s high-accuracy location reconstruction after secure decryption. Raw GPS traces remain encrypted, pseudonymized, and not directly tied to personal identity.

ENMO-Based Activity Detection in MotionPI

MotionPI incorporates a real-time physical activity detection pipeline built on ENMO (Euclidean Norm Minus One), a gravity-adjusted measure of acceleration magnitude. MotionSense wristbands compute ENMO continuously and transmit 15-second averaged values to the phone, where MotionPI processes them to identify meaningful activity bouts. When 70% of ENMO values within a 7-minute sliding window exceed the intensity threshold of 100.6 mg, the system classifies the period as moderate-to-vigorous physical activity (MVPA). The wristband then transmits a trigger bit to the phone, prompting MotionPI to deliver an activity Ecological Momentary Assessment (EMA) survey at the moment the behavior occurs.

The animated ENMO detection demo is featured at the top of the page — the interactive version and code are linked there.

This ENMO-triggered survey mechanism allows MotionPI to capture contextual, psychosocial, and environmental factors surrounding moments of real physical activity—something that traditional surveys and retrospective recall cannot achieve.
By tying real-time sensing to real-time self-report, MotionPI provides researchers with high-resolution insight into why activity occurs (or fails to occur) in everyday life.

Participant Monitoring & Compliance Reporting

Running a multi-week field study requires knowing, day to day, whether each participant’s device is actually collecting data. To support this, I built the MotionPI Active Participants Report — a MongoDB-backed reporting tool that summarizes activity across every data stream (location, ENMO, surveys, logs, and battery) for a configurable time window and timezone.

The report surfaces compliance and reliability signals straight from the study database: per-participant counts of wristband disconnects, data-collection toggles, expired activity surveys, and denied PA surveys — so the research team can catch problems (a dead battery, a disconnected wristband, a participant who stopped responding) while there is still time to intervene.

To make it usable by non-technical collaborators at the Huntsman Cancer Institute and across the study team, the tool ships in several forms: a command-line report, a Flask-backed web app with interactive tables, charts, and CSV/PNG export, and a double-click packaged application (built with PyInstaller for both Apple Silicon and Intel Macs) that starts the server and opens the browser automatically — no Python install required. An in-app Help page and a separate log-event reference define every metric and give MongoDB query examples. The system follows secure-by-default practices: no secrets in the repository, localhost binding, optional API-key protection, and configurable CORS.

MotionPI Active Participants Report: choose a time window and data sources, run the report, and explore per-participant tables and charts (location, ENMO, surveys, logs, batteries) with CSV/PNG export.

Code: motionpi-behavior-monitoring

If you are working on wearable biosignals, on-device sensing algorithms, or the data pipelines and signal-quality tooling behind health-sensing models, I would love to talk.