A modern, cross-platform desktop application for monitoring heart rate via Bluetooth Low Energy (BLE). Built with C++17, the Slint declarative UI framework, and SimpleBLE.
This application is particularly useful for live streamers, as it includes a dedicated, customizable transparent overlay window designed to be captured in OBS Studio.
- BLE Device Scanning & Connection: Discover and connect to nearby BLE heart rate monitors.
- Real-Time Heart Rate Display: View your live BPM (Beats Per Minute) and a dynamic heart rate chart.
- Session Statistics: Automatically tracks minimum, maximum, and average heart rate during your session.
- OBS Studio Integration: Includes a secondary, draggable overlay window with adjustable opacity for easy screen capture during live streams.
- Data Export: Save your session's heart rate data to a
.csvfile for later analysis. - Dark Theme UI: A sleek, modern user interface built using Slint.
To build this project from source, you will need:
- A compiler with C++17 support (e.g., Clang, GCC, MSVC).
- CMake (version 3.21 or higher).
- Git (for fetching dependencies via CMake).
- On macOS: Ensure you have Bluetooth permissions and the necessary Apple frameworks (CoreFoundation, CoreBluetooth - handled automatically by CMake).
This project uses CMake's FetchContent to automatically download and configure its dependencies (Slint, SimpleBLE, and GoogleTest).
# Clone the repository
git clone <repository-url>
cd HeartRateMonitorCpp
# Create a build directory
mkdir build && cd build
# Configure the project
cmake ..
# Build the executable
cmake --build .After building, you can run the main application:
./HeartRateMonitorNote: On macOS, the terminal or application running the executable may prompt you for Bluetooth permissions.
Unit tests are built alongside the main application. You can run them using:
./UnitTests- Slint (v1.15.1) - Declarative GUI toolkit.
- SimpleBLE (v0.7.1) - Cross-platform BLE library.
- GoogleTest (v1.14.0) - C++ testing framework.