一主多从蓝牙模组 AT 指令总集
本文系统介绍红旭无线一主多从的蓝牙模组 AT 指令,其中分蓝牙主机指令和蓝牙从机指令,主机和从机部分指令重复。蓝牙主机和从机的指令本文分开描述。
该 AT 命令透传固件有如下功能:
- BLE 串口透传,即 BLE 协议的数据转化为串口数据
- 在默认固件 1 对 50 多连的场景下,串口单次发包的最大有效载荷包限制为 120 字节;如果不需要 50 个多连并发,此限制可以根据具体的应用场景更改
- 设备硬件或者软件复位之后,会打印输出
Build Time:编译该固件的时间\r\n
,如:Build Time:22:44:06-Apr 26 2023\r\n
下述的所有 AT 指令,如果对端设备成功接收到,那么均会响应相对应的命令;同时,所有的指令以字符串的形式发送,同时都要加上
\r\n
串口的配置信息如下:
-
波特率:主机:
460800更新成 2000000 (2M)波特率。从机:115200。 -
校验位:None
-
数据位:8
-
停止位:1
-
流控制:无
-
TX: 模块的 IO 9
-
RX: 模块的 IO 10
蓝牙主机支持的 AT 指令
- AT
- AT+MAC
- AT+RESET
- AT+VERSION
- AT+FAC
- AT+START
- AT+LIST
- AT+TX
- AT+WHITE_BLACK_LIST
- AT+REMOVE
- AT+IO
- 从机上线和离线指示
AT
作用:
用于测试串口通讯是否正常
命令格式:
AT
返回的命令格式:
+OK
示例:
AT\r\n
+OK\r\n
AT+MAC
作用:
查询主从设备的 MAC 地址
命令格式:
AT+MAC=Parameter1
Parameter1 的含义如下所示:
- ?:查询设备的 MAC 地址信息
- 其他的值无效
返回的命令格式:
+MAC:Parameter1,Parameter2
Parameter1 的含义如下所示:
- 6 字节的 MAC 址
Parameter2 的含义如下所示:
- MAC 地址类型:
- 0x00:公有地址
- 0x01:随机地址
其他的返回值,参考错误码
示例:
AT+MAC=?\r\n
+MAC:0x123456789012,0x01\r\n
AT+RESET
作用:
对主或从设备进行软复位
命令格式:
AT+RESET=Parameter1
Parameter1 的含义如下所示:
- 1:软复位
- 其他值无效
返回的命令格式:
Build Time:编译该固件的时间\r\n
其他的返回值,参考错误码
示例:
AT+RESET=1\r\n
Build Time:22:44:06-Apr 26 2023\r\n
AT+VERSION
作用:
查询当前固件的版本号
命令格式:
AT+VERSION=Parameter1
Parameter1 的含义如下所示:
- ?:查询当前固件的版本号和其他相关信息
- 其他值目前无效。
返回的命令格式:
+VERSION:Parameter1
Parameter1 的含义如下所示:
- 返回的固件版本号
- 其他的返回值,参考错误码
示例:
AT+VERSION=?\r\n
+VERSION:S_V0.0.1\r\n
AT+FAC
作用:
恢复出厂设置并复位,仅对 Master 有效!!!
命令格式:
AT+FAC=Parameter1
Parameter1 的含义如下所示:
- 1:恢复出厂设置并复位
- 其他值目前无效
返回的命令格式:
Build Time:固件编译时间
其他的返回值,参考错误码
示例:
AT+FAC=1\r\n
Build Time:22:44:06-Apr 26 2023\r\n
AT+START
作用:
开始搜索周围红旭的广播设备并创建连接,默认 120 秒后会关闭该功能 (该命令仅对 Master 有效!!!)。
- 如果遇到掉线,但还没有达到最大的连接个数,会继续扫描并尝试与红旭的广播设备建立连接;
- 如果建立连接的个数已经达到上限了,则会自动停止扫描,再次发起该命令则会报错;
命令格式:
AT+START=Parameter1
Parameter1 的含义如下所示:
- 1:搜索周围的红旭广播设备并与其建立连接
- 0:停止搜索周边的广播设备
- ?:查询当前的状态
- 其他的值均无效
返回的命令格式:
+START:Parameter
Parameter 的含义如下所示:
- 0x01:处于搜索状态
- 0x00:处于停止状态 (默认的状态)
- OK:命令成功执行
- 其他的返回值,参考错误码
示例:
AT+START=1\r\n
+START:OK\r\n
AT+LIST
作用:
- 主机,查询当前所绑定(配对)的所有的从机信息
- 从机,查询当前所绑定(配对)的主机信息
命令格式:
AT+LIST=Parameter1
Parameter1 的含义如下所示:
- ?:查询当前所绑定(配对)的主、从机信息
- 其他值目前无效。
返回的命令格式:
+LIST:Parameter1,Parameter2,Parameter3,Parameter4
Parameter1 的含义如下所示:
- 返回主、从机的索引值
Parameter2 的含义如下所示:
- 返回主、从机的 MAC 地址,如果是主机,查到的结果是其绑定的从机的MAC地址。如果是从机,查到的是其绑定的主机的MAC地址。
Parameter3 的含义如下所示:
- 返回当前的连接句柄值,如果出现 0x0000 值,说明对应的从机还在白名单,只不过是主机复位重启了
Parameter4 的含义如下所示:
- 当前的设备是否在线
- 1,在线
- 0,离线
其他的返回值,参考错误码
示例:
AT+LIST=?\r\n
+LIST:0x00,0x565C3C39A0A0,0x0801,0x01\r\n
AT+TX
作用:
向指定的主或从设备透传数据
发送命令格式:
AT+TX=Parameter1,Parameter2,Parameter3
Parameter1 的含义如下:
- 00~59: 表示主或从设备的索引值,可以通过下述的AT+LIST获取主或从设备的索引值
Parameter2 的含义如下:
- 00:想要透传的是 16 进制数据类型
- 01:想要透传的是字符串数据类型
Parameter3 的含义如下:
- 想要透传的数据
返回的命令格式:
+TX:Parameter
Parameter 的含义如下所示:
- 0x00:发送成功
- 其他的返回值,参考错误码
接收命令格式:
如果收到对端设备发送的数据,那么则会以下述的方式携带数据:
+RX:Parameter1,Parameter2
Parameter1 的含义如下:
- 接收到的数据长度,16 进制表示
Parameter2 的含义如下:
- 携带的透传数据内容
示例:
发送方
AT+TX=01,00,1234567890\r\n
+TX:0x00\r\n
接收方
+RX:05,1234567890\r\n
其中,05表示接收的数据长度为 5 个字节
AT+WHITE_BLACK_LIST
作用:
查询黑或白名单列表中的内容 (该命令仅对 Master 有效!!!);
命令格式:
AT+WHITE_BLACK_LIST=Parameter1,Parameter2
Parameter1 的含义如下所示:
- 0: 黑名单
- 1: 白名单
- 其他值目前无效。
Parameter2 的含义如下所示:
- ?: 查询黑、白名单列表的内容
- 其他值目前无效。
返回的命令格式:
+WHITE_BLACK_LIST:索引值,对应的 MAC 地址
其他的返回值,参考错误码
示例:
AT+WHITE_BLACK_LIST=0,?\r\n
+WHITE_BLACK_LIST:0x00,0x123456789012\r\n
AT+REMOVE
作用:
从黑或白名单列表中移除指定的设备 (该命令仅对 Master 有效!!!);
注意:
- 如果是白名单列表中移除指定的设备,该命令断开对应的从机连接,并把对应的信息从白名单擦除,同时将该设备加入黑名单,整个过程不会很快(因为连接超时时间比较长);
- 如果是黑名单列表中移除指定的设备,该命令把对应的从机信息从黑名单中擦除,并立即生效;
命令格式:
AT+REMOVE=Parameter1,Parameter2
Parameter1 的含义如下所示:
- 00~49:分别对应的黑或白名单列表的索引值
- 其他值目前无效
Parameter2 的含义如下所示:
- 0: 黑名单
- 1: 白名单
- 其他值目前无效。
返回的命令格式:
+REMOVE:OK
其他的返回值,参考错误码
示例:
AT+REMOVE=00,1\r\n
+REMOVE:OK\r\n
AT+IO
作用:
配置模块的 IO0/1/2 的电平,默认均为高电平 (时间紧迫,目前该功能还未实现)
命令格式:
AT+IO=Parameter1,Parameter2
Parameter1 的含义如下所示:
- 0/1/2:分别对应模块的 IO0/1/2
- 其他值目前无效
Parameter2 的含义如下所示:
- 0: 低电平
- 1: 高电平
- 其他值目前无效。
返回的命令格式:
+IO:OK
其他的返回值,参考错误码
示例:
AT+IO=00,00\r\n
+IO:OK\r\n
主从设备离线在线提醒指令
作用:
主、从机在连上或者断开连接时会有上线和离线的提醒,该指令是蓝牙模组主动向 MCU 发送的。且该指令会有几秒的延迟。尤其是离线通知。在从机离线后,可能需要几秒才能发出 +LEAVE 指令。
- 上线,+ONLINE:对应设备的索引值,对应设备的 MAC 地址,连接句柄
- 离线,+LEAVE:对应设备的索引值,对应设备的 MAC 地址,连接句柄
蓝牙从机支持的 AT 指令
AT
作用:
用于测试串口通讯是否正常
命令格式:
AT
返回的命令格式:
+OK
示例:
AT\r\n
+OK\r\n
AT+MAC
作用:
查询主从设备的 MAC 地址
命令格式:
AT+MAC=Parameter1
Parameter1 的含义如下所示:
- ?:查询设备的 MAC 地址信息
- 其他的值无效
返回的命令格式:
+MAC:Parameter1,Parameter2
Parameter1 的含义如下所示:
- 6 字节的 MAC 址
Parameter2 的含义如下所示:
- MAC 地址类型:
- 0x00:公有地址
- 0x01:随机地址
其他的返回值,参考错误码
示例:
AT+MAC=?\r\n
+MAC:0x123456789012,0x01\r\n
AT+RESET
作用:
对主或从设备进行软复位
命令格式:
AT+RESET=Parameter1
Parameter1 的含义如下所示:
- 1:软复位
- 其他值无效
返回的命令格式:
Build Time:编译该固件的时间\r\n
其他的返回值,参考错误码
示例:
AT+RESET=1\r\n
Build Time:22:44:06-Apr 26 2023\r\n
AT+VERSION
作用:
查询当前固件的版本号
命令格式:
AT+VERSION=Parameter1
Parameter1 的含义如下所示:
- ?:查询当前固件的版本号和其他相关信息
- 其他值目前无效。
返回的命令格式:
+VERSION:Parameter1
Parameter1 的含义如下所示:
- 返回的固件版本号
- 其他的返回值,参考错误码
示例:
AT+VERSION=?\r\n
+VERSION:S_V0.0.1\r\n
AT+LIST
作用:
- 主机,查询当前所绑定(配对)的从机信息
- 从机,查询当前所绑定(配对)的主机信息
命令格式:
AT+LIST=Parameter1
Parameter1 的含义如下所示:
- ?:查询当前所绑定的主、从机信息
- 其他值目前无效。
返回的命令格式:
+LIST:Parameter1,Parameter2,Parameter3,Parameter4
Parameter1 的含义如下所示:
- 返回主、从机的索引值
Parameter2 的含义如下所示:
- 返回主、从机的 MAC 地址
Parameter3 的含义如下所示:
- 返回当前的连接句柄值,如果出现 0x0000 值,说明对应的从机还在白名单,只不过是主机复位重启了
Parameter4 的含义如下所示:
- 当前的设备是否在线
- 1,在线
- 0,离线
其他的返回值,参考错误码
示例:
AT+LIST=?\r\n
+LIST:0x00,0x565C3C39A0A0,0x0801,0x01\r\n
AT+TX
作用:
向指定的主或从设备透传数据
发送命令格式:
AT+TX=Parameter1,Parameter2,Parameter3
Parameter1 的含义如下:
- 00~59: 表示主或从设备的索引值,可以通过下述的AT+LIST获取主或从设备的索引值
Parameter2 的含义如下:
- 00:想要透传的是 16 进制数据类型
- 01:想要透传的是字符串数据类型
Parameter3 的含义如下:
- 想要透传的数据
返回的命令格式:
+TX:Parameter
Parameter 的含义如下所示:
- 0x00:发送成功
- 其他的返回值,参考错误码
接收命令格式:
如果收到对端设备发送的数据,那么则会以下述的方式携带数据:
+RX:Parameter1,Parameter2
Parameter1 的含义如下:
- 接收到的数据长度,16 进制表示
Parameter2 的含义如下:
- 携带的透传数据内容
示例:
发送方
AT+TX=01,00,1234567890\r\n
+TX:0x00\r\n
接收方
+RX:05,1234567890\r\n
其中,05表示接收的数据长度为 5 个字节
AT+DIRCON
作用:
用于开启或者解除或者查询定向连接功能,默认是不开启定向连接功能;(该命令仅对 Slave 有效!!!,目前该功能已关闭)
注意: 该命令不会立即生效,仅在下一次连接后生效;同时该命令仅在连接后调用方可有效,否则报错
解释: 所谓的定向连接,是该从机只能和特定的蓝牙主机连接,其他的蓝牙主机,无法连接该蓝牙从机。
命令格式:
AT+DIRCON=Parameter1
Parameter1 的含义如下所示:
- ?:查询是否开启了定向连接功能
- 0:解除定向连接功能
- 1:开启定向连接功能
- 其他的值无效
返回的命令格式:
+DIRCON:Parameter1
Parameter1 的含义如下所示:
- OK:表示开启或者解除定向连接功能成功
- 0x01:当前已开启定向连接功能
- 0x00:当前已关闭定向连接功能
- 其他的返回值,参考错误码
示例:
AT+DIRCON=1\r\n
+DIRCON:OK\r\n
AT+ERASE
作用:
擦除定向连接的相关信息,擦除成功后,定向连接的功能解除,此时可以让任何的主机与其建立连接 (该命令仅对 Slave 有效!!!,目前该功能已关闭)
命令格式:
AT+ERASE=Parameter1
Parameter1 的含义如下所示:
- 1:表示要擦除定向连接的相关信息
- 其他的值无效
返回的命令格式:
+ERASE:OK
其他的返回值,参考错误码
示例:
AT+ERASE=1\r\n
+ERASE:OK\r\n
主从设备离线在线提醒指令
作用:
主、从机在连上或者断开连接时会有上线和离线的提醒,该指令是蓝牙模组主动向 MCU 发送的。且该指令会有几秒的延迟。尤其是离线通知。在从机离线后,可能需要几秒才能发出 +LEAVE 指令。
- 上线,+ONLINE:对应设备的索引值,对应设备的 MAC 地址,连接句柄
- 离线,+LEAVE:对应设备的索引值,对应设备的 MAC 地址,连接句柄
操作演示
操作演示 见文档 蓝牙模组 HX-B1-M1 使用演示 文档
错误码(适用于主机和从机)
上述所有 AT 指令的错误值返回的格式如下:
+ERR:错误码
其中,各个错误码表达的含义如下所示:
- 0xED:黑名单列表已满
- 0xEE:黑或白名单的内容正在移除中
- 0xEF:指定的设备不存在
- 0xF0:指定的设备已在黑名单中
- 0xF1:数据类型无效
- 0xF2:黑或白名单的内容为空
- 0xF3:黑或白名单的内容已经移除
- 0xF4:定向连接已经除能
- 0xF5:定向连接已经使能
- 0xF6:当前的状态调用该命令无效
- 0xF7:连接句柄无效
- 0xF8:需要的发送据包长度超过固件支持的长度
- 0xF9:无效的索引值
- 0xFA:AT 命令中找不到等号
- 0xFB:AT 命令列表不存在该 AT 命令
- 0xFC:内存分配失败
- 0xFD:传入的实参为空
- 0xFE:该命令所携带的参数无效
- 0xFF:该命令此时无效
名词和特殊符号解释
1:回车换行符
\r\n
上文中提及的\r\n 都是回车换行符,\r 对应的 HEX 的值是 0x0D,\n 对应的 HEX 的值是 0x0A。