🛠 Piloter une LED par Bluetooth LE avec le SDK nRF5
El objetivo
ble_app_blinky es el ejemplo didáctico de Nordic: un servicio GATT personalizado con una característica LED (escritura) y una característica Button (notificación). Escribes desde el teléfono, el LED RGB de la placa se enciende; pulsas el botón de usuario, el teléfono recibe la notificación. Es el mejor ejercicio para entender write/notify antes de escribir tu propio servicio.
Paso 1 — Compilar para la placa
El repositorio MakerDiary lleva los ejemplos del SDK nRF5 (17.0.x, SoftDevice S140 6.1.1) hacia la placa:
git clone https://github.com/makerdiary/nrf52840-mdk.git
cd nrf52840-mdk
make BOARD=nrf52840_mdk -C examples/nrf5-sdk/ble_app_blinky/s140/nrf52840
El hex de la aplicación aparece en _build/ble_app_blinky_nrf52840_mdk.hex. Si la compilación falla, verifica la versión del SDK y de gcc-arm-none-eabi esperada por el Makefile — el repositorio no se actualiza desde 2021.
Paso 2 — Fusionar SoftDevice + aplicación
El arrastrar y soltar exige una imagen única; olvidar este paso da como resultado una placa que se flashea sin emitir nada (issue #31):
mergehex -m s140_nrf52_6.1.1_softdevice.hex \
_build/ble_app_blinky_nrf52840_mdk.hex \
-o firmware.hex
Suelta firmware.hex en la unidad DAPLINK, pulsa Boot/Reset.
Paso 3 — Controlar desde nRF Connect
- Instala nRF Connect for Mobile (no Toolbox: aquí queremos el acceso GATT bruto).
- Escanea y conéctate al dispositivo
DK. - Despliega el servicio personalizado: la característica LED acepta la escritura — envía
01y el LED se enciende,00lo apaga. - Activa las notificaciones en la característica Button, pulsa el botón de usuario de la placa: el valor cambia en la app.
Lo que dominas después
- Servicios y características personalizados: UUID de 128 bits, propiedades read/write/notify, callbacks
ble_evt_ten la placa. - El puerto CDC del DAPLink (115200 baudios) muestra los logs de la pila BLE para depurar.
- El LED RGB y el botón son pines P0 clásicos: consulta el diagrama de pines PDF oficial, no programes pines de forma fija.
¿SDK nRF5 o nRF Connect SDK?
El SDK nRF5 está en legado; para un proyecto nuevo, Nordic impulsa NCS (base Zephyr). nrf52840_mdk es una placa Zephyr upstream — las compilaciones compatibles con NCS se realizan mediante las guías de MakerDiary, pero la placa no está listada nominalmente en la documentación de Nordic. El equivalente moderno del ejemplo: samples/bluetooth/peripheral_blinky en el árbol de Zephyr.