蓝牙 ==== :: >作者:陈功(硬件) 梁健(软件) 更新时间:2021年1月8日 关键字:蓝牙 @[TOC] #概述 本模块支持BLE 蓝牙,目前BLE 蓝牙支持扫描热点,数据收发,以及发起广播等功能 硬件上支持蓝牙功能的模块型号如下: Air720UH_NF:支持 Air720UH_NFC:不支持 Air720UH_NA:不支持 Air720UG_NAC:不支持 Air720UG_NAM:支持 Air724UG_NFM:支持 Air724UG_NFC:不支持 Air724UG_NAT:不支持 Air724UG_NA:支持 Air722UG_NFC:不支持 Air722UG_NFM:支持 ## 蓝牙相关AT指令 打开/关闭 蓝牙指令:AT+BTCOMM=ENABLE ------------------------------------ 描述: ​ 此命令用于打开/关闭蓝牙 语法规则: +----------+----------------------------+----------------------------+ | 命令类型 | 语法 | 返回 | +==========+============================+============================+ | 设置命令 | A | OK | | | T+BTCOMM=ENABLE,[,< | | | | mode >] | | +----------+----------------------------+----------------------------+ | 查询命令 | AT+BTCOMM=ENABLE? | +BT | | | | COMM:ENABLE=, | | | | OK | +----------+----------------------------+----------------------------+ 参数定义: ======= ======== ==== ============ 参数 定义 取值 对取值的说明 ======= ======== ==== ============ 打开蓝牙 1 字符串参数 \ 关闭蓝牙 0 字符串参数 从模式 0 字符串参数 \ 主模式 1 字符串参数 ======= ======== ==== ============ 举例: :: AT+BTCOMM=ENABLE,1,0 OK AT+BTCOMM=ENABLE,0,0 OK 如果失败会返回:ERROR或+CME ERROR: 设置BLE设备名称:AT+BLECOMM=NAME -------------------------------- | 描述: 此命令,用于设置BLE设备名称,参数是设备名称,最长26byte | 语法规则: 语法规则: ======== ====================== ======================= 命令类型 语法 返回 ======== ====================== ======================= 设置命令 AT+BLECOMM=NAME, OK 查询命令 AT+BLECOMM=NAME? +BTCOMM: NAME= OK ======== ====================== ======================= 参数定义: +--------+------------------------------------+------+--------------+ | 参数 | 定义 | 取值 | 对取值的说明 | +========+====================================+======+==============+ | | 参数为设备名,最长不能超过26字节; | - | ASCII | | | 只允许使用英文、 数字、 下划 线; | | | +--------+------------------------------------+------+--------------+ 举例: .. code:: c AT+BLECOMM=NAME,Luat_Air724UG OK AT+BLECOMM=NAME? +BLECOMM: NAME=Luat_Air724UG OK 如果失败会返回:ERROR或+CME ERROR: 设置广播包数据:AT+BLEADV=ADVDATA --------------------------------- 描述: ​ 此命令,用于设置广播包数据,有2个参数 语法规则: ======== ============================== ============================= 命令类型 语法 返回 ======== ============================== ============================= 设置命令 AT+BLEADV=ADVDATA,, OK 查询命令 AT+BLEADV=ADVDATA? +BLEADV: DATA=, OK ======== ============================== ============================= 参数定义: ====== ============================ ===== ==================== 参数 定义 取值 对取值的说明 ====== ============================ ===== ==================== 数据长度 —- 十六进制数据长度 数据内容,最长不能超过31字节 十六进制数字符串参数 ====== ============================ ===== ==================== 举例: .. code:: c AT+BLEADV=ADVDATA,5,04ff010203 OK AT+BLEADV=ADVDATA? +BLEADV: DATA=04ff010203 OK 如果失败会返回:ERROR或+CME ERROR: 设置响应包数据:AT+BLEADV=SCANRSPDATA ------------------------------------- 描述: ​ 此命令,用于设置响应包数据,有2个参数 语法规则: +----------+------------------------------------+-------------------------------+ | 命令类型 | 语法 | 返回 | +==========+====================================+===============================+ | 设置命令 | AT+BLEADV=SCANRSPDATA,, | OK | +----------+------------------------------------+-------------------------------+ | 查询命令 | AT+BLEADV=SCANRSPDATA? | +BLEADV: DATA=, OK | +----------+------------------------------------+-------------------------------+ 参数定义: ====== ============================ ===== ==================== 参数 定义 取值 对取值的说明 ====== ============================ ===== ==================== 数据长度 —- 十六进制数据长度 数据内容,最长不能超过31字节 十六进制数字符串参数 ====== ============================ ===== ==================== 举例: .. code:: c AT+BLEADV=SCANRSPDATA,5,04ff010203 OK AT+BLEADV=SCANRSPDATA? +BLEADV: DATA=04ff010203 OK 如果失败会返回:ERROR或+CME ERROR: 打开/关闭 蓝牙广播指令:AT+BLEADV=ENABLE ---------------------------------------- 描述: ​ 此命令,用于开关广播,有一个参数 语法规则: ======== ======================== ========================== 命令类型 语法 返回 ======== ======================== ========================== 设置命令 AT+BLEADV=ENABLE, OK 查询命令 AT+BLEADV=ENABLE? +BLEADV: ENABLE= OK ======== ======================== ========================== 参数定义: ======= ======== ==== ============ 参数 定义 取值 对取值的说明 ======= ======== ==== ============ 关闭广播 0 数字 \ 打开广播 1 数字 ======= ======== ==== ============ 举例: .. code:: c AT+BLEADV=ENABLE,0 OK AT+BLEADV=ENABLE,1 OK 如果失败会返回:ERROR或+CME ERROR: 连接状态上报指令:+BLEIND=CONNECT --------------------------------- 描述: ​ 此命令,用于上报连接状态 语法规则: ======== =========================== 命令类型 语法 ======== =========================== URC上报 +BLEIND=CONNECT[,
] \ +BLEIND=CONNECT FAIL ======== =========================== 参数定义: +-----------+--------------+--------+-------------------------------+ | 参数 | 定义 | 取值 | 对取值的说明 | +===========+==============+========+===============================+ |
| 对端设备地址 | 字符串 | 设备地址(小端排序,共6个字 | | | | | 节),例如:40:45:DA:33:22:11 | +-----------+--------------+--------+-------------------------------+ 举例: .. code:: c +BLEIND=CONNECT,40:45:DA:33:22:11 断开连接状态上报指令:+BLEIND=DISONNECT --------------------------------------- 描述: ​ 此命令,用于上报断开连接状态 语法规则: ======== ============================= 命令类型 语法 ======== ============================= URC上报 +BLEIND=DISONNECT[,
] ======== ============================= 参数定义: +-----------+--------------+--------+-------------------------------+ | 参数 | 定义 | 取值 | 对取值的说明 | +===========+==============+========+===============================+ |
| 对端设备地址 | 字符串 | 设备地址(小端排序,共6个字 | | | | | 节),例如:40:45:DA:33:22:11 | +-----------+--------------+--------+-------------------------------+ 举例: .. code:: c +BLEIND=DISONNECT,40:45:DA:33:22:11 打开/关闭 蓝牙扫描指令:AT+BLESCAN=ENABLE ----------------------------------------- 描述: ​ 此命令,用于开关扫描,有一个参数 语法规则: ======== ========================= =========================== 命令类型 语法 返回 ======== ========================= =========================== 设置命令 AT+BLESCAN=ENABLE, OK 查询命令 AT+BLESCAN=ENABLE? +BLESCAN: ENABLE= OK ======== ========================= =========================== 参数定义: ======= ======== ==== ============ 参数 定义 取值 对取值的说明 ======= ======== ==== ============ 关闭广播 0 数字 \ 打开广播 1 数字 ======= ======== ==== ============ 举例: .. code:: c AT+BLESCAN=ENABLE,0 OK AT+BLESCAN=ENABLE,1 OK 如果失败会返回:ERROR或+CME ERROR: 扫描结果上报指令:+BLEIND=SCAN ------------------------------ 描述: ​ 此命令,用于上报扫描结果 语法规则: ======== =============================================== 命令类型 语法 ======== =============================================== URC上报 +BLEIND=SCAN,
,< addrtype>,, ======== =============================================== 参数定义: +------------+------------------+--------------+-------------------+ | 参数 | 定义 | 取值 | 对取值的说明 | +============+==================+==============+===================+ |
| 设备蓝牙地址 | 字符串 | 设备地 | | | | | 址(小端排序,共 | | | | | 6个字节),例如: | | | | | 40:45:DA:33:22:11 | +------------+------------------+--------------+-------------------+ | | 设备蓝牙地址类型 | 0 | public | +------------+------------------+--------------+-------------------+ | | | 1 | random | +------------+------------------+--------------+-------------------+ | | 信号强度 | 数值 | -128~127 | +------------+------------------+--------------+-------------------+ | | 广播原始数据 | 16进制字符串 | 最长31个字节 | +------------+------------------+--------------+-------------------+ 举例: .. code:: c +BLEIND=SCAN,40:45:DA:33:22:11,0,-75,0201060E094C7561745F4169723732345547 蓝牙连接指令:AT+BLECOMM=CONNECT -------------------------------- 描述: ​ 此命令,用于连接蓝牙,有两个参数 语法规则: +----------+----------------------------+----------------------------+ | 命令类型 | 语法 | 返回 | +==========+============================+============================+ | 设置命令 | AT+BLECOMM=CO | OK | | | NNECT,,
| | +----------+----------------------------+----------------------------+ | 查询命令 | AT+BLECOMM=CONNECT? | +BTCOMM: | | | | CONNECT=,
| | | | OK | +----------+----------------------------+----------------------------+ 参数定义: +------------+------------------+--------+----------------------+ | 参数 | 定义 | 取值 | 对取值的说明 | +============+==================+========+======================+ | | 连接状态 | 0 | 断开状态 | +------------+------------------+--------+----------------------+ | | | 1 | 连接状态 | +------------+------------------+--------+----------------------+ |
| 设备蓝牙地址 | 字符串 | 设备地址(小端排序 | | | | | ,共6个字节),例如 | | | | | :40:45:DA:33:22:11 | +------------+------------------+--------+----------------------+ | | 设备蓝牙地址类型 | 0 | public | +------------+------------------+--------+----------------------+ | | | 1 | random | +------------+------------------+--------+----------------------+ 举例: .. code:: c AT+BLECOMM=CONNECT,0,40:45:DA:33:22:11 OK 如果失败会返回:ERROR或+CME ERROR: 蓝牙断开连接指令:AT+BLECOMM=DISCONNECT --------------------------------------- 描述: ​ 此命令,用于断开连接蓝牙 语法规则: ======== ===================== ==== 命令类型 语法 返回 ======== ===================== ==== 设置命令 AT+BLECOMM=DISCONNECT OK ======== ===================== ==== 参数定义: 无 举例: .. code:: c AT+BLECOMM=DISCONNECT OK 如果失败会返回:ERROR或+CME ERROR: 蓝牙发现服务指令:AT+BLECOMM=FINDSERVICE ---------------------------------------- 描述: ​ 此命令,用于发现蓝牙包含的服务 语法规则: ======== ====================== ==== 命令类型 语法 返回 ======== ====================== ==== 设置命令 AT+BLECOMM=FINDSERVICE OK ======== ====================== ==== 参数定义: 无 举例: .. code:: c AT+BLECOMM=FINDSERVICE OK 如果失败会返回:ERROR或+CME ERROR: 服务uuid上报指令:+BLEIND=FINDSERVICE ------------------------------------- 描述: ​ 此命令,用于上报服务uuid 语法规则: ======== ============================ 命令类型 语法 ======== ============================ URC上报 +BLEIND=FINDSERVICE, ======== ============================ 参数定义: ======== ======== ============== ============ 参数 定义 取值 对取值的说明 ======== ======== ============== ============ 服务uuid 十六进制字符串 ———— ======== ======== ============== ============ 举例: .. code:: c +BLEIND=FINDSERVICE,fee0 蓝牙发现服务内特征指令:AT+BLECOMM=FINDCHARACTERISTIC ----------------------------------------------------- 描述: ​ 此命令,用于发现蓝牙服务包含的特征 语法规则: ======== ======================================= ==== 命令类型 语法 返回 ======== ======================================= ==== 设置命令 AT+BLECOMM=FINDCHARACTERISTIC, OK ======== ======================================= ==== 参数定义: ======== ======== ============== ============ 参数 定义 取值 对取值的说明 ======== ======== ============== ============ 服务uuid 十六进制字符串 ———— ======== ======== ============== ============ 举例: .. code:: c AT+BLECOMM=FINDCHARACTERISTIC,fee0 OK 如果失败会返回:ERROR或+CME ERROR: 特征uuid上报指令:+BLEIND=FINDCHARACTERISTIC -------------------------------------------- 描述: ​ 此命令,用于上报服务包含的特征uuid 语法规则: ======== =================================== 命令类型 语法 ======== =================================== URC上报 +BLEIND=FINDCHARACTERISTIC, ======== =================================== 参数定义: ======== ======== ============== ============ 参数 定义 取值 对取值的说明 ======== ======== ============== ============ 特征uuid 十六进制字符串 ———— ======== ======== ============== ============ 举例: .. code:: c +BLEIND=FINDCHARACTERISTIC,fee1 +BLEIND=FINDCHARACTERISTIC,fee2 打开/关闭 通知指令:AT+BLECOMM=NOTIFICATION ------------------------------------------- 描述: ​ 此命令,用于开关通知,有两个参数 语法规则: ======== ========================================= ==== 命令类型 语法 返回 ======== ========================================= ==== 设置命令 AT+BLECOMM=NOTIFICATION, , OK ======== ========================================= ==== 参数定义: ======== ======== ============== ============ 参数 定义 取值 对取值的说明 ======== ======== ============== ============ 关闭广播 0 数字 \ 打开广播 1 数字 特征uuid 十六进制字符串 ———— ======== ======== ============== ============ 举例: .. code:: c AT+BLECOMM= NOTIFICATION,fee2,1 OK AT+BLECOMM= NOTIFICATION,fee2,0 OK 如果失败会返回:ERROR或+CME ERROR: 发送数据指令:AT+BLECOMM=SENDATA -------------------------------- 描述: ​ 此命令,用于发送数据 语法规则: ======== ========================================= ==== 命令类型 语法 返回 ======== ========================================= ==== 设置命令 AT+BLECOMM=SENDDATA,,, OK ======== ========================================= ==== 参数定义: +----------+-------------------------------+----------------+----------------------+ | 参数 | 定义 | 取值 | 对取值的说明 | +==========+===============================+================+======================+ | | 特征uuid | 十六进制字符串 | ———— | +----------+-------------------------------+----------------+----------------------+ | | 数据长度 | 数值 | 十六进制数据长度 | +----------+-------------------------------+----------------+----------------------+ | | 数据内容,最长不能超过244字节 | | 十六进制数字符串参数 | +----------+-------------------------------+----------------+----------------------+ 举例: .. code:: c AT+BLECOMM=SENDDATA,fee2,10,31323334353637383930 OK 如果失败会返回: + BLECOMM:ERR=error 数据上报指令:+BLEIND=DATA -------------------------- 描述: ​ 此命令,用于上报接收到的数据 语法规则: ======== ================================== 命令类型 语法 ======== ================================== URC上报 +BLEIND=DATA,,, ======== ================================== 参数定义: +----------+-------------------------------+----------------+----------------------+ | 参数 | 定义 | 取值 | 对取值的说明 | +==========+===============================+================+======================+ | | 特征uuid | 十六进制字符串 | ———— | +----------+-------------------------------+----------------+----------------------+ | | 数据长度 | 数值 | 十六进制数据长度 | +----------+-------------------------------+----------------+----------------------+ | | 数据内容,最长不能超过244字节 | | 十六进制数字符串参数 | +----------+-------------------------------+----------------+----------------------+ 举例: .. code:: c +BLEIND=DATA,fee1,10,31323334353637383930 蓝牙MAC地址读写指令:AT+BTMAC ----------------------------- 描述: ​ 此命令,用于蓝牙MAC地址读写 语法规则: ======== ================== ==================== 命令类型 语法 返回 ======== ================== ==================== 设置命令 AT+BTMAC=
OK 查询命令 AT+BTMAC? +BTMAC:
OK ======== ================== ==================== 参数定义: +-----------+--------------+--------+-------------------------------+ | 参数 | 定义 | 取值 | 对取值的说明 | +===========+==============+========+===============================+ |
| 设备蓝牙地址 | 字符串 | 设备地址(小端排序,共6个字 | | | | | 节),例如:40:45:DA:33:22:11 | +-----------+--------------+--------+-------------------------------+ 举例: .. code:: c AT+BTMAC=40:45:DA:33:22:11 OK AT+BTMAC? +BTMAC:40:45:DA:33:22:11 OK 如果失败会返回:ERROR或+CME ERROR: 蓝牙从模式测试/使用流程 ----------------------- 1. 下载手机蓝牙测试工具 `nrf connect `__\ (必须) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 2. 通过串口发送指令 AT+BTCOMM=ENABLE (必须) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ :: AT+BTCOMM=ENABLE,1,0 OK ####3.设置广播模块名称(非必须,需要在广播关闭状态下发送) :: AT+BLECOMM=NAME,AIRM2M_LUAT OK 4.设置广播包数据(非必须,需要在广播关闭状态下发送) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ :: AT+BLEADV=ADVDATA,8,02010604ff010203 OK *此处数据段(04ff010203 )含义是长度为04,标识为manufacturer specific data(ff)的数据,详情请见BLE广播协议* 5.设置响应包数据(非必须,需要在广播关闭状态下发送) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ :: AT+BLEADV=SCANRSPDATA,3,020A04 OK 6.打开广播 (必须) ^^^^^^^^^^^^^^^^^^^ :: AT+BLEADV=ENABLE,1 OK 7.连接蓝牙(必须) ^^^^^^^^^^^^^^^^^^ ​ i.打开第一步下载的nrf connect 安卓应用 ​ ii.查看蓝牙和广播信息(当前信息是根据上述AT来的,如果字节修改了其他值则看到的不一样) .. image:: http://openluat-luatcommunity.oss-cn-hangzhou.aliyuncs.com/images/20200829200136854_寻找蓝牙.png 图(1).寻找蓝牙和功能点介绍 .. image:: http://openluat-luatcommunity.oss-cn-hangzhou.aliyuncs.com/images/20200829200151237_广播数据.png 图(2).广播内容介绍 .. image:: http://openluat-luatcommunity.oss-cn-hangzhou.aliyuncs.com/images/20200829200205946_蓝牙服务和特征值描述.png 图(3).当前蓝牙服务介绍 8.测试蓝牙 ^^^^^^^^^^ ​ i.手机给蓝牙发送数据 ​ |image1| ​ 图(4).手机给模块发送数据 ​ 通过上述 图(3) 特征值为fffe 的特征发送数据(4321),串口数据会吐出 :: 04 03 02 01 ii.模块给中心设备(手机)发送数据 :: AT+SPBTCTRL=GATTSETNOTIFY,12345 OK 手机收到 |image2| 图(5).手机收到模块发送的数据 ​ 相关资料以及购买链接 -------------------- 相关开发板购买链接 `Air724UG开发板 `__ `Air724 开发板使用说明 `__ `相关软件资料下载 `__ 常见问题 -------- https://luatdoc.papapoi.com/638/ .. |image1| image:: http://openluat-luatcommunity.oss-cn-hangzhou.aliyuncs.com/images/20200829200233910_手机收到模块发送的数据.png .. |image2| image:: http://openluat-luatcommunity.oss-cn-hangzhou.aliyuncs.com/images/20200829200301511_手机收到模块发送的数据.png