Steady · care-home fall triage

of care-home falls are unwitnessed.

Steady shortens the wait between a fall and a person at the bedside.

Mayes et al., JAMDA 2026 · 212 falls

Problem

The fall is survivable. The wait is what kills.

½

of people who lay over an hour died within 6 months (1981 cohort, 20 long lies).

30%

of fallers over 90 lay there an hour or more.

80%

of those fallers could not get up unaided.

They had call alarms. The alarms were not used.

Wild et al., BMJ 1981 · Fleming & Brayne, BMJ 2008

What exists today

What exists today, measured

ApproachWhat the data saysGap it leaves
Pendant button24% never wear it; 83% of lone fallers who lay over 5 min never pressed it.Needs a conscious press
Bed-exit alarmsOver 80% of alerts false in a large hospital study.Noise, not priority
Nurse-call and clinical alarms72–99% false; 74–99% non-actionable.Staff delay or disable them
Consumer watchReal-world accuracy below lab accuracy; must be worn and charged.Must be worn every night

These tools stop at detection or noise. None solves response.

Heinbüchner 2010 (52 pendant users) · Wen 2024 · Sendelbach & Funk 2013 · Chaudhuri 2015

What’s unique

Three claims, each measurable

83% of lone fallers never pressed the alarm.
The board detects the fall. 45 s of stillness raises the top tier by itself.
72–99% of alarms are false, so staff delay or disable them.
Not another siren: every open fall is ranked by urgency.
A fall that nobody confirms can quietly drop off a list.
A fall never closes on its own. Staff mark it checked, or a worker presses the wearable’s button at the bedside.
No movement since the fall No worker yet

Tiers as the dashboard shows them, highest first

Implementation

How it works

A wearable detects the fall on the device itself. The dashboard decides how urgent it is, and a person has to close it.

Pipeline

Board200 Hz · detects fall
LinkUSB or Wi-Fi
Serverstores alerts
Dashboardranks by urgency

Triage

Fall
Still 45 s
No movement since the fall
No worker yet
Needs a response
Handled tonightMark checked, or a worker’s button press

Detect

The board watches for weightlessness, then a hard impact, then a change of posture, and decides on the device.

Rank

Every open fall sits on one Alerts list, highest urgency first. Movement has to come from the wearer’s own device, so demo data can’t clear the top tier.

Close

A fall stays until staff click “Mark checked”, or a worker presses the button on the wearable. It then moves to “Handled tonight”, and Undo reopens it.

Product

What Steady does

One screen for the whole night shift, and a small device on each resident. Here is what the dashboard shows and what staff can do with it.

The whole wing at a glance

Every resident is shown as asleep, up, needs a check, or fallen, with the count at the top: “8 residents · 4 asleep · 2 up · 1 needs a check · 1 fall”.

One Alerts list

Falls, checks and device problems in urgency order, with tabs for All, Falls, Checks and Devices. Each has a clear action: Mark checked, Acknowledge or Done, and Undo if it was a mistake.

A page for every resident

Heart rate and tonight’s range, time since the last movement, battery, signal, and movement per half hour drawn from the gyroscope.

Restlessness checks

Someone who has been moving a lot for a sustained spell is flagged as “Restless for the last 20 min”, so staff can look in before it becomes a fall.

Device health, before it’s missed

Low battery, weak signal and a device that has stopped syncing each raise their own alert, so a flat wearable doesn’t look like a quiet resident.

Optional

Staff accounts

Staff log in through Auth0. A care home registers once, which creates its first administrator. Administrators invite caretakers by email, change roles and remove staff. Login is off until Auth0 is configured.

Setup in the Settings page

Pick Simulated or Live data, connect a wearable over Wi-Fi or USB, run a self-test (sending data, accelerometer reads gravity, gyroscope responds, fall detection fires), and pair the device to a resident.

Demo a fall

In Simulated mode, send a fall for any resident with one click, so the whole alert flow can be shown without hurting anyone or needing the hardware.

Experimental

Room-level location

Three presses on the wearable start survey mode, which fingerprints the Wi-Fi in a room so a device can later be placed in a room, not at an exact position. Scanning does not yet run on the board.

The Alerts page. A fall for room 103 is at the top with the badge No movement since the fall and a Mark checked button, above a check for room 105 and two device alerts.
Alerts: the fall sits above everything else, with the reason it is urgent.
A resident page showing heart rate, time since last movement, battery, signal, and a movement chart for the night.
Resident view: movement per half hour from the gyroscope, plus device health.
The Settings page with a choice between Simulated and Live devices, a Demo a fall control, and buttons to connect a wearable over Wi-Fi or USB.
Settings: choose the data source, connect a wearable and pair it to a resident.

Try it without a board

