Inspiration

Babies in the NICU are covered in wires. Every lead, probe and cuff is there to track a handful of vitals: breathing, temperature, weight and movement. We realized most of that can be measured from a distance with sensors built into the crib, without touching the baby at all. Whisker brings that kind of monitoring home, so parents can sleep knowing someone is still watching.

What it does

Whisker is a smart crib that monitors a sleeping baby and alerts parents when something goes wrong.

  • Tracks breaths per minute, baby body temperature, room temperature, weight and movement, all without anything attached to the baby.
  • Streams a live night vision video feed to a web dashboard.
  • Shows live vitals cards, historical charts (up to 30 days), a night timeline of activity and alerts, and a full alert log with a snapshot of the crib at the moment each alert fired.
  • When a vital crosses a danger threshold (stopped breathing, unsafe body temperature, unsafe room temperature, or the baby leaving the crib), the dashboard shows a full screen alert and Whisker places an automated phone call to the parent.
  • Everything sits behind login, so only the family can see the feed and the data.

How we built it

Hardware and edge (C++ on a Raspberry Pi)

  • A Coral Edge TPU runs an SSD MobileNet v2 detection model on the camera feed to find the baby in the crib and track movement.
  • The detected position drives a Pololu Maestro servo mount that aims a TF-Luna lidar at the baby's chest. We filter the distance signal and count the rise and fall of the chest to get breaths per minute.
  • An MLX90640 thermal camera is sampled at the detected location for body temperature, and the room temperature comes from the same sensor.
  • Pressure sensors under the mattress, read through an ADS1115 ADC, give weight and tell us whether the baby is in the crib.
  • The Pi writes readings to a TimescaleDB hypertable on Tiger Data, and sends video frames and emergency packets over an authenticated TCP connection to our server.
  • All enclosures and mounts were designed and 3D printed by the team.

Backend (Flask on AWS EC2)

  • Pulls the latest readings and time bucketed history from Tiger Data with plain SQL and time_bucket().
  • Pushes live vitals to the dashboard over Socket.IO and relays the video feed.
  • On an emergency packet it saves the alert and snapshot to the database, pushes it to every open dashboard, and calls the parent through Twilio Voice at the same time.
  • Served by gunicorn behind nginx with HTTPS on our own domain.

Frontend (React + Vite)

  • Live vitals cards, Recharts history charts, a draggable night timeline with alert pins, a 3D animated baby that reflects movement, and a full screen alert modal.
  • Auth0 login with JWTs checked on every API call and socket connection.

Challenges we ran into

  • Aiming a single point sensor at a moving baby. The lidar only measures one spot, so the detection model, servo control and breath counting all had to stay in sync in real time.
  • Noisy signals. Breathing shows up as a few millimeters of chest movement. We had to smooth the signal and reject noise without missing real breaths.
  • Getting video into a browser. The Pi sends raw frames over TCP, and browsers cannot read that directly, so the backend had to relay it.
  • False alarms. A sensor reading of zero can look like a baby that stopped breathing. We had to separate "no data" from "danger" so parents are not woken up for nothing.
  • Twilio trial limits. Verified numbers only, blocked inline call scripts and region permissions all broke our first calls on the way to a working setup.
  • Building in parallel. We built the dashboard against simulated data with the exact same shape as the real database, so switching to live sensor data was a one line change.

Accomplishments that we're proud of

  • A full pipeline from sensor to phone call: crib, Pi, cloud database, server, dashboard and voice call, all working live.
  • A working monitoring camera that detects and follows the baby's movements precisely.
  • Measuring breathing with no contact with the baby, using a lidar aimed by a detection model running on the edge.
  • An alert reaches the dashboard and starts a phone call within seconds of the crib detecting it.
  • A polished dashboard that a tired parent can read at a glance at any time necessary
  • Custom 3D printed hardware built from scratch in 24 hours.

What we learned

  • Running effective object detection on a Coral Edge TPU and using its output to steer physical hardware.
  • Turning noisy sensor signals into numbers people can trust, and why alert logic needs to tell missing data apart from real danger.
  • Storing and querying time series data with TimescaleDB hypertables and time_bucket().
  • Real time web apps with Socket.IO, and deploying a full stack on EC2 with nginx, gunicorn and HTTPS.
  • Securing every endpoint and socket with Auth0, and automating phone call alerts with Twilio.

What's next for Whisker

  • A mobile app with push notifications alongside the phone calls.
  • Escalation to a second caregiver if the first alert is not acknowledged within five minutes.
  • Validating our breathing and temperature readings against medical grade monitors.
  • Sleep insights for parents, such as nightly sleep quality and trends over weeks.
  • Support for multiple cribs and caregivers in one account.
Share this project:

Updates

Submission history