ESP32 BLE蓝牙 使用AT指令与其他BLE蓝牙模块透传 配置教程

文章目录

  • 前言
  • 一、ESP32 AT固件下载
    • 1.AT固件下载
    • 2.烧录工具下载
  • 二、亿佰特蓝牙E104-BT5011A配置(服务端)
  • 三、ESP32蓝牙配置(客户端)

前言

因项目需求,需要使用ESP32 BLE蓝牙同亿佰特蓝牙模块(型号:E104-BT5011A)建立透传。经查阅E104-BT5011A使用指南,可以通过UUID与其他厂商蓝牙模块建立连接。经过研究后成功实现同ESP32 BLE蓝牙透传。

提示:以下是本篇文章正文内容,下面案例可供参考

一、ESP32 AT固件下载

首先需要下载ESP32 AT固件并通过官方烧录工具烧录到芯片。

1.AT固件下载

https://www.espressif.com/zh-hans/support/download/at
需要根据自己的芯片型号下载不同的固件,因为我的是esp32-wroom-32,所以我下载对应固件。
下载完成解压后里面有个用户指南,这里有详细的固件烧录教程、连线方式、AT指令解释等。具体烧录过程参考官方教程,这里不再赘述。
在这里插入图片描述

2.烧录工具下载

https://www.espressif.com/zh-hans/support/download/other-tools
在这里插入图片描述

二、亿佰特蓝牙E104-BT5011A配置(服务端)

BLE蓝牙从机使用通知方式发送数据,数据发送速率较快,主机采用写响应的方式,数据发送速率较慢。
因为数据发送方是E104-BT5011A,所以我们首先对数据发送方(也可称作为:server,服务端,从机)进行蓝牙配置。

首先使用AT指令进行测试。出现乱码,原因一般是是波特率选择不对。出现错误,原因一般是勾选了发送新行。

ESP32 BLE蓝牙 使用AT指令与其他BLE蓝牙模块透传 配置教程_第1张图片
然后配置为从机模式,并进行广播。

//测试指令
AT
//配置模块为从机
AT+ROLE=0
//开启广播
AT+ADV=1
//获取mac地址
AT+MAC?
//获取广播名字
AT+NAME?

注意事项:获取MAC地址时先勾选16进制显示,然后再发送指令,红框内6字节数即为MAC地址。

ESP32 BLE蓝牙 使用AT指令与其他BLE蓝牙模块透传 配置教程_第2张图片

ESP32 BLE蓝牙 使用AT指令与其他BLE蓝牙模块透传 配置教程_第3张图片

三、ESP32蓝牙配置(客户端)

将ESP32 配置为数据接收方(也可称为:client,客户端,主机),然后按照从机广播名字进行扫描,这里需要耐心等待一会才能扫描到。

指令如下:

AT+BLEINIT=1// 设置为客户端
这里我们有两种方式进行扫描,一使用MAC地址,二使用从机广播名字。推荐使用名字进行过滤。
之前用MAC地址进行过滤怎么也查询不到,最后发现能识别的MAC地址和从机显示的MAC地址是反过来的。
使用名字进行过滤就不用担心出现这个问题。
AT+BLESCAN=1,0,2,"E104-BT5011A" // 开始扫描,过滤类型为设备名称
AT+BLESCAN=1,0,1,"ef:f0:db:6a:7d:50" // 开始扫描,过滤类型为MAC 地址

注意事项: 这里与从机配置有些不同,需要勾选"发送新行"才能发送指令,否则会错误。

ESP32 BLE蓝牙 使用AT指令与其他BLE蓝牙模块透传 配置教程_第4张图片
然后与从机建立连接

AT+BLECONN=0,"ef:f0:db:6a:7d:50"//与从机建立连接,0代表Bluetooth LE 连接号,下面我们还会用到

ESP32 BLE蓝牙 使用AT指令与其他BLE蓝牙模块透传 配置教程_第5张图片
建立连接后就可以获取从机提供的服务啦,先获取从机提供的基本服务:

AT+BLEGATTCPRIMSRV=0//0代表Bluetooth LE 连接号

ESP32 BLE蓝牙 使用AT指令与其他BLE蓝牙模块透传 配置教程_第6张图片
这里返回了三行数据,经过查询E104-BT5011A的UUDI说明,我们可以发现,返回的第三行数据就包含需要的UUID服务序号,这里记清楚是第三行。下一条指令要用到。
ESP32 BLE蓝牙 使用AT指令与其他BLE蓝牙模块透传 配置教程_第7张图片
然后使用指令获取 GATTC 服务特征

AT+BLEGATTCCHAR=0,3//0代表Bluetooth LE 连接号,3代表UUID服务序号,由上一条指令查询得到。

ESP32 BLE蓝牙 使用AT指令与其他BLE蓝牙模块透传 配置教程_第8张图片

这里返回了好多信息,接下来是重点,我们需要根据E104-BT5011A的UUID说明和ESP32的AT+BLESPPCFG进行配置。
ESP32 BLE蓝牙 使用AT指令与其他BLE蓝牙模块透传 配置教程_第9张图片

特征值SLAVE CHANNEL UUID FFF1 对应上边返回信息的+BLEGATTCCHAR:"char",0,3,1,0xFFF1,0x12
特征值MAST CHANNEL UUID FFF2 对应上边返回信息的+BLEGATTCCHAR:"char",0,3,2,0xFFF2,0x0a
特征值CONFIG CHANNEL UUID FFF3 对应上边返回信息的+BLEGATTCCHAR:"char",0,3,3,0xFFF3,0x1a
0代表Bluetooth LE 连接号,3代表UUID服务序号,1 2 3代表三个服务特征序号(下一条指令要用到)

我们看下ESP32 AT的透传配置说明,设置Bluetooth LE SPP透传参数。
这里的参数需要根据从机UUID说明进行配置。
ESP32 BLE蓝牙 使用AT指令与其他BLE蓝牙模块透传 配置教程_第10张图片

AT+BLESPPCFG=1,3,2,3,1
第一个参数需要配置为1,
第二个参数是ESP32主机的tx服务序号,需要将其设置为3,
第三个参数是ESP32主机的tx服务特征序号,需要设置为2,也就是UUID为0xFF2,主机发送,从机接受数据通道
第四个参数是ESP32主机的rx服务序号,需要将其设置为3,我这里是和tx服务序号相同
第五个参数是ESP32主机的rx服务特征序号,需要设置为1,也就是UUID为0xFF1,从机发送,主机接收数据通道
//配置完成后就可以使用以下命令开启透传
AT+BLESPP

ESP32 BLE蓝牙 使用AT指令与其他BLE蓝牙模块透传 配置教程_第11张图片
发送一些数据测试一下:

ESP32 BLE蓝牙 使用AT指令与其他BLE蓝牙模块透传 配置教程_第12张图片
成功建立透传。

你可能感兴趣的:(ESP32,嵌入式硬件,mcu,iot,蓝牙)