博客
关于我
esp-at application: BLE Command Set
阅读量:159 次
发布时间:2019-02-28

本文共 3702 字,大约阅读时间需要 12 分钟。

ESP-AT BLE命令参考

一: 概述

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命令按功能分类以便使用:

2.1 角色设置

初始化设备时需先确定其作为客户端或服务器端:

初始化为客户端:

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静态密钥

2.2 功能概述

ESP-AT BLE命令功能涵盖初始化、广告与扫描、连接与通信、参数更新、加密等多个方面:

三: 示例

3.1 iBeacon示例

iBeacon主要用于广告、室内定位等场景,发送特定格式的BLE广告包。通过WeChat震动可以发现周围设备:

初始化设备为服务器:

AT+BLEINIT=2OK

设置广告参数建议使用以下命令:

AT+BLEADVPARAM=64,64,3,0,7

设置广告数据:

AT+BLEADVDATA="0201061AFF4C000215FDA50693A4E24FB1AFCFC6EB0764782527B7F206C5"OK

启用广告:

AT+BLEADVSTARTOK

此时可通过WeChat震动发现iBeacon广告包。

3.2 扫描周围BLE设备

扫描是常见场景,例如扫描beacon包,扫描周围设备进行连接等。命令为:

AT+BLESCAN=1OK

参数说明:

+BLESCAN: MAC地址、RSSI值、广告数据、扫描响应数据、地址类型(0:公共,1:随机)

3.3 建立连接

连接命令包括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

3.4 数据传输

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

3.5 通知与指示

服务器可通过通知或指示向客户端发送数据:

AT+BLEGATTSNTFY=0,1,6,8>123456789OK

客户端需提前注册通知或指示:

AT+BLEGATTCWR=0,3,6,1,2>OK

四: 加密

ESP-AT支持所有BLE安全等级,提供完整的加密功能:

4.1 加密参数设置

设置加密参数时,可指定以下参数:

AT+BLESECPARAM=auth_req,iocap,key_size,init_key,resp_key,[auth_option]OK

auth_req参数说明:

  • 0: NO_BOND(无绑)
  • 1: BOND(绑定)
  • 4: MITM(中间人)
  • 8: SC_ONLY(只要求连接)
  • 9: SC_BOND(要求连接且绑定)
  • 12: SC_MITM(要求连接且 MITM)
  • 13: SC_MITM_BOND(要求连接、MITM且绑定)

iocap参数说明:

  • 0: DisplayOnly(仅显示)
  • 1: DisplayYesNo(显示Yes/No)
  • 2: KeyboardOnly(仅键盘)
  • 3: NoInputNoOutput(无输入无输出)
  • 4: Keyboard displa(显示键盘)

4.2 加密组合示例

根据不同的IO设置,组合会有不同的效果:

  • 一方有输入能力,另一方有输出能力
  • 两方均有输入输出能力

4.3 加密示例

示例:两设备完成加密和绑定:

// 客户端设置: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实现

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/

你可能感兴趣的文章
Nginx配置ssl实现https
查看>>
Nginx配置TCP代理指南
查看>>
Nginx配置——不记录指定文件类型日志
查看>>
Nginx配置代理解决本地html进行ajax请求接口跨域问题
查看>>
Nginx配置参数中文说明
查看>>
Nginx配置好ssl,但$_SERVER[‘HTTPS‘]取不到值
查看>>
Nginx配置如何一键生成
查看>>
Nginx配置实例-负载均衡实例:平均访问多台服务器
查看>>
NHibernate学习[1]
查看>>
NIFI1.21.0_Mysql到Mysql增量CDC同步中_日期类型_以及null数据同步处理补充---大数据之Nifi工作笔记0057
查看>>
NIFI1.21.0_NIFI和hadoop蹦了_200G集群磁盘又满了_Jps看不到进程了_Unable to write in /tmp. Aborting----大数据之Nifi工作笔记0052
查看>>
NIFI1.21.0通过Postgresql11的CDC逻辑复制槽实现_指定表多表增量同步_增删改数据分发及删除数据实时同步_通过分页解决变更记录过大问题_02----大数据之Nifi工作笔记0054
查看>>
NIFI从MySql中增量同步数据_通过Mysql的binlog功能_实时同步mysql数据_配置binlog_使用处理器抓取binlog数据_实际操作01---大数据之Nifi工作笔记0040
查看>>
NIFI从MySql中增量同步数据_通过Mysql的binlog功能_实时同步mysql数据_配置数据路由_实现数据插入数据到目标数据库_实际操作03---大数据之Nifi工作笔记0042
查看>>
NIFI同步MySql数据_到SqlServer_错误_驱动程序无法通过使用安全套接字层(SSL)加密与SQL Server_Navicat连接SqlServer---大数据之Nifi工作笔记0047
查看>>
Nifi同步过程中报错create_time字段找不到_实际目标表和源表中没有这个字段---大数据之Nifi工作笔记0066
查看>>
NIFI大数据进阶_离线同步MySql数据到HDFS_02_实际操作_splitjson处理器_puthdfs处理器_querydatabasetable处理器---大数据之Nifi工作笔记0030
查看>>
NIFI大数据进阶_连接与关系_设置数据流负载均衡_设置背压_设置展现弯曲_介绍以及实际操作---大数据之Nifi工作笔记0027
查看>>
NIFI数据库同步_多表_特定表同时同步_实际操作_MySqlToMysql_可推广到其他数据库_Postgresql_Hbase_SqlServer等----大数据之Nifi工作笔记0053
查看>>
NIFI汉化_替换logo_二次开发_Idea编译NIFI最新源码_详细过程记录_全解析_Maven编译NIFI避坑指南001---大数据之Nifi工作笔记0068
查看>>