蓝牙

>作者:陈功(硬件) 梁健(软件)
更新时间: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 T+BTCOMM=ENABLE,<state>[,< mode >]

OK

查询命令

AT+BTCOMM=ENABLE?

+BT COMM:ENABLE=<state>,<mode> OK

参数定义:

参数

定义

取值

对取值的说明

<state>

打开蓝牙

1

字符串参数

关闭蓝牙

0

字符串参数

<mode>

从模式

0

字符串参数

主模式

1

字符串参数

举例:

AT+BTCOMM=ENABLE,1,0

OK

AT+BTCOMM=ENABLE,0,0

OK

如果失败会返回:ERROR或+CME ERROR:<err>

设置BLE设备名称:AT+BLECOMM=NAME

描述: 此命令,用于设置BLE设备名称,参数是设备名称,最长26byte
语法规则:

语法规则:

命令类型

语法

返回

设置命令

AT+BLECOMM=NAME,<name>

OK

查询命令

AT+BLECOMM=NAME?

+BTCOMM: NAME=<name> OK

参数定义:

参数

定义

取值

对取值的说明

<name>

参数为设备名,最长不能超过26字节; 只允许使用英文、 数字、 下划 线;

ASCII

举例:

AT+BLECOMM=NAME,Luat_Air724UG

OK

AT+BLECOMM=NAME?

+BLECOMM: NAME=Luat_Air724UG
OK
如果失败会返回:ERROR或+CME ERROR:<err>

设置广播包数据:AT+BLEADV=ADVDATA

描述:

​ 此命令,用于设置广播包数据,有2个参数

语法规则:

命令类型

语法

返回

设置命令

AT+BLEADV=ADVDATA,<len>,<data>

OK

查询命令

AT+BLEADV=ADVDATA?

+BLEADV: DATA=<len>,<data> OK

参数定义:

参数

定义

取值

对取值的说明

<len>

数据长度

—-

十六进制数据长度

<data>

数据内容,最长不能超过31字节

<str>

十六进制数字符串参数

举例:

AT+BLEADV=ADVDATA,5,04ff010203

OK

AT+BLEADV=ADVDATA?

+BLEADV: DATA=04ff010203
OK

如果失败会返回:ERROR或+CME ERROR:<err>

设置响应包数据:AT+BLEADV=SCANRSPDATA

描述:

​ 此命令,用于设置响应包数据,有2个参数

语法规则:

命令类型

语法

返回

设置命令

AT+BLEADV=SCANRSPDATA,<len>,<data>

OK

查询命令

AT+BLEADV=SCANRSPDATA?

+BLEADV: DATA=<len>,<data> OK

参数定义:

参数

定义

取值

对取值的说明

<len>

数据长度

—-

十六进制数据长度

<data>

数据内容,最长不能超过31字节

<str>

十六进制数字符串参数

举例:

AT+BLEADV=SCANRSPDATA,5,04ff010203

OK

AT+BLEADV=SCANRSPDATA?

+BLEADV: DATA=04ff010203
OK

如果失败会返回:ERROR或+CME ERROR:<err>

打开/关闭 蓝牙广播指令:AT+BLEADV=ENABLE

描述:

​ 此命令,用于开关广播,有一个参数

语法规则:

命令类型

语法

返回

设置命令

AT+BLEADV=ENABLE,<state>

OK

查询命令

AT+BLEADV=ENABLE?

+BLEADV: ENABLE=<state> OK

参数定义:

参数

定义

取值

对取值的说明

<state>

关闭广播

0

数字

打开广播

1

数字

举例:

AT+BLEADV=ENABLE,0

OK

AT+BLEADV=ENABLE,1

OK

如果失败会返回:ERROR或+CME ERROR:<err>

连接状态上报指令:+BLEIND=CONNECT

描述:

​ 此命令,用于上报连接状态

语法规则:

命令类型

语法

URC上报

+BLEIND=CONNECT[,<address>]

+BLEIND=CONNECT FAIL

参数定义:

参数

定义

取值

对取值的说明

<address>

对端设备地址

字符串

