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)

v2.0(2019.03.04.1) 提要: 手机连接AP (JF32Wifi_Config),密码默认88888888,打开浏览器,输入http://192.168.4.1即可进入Webconfig页面,WebConfig鉴权默认账户admin,密码88888888,进入后可自行修改; 版本特性: 1.支持BigIoT(贝壳物联)平台接入,在Network setting中选中BigIoT即可,目前只支持它的TCP模式,因此只能使用8181,8282,8585这三个TCP端口,三个端口的区别请查看BigIoT的官方文档 https://www.bigiot.net/help/1.html; 接着,填写好Cloud server setting中的Device ID与API Key并保存,启动后将自动连接到BigIoT的服务器,无论你选用是哪个端口,本固件都将每隔50秒发送一次心跳信息到服务器中,让设备自动保持连接; 2. 本固件的BigIoT模式已做好了,发送到ESP32模块串口的数据将直接到BigIoT服务器,相反BigIoT回来的数据会直接ESP32模块的串口,用户按BigIoT的官方文档,对数据进行解析即可; 3. 根据ESP32的文档,这个版本固件修改了SPIFFS格式化的时长,从20秒改成官方推荐的30秒,如果是新买的模块,首次使用的时候可能要多等一会儿,但更好地保证了格式化SPIFFS分区的正确性; 4. 更新了SDK的版本到1.0.1 5. 还是老话,自用/学习可以,商用请联系开发者,尊重劳动成果人人有责; 后话: 本来还想支持Blinker平台的,但找不到它的通讯协议文档,只找到了它的库,它的库直接集成到我的代码中时,程序无法正常工作(崩溃),如有相关技术资料,可以告诉我,我会尝试集成的。
### ESP32 蓝牙实现 为了实现在ESP32上的蓝牙串口功能,可以利用`SerialBT`库来简化操作过程。下面是一个基本的例子展示如何设置并启动蓝牙设备以便其他蓝牙装置能够与其配对[^2]。 ```cpp #include "BluetoothSerial.h" #if !defined(CONFIG_BT_ENABLED) || !defined(CONFIG_BLUEDROID_ENABLED) #error Bluetooth is not enabled! Please run `make menuconfig` to and enable it. #endif BluetoothSerial SerialBT; void setup() { Serial.begin(115200); SerialBT.begin("ESP32test"); // 设备名称为 "ESP32test" Serial.println("The device started, now you can pair it with bluetooth!"); } void loop() { // 将接收到的数据通过蓝牙发送出去 if (Serial.available()) { SerialBT.write(Serial.read()); } // 接收来自蓝牙连接的数据并通过硬件串口打印出来 if (SerialBT.available()) { Serial.write(SerialBT.read()); } } ``` 这段程序初始化了一个名为“ESP32test”的蓝牙设备,并实现了两个方向的数据输:从UART到蓝牙以及反过来的方向。当有数据到达任一侧时(无论是通过物理串行端口还是蓝牙),这些数据会被立即转发给另一侧。 #### 数据处理机制说明 在这个例子中,每当检测到来自于标准串行接口(`Serial`)或者蓝牙串行接口(`SerialBT`)的新输入时,就会触发相应的读取动作并将所获得的信息写入对方的缓冲区。这种方式使得任何一方都可以作为发起者向另一边发送消息,从而形成了双向通信链路。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值