请选择 进入手机版 | 继续访问电脑版
查看: 192|回复: 0

[应用笔记] WB81-GP蓝牙BLE读写特征值应用指导

[复制链接]

21

主题

21

帖子

67

积分

利尔达员工

Rank: 9Rank: 9Rank: 9

积分
67
发表于 2023-12-7 15:41:44 | 显示全部楼层 |阅读模式
  一、引言

  本文档主要讲述如何使用AT 指令搭建BLE 读写特征值环境。

  以下两个示例同时使用两块WB81 开发板。

  其中示例1 为:一块作为Bluetooth LE 服务端(只作为Bluetooth LE 服务端角色),另一块作为Bluetooth LE 客户端(只作为Bluetooth LE 客户端角色),这个例子展示了应如何使用AT 命令建立Bluetooth LE 连接,完成数据通信。

  示例2 为:一块作为Bluetooth LE 服务端(只作为Bluetooth LE 服务端角色),另一块作为 Bluetooth LE 客户端(只作为 Bluetooth LE 客户端角色)。这个例子展示了应如何建立Bluetooth LE 连接,以及服务端读写服务特征值和客户端设置,notify 服务特征值。

  二、AT 指令列表

  三、AT 应用指导

  以下示例同时使用两块 WB81 开发板,其中一块作为 Bluetooth LE 服务端(只作为Bluetooth LE 服务端角色),另一块作为 Bluetooth LE 客户端(只作为Bluetooth LE 客户端角色)。这个例子展示了应如何建立 Bluetooth LE 连接,以及建立透传通信 Bluetooth LE SPP (Serial Port Profile, UART-Bluetooth LE 透传模式)。

  在以下步骤中以WB81 Bluetooth LE 服务端开头的操作只需要在WB81 Bluetooth LE 服务端执行即可,以WB81 Bluetooth LE 客户端开头的操作只需要在WB81 Bluetooth LE 客户端执行即可。

  3.1 Bluetooth LE 客户端读写服务特征值

  以下示例同时使用两块 WB81 开发板,其中一块作为 Bluetooth LE 服务端(只作为Bluetooth LE 服务端角色),另一块作为 Bluetooth LE 客户端(只作为Bluetooth LE 客户端角色)。这个例子展示了应如何使用AT 命令建立Bluetooth LE 连接,完成数据通信。

  在以下步骤中以WB81 Bluetooth LE 服务端开头的操作只需要在WB81 Bluetooth LE 服务端执行即可,以WB81 Bluetooth LE 客户端开头的操作只需要在WB81 Bluetooth LE 客户端执行即可。

  (1) 初始化Bluetooth LE 功能。

  WB81 Bluetooth LE 服务端:
  命令:
    AT+LINITBT=2
  响应:
    OK
  命令:
    AT+BLEINIT=2
  响应:
    OK

  WB81 Bluetooth LE 客户端:
  命令:
    AT+BLEINIT=1
  响应:
    OK

  (2) WB81 蓝牙LE 服务器获取其MAC 地址。
  命令:
    AT+BLEADDR?
  响应:
    +BLEADDR:"24:0a:c4:d6:e4:46"
    OK

  说明:您查询到的地址可能与上述响应中的不同,请记住您的地址,下面的步骤中会用到。

  (3) WB81 Bluetooth LE 服务端创建服务。
  命令:
    AT+BLEGATTSSRVCRE
  响应:
    OK

  (4) WB81 Bluetooth LE 服务端开启服务。
  命令:
    AT+BLEGATTSSRVSTART
  响应:
    OK

  (5) WB81 Bluetooth LE 服务端发现服务特征。
  命令:
    AT+BLEGATTSCHAR?
  响应:
    +BLEGATTSCHAR:"char",1,1,0xC300,0x02
    +BLEGATTSCHAR:"desc",1,1,1,0x2901
    +BLEGATTSCHAR:"char",1,2,0xC301,0x02
    +BLEGATTSCHAR:"desc",1,2,1,0x2901
    +BLEGATTSCHAR:"char",1,3,0xC302,0x08
    +BLEGATTSCHAR:"desc",1,3,1,0x2901
    +BLEGATTSCHAR:"char",1,4,0xC303,0x04
    +BLEGATTSCHAR:"desc",1,4,1,0x2901
    +BLEGATTSCHAR:"char",1,5,0xC304,0x08
    +BLEGATTSCHAR:"char",1,6,0xC305,0x10
    +BLEGATTSCHAR:"desc",1,6,1,0x2902
    +BLEGATTSCHAR:"char",1,7,0xC306,0x20
    +BLEGATTSCHAR:"desc",1,7,1,0x2902
    +BLEGATTSCHAR:"char",1,8,0xC307,0x02
    +BLEGATTSCHAR:"desc",1,8,1,0x2901
    +BLEGATTSCHAR:"char",2,1,0xC400,0x02
    +BLEGATTSCHAR:"desc",2,1,1,0x2901
    +BLEGATTSCHAR:"char",2,2,0xC401,0x02
    +BLEGATTSCHAR:"desc",2,2,1,0x2901
    OK

  (6) WB81 Bluetooth LE 服务端开始广播,之后WB81 Bluetooth LE 客户端开始扫描并且持续3 秒钟。

  WB81 Bluetooth LE 服务端:
  命令:
    AT+BLEADVSTART
  响应:
    OK

  WB81 Bluetooth LE 客户端:
  命令:
    AT+BLESCAN=1,3
  响应:
    OK
    +BLESCAN:"5b:3b:6c:51:90:49",-87,02011a020a0c0aff4c001005071c3024dc,,1
    +BLESCAN:"c4:5b:be:93:ec:66",-84,0201060303111809095647543147572d58020a03,,0
    +BLESCAN:"24:0a:c4:d6:e4:46",-29,,,0

  说明:您的扫描结果可能与上述响应中的不同。

  (7) 建立Bluetooth LE 连接。

  WB81 Bluetooth LE 客户端:

  命令:
    AT+BLECONN=0,"24:0a:c4:d6:e4:46"
  响应:
    +BLECONN:0,"24:0a:c4:d6:e4:46"
    OK

  说明:输入上述命令时,请使用您的WB81 Bluetooth LE 服务端地址。如果Bluetooth LE连接成功,则会提示+BLECONN:0,"24:0a:c4:d6:e4:46。如果Bluetooth LE 连接失败,则会提示+BLECONN:0,-1。

  (8) WB81 Bluetooth LE 客户端发现服务。
  命令:
    AT+BLEGATTCPRIMSRV=0
  响应:
    +BLEGATTCPRIMSRV:0,1,0x1801,1
    +BLEGATTCPRIMSRV:0,2,0x1800,1
    +BLEGATTCPRIMSRV:0,3,0xA002,1
    +BLEGATTCPRIMSRV:0,4,0xA003,1
    OK

  说明:WB81 Bluetooth LE 客户端查询服务的结果,比WB81 Bluetooth LE 服户端查询服务的结果多两个默认服务(UUID: 0x1800 和 0x1801),这是正常现象。正因如此,对于同一服务,WB81 Bluetooth LE 客户端查询的<srv_index>值等于WB81 Bluetooth LE 服户端查询的<srv_index>值 + 2。例如上述示例中的服务0xA002,当前在WB81 Bluetooth LE 客户端查询到的<srv_index>为3,如果在WB81 Bluetooth LE 服户端通过AT+BLEGATTSSRV?命令查询,则<srv_index>为1。

  (9) WB81 Bluetooth LE 客户端发现特征值。
  命令:
    AT+BLEGATTCCHAR=0,3
  响应:
    +BLEGATTCCHAR:"char",0,3,1,0xC300,0x02
    +BLEGATTCCHAR:"desc",0,3,1,1,0x2901
    +BLEGATTCCHAR:"char",0,3,2,0xC301,0x02
    +BLEGATTCCHAR:"desc",0,3,2,1,0x2901
    +BLEGATTCCHAR:"char",0,3,3,0xC302,0x08
    +BLEGATTCCHAR:"desc",0,3,3,1,0x2901
    +BLEGATTCCHAR:"char",0,3,4,0xC303,0x04
    +BLEGATTCCHAR:"desc",0,3,4,1,0x2901
    +BLEGATTCCHAR:"char",0,3,5,0xC304,0x08
    +BLEGATTCCHAR:"char",0,3,6,0xC305,0x10
    +BLEGATTCCHAR:"desc",0,3,6,1,0x2902
    +BLEGATTCCHAR:"char",0,3,7,0xC306,0x20
    +BLEGATTCCHAR:"desc",0,3,7,1,0x2902
    +BLEGATTCCHAR:"char",0,3,8,0xC307,0x02
    +BLEGATTCCHAR:"desc",0,3,8,1,0x2901
    OK

  (10) WB81 Bluetooth LE 客户端读取一个特征值。
  命令:
    AT+BLEGATTCRD=0,3,1
  响应:
    +BLEGATTCRD:0,1,0
    OK

  说明:请注意目标特征值必须要有读权限。

  如果WB81 Bluetooth LE 客户端读取特征成功,WB81 Bluetooth LE 服务端则会提示+READ:0,"7c:df:a1:b3:8d:de"。

  (11) WB81 Bluetooth LE 客户端写一个特征值。
  命令:
    AT+BLEGATTCWR=0,3,3,,1
  响应:
    >
    //符号> 表示AT 准备好接收串口数据,此时您可以输入数据,当数据长度达到参数<length>的值时,执行写入操作。
    OK

  说明:如果WB81 Bluetooth LE 客户端写特征描述符成功,WB81 Bluetooth LE 服务端则会提示+WRITE:<conn_index>,<srv_index>,<char_index>,[<desc_index>],<len>,<value>。

  (12) Indicate 一个特征值。

  WB81 Bluetooth LE 客户端:
  命令:
    AT+BLEGATTCWR=0,3,7,1,1
  响应:
    >
    //符号>表示 AT 准备好接收串口数据,此时您可以输入数据,当数据长度达到参数<length>的值时,执行写入操作。
    为了接收WB81 Bluetooth LE 服务端发送过来的数据(通过notify 方式或者indicate 方式),WB81 Bluetooth LE 客户端需要提前向服务端注册。对于 notify 方式,需要写入值0x0001,对于indicate 方式,需要写入值0x0002。在本例中写入0x0002 来使用indicate 方式。
    OK

  说明:如果WB81 Bluetooth LE 客户端写特征描述符成功,WB81 Bluetooth LE 服务端则会提示+WRITE:<conn_index>,<srv_index>,<char_index>,<desc_index>,<len>,<value>。

  WB81 Bluetooth LE 服务端:
  命令:
    AT+BLEGATTSIND=0,1,7,1
  响应:
    >
    //符号>表示AT 准备好接收串口数据,此时您可以输入数据,当数据长度达到参数<length>的值时,执行indicate 操作。
    OK

  说明:如果WB81 Bluetooth LE 客户端接收到indication,则会提示+INDICATE:<conn_index>,<srv_index>,<char_index>,<len>,<value>。对于同一服务,WB81 Bluetooth LE客户端的<srv_index>值等于 WB81 Bluetooth LE 服户端的<srv_index>值 + 2,这是正常现象。对于服务中特征的权限,您可参考文档 如何自定义低功耗蓝牙服务。

  3.2 Bluetooth LE 服务端读写服务特征值

  以下示例同时使用两块 WB81 开发板,其中一块作为 Bluetooth LE 服务端(只作为Bluetooth LE 服务端角色),另一块作为 Bluetooth LE 客户端(只作为Bluetooth LE 客户端角色)。这个例子展示了应如何建立Bluetooth LE 连接,以及服务端读写服务特征值和客户端设置,notify 服务特征值。

  步骤中以WB81 Bluetooth LE 服务端开头的操作只需要在WB81 Bluetooth LE 服务端执行即可,以WB81 Bluetooth LE 客户端开头的操作只需要在WB81 Bluetooth LE 客户端执行即可。

  (1) 初始化Bluetooth LE 功能。

  WB81 Bluetooth LE 服务端:
  命令:
    AT+LINITBT=1
  响应:
    OK
  命令:
    AT+BLEINIT=2
  响应:
    OK

  WB81 Bluetooth LE 客户端:
  命令:
    AT+BLEINIT=1
  响应:
    OK

  (2) WB81 Bluetooth LE 服务端创建服务。
  命令:
    AT+BLEGATTSSRVCRE
  响应:
    OK

  (3) WB81 Bluetooth LE 服务端开启服务。
  命令:
    AT+BLEGATTSSRVSTART
  响应:
    OK

  (4) WB81 蓝牙LE 服务器获取其MAC 地址。
  命令:
    AT+BLEADDR?
  响应:
    +BLEADDR:"24:0a:c4:d6:e4:46"
    OK
  说明:您查询到的地址可能与上述响应中的不同,请记住您的地址,下面的步骤中会用到。

  (5) WB81 Bluetooth LE 服务端设置广播参数。
  命令:
    AT+BLEADVPARAM=50,50,0,0,7,0,,
  响应:
    OK

  (6) WB81 Bluetooth LE 服务端设置广播数据。
  命令:
    AT+BLEADVDATA="0201060A09457370726573736966030302A0"
  响应:
    OK

  (7) WB81 Bluetooth LE 服务端开始广播。
  命令:
    AT+BLEADVSTART
  响应:
    OK

  (8) WB81 Bluetooth LE 客户端创建服务。
  命令:
    AT+BLEGATTSSRVCRE
  响应:
    OK

  (9) WB81 Bluetooth LE 客户端开启服务。
  命令:
    AT+BLEGATTSSRVSTART
  响应:
    OK

  (10) WB81 Bluetooth LE 客户端获取Bluetooth LE 地址。
  命令:
    AT+BLEADDR?
  响应:
    +BLEADDR:"24:0a:c4:03:a7:4e"
    OK

  说明:您查询到的地址可能与上述响应中的不同,请记住您的地址,下面的步骤中会用到。

  (11) WB81 Bluetooth LE 客户端开始扫描,持续3秒。
  命令:
    AT+BLESCAN=1,3
  响应:
    OK
    +BLESCAN:"24:0a:c4:d6:e4:46",-78,0201060a09457370726573736966030302a0,,0
    +BLESCAN:"45:03:cb:ac:aa:a0",-62,0201060aff4c001005441c61df7d,,1
    +BLESCAN:"24:0a:c4:d6:e4:46",-26,0201060a09457370726573736966030302a0,,0

  说明:您的扫描结果可能与上述响应中的不同。

  (12) 建立the Bluetooth LE 连接。

  WB81 Bluetooth LE 客户端:
  命令:
    AT+BLECONN=0,"24:0a:c4:d6:e4:46"
  响应:
    +BLECONN:0,"24:0a:c4:d6:e4:46"
    OK

  说明:
    输入上述命令时,请使用您的WB81 Bluetooth LE 服务端地址。
    如果Bluetooth LE 连接成功,则会提示+BLECONN:0,"24:0a:c4:d6:e4:46。
    如果Bluetooth LE 连接失败,则会提示+BLECONN:0,-1。

  WB81 Bluetooth LE 服务端:
  命令:
    AT+BLECONN=0,"24:0a:c4:03:a7:4e"
  响应:
    +BLECONN:0,"24:0a:c4:03:a7:4e"
    OK

  说明:输入上述命令时,请使用您的WB81 Bluetooth LE 客户端地址。如果Bluetooth LE连接成功,则会提示OK,不会提示+BLECONN:0,"24:0a:c4:03:a7:4e。
     如果Bluetooth LE 连接失败,则会提示ERROR,不会提示+BLECONN:0,-1。

  (13) WB81 Bluetooth LE 客户端查询本地服务。
  命令:
    AT+BLEGATTSSRV?
  响应:
    +BLEGATTSSRV:1,1,0xA002,1
    +BLEGATTSSRV:2,1,0xA003,1
    OK

  (14) WB81 Bluetooth LE 客户端发现本地特征。
  命令:
    AT+BLEGATTSCHAR?
  响应:
    +BLEGATTSCHAR:"char",1,1,0xC300,0x02
    +BLEGATTSCHAR:"desc",1,1,1,0x2901
    +BLEGATTSCHAR:"char",1,2,0xC301,0x02
    +BLEGATTSCHAR:"desc",1,2,1,0x2901
    +BLEGATTSCHAR:"char",1,3,0xC302,0x08
    +BLEGATTSCHAR:"desc",1,3,1,0x2901
    +BLEGATTSCHAR:"char",1,4,0xC303,0x04
    +BLEGATTSCHAR:"desc",1,4,1,0x2901
    +BLEGATTSCHAR:"char",1,5,0xC304,0x08
    +BLEGATTSCHAR:"char",1,6,0xC305,0x10
    +BLEGATTSCHAR:"desc",1,6,1,0x2902
    +BLEGATTSCHAR:"char",1,7,0xC306,0x20
    +BLEGATTSCHAR:"desc",1,7,1,0x2902
    +BLEGATTSCHAR:"char",1,8,0xC307,0x02
    +BLEGATTSCHAR:"desc",1,8,1,0x2901
    +BLEGATTSCHAR:"char",2,1,0xC400,0x02
    +BLEGATTSCHAR:"desc",2,1,1,0x2901
    +BLEGATTSCHAR:"char",2,2,0xC401,0x02
    +BLEGATTSCHAR:"desc",2,2,1,0x2901
    OK

  (15) WB81 Bluetooth LE 服务端发现对端服务。
  命令:
    AT+BLEGATTCPRIMSRV=0
  响应:
    +BLEGATTCPRIMSRV:0,1,0x1801,1
    +BLEGATTCPRIMSRV:0,2,0x1800,1
    +BLEGATTCPRIMSRV:0,3,0xA002,1
    +BLEGATTCPRIMSRV:0,4,0xA003,1
    OK

  说明:WB81 Bluetooth LE 服务端查询服务的结果,比WB81 Bluetooth LE 客户端查询服务的结果多两个默认服务(UUID: 0x1800 和 0x1801)。正因如此,对于同一服务,WB81 Bluetooth LE 服务端查询的<srv_index> 值等于 WB81 Bluetooth LE 客户端查询的<srv_index>值 + 2。例如,上述示例中的服务0xA002,当前在WB81 Bluetooth LE 服务端查询到的<srv_index>为3,如果在WB81 Bluetooth LE 服务端通过AT+BLEGATTSSRV?命令查询,则<srv_index>为1。

  (16) WB81 Bluetooth LE 服务端发现对端特征。
  命令:
    AT+BLEGATTCCHAR=0,3
  响应:
    +BLEGATTCCHAR:"char",0,3,1,0xC300,0x02
    +BLEGATTCCHAR:"desc",0,3,1,1,0x2901
    +BLEGATTCCHAR:"char",0,3,2,0xC301,0x02
    +BLEGATTCCHAR:"desc",0,3,2,1,0x2901
    +BLEGATTCCHAR:"char",0,3,3,0xC302,0x08
    +BLEGATTCCHAR:"desc",0,3,3,1,0x2901
    +BLEGATTCCHAR:"char",0,3,4,0xC303,0x04
    +BLEGATTCCHAR:"desc",0,3,4,1,0x2901
    +BLEGATTCCHAR:"char",0,3,5,0xC304,0x08
    +BLEGATTCCHAR:"char",0,3,6,0xC305,0x10
    +BLEGATTCCHAR:"desc",0,3,6,1,0x2902
    +BLEGATTCCHAR:"char",0,3,7,0xC306,0x20
    +BLEGATTCCHAR:"desc",0,3,7,1,0x2902
    +BLEGATTCCHAR:"char",0,3,8,0xC307,0x02
    +BLEGATTCCHAR:"desc",0,3,8,1,0x2901
    OK

  (17) WB81 Bluetooth LE 客户端设置服务特征值。
  选择支持写操作的服务特征(characteristic)去设置服务特征值。
  命令:
    AT+BLEGATTSSETATTR=1,8,,1
  响应:
    >
  命令:
    写入一个字节``9``
  响应:
    OK

  (18) WB81 Bluetooth LE 服务端读服务特征值。
  命令:
    AT+BLEGATTCRD=0,3,8,
  响应:

    BLEGATTCRD:0,1,9
    OK

  (19) WB81 Bluetooth LE 服务端写服务特征值。

  选择支持写操作的服务特性写入特性。
  命令:
    AT+BLEGATTCWR=0,3,6,1,2
  响应:
    >
  命令:
    写入2 个字节``12``
  响应:
    OK

  说明:如果Bluetooth LE 服务端写服务特征值成功后,Bluetooth LE 客户端则会提示+WRITE:0,1,6,1,2,12。

  (20) WB81 Bluetooth LE 客户端notify 服务特征值
  命令:
    AT+BLEGATTSNTFY=0,1,6,10
  响应:
    >
  命令:
    写入``1234567890`` 10 个字节
  响应:
    OK

  说明:如果WB81 Bluetooth LE 客户端notify 服务特征值给服务端成功,Bluetooth LE服务端则会提示+NOTIFY:0,3,6,10,1234567890。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表