本文共 3702 字,大约阅读时间需要 12 分钟。
ESP-AT BLE命令支持两种角色:BLE服务器和BLE客户设备。设备可以根据需要分别作为服务器或客户工作。
当使用BLE服务器角色时,设备可以同时支持3个客户连接;当使用BLE客户角色时,设备可以同时支持3个服务器连接。
除了常规的GATT和GAP命令,ESP-AT BLE还支持BLE HID功能,可模拟鼠标、键盘等设备输入输出。
ESP-AT BLE命令功能全面,涵盖定制服务、定制广告数据、发现服务、数据传输、更新连接参数、更新MTU大小、设置加密参数等功能。同时,ESP-AT BLE还支持私密的BLE透明传输协议,可在经典蓝牙透明传输之外选择使用BLE透明传输。
ESP-AT BLE命令按功能分类以便使用:
初始化设备时需先确定其作为客户端或服务器端:
初始化为客户端:
AT+BLEINIT=1OK
初始化为服务器端:
AT+BLEINIT=2OK
切换设备角色需先重置协议栈,再重新初始化:
AT+BLEDEINIT
关闭BLE:
AT+BLEINIT=0OK
客户端和服务器端的命令有一定差异,请参考下文详细说明:
BLE客户端特有命令:
AT+BLESCANPARAM // 设置扫描参数AT+BLESCAN // 启用或禁用扫描AT+BLECFGMTU // 交换MTU大小AT+BLECONN // 连接远端设备AT+BLEGATTCPRIMSRV // 发现包含服务AT+BLEGATTCINCLSRV // 获取包含服务AT+BLEGATTCCHAR // 在特定服务中查找特性AT+BLEGATTCWR // 写入特性值AT+BLEGATTCRD // 读取特性值AT+BLECONNPARAM // 更新连接参数
BLE服务器特有命令:
AT+BLEADVPARAM // 设置广告参数AT+BLEADVDATA // 设置广告数据AT+BLESCANRSPDATA // 扫描响应数据AT+BLEADVSTART // 启用广告AT+BLEADVSTOP // 禁用广告AT+BLEGATTSSRVCRE // 创建服务AT+BLEGATTSSRVSTART // 启用服务AT+BLEGATTSSRV // 查询本地服务AT+BLEGATTSCHAR // 在本地服务中查找特性AT+BLEGATTSNTFY // 向客户端发送通知AT+BLEGATTSIND // 向客户端发送指示AT+BLEGATTSSETATTR // 设置特性属性值本地
客户端和服务器共用的命令:
AT+BLEINIT // 初始化BLE协议栈AT+BLEADDR // 获取BLE地址AT+BLENAME // 设置或获取设备名称AT+BLEDISCONN // 断开连接AT+BLEDATALEN // 设置数据包长度AT+BLESPPCFG // 配置BLE透明传输参数AT+BLESPP // 进入BLE透明传输模式AT+BLESECPARAM // 设置BLE加密参数AT+BLEENC // 发起BLE加密请求AT+BLEENCRSP // 响应BLE加密请求AT+BLEKEYREPLY // 设置或获取其他设备的静态密钥AT+BLEENCDEV // 获取已绑定设备信息AT+BLEENCCLEAR // 删除已绑定设备信息AT+BLESETKEY // 设置BLE静态密钥
ESP-AT BLE命令功能涵盖初始化、广告与扫描、连接与通信、参数更新、加密等多个方面:
iBeacon主要用于广告、室内定位等场景,发送特定格式的BLE广告包。通过WeChat震动可以发现周围设备:
初始化设备为服务器:
AT+BLEINIT=2OK
设置广告参数建议使用以下命令:
AT+BLEADVPARAM=64,64,3,0,7
设置广告数据:
AT+BLEADVDATA="0201061AFF4C000215FDA50693A4E24FB1AFCFC6EB0764782527B7F206C5"OK
启用广告:
AT+BLEADVSTARTOK
此时可通过WeChat震动发现iBeacon广告包。
扫描是常见场景,例如扫描beacon包,扫描周围设备进行连接等。命令为:
AT+BLESCAN=1OK
参数说明:
+BLESCAN: MAC地址、RSSI值、广告数据、扫描响应数据、地址类型(0:公共,1:随机)
连接命令包括AT+BLECONN和AT+BLEDISCONN。连接需指定连接索引和目标设备MAC地址:
AT+BLECONN=0,"c4:4f:33:16:f8:c3"OK
断开连接:
AT+BLEDISCONN=0+BLEDISCONN:0,"c4:4f:33:16:f8:c3"OK
BLE数据传输基于属性协议。在初始化服务器前,需先创建并启动服务:
AT+BLEGATTSSRVCREOKAT+BLEGATTSSRVSTARTOK
服务查询命令:
AT+BLEGATTSSRV?+BLEGATTSSRV:1,0,0xA002,1OK
客户端读写特性值:
AT+BLEGATTCRD=0,1,0+BLEGATTCRD:0,1,0OK
客户端写特性值:
AT+BLEGATTCWR=0,3,4,10>abcdefghijOK
服务器可通过通知或指示向客户端发送数据:
AT+BLEGATTSNTFY=0,1,6,8>123456789OK
客户端需提前注册通知或指示:
AT+BLEGATTCWR=0,3,6,1,2>OK
ESP-AT支持所有BLE安全等级,提供完整的加密功能:
设置加密参数时,可指定以下参数:
AT+BLESECPARAM=auth_req,iocap,key_size,init_key,resp_key,[auth_option]OK
auth_req参数说明:
iocap参数说明:
根据不同的IO设置,组合会有不同的效果:
示例:两设备完成加密和绑定:
// 客户端设置:AT+BLESECPARAM=13,4,16,3,3OK// 服务器设置:AT+BLESECPARAM=13,2,16,3,3OK
发起加密请求:
AT+BLEENC=0,3OK
服务器响应:
+BLESECREQ:0
客户端确认:
AT+BLEENCRSP=0,1OK
交换密钥:
AT+BLEKEYREPLY=0,344804OK
成功验证:
+BLEAUTHCMPL:0,0
SPP(软件协议协议)实现方法:
使用两个ESP32模块或手机与对应芯片组:
初始化:
// 客户端:AT+BLEINIT=1OK// 服务器:AT+BLEINIT=2OK
创建并启动服务:
AT+BLEGATTSSRVCREOKAT+BLEGATTSSRVSTARTOKAT+BLEADVSTARTOK
客户端连接:
AT+BLECONN=0,”XX:XX:XX:XX:XX:XX”OK
服务查询:
AT+BLEGATTCPRIMSRV=0AT+BLEGATTCCHAR=0,3AT+BLESPPCFG=1,3,3,3,7
设置SPP参数:
AT+BLESCANPARAM=1,tx_service_index,tx_char_index,rx_service_index,rx_char_index
进入SPP模式:
AT+BLESPP
转载地址:http://ztxd.baihongyu.com/