You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Arduino Nano 33 IoT BLE描述符如何启用通知与指示功能

ArduinoBLE 通知/指示功能支持说明与故障修复

ArduinoBLE库原生支持BLE通知(Notify)与指示(Indicate)能力,你在nRF Connect中看到的Notification and indications disabled状态,并非Arduino端未开放相关功能,是配置错误和BLE流程认知偏差导致的,具体问题和修复方式如下:

  • 多余的自定义描述符干扰标准配置:当你在特征定义中加入BLENotify或BLEIndicate属性时,ArduinoBLE库会自动为特征挂载BLE规范强制要求的客户端特征配置描述符(CCCD,UUID 0x2902),这个描述符就是用来存储通知/指示开关状态的,不需要你手动创建额外的自定义BLEDescriptor对象挂载到特征上。你代码中手动添加的UUID为beca6057-955c-4f8a-e1e3-56a1633f04b1的自定义描述符属于冗余代码,直接删除即可。
  • CCCD开关由中央设备主动触发:通知/指示的开关状态不是Arduino外设端可以自行设置开启的,必须由连接的中央设备(Android端、nRF Connect)主动向CCCD写入开启值才会生效。你在nRF Connect中看到禁用状态,是因为还未点击对应特征旁的通知订阅按钮,点击后状态会自动切换为已启用,Arduino端不需要额外编写代码处理CCCD的写请求,底层库会自动响应、维护订阅状态。
  • Android端配置遗漏:Android端实现BLE通知时,除了调用setCharacteristicNotification(characteristic, true)打开App本地的接收开关,还必须主动获取特征下的CCCD描述符,写入BluetoothGattDescriptor.ENABLE_NOTIFICATION_VALUE完成设备端的订阅流程,缺少这一步就无法收到通知,和nRF中显示的禁用状态直接对应。

修复后的Arduino端代码

#include <ArduinoBLE.h>

BLEService echoService("00000000-0000-1000-8000-00805f9b34fb");
// 特征已配置BLENotify属性,库自动挂载标准CCCD描述符
BLEStringCharacteristic charac ("741c12b9-e13c-4992-8a5e-fce46dec0bff", BLERead | BLEWrite | BLENotify, 40);
String var = "";

void setup(){
  Serial.begin(9600);
  while(!Serial);

  if(!BLE.begin()){
    Serial.println("starting BLE failed.");
    while(1);
  }

  BLE.setLocalName("Arduino BLE Echo");
  BLE.setAdvertisedService(echoService);
  echoService.addCharacteristic(charac);
  BLE.addService(echoService);
  BLE.advertise();
  Serial.println("Bluetooth device active, waiting for connections...");
}

void loop(){
  BLEDevice central = BLE.central();
  if(central){
    Serial.println("* Connected to central device!");
    Serial.print("Connected to central : ");
    Serial.println(central.address());

    while(central.connected()){
      if(charac.written()){
        var = charac.value();
        Serial.println(var);
        // 只要中央端完成通知订阅,writeValue会自动触发通知推送
        charac.writeValue(var);
        Serial.println("value updated, notification sent to subscribed central");
      }
    }
    Serial.print("Disconnected from central: ");
    Serial.println(central.address());   
  }
}

检测参考截图

nRF Connect检测界面截图

内容的提问来源于stack exchange,提问作者tonykrjhc

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.29 22:51:19