ble_stream.ino
Sin Wi-Fi en el Sense ME: el nRF52832 solo habla BLE. Este sketch emite la aceleración X por notify vía ArduinoBLE (funcional tras nicla::begin, confirmado en docs-db); nRF Connect traza la curva en el teléfono.
Hardware
Una Arduino Nicla Sense ME (nRF52832, solo BLE) con hub Bosch BHI260AP, BMM150, BMP390, BME688, LED RGB en driver I2C y cargador LiPo. La placa sola + un teléfono con nRF Connect (o una app Web Bluetooth). La antena es interna, alcance ~10 m.
Cableado
Sin cableado. Alimentación a LiPo para medida móvil; el conector ACH de 3 hilos acepta una célula de 3,7 V.
Funcionamiento
BHY2 alimenta los sensores, BLE.poll mueve la pila radio; writeValue en una característica notify envía notificaciones a los suscriptores. La codificación en centésimas de g cabe en un int16.
Ejecución
Programación desde Arduino IDE (core ArduinoCore-mbed); librerías Arduino_BHY2 y Nicla_System; USB por puente serie.
Variantes
Añadir los 9 ejes + presión + IAQ al servicio, agrupar muestras para la alcance, o conectar el teléfono como central para un registrador autónomo.
ble_stream.ino
// Le Sense ME n'a QUE du BLE (pas de Wi-Fi) : la télémétrie
// passe par une caractéristique notify, lue par le téléphone.
// Après nicla::begin, l'ArduinoBLE standard fonctionne (docs-db).
#include "Arduino_BHY2.h"
#include "Nicla_System.h"
#include <ArduinoBLE.h>
SensorAccel accel(0);
BLEService telemetry("F0F0");
BLEShortCharacteristic accX("F0F1", BLENotify);
void setup() {
Serial.begin(115200);
nicla::begin();
BHY2.begin();
accel.begin();
BHY2.update();
BLE.begin();
BLE.setLocalName("SenseME");
BLE.setAdvertisedService(telemetry);
telemetry.addCharacteristic(accX);
BLE.addService(telemetry);
BLE.advertise();
}
void loop() {
BHY2.update();
BLE.poll();
if (accel.checkNewData()) {
// ax en g -> centièmes de g dans un int16
accX.writeValue((int16_t)(accel.x() * 100));
}
delay(20);
}