Situation
- Life-science company in clinical training
- Custom pressure-sensor board, provenance lost
- Silicone training phantom with embedded masses
- No schematic, firmware source or protocol spec
- No calibration certificate
- Original developer no longer available
- Target environment: a consulting room with no network
Challenge
The pad emitted numbers, and nothing was known about them:
- The wire format, framing and sample rate were undocumented
- Channel order did not correspond to physical sensor position
- Readings were dimensionless counts, while the curriculum teaches force in Newtons
- No reference load cell was available to calibrate against
- The square sensor grid had to map onto an anatomical surface
- Results had to reach the study from a machine with no connectivity
What dataMaven delivered
Each layer had to be established by measurement before the one above it was possible:
- Characterised the serial protocol empirically — wire format, framing and rate
- Recovered the channel-to-position map by stimulating each sensor in a known order
- Built a per-sensor force model from repeated loading at known masses
- Fitted response curves with an explicit, measured saturation ceiling per sensor
- Mapped the square sensor grid onto the anatomical outline with a radial warp
- Built a guided exam that advances on the learner’s actions rather than button presses
- Scored coverage and applied pressure separately, against configurable ground truth
- Packaged the whole thing as an offline desktop application with durable local records
Technology
ReactTypeScriptWeb SerialElectronPythonNumPySciPyViteGitHub Actions
The build, end to end
Characterised
Serial protocol probe · Wire format & framing · Sample rate · Channel map recovery
Calibrated
Known-mass loading · Per-sensor response curves · Saturation ceilings · Error characteristics
Modelled
Radial grid-to-surface warp · Shared geometry module · Coverage model · Ground-truth scoring
Built
Guided exam walkthrough · Live pressure & coverage feedback · Actionable debrief · Operator & participant views
Delivered
Offline desktop application · Versioned self-describing records · Hardware documentation · Deployment guide
Outcome
A calibrated trainer running beside the rig, and a written record of what the numbers mean:
- Force reported in Newtons, per sensor, with known error characteristics
- A single decoding module owning the wire format, so firmware revisions are a one-file change
- Live pressure and coverage feedback during the exam
- A debrief expressed as something the learner can go back and do differently
- Every exported record carrying the calibration it depends on
- Fully offline operation, with results accumulating into one collectable file
- Hardware and deployment documentation stating what is measured and what is provisional
Key insight
An instrument that cannot state its own error is not an instrument. A trainer showing a plausible force reading on an uncalibrated rig teaches the wrong technique with total confidence — so the application reports Newtons or it reports nothing.
Engagement snapshot
Life sciences / clinical training
Sector
3 weeks, greenfield
Engagement
16-taxel FSR matrix
Sensor array
USB serial, 5 Hz
Interface
8 Python instruments
Measurement tooling
Offline Windows desktop
Delivery
56 across 7 reviewed merges
Commits
Deliverables
- Device Characterisation & Hardware Documentation
- Per-Sensor Force Calibration
- Guided Clinical Training Application
- Operator Tooling & Scoring Configuration
- Offline Desktop Packaging & CI Pipeline
- Deployment Guide
What changed — week by week
Week 1Protocol characterisation & channel mapping
Week 1Force calibration from known masses
Week 2Grid-to-surface geometry & coverage model
Week 2Guided exam & live feedback
Week 3Debrief, scoring & operator tooling
Week 3Offline desktop packaging & documentation
Facing a complex landscape — or an ambitious build — and a decision you need to make with confidence? That’s the work.
Book a 45-min intro