ESP32 Heart Rate GATT Transmission

Job ID: 40083490

Budget: $30 – $250 USD

I have an ESP32 wired to a heart-rate sensor and the readings are flowing nicely on the serial monitor. What I need now is the firmware logic that turns those numbers into meaningful, processed health metrics (current BPM, rolling average, and signal quality indicator) and exposes them over Bluetooth Low Energy using the Generic Attribute Profile.

Your task is to create or modify the ESP-IDF code so the ESP32 advertises once, lets a mobile app subscribe, and then pushes the processed metrics at a configurable interval. Please keep power consumption in mind and make sure the connection survives reconnects without a full reboot.

Deliverables
• Complete, well-commented source code ready to flash on an ESP32
• A brief README explaining characteristic UUIDs, notification format, and how to test with nRF Connect or similar
• Confirmation log or screenshot showing the metrics arriving on a BLE client

Acceptance Criteria
– Processed BPM, average BPM, and signal quality appear as distinct GATT characteristics
– Notifications arrive at the requested interval (default 1 s) with no missed packets during a 5-minute test
– Compiles cleanly on the latest stable ESP-IDF for ESP32 without additional libraries beyond what you include in the repo

If you’ve built BLE peripherals on the ESP32 before, this should be straightforward—I just need a clean, reliable implementation I can drop into the rest of my project.