PPG - Heart Rate and Heart Rate Variability Sensing

Using a fingertip PPG sensor and AD/DA board, we wrote an algorithm to record heart rate data with minimal noise. We performed an FFT analysis to determine the peak heart rate, and also computed HRV from the time-domain signal.





Description

  • Built a Raspberry Pi–based photoplethysmography (PPG) system using the APDS-9008 light sensor to measure heart rate, heart rate variability (HRV), and recovery time.

  • Tuned ADC gain and sampling frequency (400 Hz) to avoid clipping and balance noise vs. resolution.

  • Collected time-domain data, applied FFT with windowing to extract HR frequency, and analyzed motion artifacts and sensor placement.

  • Demonstrated that fingertip placement yields strong, high-SNR signals, while wrist-based sensing suffers due to physiological and geometric limitations.

  • Implemented HRV analysis using scipy to calculate max and RMS HRV, showing data quality sensitivity to duration and motion.

  • Modeled heart rate recovery after exercise with an exponential decay fit to estimate cardiovascular recovery time constant (τ ≈ 87 s).


Learning Outcomes

1. Technical Skills & Knowledge

  • Raspberry Pi data acquisition and CSV-based data logging

  • Analog signal tuning: sampling theory, gain, and anti-aliasing

  • Spectral analysis using FFT with manual windowing

  • HR/HRV algorithms and signal quality assessment

  • Modeling physiological data with exponential fits

  • Sensor placement design and physiological considerations

2. General Project/Practical Skills

  • Experimental Design: Sensor calibration, testing across body sites, noise control

  • Data Analysis: Signal processing in Python, noise filtering, HR trend extraction

  • Troubleshooting: Diagnosed issues like clipping, rocking artifacts, and poor SNR

  • Scientific Reporting: Interpreting results and drawing insights from noisy biological signals



Full report: https://docs.google.com/document/d/1tX6Lmd7nr55QGjw1kg2u0-U8ADkBJtfbc22XSABrc0g/edit?usp=sharing



Using a fingertip PPG sensor and AD/DA board, we wrote an algorithm to record heart rate data with minimal noise. We performed an FFT analysis to determine the peak heart rate, and also computed HRV from the time-domain signal.

Developed a Raspberry Pi-based PPG system to measure heart rate and HRV, optimizing sensor placement and data acquisition techniques. Analyzed time-domain data using FFT, demonstrating the effectiveness of fingertip sensing over wrist placement. Gained skills in experimental design, data analysis, and troubleshooting while modeling cardiovascular recovery time.