Switch Settings to Simulated and the server generates readings for every resident. Press Demo a fall to watch a fall arrive, get ranked and be closed.

No hardware? Try a demo device streams a built-in wearable so you can check the connection and the self-test.

npm install
npm run dev

Screenshots show Simulated mode. The residents, heart rate, battery and signal are demo values.

Hardware

A real board and a real sensor

Arduino UNO Q Board

Runs the fall detector on the device itself, not in the cloud. It has Wi-Fi, 4 GB of RAM and 32 GB of storage on board.

MPU6050 Sensor

A real accelerometer and gyroscope, read over I2C and checked every 5 ms so a landing spike is not missed between samples. It connects to the board with just a few wires: power, ground, data and clock.

USB or Wi-Fi Link

Over USB the dashboard reads the board straight from the browser (Chrome or Edge). Over Wi-Fi, a relay app on the board streams readings to the dashboard and posts one-second summaries to the server. The relay has been run on the board, streaming about 48 samples a second.

One button Acknowledge

One press by a worker at the bedside confirms they responded and resolves the open fall. Three presses start survey mode. Two presses are ignored as a fumbled double tap.

Open source. Firmware, relay, server and dashboard are all in the GitHub repository.

Under the hood

How a fall is detected

The rules run on the board and were tested on deliberate drops. They look for the shape of a fall, not just a bump.

WeightlessThe total acceleration drops below 0.60 g, which means nothing is holding the wearer up.
ImpactThen a spike over 1.8 g within 1.2 seconds of that.
SettleAfter 250 ms for the bounce to die down, the board checks the result.
ConfirmA posture change of 40° or more confirms the fall. An impact of 3.0 g or more counts even if it lands flat.
Soft dropsA soft drop that lands flat is not counted.

The sensor is read over a ±8 g range every 5 ms. The alert tells staff what the device measured, for example “Fall detected by the device: peak 2.2 g, posture change 89°”.

Where the data goes

From board to dashboard

The board sends plain text lines: its id and firmware, battery, one motion sample (acceleration in g, rotation in degrees a second), a fall with its peak and tilt, and a worker’s button press. Two example lines:

M,0.021,-0.004,1.003,0.4,-0.2,0.1
F,2.2,89,90

The server

Batches of 10 to 200 samples a second are folded into one reading per second for the dashboard. The server keeps readings, alerts and pairings in a local store, or in Databricks when it is configured. A device token can protect the uplink.

The Worker

A separate Cloudflare Worker with a D1 database handles device ingest, server-side fall analysis and the Wi-Fi survey store. Ingest is idempotent, so a resent sample doesn’t count twice. Samples are kept for 30 days.

The stack

Every piece is open source and in one repository.

Arduino UNO QMPU6050Zephyr sketchPython relayWebSocketNode serverReact + ViteDatabricksCloudflare Workers + D1Auth0

Viability

Real hardware, honest limits

Real today

  • MPU6050 on the UNO Q.
  • Fall detection on the board, tested with drops.
  • Readings to dashboard to alerts, pairing.
  • USB link, and a Wi-Fi relay streamed from the board.
  • Urgency ranking of open falls.

Simulated, and labelled

  • Heart rate, battery and signal.
  • The other residents, shown only in Simulated mode.
  • Live mode lists only residents with a paired wearable.

Not proven yet

  • Detection is tuned on drops, not on people.
  • Databricks has not run end to end.
  • Staff login is optional and off by default.
  • No retention or export policy for server data.
  • Wi-Fi room scanning does not yet run on the board.

A threshold, not a certified detector. No measured false-positive rate yet.

Next: label real falls and measure false positives, then decide board placement, battery, enclosure and data retention.

Questions

Questions people ask

Does it replace night staff?

No. It tells staff who to see first. The point is to shorten the time between a fall and a person arriving, not to remove the person.

What if the resident can’t press anything?

They don’t need to. The wearable detects the fall itself. If nobody has moved for 45 seconds after the fall, it moves to the top of the list on its own.

Can an alert disappear by itself?

No. A fall stays on the Alerts page until staff click Mark checked or a worker presses the button on the wearable. Undo reopens it if it was a mistake.

What does it measure?

Movement from an accelerometer and gyroscope. Heart rate, battery and signal are shown in the dashboard but are simulated for now.

Who can see resident data?

Staff who log in, once Auth0 is configured: each care home has its own administrators and caretakers. Without it the dashboard is open, so it should only be used with demo data on a trusted network.

Is it a medical device?

No. It is a hackathon prototype and must not be relied on to detect falls or to replace care staff. The fall detector is a threshold, not a certified detector.

Can I try it?

Yes. It is open source. Run npm install then npm run dev and switch Settings to Simulated, no board needed. The GitHub repository has the instructions.

Steady does not stop falls.

It makes sure a fall is never waiting for a button press.