🛠 Diffuser une fréquence cardiaque BLE vers nRF Toolbox
El objetivo
Flashear el ejemplo «heart rate» de Nordic (servicio GATT estándar Heart Rate) en el nRF52840-MDK, y luego observar la curva de frecuencia cardíaca simulada en la aplicación móvil nRF Toolbox. Es la demo estrella del wiki MakerDiary: valida toda la cadena — SDK, SoftDevice S140, mergehex, flasheo mediante arrastrar y soltar, radio BLE.
Requisitos previos
- nRF5 SDK 17.x y la toolchain Arm GCC (
gcc-arm-none-eabi) esperada por el SDK. - La herramienta
mergehexde Nordic (nRF Command Line Tools). - El repositorio de ejemplos MakerDiary, que contiene los ejemplos para la placa:
git clone https://github.com/makerdiary/nrf52840-mdk.git
cd nrf52840-mdk
Paso 1 — Compilar ble_app_hrs
make BOARD=nrf52840_mdk -C examples/nrf5-sdk/ble_app_hrs/s140/nrf52840
El hex de la aplicación se genera en la carpeta _build/ del ejemplo. Atención: el repositorio MakerDiary no ha recibido actualizaciones desde 2021; si la compilación falla, verifique que esté utilizando el SDK 17.0.x con el SoftDevice S140 6.1.1 esperado por los Makefiles.
Paso 2 — Fusionar y flashear
La pila BLE necesita el SoftDevice S140. Fusiona los dos hex, y luego deposita la imagen en la unidad DAPLINK:
mergehex -m s140_nrf52_6.1.1_softdevice.hex \
_build/ble_app_hrs_nrf52840_mdk.hex \
-o firmware.hex
Deposita firmware.hex en la unidad DAPLINK, y luego presiona Boot/Reset.
Paso 3 — Conectarse con nRF Toolbox
- Instala nRF Toolbox (Android/iOS) y abre el módulo Heart Rate.
- Inicia un escaneo: el dispositivo aparece (nombre publicitario
Nordic_HRM). - Conéctate: la curva de frecuencia cardíaca simulada se actualiza mediante notificaciones BLE.
Lo que esta demo te enseña
- Publicidad → conexión → GATT: el servicio Heart Rate (0x180D) expone la característica Heart Rate Measurement en modo notify — el núcleo del periférico BLE.
- El SoftDevice es un controlador + pila BLE que se ejecuta debajo de tu aplicación; sin fusión, nada se publica (el famoso issue #31).
- El puerto COM virtual del DAPLink (CDC, 115200 baudios) muestra los logs del ejemplo: ideal para depurar.
Alternativa Zephyr
El sample peripheral_hr de Zephyr upstream también funciona en la placa, pero el port de MakerDiary está desactualizado: ya no compila con Zephyr 3.5+ (issue #55). Utiliza la versión actual del árbol de Zephyr (west build -b nrf52840_mdk samples/bluetooth/peripheral_hr) en lugar de la del repositorio.