Skip to content
All work
Hardware & IoTHonorable Mention — ETH Zurich

RescueTap

One tap — or a detected fall — sends a caregiver your exact location.

Role
Sole designer and engineer — hardware, firmware, enclosure, user research
Timeline
Mar 2024 — Sep 2024
Stack
  • Python
  • Raspberry Pi 4
  • MPU-6050 / I2C
  • Twilio WhatsApp API
  • gpsd
  • Shapr3D
Links
Full build guide

The problem

What was broken, for whom

People with mobility impairments who fall or face an emergency often can't reach a phone to call for help — and most wearable panic buttons still require the user to press something, which fails at exactly the moment it matters most.

Context

Constraints that shaped it

RescueTap started inside the ETH Zurich Build2gether 2.0 Inclusive Innovation Challenge, a contest specifically about building for people with disabilities. I talked to people who live with mobility challenges before designing anything, and two needs came up repeatedly: the device has to detect a fall on its own, and it has to tell a caregiver exactly where the person is — not just that something happened.

My role

What I actually did

Sole designer and engineer — hardware selection, firmware, the fall-detection logic, the GPS bridge, the alerting integration, and the 3D-modelled enclosure.

Requirements

Stakeholders and what they needed

  • Must detect a fall automatically — a user who has fallen may not be able to press anything
  • Must still support a manual alert, for near-misses or non-fall emergencies
  • Must send an exact location, not just a notification, so a caregiver can actually respond
  • Must be cancellable, so an accidental trigger doesn't become a false alarm caregivers learn to ignore

The solution

What I built

A Raspberry Pi 4 wearable with an MPU-6050 accelerometer/gyroscope reading over I2C at a 50 Hz sample rate. Total acceleration and rotational velocity are computed as vector magnitudes each cycle and compared against thresholds; crossing them triggers an alert automatically. A manual button covers the cases the sensor can't. Because the Pi has no GPS module, I paired it with a small Android app (GPSd Forwarder) that relays the phone's own GPS over IP to a local gpsd instance on the Pi — a workaround, not a purchased module, and it worked. The alert itself — coordinates included — goes out over the Twilio WhatsApp API, so a caregiver gets it on a channel they already check.

Decisions

Trade-offs made on purpose

  • Chose WhatsApp over a custom app or SMS because caregivers open WhatsApp without being taught anything new — the alerting channel has to have zero onboarding cost for the person receiving it
  • Added a 5-second long-press cancellation with a distinct buzzer and LED pattern per state, so a user who trips but doesn't fall can stop the alert before it reaches anyone — false alarms are what make people stop trusting a safety device
  • Modelled the enclosure in Shapr3D for something small and wearable rather than a bare breadboard — a device someone is meant to wear daily has to survive being worn daily

Stack

What, and why

Raspberry Pi 4
enough compute for sensor polling, GPS handling and a network call, in a form factor small enough to wear
MPU-6050 (I2C)
combined accelerometer and gyroscope on one bus — fewer components, fewer failure points
gpsd + GPSd Forwarder
the Pi has no GPS hardware; this relays the phone's GPS over IP instead of adding a module
Twilio WhatsApp API
delivers to a channel caregivers already have open, with no app to install

Implementation

A few details worth explaining

  • Fall detection runs as vector-magnitude thresholding on the accelerometer and gyroscope readings — simple enough to run continuously on a Pi 4 without a dedicated ML model, and tunable in one place if the sensitivity needs adjusting for a specific user
  • The button, buzzer and LED are three GPIO lines with pull-up/pull-down configured in software; the cancellation window (holding for 5 seconds) is timed in the main loop rather than with an interrupt, which was simpler to get right and fast enough for the use case

Challenges

What broke, and what I'd change

  • The threshold that separates 'fell down' from 'sat down quickly' is genuinely hard to tune — too sensitive and the device cries wolf, too conservative and it misses a real fall. I settled on values that worked well in testing, but this is the part of the project I'd most want more real-world data on
  • The gpsd-over-IP approach works, but it makes the device dependent on the paired phone staying in range — a self-contained GPS module would remove that dependency at the cost of more hardware and higher power draw. Given more time I would build both and let the trade-off be explicit

Results

What actually happened

  • Awarded Honorable Mention (Mobility Impairments) at the ETH Zurich Build2gether 2.0 Inclusive Innovation Challenge
  • Recognised in the top 1% of 664 global participants

What I learned

The takeaway

Automatic detection only earns trust if false positives are rare and easy to dismiss — the cancellation button turned out to matter as much as the fall-detection logic itself.

Gallery

RescueTap enclosure with hand-labelled front panel
01Early enclosure prototype, hand-labelled
RescueTap enclosure showing the alert button and status LED
02Alert button and status LED on the side panel
Build2gether 2.0 Inclusive Innovation Challenge banner, ETH Zurich
03The ETH Zurich Build2gether 2.0 Inclusive Innovation Challenge

More work

CIB Business Banking mobile app showing account balances and quick actions
Fintech

CIB Digital Banking

Payment features that clear compliance and ship to a national bank's customers.

  • Node.js
  • NestJS
  • REST API design
  • React
  • +3

Read case study

GlimpseGems home screen showing mood-based categories and trending gems
Mobile

GlimpseGems

A city's hidden places — found by mood, saved, and shared with friends.

  • React Native
  • TypeScript
  • Supabase
  • Tailwind CSS
  • +1

Read case study

Contact

Have a problem worth solving?

I'm open to Software Engineer and Product Engineer roles — remote, or relocating. Based in Cairo, EET (UTC+2).