Inspiration
Continuous health monitoring usually requires expensive wearables or invasive cameras. We wanted to explore whether we could turn something everyone already has (WiFi) into a health sensor. The idea of detecting tiny chest movements from wireless signals seemed ridiculously ambitious for a hackathon, but that's exactly what made it interesting. We were inspired by recent research showing WiFi sensing could work for this, and wanted to see if we could actually build a working system in 36 hours.
What it does
CardioNet monitors your heart rate using only WiFi signals. Two ESP32 devices act as transmitter and receiver, capturing how WiFi waves bounce off your chest as you breathe and your heart beats. We process this noisy signal data (Channel State Information or CSI), extract the subtle patterns caused by your heartbeat, and feed it into an LSTM neural network that predicts your heart rate in real-time. The system displays live readings on a web dashboard and stores the data in a SQLite database. It's completely contactless and respects privacy since it doesn't use cameras.
How we built it
We started with ESP32 microcontrollers to capture Channel State Information (CSI), basically the raw WiFi signal data showing how signals change as they bounce around a room. The hardest part was the signal processing pipeline: we had to remove noise, apply bandpass filtering to isolate the frequency range where heartbeats occur, and extract meaningful pulse patterns from incredibly noisy data. We built an LSTM model with dropout and regularization to predict heart rate from these processed signals. The backend is a Flask API with SQLite for storing readings, and we created a React dashboard to visualize the live heart rate data. We validated our predictions against an Apple Watch to measure accuracy, which was surprisingly good.
Challenges we ran into
Getting clean signals from CSI data was way harder than expected. WiFi signals pick up everything—people walking by, air conditioning, random movements—and the actual heartbeat signal is tiny in comparison. We spent hours tweaking our bandpass filters and trying different signal processing techniques to isolate the pulse. Training the LSTM was tricky because we needed a lot of high-quality labeled data, which meant sitting still for extended periods while wearing an Apple Watch for ground truth. The model kept overfitting at first until we added proper dropout and regularization. Coordinating the real-time data flow from ESP32 devices through signal processing to the model to the web dashboard also required careful timing and buffering.
Accomplishments that we're proud of
We actually got it working! The live demo worked pretty reliably, we could see the predicted heart rate updating in real-time and it matched pretty well (usually within 5 bpm or so) what the Apple Watch was showing. Building the entire pipeline from hardware (ESP32s) through signal processing through machine learning to a polished web interface was ambitious, and we're happy we pulled it off. The system is genuinely useful and could have real applications in hospitals, elderly care, or smart homes.
What we learned
We learned a ton about signal processing and how to extract meaningful patterns from extremely noisy data. Working with CSI data taught us about the physical properties of WiFi waves (OFDM and subcarriers especially) and how sensitive they are to tiny fluctuations. On the ML side, we got hands-on experience with LSTMs for time-series prediction and the importance of proper regularization. We also learned how to rapidly prototype a full-stack system under time pressure, coordinating hardware, backend, ML inference, and frontend simultaneously. The biggest lesson was probably that ambitious ideas are actually achievable when you break them into manageable pieces and iterate quickly.
What's next for CardioNet
There's a lot of room to improve accuracy and expand functionality. The CSI data contains way more information than just heart rate, so we're curious about extracting respiration rate, detecting stress levels, or identifying irregular heartbeats (arrhythmia). We'd also like to make the system more robust to movement and work in more diverse environments. Longer term, we think this could actually be deployed in healthcare settings where contactless monitoring would be really valuable, so we'd need to work on reliability, security, and eventually clinical validation.
Built With
- ardunio
- arm
- assembly
- c
- coding
- computer
- esp32
- flask
- hardware
- lstm
- machine-learning
- microcontroller
- neural
- next
- python
- pytorch
- software
- sqlite
- typescript

Log in or sign up for Devpost to join the conversation.