这篇文章主要介绍了如何使用TB系列模块的AT固件,实现模块与手机通信,模块与模块通信,蓝牙广播包扫描以及iBeacon应用等。
关键字:低功耗蓝牙、BLE、AT固件
序号 | 指令 | 功能 | 备注 |
---|---|---|---|
1 | AT | 测试AT | |
2 | ATE | 开关回显 | |
3 | AT+GMR | 查询固件版本 | |
4 | AT+RST | 重启模组 | |
5 | AT+SLEEP | 深度睡眠 | |
6 | AT+ RESTORE | 恢复出厂设置 | 恢复后将重启 |
7 | AT+BAUD | 查询或设置波特率 | 重启后生效 |
8 | AT+NAME | 查询或设置蓝牙广播名称 | 重启后生效 |
9 | AT+MAC | 设置或查询模组MAC地址 | 重启后生效 |
10 | AT+MODE | 查询或者是主从模式 | |
11 | AT+STATE | 查询蓝牙连接状态 | |
12 | AT+SCAN | 主机模式下发起扫描 | |
13 | AT+CONNECT | 主机模式下发起连接 | |
14 | AT+DISCON | 断开连接 | |
15 | AT+SEND | AT模式下发送数据 | |
16 | +DATA | AT模式下收到数据 | |
17 | AT+ADVDATA | 设置广播数据中的厂商自定义字段内容 | |
18 | AT+LSLEEP | 设置或进入轻度睡眠 | |
19 | AT+RFPWR | 设置或读取发射功率 | |
20 | AT+IBCNUUID | 设置或读取iBeacon UUID | |
21 | AT+MAJOR | 设置或读取iBeacon Major | |
22 | AT+MINOR | 设置或读取iBeacon Minor |
所有AT指令都要以\r\n
结尾,AT 指令又可以细分为四种格式类型:
类型 | 指令格式 | 描述 | 备注 |
---|---|---|---|
查询指令 | AT+? | 查询命令中的当前值。 | |
设置指令 | AT+=<…> | 设置用户自定义的参数值。 | |
执行指令 | AT+ | 执行某些参数不可变的功能。 | |
测试指令 | AT+=? | 返回指令帮助信息 |
备注 :
- 并非所有指令都有这四种类型的命令。
- 指令必须⼤大写,并且以回⻋车换⾏符结尾(CR LF)。
- 所有指令返回以回车换⾏符开始(CR LF)。
- 所有指令返回每行都以回车换⾏符结尾(CR LF)。
指令示例:
字符串 | HEX | |
---|---|---|
指令 | AT\r\n | 41 54 0D 0A |
返回 | \r\nOK\r\n | 0D 0A 4F 4B 0D 0A |
字符串 | HEX | |
---|---|---|
指令 | AT+NAME?\r\n | 41 54 2B 4E 41 4D 45 3F 0D 0A 0D 0A |
返回 | \r\n+NAME:myname\r\nOK\r\n | 0D 0A 2B 4E 41 4D 45 3A 6D 79 6E 61 6D 65 0D 0A 4F 4B 0D 0A |
AT --指令测试
AT
OK
ATE --开关回显
关闭回显:ATE0
响应 :OK
打开回显:ATE
响应 :OK
备注:参数将会保存到芯片内,下次上电无需设置
AT+GMR – 查询固件版本
执行指令: AT+GMR
响应: +VERSION:
OK
AT+RST --重启模组
执行指令:AT+RST
响应:OK
AT+RESTORE --恢复出厂设置
执行指令: AT+RESTORE
响应 :OK
出厂设置默认参数如下:
NAME :Ai-Thinker
ATE : 0
Baud :115200
备注 恢复出厂时之后模组将重启
AT+SLEEP --深度睡眠
执行指令:AT+SLEEP
响应 :OK
说明 :进入深度睡眠模式后会将模块RX设为唤醒引脚,UART发送任意数据即可唤醒模块
备注 :进入深度睡眠模式后模组将不能收发数据
AT+BAUD --串口波特率
查询指令:AT+BAUD?
响应 :+BAUD :<…>
OK
设置指令:AT+BAUD=<…>
响应: OK
参数说明
波特率与数值对应关系如下表:
0=2400
1=4800
2=9600
3=19200
4=38400
5=57600
6=115200
7=230400
8=460800
9=921600
示例: 将波特率设为9600,AT+BAUD=2
备注 :更改波特率需重启后才能生效,默认波特率115200
AT+NAME --蓝牙设备名称
查询指令:AT+NAME?
响应: +NAME :<…>
OK
设置指令:AT+NAME=<…>
响应: OK
参数说明:蓝牙设备名为UTF-8编码格式,可以是中文,英文及其他语言或符号
示例 :AT+NAME? AT+NAME=abc123
备注 :更改蓝牙设备名称需重启后才能生效
AT+MAC --蓝牙MAC地址
指令 查询指令:AT+MAC?
响应: +MAC :<…>
OK
设置指令:AT+MAC=<…>
响应:OK
参数说明:参数ASCII字符形式16进制数据,长度为12字节。
示例 :AT+MAC? AT+MAC=AB5F8D9EBB01
备注 :更改蓝牙MAC地址重启后才能生效,字母需大写
AT+MODE --设置主从模式
查询指令:AT+MODE?
响应: +MODE:
OK
设置指令:AT+MODE=
响应:OK
参数说明:0 从机模式,1 主机模式,2 iBeacon模式
示例:AT+MODE=1
备注:出厂默认为从机模式
AT+STATE --查询连接状态
查询指令:AT+STATE?
响应 :+STATE:<0/1>
OK
参数说明:0 表示蓝牙未连接, 1 表示蓝牙已连接
AT+SCAN --主机模式下发起扫描
执行指令:AT+SCAN
响应:+ADV:,,
+ADV:,,
+ADV:,,
... ...
+ADV:,,
OK
备注:只有在主机模式下才能发起扫描
AT+CONNECT --主机模式下发起连接
连接指令:AT+CONNECT=
响应:
示例:AT+CONNECT=A04C185968D2
AT+DISCON --断开连接
指令指令:AT+DISCON
响应:OK
AT+SEND --向手机发送数据
指令: AT+SEND=,
响应 :OK 发送成功
:ERROR(2) 参数错误或蓝牙未连接
参数说明 :
len:要发送的数据长度,单位为字节
data:要发送的数据内容,长度应与len一致
示例:
AT+SEND=5,12356
AT+SEND=15,123561235612356
AT+SEND=5,<0x11><0xaa><0xff><0x55><0x89>
备注 :该指令仍要以\r\n结尾,data中的数据可以是任何二进制数据
该指令只在AT模式下有效,透传模式下无需使用该指令
+DATA –收到手机打来的数据
指令 :+DATA=,
参数说明:
len: 收到的数据长度,单位为字节
data:收到的数据内容,长度应与len一致
示例 +DATA=5,12356
+DATA=15,123561235612356
+DATA=5,<0x11><0xaa><0xff><0x55><0x89>
备注:该指令仍以\r\n结尾,data中的数据可以是任何二进制数据
该指令只在AT模式下有效,透传模式下会直接收到原始data数据
AT+ADVDATA --设置广播数据中的厂商自定义字段内容
设置指令:AT+ADVDATA=
响应:OK
查询指令:AT+ADVDATA?
响应:+ADVDATA:
OK
示例:AT+ADVDATA=123456
AT+LSLEEP --设置或进入轻度睡眠
执行指令:AT+LSLEEP
响应:OK
说明:模块将立即进入轻睡眠模式
设置指令:AT+LSLEEP=<0/1>
响应:OK
说明:设置模块是否自动进入轻度睡眠模式,0不自动,1自动
查询指令:AT+LSLEEP?
响应:+LSLEEP:<0/1>
AT+RFPWR --设置或读取发射功率
设置指令:AT+RFPWR=<0~9>
响应:OK
查询指令:AT+RFPWR?
响应:+RFPWR:<0~9>
OK
AT+IBCNUUID --设置或读取iBeacon UUID
设置指令:AT+IBCNUUID=
返回:OK
查询指令:AT+IBCNUUID?
返回:+IBCNUUID:
OK
示例:AT+IBCNUUID=12345678901234567890123456ABCDEF
备注:UUID长度为16字节,这里使用的是16进制ASCII码,共32字节
AT+MAJOR --设置或读取iBeacon Major
设置指令:AT+MAJOR =
返回:OK
查询指令:AT+MAJOR ?
返回:+MAJOR :
OK
示例:AT+MAJOR =890F
备注:Major长度为2字节,这里使用的是16进制ASCII码,共4字节
AT+MINOR --设置或读取iBeacon Minor
设置指令:AT+MINOR =
返回:OK
查询指令:AT+MINOR ?
返回:+MINOR :
OK
示例:AT+MINOR =23C4
备注:Minor长度为2字节,这里使用的是16进制ASCII码,共4字节
将设备设为从机模式(出厂默认即为从机模式):
AT+MODE=0
手机下载安装BLE Utility APP,并且打开手机的蓝牙功能
搜索设备名称为Ai-Thinker的设备,点击连接。如下图所示,连接成功后将进入蓝牙服务页面,点击最后一个UnknownService,然后点击UnknownCharacteristic右边的箭头和铃铛,指定发送数据点和开启Notify。
点击屏幕右上角的三个点符号,可弹出修改MTU窗口。模块支持的MTU范围为23-250,默认MTU为23。
点击手机屏幕上的实时日志按钮(上右图),在输入框中输入123456abc,点击发送,电脑上的串口工具将收到并输出123456abc
在串口工具中输入ABCD5678,点击发送,手机上也将会收到同样的数据。
在主机模式下,模块可与另一个从机模块通信,主要操作如下:
将其中一个模块配置为主机模式:
AT+MODE=1
主机模块扫描周围的模块:
AT+SCAN
主机模块连接指定的从机模块:
AT+CONNECT=AC04187852AD
注意将上面的MAC地址换成你的从机模块的MAC地址
返回```OK``表示连接成功,采用如下指令发数据到从机:
AT+SEND=5,12345
备注:主机状态下只有AT指令模式,没有透传模式。
该AT固件支持两种睡眠模式,即深度睡眠
和浅睡眠
,在深度睡眠模式下,模块除GPIO唤醒功能外,其他功能全部关闭,功耗在1uA一下。浅睡眠模式除了保留GPIO唤醒外,还保持蓝牙的功能,功耗以广播参数而定,平均约10uA以下。
进入深度睡眠模式:
AT+SLEEP
执行上诉指令模块返回OK后将将立即进入睡眠模式,并将串口RX设为唤醒引脚,再次向模块发送任意字符即可唤醒。
浅睡眠设置:
在未连接状态下,发送如下指令,模块将进入浅睡眠模式:
AT+LSLEEP
在浅睡眠模式下,模块依然会进行蓝牙广播。浅睡眠模式不再响应任何AT指令,可通过串口RX引脚发送任何数据唤醒模块。
当有别的蓝牙设备与该模块连接成功时,也会唤醒模块。
上电自动进入浅睡眠模式:
AT+LSLEEP=1
上电不自动进入浅睡眠模式;
AT+LSLEEP=0
备注:浅睡眠模式在对从机状态下起作用。
iBeacon是苹果公司定义的一套特殊的广播格式,主要用于室内定位。
这个iBeacon广播包共30字节,数据格式如下:
02 # 第一个AD structure 的字节数(接下来的字节数,这里是2个byte)
01 # AD type 的标志
1A # 标志的值 0x1A = 000011010
bit 0 (OFF) LE Limited Discoverable Mode
bit 1 (ON) LE General Discoverable Mode
bit 2 (OFF) BR/EDR Not Supported
bit 3 (ON) Simultaneous LE and BR/EDR to Same Device Capable (controller)
bit 4 (ON) Simultaneous LE and BR/EDR to Same Device Capable (Host)
1A # 第二个AD structure的字节数 (接下来的字节数,这里是26个)
FF # AD type 的标志,这里Manufacturer specific data.更多的标志可以到BLE的官网找到:例如0x16 表示servicedata
4C 00 # 公司的标志 (0x004C == Apple)
02 # Byte 0 of iBeacon advertisement indicator
15 # Byte 1 of iBeacon advertisement indicator
B9 40 7F 30 F5 F8 46 6E AF F9 25 55 6B 57 FE 6D # iBeacon proximity uuid
00 01# major
00 01 # minor
c5 # calibrated Tx Power
TB系列模块支持发送iBeacon广播,在iBeacon 模式下,模块可按照iBeacon格式发送广播,主要操作如下:
将模块配置为iBeacon模式:
AT+MODE=2
设置iBeacon的UUID(16进制格式,共16字节):
AT+IBCNUUID=11223344556677889900AABBCCDDEEFF
设置iBeacon的MAJOR(16进制格式,共2字节):
AT+MAJOR=1234
设置iBeacon的MINOR(16进制格式,共2字节):
AT+MINOR=4567
备注:以上指令均重启后生效,掉电保存。配合设置广播间隙,自动轻度睡眠,可降低iBeacon功耗。