Version 3.0.0

Tepovka: Heart activity analysis using photoplethysmography

Research project from BUT in Brno. App for measuring HR and HRV by extracting the optical signal from a phone camera. Processing happens 100% locally without sending data to the cloud. Current version: 3.0.0.

About the project

Tepovka started in autumn 2024 in the FEKTeams competition at FEKT BUT. The goal is practical measurement of HR and HRV using PPG on standard phones, openly and clearly.

We involve students in development, share procedures, and design algorithms that can be further verified in the lab and in the field. The project is supported by the Department of Biomedical Engineering (DBME).

Context

The project is developed and tested at UBMI, FEKT BUT. It serves as a training and research framework for rPPG/HRV with links to academic resources, labs, and internal methodologies.

How Tepovka works

Adaptive photoplethysmography

We use a noninvasive method for measuring blood volume changes. The algorithm primarily analyzes the green channel from the phone camera but switches to red when the signal is weak for reliability.

Hybrid computation and HRV

The system combines time-domain analysis and FFT. In real time it calculates selected parameters of heart rate variability (HRV): SDNN, RMSSD, pNN50, SD1, and SD2. The metrics provide insight into the autonomic nervous system.

Breathing and heart rate recovery

From the signal envelope the algorithm extracts breathing frequency. It also analyzes heart rate recovery (HR Recovery Rate) to estimate how the cardiovascular system settles after exertion.

Direction

We build on current HR/HRV measurement and gradually add metrics and ways to share them.

  • New parameters: SpO2, blood pressure estimation, and deeper PPG analysis.
  • Secure data sharing: Preparation for remote consultations with specialists.
  • Accessibility: High-contrast mode, larger type, and voice guidance.

AI plan

Collected data will feed machine learning models: early detection of arrhythmias, atypical HRV trends, and anomalies in PPG waveform shape. We are building training data for artifact rejection and load profiles so we can flag risks even in suboptimal measurement conditions.

Goal: timely, plain-language alerts about possible deviations without overpromising.

Measurement accuracy

Verified by concurrent measurement with reference ECG (Bittium Faros 180) at rest and after exertion.

0.99

Pearson correlation coefficient
Comparison against reference ECG.

0.55 bpm

Mean absolute error (MAE)
Average deviation from the reference.

Methodology and signal processing

Technology stack

  • User interface: Flutter / Dart (voice feedback via flutter_tts)
  • Core computations: Native C++ core (~2500 lines) driven by CMake
  • Signal filtering: IIR Butterworth (library iirjdart)
  • Frequency analysis: FFT (library fftea)

Extracted metrics

  • Basic vital signs: Heart rate (40–200 BPM), breathing rate (6–30 breaths/min)
  • HRV time domain: SDNN, RMSSD, pNN50
  • HRV nonlinear domain: SD1, SD2 (Poincare plot)

Export measurements to CSV for analysis or sync them via Apple HealthKit and Google Health Connect. All processing stays on device.

Development plan (Roadmap)

v3.0.0 (Current version)

Core PPG algorithm with HRV analysis, HealthKit integration, senior mode, 22 unit tests.

v3.1.0 (Planned Q2 2026)

Wear OS integration and advanced trend analysis.

v4.0.0 (Planned Q4 2026)

Machine learning to optimize peak detection, optional web dashboard for batch analysis.

Live demo

Tepovka directly on the web

Run the web version and try the measurement the same way as on the phone. It runs locally in the browser. Interactive: click the frame or the link below to open the live demo.

Coming soon on iPhone (TestFlight / App Store).

Development team

We are biomedical engineering students working together to advance mobile health and share experience with other science enthusiasts. The project is led by mentors Ing. Jan Šíma and Ing. Andrea Němcová, PhD. and we are gradually adding new members.