ESP32 蓝牙AT指令透传

参考用户指南

4.2.6 ESP32 与手机建立 SPP 连接,以及在 UART-Bluetooth LE 透传模式下传输数据

该示例展示了如何在 ESP32 开发板(仅作为低功耗蓝牙服务器角色)和手机(仅作为低功耗蓝牙客户端

角色)之间建立 SPP 连接,以及如何在 UART-Bluetooth LE 透传模式下传输数据。

重要: 步骤中以 ESP32 Bluetooth LE 服务端开头的操作只需要在 ESP32 Bluetooth LE 服务端执行即

可,而以 Bluetooth LE 客户端开头的操作只需要在手机的蓝牙调试助手中执行即可。

1. 在手机端下载 Bluetooth LE 调试助手,例如BLE调试助手, nRF Connect (Android) 和 LightBlue (iOS)。

2. 初始化 Bluetooth LE 功能。

ESP32 Bluetooth LE 服务端:

命令:

AT+BLEINIT=2

响应:

OK

3. ESP32 Bluetooth LE 服务端创建GATT服务。

命令:

AT+BLEGATTSSRVCRE

响应:

OK

4. ESP32 Bluetooth LE 服务端开启服务。

命令:

AT+BLEGATTSSRVSTART

响应:

OK

5. ESP32 蓝牙 LE 服务器获取其 MAC 地址。

命令:

AT+BLEADDR?

响应:

+BLEADDR:"24:0a:c4:d6:e4:46"

OK

说明:这是模块的MAC地址,BLE调试助手可以根据其来寻找模块,进行连接。

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

6. 设置 Bluetooth LE 广播数据。

命令:

AT+BLEADVDATA="0201060A09457370726573736966030302A0"

响应:

OK

补充:

AT+BLEADVDATA=<adv_data>

参数

  • <adv_data>:广播数据,为 HEX 字符串。例如,若想设置广播数据为 “0x11 0x22 0x33 0x44 0x55”,则命令为 AT+BLEADVDATA="1122334455"。最大长度:31 字节。

说明

  • 如果之前已经使用命令 AT+BLEADVDATAEX=<dev_name>,<uuid>,<manufacturer_data>,<include_power> 设置了广播数据,则会被本命令设置的广播数据覆盖。

  • 如果您想使用本命令修改设备名称,则建议在执行完该命令之后执行 AT+BLENAME 命令将设备名称设置为同样的名称。

  • AT+BLENAME 命令设置设备名称,AT+BLEADVDATA设置广播数据,即将名称广播出去,调试助手显示的名称就是该指令设置的内容。

7. ESP32 Bluetooth LE 服务端开始广播。

命令:

AT+BLEADVSTART

响应:

OK

说明:此项命令之后,调试助手就可以连接了。

8. 创建 Bluetooth LE 连接。

手机打开 nRF 调试助手,并打开 SCAN 开始扫描,找到 ESP32 Bluetooth LE 服务端的 MAC 地址,点

击 CONNECT 进行连接。此时 ESP32 端应该会打印类似于 +BLECONN:0,"60:51:42:fe:98:aa"

的 log,这表示已经建立了 Bluetooth LE 连接。

说明:AT+BLEADVDATA广播名称之后,也可以根据蓝牙的名称,进行连接。

9. ESP32 Bluetooth LE 服务端查询服务。

命令:

AT+BLEGATTSSRV?

响应:

+BLEGATTSSRV:1,1,0xA002,1

+BLEGATTSSRV:2,1,0xA003,1

OK

10. ESP32 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

说明:调试助手根据以上的信息,选择哪个服务。

11. Bluetooth LE 客户端发现服务。

此时在手机 调试助手客户端点击 UUID:0xA002 的 UnKnown Service。

12. 手机 nRF 调试助手客户端发现特征。

此时在手机 nRF 调试助手客户端的 UUID:0xA002 的 UnKnown Service 服务下一级选项中选择

点击 Properties 为 NOTIFY 或者 INDICATE 的服务特征的右侧按钮(这里 ESP-AT 默认 Properties 为

NOTIFY 或者 INDICATE 的服务特征是 0xC305 和 0xC306),开始侦听 Properties 为 NOTIFY 或者

INDICATE 的服务特征。

注:这里必须开启”接收通知数据“之后,再向模块发送AT+BLESPP指令,才能回复OK

13. ESP32 Bluetooth LE 服务端配置 Bluetooth LE SPP。

选择支持 notify 或者 indicate 的 characteristic 作为写通道发送数据,选择支持写操作的 characteristic

作为读通道接收数据。

命令:

AT+BLESPPCFG=1,1,6,1,5

响应:

OK

14. ESP32 Bluetooth LE 服务端使能 Bluetooth LE SPP。

命令:

AT+BLESPP

响应:

OK

>

上述响应表示 AT 已经进入 Bluetooth LE SPP 模式,可以进行数据的发送和接收。

注:此指令须对端在 Bluetooth LE 连接建立后使能 Notifications,再执行AT+BLESPP,否则会返回error。

15. Bluetooth LE 客户端发送数据。

在 nRF 调试助手客户端选择 0xC304 服务特征值发送数据 test 给 ESP32 Bluetooth LE 服务端,此

时 ESP32 Bluetooth LE 服务端可以收到 test。

16. ESP32 Bluetooth LE 服务端发送数据。

在 ESP32 Bluetooth LE 服务端直接发送 test,此时 nRF 调试助手客户端可以收到 test。

总结:

1,测试指令

    AT_RESTORE           //将设备恢复出厂设置
    AT+BLEINIT=2         //将 esp32 设置成蓝牙服务端
    AT+BLEADDR?          //查询设备的 MAC 地址
    AT+BLEGATTSSRVCRE    //GATTS 创建服务
    AT+BLEGATTSSRVSTART  //GATTS 开启全部服务。
    AT+BLEGATTSCHAR?    //GATTS 发现服务特征
    AT+SYSMSG=4        //开启透传模式信息上报,参见最新版本的 AT 指令说明 
    AT+BLEADVSTART    //打开广播,使用蓝牙调试APP(Client)  主动与 ESP32 设备 server 建立连接
    AT+BLESPPCFG=1,1,6,1,5   //根据 AT+BLEGATTSCHAR?    查询结果,配置 BLE 透传模式,并在 APP 端打开 NOTIFY 选项    1,6 为配置Notify 的参数,1、3 为配置 Write 的参数,在手机 APP 端可查看对应支持 notify 和 write 的参数,1,6,1,3 即为 Tx(read/notify) 和 Rx (write)的参数
    AT+BLESPP   //打开透传模式,通过 APP 端发数据,透传支持 client 向 server 写(write)数据,也支持 client 读(read) server 发的(TX)数据.
               // AT+BLESPP 前,对端须开启”接收数据通知“,否则会返回error。

2,BLE调试助手

接收数据

发送数据

发送接收不使用同一个UUID

AT+BLESPP 前,对端须开启”接收数据通知“,否则会返回error。

(11条消息) ESP32 使用 ESP-AT 开启 BLE 透传流程_25March的博客-CSDN博客

Bluetooth® Low Energy AT 命令集 - ESP32 - — ESP-AT 用户指南 latest 文档 (espressif.com)

猜你喜欢

转载自blog.csdn.net/m0_38012497/article/details/129689832