Health Monitor banner

Health Monitor

2 devlogs
33h 18m 9s

A chest mounted health monitor that detects and measures heartbeats, respiratory rate, and calculates Heart Rate Variability using a high precision accelerometer and a low power STM32 microcontroller.

This project uses AI

I used AI models for improving the schematic, reading and summarizing data sheets/documentation, refactoring and optimizing code, and implementing some algorithms. AI also helped write the GitHub README.

Demo Repository

Loading README...

Konstantinos Fragkoulis

Shipped this project!

Hours: 33.3
Cookies: 🍪 310
Multiplier: 9.29 cookies/hr

I built a bare metal STM32U5 health monitor that captures synchronized ECG and SCG signals. I designed a custom PCB for the microcontroller, the IMU, and the ECG analog front end chip, I wrote the firmware in C, and I implemented algorithms based on the current scientific literature to detect heartbeats using both the ECG and the SCG and calculate key Heart Rate Variability metrics. Then, I collected data and I compared the SCG metrics to the ground-truth data collected form the ECG. While more data is needed to draw conclusions, the limited data showed excellent SDNN agreement and promising RMSSD agreement.

Konstantinos Fragkoulis

Finished the project. Improved the DSP pipelines and validated collecting data from three 30-minute sessions.

Attachment
Attachment
0
Konstantinos Fragkoulis

I designed a PCB with a low power STM32 microcontroller, a low noise density biosensor from ST (although I just use its IMU), and an AD8232 for performing an Electrocardiogram (ECG). My microcontroller receives an external interrupt from the IMU when a new measurement is ready, it triggers a read using Direct Memory Access (DMA) for both the IMU and the Analog to Digital Converter (ADC) which reads the ECG almost perfectly in sync with the corresponding acceleration. I have implemented a slightly modified version of the Pan-Tompkins algorithm to detect the peaks of the R waves from the ECG and I am able to calculate instantaneous and moving average heart rate and heart rate variability. This data is streamed to my computer over a bare-metal USB Virtual COM port and is stored/plotted. I am getting started with filtering the signal from the IMU so I can mount the board on my chest and be able to get a clean Seismocardiogram (SCG).

Attachment
0