设备地址(小端排序,共6个字 节),例如:40:45:DA:33:22:11

举例:

+BLEIND=CONNECT,40:45:DA:33:22:11

断开连接状态上报指令:+BLEIND=DISONNECT

描述:

​ 此命令,用于上报断开连接状态

语法规则:

命令类型

语法

URC上报

+BLEIND=DISONNECT[,<address>]

参数定义:

参数

定义

取值

对取值的说明

<address>

对端设备地址

字符串

设备地址(小端排序,共6个字 节),例如:40:45:DA:33:22:11

举例:

+BLEIND=DISONNECT,40:45:DA:33:22:11

打开/关闭 蓝牙扫描指令:AT+BLESCAN=ENABLE

描述:

​ 此命令,用于开关扫描,有一个参数

语法规则:

命令类型

语法

返回

设置命令

AT+BLESCAN=ENABLE,<state>

OK

查询命令

AT+BLESCAN=ENABLE?

+BLESCAN: ENABLE=<state> OK

参数定义:

参数

定义

取值

对取值的说明

<state>

关闭广播

0

数字

打开广播

1

数字

举例:

AT+BLESCAN=ENABLE,0

OK

AT+BLESCAN=ENABLE,1

OK

如果失败会返回:ERROR或+CME ERROR:<err>

扫描结果上报指令:+BLEIND=SCAN

描述:

​ 此命令,用于上报扫描结果

语法规则:

命令类型

语法

URC上报

+BLEIND=SCAN,<address>,< addrtype>,<rssi>,<raw>

参数定义:

参数

定义

取值

对取值的说明

<address>

设备蓝牙地址

字符串

设备地 址(小端排序,共 6个字节),例如: 40:45:DA:33:22:11

<addrtype>

设备蓝牙地址类型

0

public

1

random

<rssi>

信号强度

数值

-128~127

<raw>

广播原始数据

16进制字符串

最长31个字节

举例:

+BLEIND=SCAN,40:45:DA:33:22:11,0,-75,0201060E094C7561745F4169723732345547

蓝牙连接指令:AT+BLECOMM=CONNECT

描述:

​ 此命令,用于连接蓝牙,有两个参数

语法规则:

命令类型

语法

返回

设置命令

AT+BLECOMM=CO NNECT,<addrtype>,<address>

OK

查询命令

AT+BLECOMM=CONNECT?

+BTCOMM: CONNECT=<state>,<address> OK

参数定义:

参数

定义

取值

对取值的说明

<state>

连接状态

0

断开状态

1

连接状态

<address>

设备蓝牙地址

字符串

设备地址(小端排序 ,共6个字节),例如 :40:45:DA:33:22:11

<addrtype>

设备蓝牙地址类型

0

public

1

random

举例:

AT+BLECOMM=CONNECT,0,40:45:DA:33:22:11

OK

如果失败会返回:ERROR或+CME ERROR:<err>

蓝牙断开连接指令:AT+BLECOMM=DISCONNECT

描述:

​ 此命令,用于断开连接蓝牙

语法规则:

命令类型

语法

返回

设置命令

AT+BLECOMM=DISCONNECT

OK

参数定义:

举例:

AT+BLECOMM=DISCONNECT

OK

如果失败会返回:ERROR或+CME ERROR:<err>

蓝牙发现服务指令:AT+BLECOMM=FINDSERVICE

描述:

​ 此命令,用于发现蓝牙包含的服务

语法规则:

命令类型

语法

返回

设置命令

AT+BLECOMM=FINDSERVICE

OK

参数定义:

举例:

AT+BLECOMM=FINDSERVICE

OK

如果失败会返回:ERROR或+CME ERROR:<err>

服务uuid上报指令:+BLEIND=FINDSERVICE

描述:

​ 此命令,用于上报服务uuid

语法规则:

命令类型

语法

URC上报

+BLEIND=FINDSERVICE,<uuid_s>

参数定义:

参数

定义

取值

对取值的说明

<uuid_s>

服务uuid

十六进制字符串

————

举例:

+BLEIND=FINDSERVICE,fee0

蓝牙发现服务内特征指令:AT+BLECOMM=FINDCHARACTERISTIC

