How prabhu-omkar/cardioedge-esp32 works
CardioEdge-ESP32 is an offline ECG monitor and development pipeline: the device samples live or demo ECG, processes and quality-gates beats, classifies accepted beats, then presents rolling verdicts and alerts. In parallel, Python prepares patient-wise datasets using the same DSP core, trains CNN and Random Forest models, and evaluates them. The README documents the end-to-end behavior; source excerpts show key firmware, DSP, dataset, and training details, but not every runtime call, so some links rely on documentation.
Main entry points: main.cpp ESP32 Runtime · core.py Python DSP Binding · common.py ML Data Utilities · ecg_core.cpp ECG DSP Core
Components 27
ESP32 Monitoring
- ESP32 Runtime
firmware/src/main.cpp - Demo Clips
firmware/src/demo_clips.h - Live State
firmware/src/state.h
Signal Processing
- ECG DSP Core
firmware/lib/ecg_core/ecg_core.cpp - DSP Contracts
firmware/lib/ecg_core/ecg_config.h - Beat Features
firmware/lib/ecg_core/ecg_core.cpp - Signal Quality Gate
firmware/lib/ecg_core/ecg_core.cpp - Rhythm and HRV
firmware/lib/ecg_core/ecg_core.cpp
Classification
- Dual Classifiers
firmware/src/classifiers.cpp - Int8 CNN
firmware/src/model_cnn.h - Random Forest
firmware/src/rf_predict.h
Data and Evaluation
- Patient-wise Dataset
ml/dataset.py - Python DSP Binding
ml/core.py - ML Data Utilities
ml/common.py - CNN Training
ml/train_cnn.py - RF Training
ml/train_rf.py - Model Evaluation
ml/evaluate.py - Capture Evaluation
ml/eval_capture.py - QRS Evaluation
ml/eval_qrs.py - SQA Evaluation
ml/sqa_eval.py
User Outputs
- OLED Display
firmware/src/display.cpp - Phone Dashboard
firmware/src/webui.cpp - Dashboard Page
firmware/src/dashboard_html.h - Buzzer and LED
firmware/src/main.cpp
Other components
- ECG Front End
- ECG Databases
- Monitor User
Connections 30
- ECG Front End → ESP32 Runtime: supplies samples
README.md - Demo Clips → ESP32 Runtime: provides clips
firmware/src/main.cpp - ESP32 Runtime → ECG DSP Core: streams samples
README.md - ECG DSP Core → Signal Quality Gate: assesses quality
firmware/lib/ecg_core/ecg_core.cpp - ECG DSP Core → Beat Features: extracts beats
README.md - Signal Quality Gate → Beat Features: gates classification
README.md - ESP32 Runtime → Dual Classifiers: classifies beat
firmware/src/main.cpp - Dual Classifiers → Int8 CNN: runs CNN
firmware/src/classifiers.cpp - Dual Classifiers → Random Forest: runs forest
firmware/src/classifiers.cpp - ESP32 Runtime → Rhythm and HRV: applies rhythm logic
README.md - ESP32 Runtime → Live State: updates snapshot
firmware/src/main.cpp - ESP32 Runtime → OLED Display: refreshes display
README.md - ESP32 Runtime → Phone Dashboard: serves dashboard
README.md - Phone Dashboard → Dashboard Page: serves page
firmware/src/webui.cpp - ESP32 Runtime → Buzzer and LED: drives alarm
README.md - Monitor User → OLED Display: views verdicts
README.md - Monitor User → Phone Dashboard: views live data
README.md - ECG Databases → Patient-wise Dataset: provides records
ml/dataset.py - Patient-wise Dataset → Python DSP Binding: processes recordings
ml/dataset.py - Python DSP Binding → ECG DSP Core: calls shared DSP
README.md - Patient-wise Dataset → ML Data Utilities: writes split data
README.md - ML Data Utilities → CNN Training: loads training splits
ml/train_cnn.py - ML Data Utilities → RF Training: loads training splits
ml/train_rf.py - ML Data Utilities → Model Evaluation: loads test splits
ml/evaluate.py - CNN Training → Int8 CNN: exports device model
ml/train_cnn.py - RF Training → Random Forest: exports forest model
README.md - Model Evaluation → SQA Evaluation: measures gate effects
ml/evaluate.py - Model Evaluation → Python DSP Binding: evaluates inference
ml/evaluate.py - Capture Evaluation → Python DSP Binding: evaluates captures
ml/eval_capture.py - QRS Evaluation → Python DSP Binding: evaluates detection
ml/eval_qrs.py