🛠 Diffuser ses capteurs en BLE avec ArduinoBLE

Arduino Nicla Sense ME · intermediaire · Schéma : IMG-nicla-sense-me-intermediaire-2-niclasense-ble-arduino.svg — Nicla Sense ME au centre émettant des ondes BLE vers un smartphone affichant une carte de caractéristique température, module ANNA-B112 et puce nRF52832 annotés sous la carte

Objetivos

Transformar el Nicla Sense ME en un dispositivo Bluetooth Low Energy que publique la temperatura de su sensor a través de una característica estándar, utilizando la biblioteca ArduinoBLE (v2.1.0, que lista explícitamente esta placa). Precisión de hardware: el BLE no es gestionado por un STM32WB55 como en otras placas Arduino, sino por el módulo u-blox ANNA-B112, un encapsulado SiP que contiene precisamente... un nRF52832 de Nordic, el cual constituye el microcontrolador principal de la placa (el módulo funciona en un riel de 1,8 V; Bluetooth 5.0 según la ficha del módulo, frente a «4.2» en la ficha de la tienda, mención considerada obsoleta). Es este mismo nRF52832 el que ejecuta tu sketch: el BLE es por tanto nativo, sin coprocesador.

Material

Código completo

#include "Arduino_BHY2.h"
#include <ArduinoBLE.h>

Sensor temp(SENSOR_ID_TEMP);

BLEService serviceEnv("181A");   // service Environmental Sensing
BLEFloatCharacteristic tempChar("2A6E", BLERead | BLENotify); // Temperature

void setup {
  Serial.begin(115200);
  BHY2.begin;
  temp.begin;

  if (!BLE.begin) {
    Serial.println("Demarrage BLE impossible");
    while (1);
  }
  BLE.setLocalName("NiclaTemp");
  BLE.setAdvertisedService(serviceEnv);
  serviceEnv.addCharacteristic(tempChar);
  BLE.addService(serviceEnv);
  BLE.advertise;
  Serial.println("Peripheral BLE en attente de connexion");
}

void loop {
  static auto printTime = millis;
  BHY2.update;   // pompe les capteurs
  BLE.poll;      // sert la pile BLE
  if (millis - printTime >= 2000) {
    printTime = millis;
    if (temp.dataAvailable) {
      tempChar.writeValue(temp.value);
      Serial.println(String("Temperature diffusee : ") + String(temp.value, 2));
    }
  }
}

Verificación esperada

Con nRF Connect, el dispositivo «NiclaTemp» es visible al escanear; al conectar, se encuentra el servicio 0x181A y la característica 0x2A6E cuyo valor sigue la temperatura de la placa (active la notificación y sople sobre el sensor). El alcance anunciado del módulo alcanza los 160 m en condiciones despejadas (+5 dBm EIRP).

Errores frecuentes

Otros tutoriales para esta placa

Ejemplos de código para esta placa

← Volver a la ficha 🛠 Todos los tutoriales