描述:

​ 此命令,用于发现蓝牙服务包含的特征

语法规则:

命令类型

语法

返回

设置命令

AT+BLECOMM=FINDCHARACTERISTIC, <uuid_s>

OK

参数定义:

参数

定义

取值

对取值的说明

<uuid_s>

服务uuid

十六进制字符串

————

举例:

AT+BLECOMM=FINDCHARACTERISTIC,fee0

OK

如果失败会返回:ERROR或+CME ERROR:<err>

特征uuid上报指令:+BLEIND=FINDCHARACTERISTIC

描述:

​ 此命令,用于上报服务包含的特征uuid

语法规则:

命令类型

语法

URC上报

+BLEIND=FINDCHARACTERISTIC,<uuid_c>

参数定义:

参数

定义

取值

对取值的说明

<uuid_c>

特征uuid

十六进制字符串

————

举例:

+BLEIND=FINDCHARACTERISTIC,fee1
+BLEIND=FINDCHARACTERISTIC,fee2

打开/关闭 通知指令:AT+BLECOMM=NOTIFICATION

描述:

​ 此命令,用于开关通知,有两个参数

语法规则:

命令类型

语法

返回

设置命令

AT+BLECOMM=NOTIFICATION, <uuid_c>,<state>

OK

参数定义:

参数

定义

取值

对取值的说明

<state>

关闭广播

0

数字

打开广播

1

数字

<uuid_c>

特征uuid

十六进制字符串

————

举例:

AT+BLECOMM= NOTIFICATION,fee2,1

OK

AT+BLECOMM= NOTIFICATION,fee2,0

OK

如果失败会返回:ERROR或+CME ERROR:<err>

发送数据指令:AT+BLECOMM=SENDATA

描述:

​ 此命令,用于发送数据

语法规则:

命令类型

语法

返回

设置命令

AT+BLECOMM=SENDDATA,<uuid_c>,<len>,<data>

OK

参数定义:

参数

定义

取值

对取值的说明

<uuid_c>

特征uuid

十六进制字符串

————

<len>

数据长度

数值

十六进制数据长度

<data>

数据内容,最长不能超过244字节

<str>

十六进制数字符串参数

举例:

AT+BLECOMM=SENDDATA,fee2,10,31323334353637383930
OK

如果失败会返回: + BLECOMM:ERR=error

数据上报指令:+BLEIND=DATA

描述:

​ 此命令,用于上报接收到的数据

语法规则:

命令类型

语法

URC上报

+BLEIND=DATA,<uuid_c>,<len>,<data>

参数定义:

参数

定义

取值

对取值的说明

<uuid_c>

特征uuid

十六进制字符串

————

<len>

数据长度

数值

十六进制数据长度

<data>

数据内容,最长不能超过244字节

<str>

十六进制数字符串参数

举例:

+BLEIND=DATA,fee1,10,31323334353637383930

蓝牙MAC地址读写指令:AT+BTMAC

描述:

​ 此命令,用于蓝牙MAC地址读写

语法规则:

命令类型

语法

返回

设置命令

AT+BTMAC=<address>

OK

查询命令

AT+BTMAC?

+BTMAC: <address> OK

参数定义:

参数

定义

取值

对取值的说明

<address>

设备蓝牙地址

字符串

设备地址(小端排序,共6个字 节),例如:40:45:DA:33:22:11

举例:

AT+BTMAC=40:45:DA:33:22:11

OK

AT+BTMAC?

+BTMAC:40:45:DA:33:22:11
OK

如果失败会返回:ERROR或+CME ERROR:<err>

蓝牙从模式测试/使用流程

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来的,如果字节修改了其他值则看到的不一样)

http://openluat-luatcommunity.oss-cn-hangzhou.aliyuncs.com/images/20200829200136854_寻找蓝牙.png

图(1).寻找蓝牙和功能点介绍

http://openluat-luatcommunity.oss-cn-hangzhou.aliyuncs.com/images/20200829200151237_广播数据.png

图(2).广播内容介绍

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 开发板使用说明

相关软件资料下载