FSC-BT986_HC05 指令手册
介绍
描述
本设计指南适用于工程师开发 FSC-BT986_HC05 系列蓝牙模组,同样也适合BT982、BT981系列模组
模组默认配置
Name |
FSC-HC05 |
LE-Name |
FSC-HC05-LE |
Pin Code |
1234 |
Secure Simple Pairing Mode |
On |
UART Baudrate |
9600/8/N/1 |
硬件说明
引脚图
以FSC-BT986为例:

引脚描述
Pin |
Pin Name |
Type |
Pin Descriptions |
---|---|---|---|
1 |
UART_TX |
O |
串口数据脚 |
2 |
UART_RX |
I |
串口数据脚 |
3 |
UART_CTS |
I/O |
串口流控脚/不需要连接 |
4 |
UART_RTS |
I/O |
串口流控脚/不需要连接 |
9 |
Disc/USB_DM/PIO0 |
I/O |
断开连接脚 |
11 |
RESET |
I |
低电平复位 |
12 |
VDD |
Power |
3.3V供电,建议使用LDO供电 |
13 |
GND |
GND |
GND |
15 |
ICE |
I/O |
烧录脚 |
32 |
LED |
O |
蓝牙未连接输出方波,蓝牙连接输出高电平 |
33 |
STATUS |
O |
蓝牙未连接输出低电平,蓝牙连接输出高电平 |
34 |
Tran/USB_DP/PIO1 |
I/O |
UART模式控制脚 H = 指令模式 L = 透传模式 |
36 |
EXT_ANT |
ANT |
改变天线附近的0欧电阻,可以外接蓝牙天线 |
硬件设计说明
模组只需要连接VDD/GND/UART_RX/UART_TX即可使用
如果MCU需要获取蓝牙模组的连接状态,需要接STATUS引脚
画完原理图后请发给飞易通进行审核,避免蓝牙距离达不到最佳效果
功能说明
GPIO指示
连接状态引脚 PIN 24
状态 |
描述 |
---|---|
低电平 |
透传模式 |
高电平 |
指令模式 |
连接状态引脚 PIN 23
状态 |
描述 |
---|---|
低电平 |
/ |
高电平 |
断开连接 |
LED引脚 PIN 32
状态 |
描述 |
---|---|
1Hz方波 |
蓝牙未连接 |
高电平 |
蓝牙连接 |
连接状态引脚 PIN 33
状态 |
描述 |
---|---|
低电平 |
蓝牙未连接 |
高电平 |
蓝牙连接 |
工作模式
透传模式 |
蓝牙未连接,串口收到的数据按照AT指令进行解析;蓝牙连接后串口收到的数据全
部原样发送到远端蓝牙。
|
指令模式 |
蓝牙未连接,串口收到的数据按照AT指令进行解析;蓝牙连接后串口收到的数据仍
然按照AT指令进行解析。需要发送数据到远端的时候,发送AT+SPPSEND指令。
|
AT指令说明
规范说明
适用于整个文档
{} : 包括与{…}中的内容为可选项
<< : 主机发给模组的 COMMAND
>> : 模组回复主机的 RESPONSE
指令
指令格式
所有的指令使用 AT 开头,使用 <CR><LF> 结尾
<CR> 代表回车符,对应 HEX 为 0x0D
<LF> 代表换行符,对应 HEX 为 0x0A
若指令包含参数,参数应使用 = 分隔
若指令包含多项参数,参数应使用 , 分隔
若指令有响应返回,响应使用 <CR><LF> 开始,使用 <CR><LF> 结束
模组应当总是返回指令执行的结果 (成功返回 OK,失败时返回 ERROR)
通知
通知格式
所有的通知使用<CR><LF>开始, 使用<CR><LF>结束
若通知包含参数, 参数应位于 “=” 后面
若通知包含多项参数, 参数应使用 “,” 分割
指令表
通用指令
AT - 串口通信测试
Command |
AT |
Response |
OK |
Description |
当上电或更改波特率时,测试主机和模块之间的UART通讯 |
AT+REBOOT - 软件复位
Command |
AT+REBOOT |
Response |
OK |
Description |
模块将复位 |
AT+RESTORE - 恢复出厂设置
Command |
AT+RESTORE |
Response |
OK |
Description |
模块将恢复为出厂设置 |
AT+NAME - 读/写BR/EDR蓝牙名称
Command |
AT+NAME{=Param1{,Param2}} |
|
BR/EDR蓝牙名称(1~31 Bytes ASCII) |
|
使能MAC地址后缀(0~2,default:0)
0: 关闭后缀
1: 开启后缀“-XXXX”(MAC地址后4Byte)
2: 开启后缀“-XXXX”(MAC地址后6Byte)
|
Response |
+NAME:Param |
|
蓝牙名称 |
Description |
如果存在参数则设置蓝牙名称,否则只是读取 |
AT+RNAME - 获取远程蓝牙设备名称
Command |
AT+RNAME {=Param} |
|
远程蓝牙设备的地址 |
Response |
+RNAME:Param |
|
远程蓝牙设备名称 |
Description |
通过远程蓝牙设备地址获取远程蓝牙设备名称 |
AT+ROLE - 查询/设置模块角色
Command |
AT+ROLE=<Param> |
|
设置模块角色
0: 从角色(Slave)默认
1: 主角色(Master)
2: 回环角色(Slave-Loop)
|
Response |
ROLE:Param |
|
查询模块角色 |
Description |
Slave(从角色):被动连接;
Slave-Loop(回环角色):被动连接,接收远程蓝牙主设备数据并将数据原样
返回给远程蓝牙主设备;
Master(主角色):查询周围 SPP 蓝牙从设备,并主动发起连接,从而建立
主、从蓝牙设备间的透明数据传输通道。
|
AT+IAC - 设置/查询访问码
Command |
AT+IAC=<Param> |
|
访问码 |
Response |
IAC:Param |
|
查询访问码 |
Description |
访问码设置为 GIAC(General Inquire Access Code:0x9e8b33)通用查询访问码,可用来
现或被发现周围所有的蓝牙设备;为了能有效地在周围诸多蓝牙设备中快速查询或被查询
自定义蓝牙设备,用户可以将模块查询访问码设置成 GIAC 和 LIAC 以外的数字,如:9e8b3f
|
AT+INQM - 设置/查询访问模式
Command |
AT+INQM=<Param>,<Param2>,<Param3> |
|
0: 标准查询模式
1: 带RSSI信号强度指示查询模式
|
|
最多蓝牙设备响应数 |
|
最大查询超时超时范围: 1~48(折合成时间:1.28秒~61.44秒)默认值:1,1,48 |
Response |
INQM:Param,Param2,Param3 |
|
0: 标准查询模式
1: 带RSSI信号强度指示查询模式
|
|
最多蓝牙设备响应数 |
|
最大查询超时超时范围:1~48(折合成时间:1.28秒~61.44秒)默认值:1,1,48 |
Description |
如果存在参数则设置蓝牙访问模式,否则只是读取 |
AT+CMODE - 查询/设置连接模式
Command |
AT+CMODE=<Param> |
|
连接模式,默认:1
0: 指定蓝牙地址连接模式(指定蓝牙地址由绑定指令设置)
1: 任意蓝牙地址连接模式(不受绑定指令设置地址的约束)
2: 回环角色(Slave-Loop)
|
Response |
+CMODE:Param |
|
连接模式 |
AT+BIND - 查询/设置绑定蓝牙地址
Command |
AT+BIND=<Param> |
|
绑定蓝牙地址(默认:00:00:00:00:00:00) |
Response |
+BIND:Param |
|
蓝牙地址 |
Description |
蓝牙地址表示方法:NAP:UAP:LAP(十六进制)绑定指令只有在指定蓝牙地址里那句模式有效 |
AT+POLAR- 查询/设置LED指示驱动及连接状态输出极性
Command |
AT+POLAR=<Param1>,<Param2> |
|
0: 输出低电平点亮LED
1:输出高电平点亮LED
|
|
0:出低电平指示连接成功
1:输出高电平指示连接成功
|
Response |
+POLAR=Param1,Parm2 |
|
LED状态 |
AT+PIO - 设置PIO单端口输出
Command |
AT+PIO=<Param1>,<Param2> |
|
PIO端口序号(十进制) |
|
PIO端口输出状态 |
Response |
OK |
Description |
PI02~PI07,用户可用来扩展输入、输出端口。 |
AT+MPIO - 设置 PIO 多端口输出
Command |
AT+MPIO=<Param> |
|
PIO 端口序号掩码组合(十进制数) |
Response |
OK |
Description |
PI00~PI07和 PI010,用户可用来扩展输入、输出端口。
PIO端口序号掩码=(1<<端口序号)
PIO端口序号掩码组合=(PIO端口序号掩码 1.PIO端口序号掩码 2 ……)
|
AT+IPSCAN - 设置/查询—寻呼扫描、查询扫描参数
Command |
AT+PIO=<Param1>,<Param2>,<Param3>,<Param4> |
|
查询时间间隔 |
|
查询持续时间 |
|
寻呼时间间隔 |
|
寻呼持续时间 |
Response |
AT+PIO:<Param1>,<Param2>,<Param3>,<Param4> |
Description |
上述参数均为十进制数。默认值:1024,512,1024,512 |
AT+SNIFF - 设置/查询—SHIFF节能参数
Command |
AT+SNIFF=<Param1>,<Param2>,<Param3>,<Param4> |
|
最大时间 |
|
最小时间 |
|
尝试时间 |
|
超时时间 |
Response |
A+SNIFF: <Param1> , <Param2> ,<Param3>,<Param4> |
Description |
上述参数均为十进制数。默认值:0,0,0,0 |
AT+SENM - 设置/查询安全、加密模式
Command |
AT+SENM=<Param>,<Param2>, |
|
0——sec_mode0+off
1——sec_mode1+non_secure
2——sec_mode2_service
3——sec_mode3_link
4——sec_mode_unknown
|
|
0——hci_enc_mode_off
1——hci_enc_mode_pt_to_pt
2——hci_enc_mode_pt_to_pt_and_bcast
默认值:0,0
|
Response |
A+ SENM:<Param>,<Param2>, |
AT+RMSAD - 从蓝牙配对列表中删除所有认证设备
Command |
AT+RMSAD=<Param> |
|
蓝牙设备地址 |
Response |
OK or FAIL |
AT+FSAD - 从蓝牙配对列表中查找指定认证设备
Command |
AT+FSAD=<Param> |
Response |
OK or FAIL |
AT+LINK - 连接设备
Command |
AT+LINK=<Param> |
|
远程设备蓝牙地址 |
Response |
OK or FAIL |
AT+ENSNIFF - 进入节能模式
Command |
AT+ENSNIFF=<Param> |
|
设备蓝牙地址 |
Response |
OK |
AT+EXSNIFF - 退出节能模式
Command |
AT+EXSNIFF=<Param> |
|
设备蓝牙地址 |
Response |
OK |
AT+MRADK - 获取最近使用过的蓝牙认证设备地址
Command |
AT+MRAD |
|
最近使用过的蓝牙设备地址 |
Response |
+MRAD:<Param> OK |
AT+STATE - 获取蓝牙模块工作状态
Command |
AT+STATE |
|
“INITIALIZED” ——初始化状态
“READY” ——准备状态
“PAIRABLE” ——可配对状态
“PAIRED” ——配对状态
“INQUIRING” ——查询状态
“CONNECTING” ——正在连接状态
“CONNECTED” ——连接状态
“DISCONNECTED” ——断开状态
“NUKNOW” ——未知状态
|
Response |
+ STATE:<Param> |
|
蓝牙工作状态 |
AT+INIT - 初始化 SPP规范库
Command |
AT+INIT |
Response |
OK |
AT+INQC - 取消查询蓝牙设备
Command |
AT+INQC |
Response |
OK |
AT+INQ - 查询蓝牙设备
Command |
AT+INQ |
Response |
**+INQ:<Param1> , <Param2> , <Param3> ** |
|
蓝牙地址 |
|
设备类型 |
|
RSSI信号强度 |
AT+PAIR - 设备配对
Command |
AT+PAIR=<Param1> , <Param2> |
|
远程设备蓝牙地址 |
|
连接超时(秒) |
Response |
OK or FAIL |
AT+RESET - 模块复位(重启):
Command |
AT+RESET |
Response |
OK |
AT+ORGL - 恢复默认状态:
Command |
AT+ORGL |
Response |
OK |
Description |
模块将恢复出厂设置并重启 |
AT+FSAD - 从蓝牙配对列表中查找指定认证设备
Command |
AT |
Response |
OK or FAIL |
AT+PSWD - 读/写配对密码
Command |
AT+PIN{=Param} |
|
配对密码(4~15 Bytes ASCII, default:0000) |
Response |
+PIN:Param |
Description |
当+SSP=0时,配对密码有效 |
AT+PLIST - 读取/清除配对记录
Command |
AT+PLIST{=Param} |
|
(0 / 1~8)
(0) 清除所有配对记录
(1~8) 清除指定索引的配对记录
|
Response1 |
+PLIST:Param1, Param2 |
|
(1~8) 配对设备序号 |
|
(MAC)配对设备的MAC地址 |
Response2 |
+PLIST= 配对记录查询完成 |
AT+VERSION - 读取固件版本
Command |
AT+VER |
Response |
+VER=Param |
|
固件版本 |
Description |
读取版本号 |
AT+ADDR - 读BR/EDR蓝牙MAC地址
Command |
AT+ADDR |
Response |
+ADDR:Param |
|
模块的BR/EDR蓝牙MAC地址(12 Bytes ASCII) |
AT+CLASS: 读/写设备类型
Command |
AT+CLASS=Param |
|
设备类型(6 bytes ASCII, default:240404 Handsfree device) |
Response |
+CLASS:Param |
Description |
为了能有效地对诸多蓝牙设备实现过滤,快速查询自定义蓝牙设备,
用户可以将模块设置为非标准蓝牙设备类,如:0x1f1f(十六进制类)
|
相关配置参考 COD.
AT+SSP - 读/写BR/EDR配对模式
Command |
AT+SSP{=Param} |
|
PROFILE mode (0~1, default:0)
0: 关闭SSP
1: 开启SSP
|
Response |
+SSP:Param |
Note |
重启生效 |
AT+MODE - 读/写蓝牙PROFILE
Command |
AT+MODE{=Param} |
|
Pairing mode (0~4, default:0)
(0) NONE PROFILE
(1) SPP PROFILE
(2) HID PROFILE
(3) BLE PROFILE
(4) ALL PROFILE
|
Response |
+SSP:Param |
AT+PIOCFG - 开启/关闭IO口控制模块
Command |
AT+PIOCFG{=Param,Param1} |
|
0: 禁用命令/传输模式切换功能
1: 启用命令/传输模式切换功能
|
|
0: 禁用蓝牙断开功能
1: 启用蓝牙断开功能
|
Response |
+PIOCFG:Param |
Description |
AT+PIOCFG=1打开串口流控制,将PIN34接出给高电平进入指令模式。 |
AT+DISC - 断开所有连接
Command |
AT+DSCA |
Response |
+DISC:SUCCESS——断开连接成功
+DISC:LINK_LOSS——连接丢失
+DISC:NO_SLC——没有 SLC连接
+DISC:TIMEOUT——断开超时
+DISC:ERROR——断开错误
|
AT+SECURITY - 打开/关闭安全验证
Command |
AT+SECURITY{=Param1} |
|
模式(0~1,默认0) | 0: 未开启安全验证 | 1: 开启安全验证 |
Response |
+SECURITY:Param |
Description |
打开/关闭串口流控 |
AT+TXPOWER - 读/写发射功率
Command |
AT+TXPOWER{=Param} |
|
发射功率(0~2) | 0: 0db | 1: 3db | 2: 5db |
Response |
+TXPOWER:Param |
|
发射功率 |
Description |
修改发射功率 |
AT+UART - 读/写串口配置
Command |
AT+UART{=Param} |
|
配置 (0~5)
bit0:
0 - 1位停止位2
1 - 2位停止位1
bit2~bit1:
00 - None
01 - Odd
10 - Even
|
Response |
+UART=Param |
|
配置 (0~5) |
Description |
修改串口配置(停止位和校验位) |
应用场景
查询/修改模组默认参数
模组在蓝牙没有连接的状态下,会将串口数据按照AT指令解析。 主机可以对模组的默认参数进行查询和修改,下图展示了:
修改设备名为 ABC
查询设备名
查询蓝牙地址
发送数据的流程
模组上电默认处于可被发现(可见)的状态,并且设置模组为需要配对的状态,远端蓝牙(手机)能够找到并连接它, 并向模组发起连接请求。连接成功后模组会拉高连接状态脚通知主机蓝牙连接成功。 主机可以通过蓝牙模组将数据发送给远端蓝牙,远端蓝牙也可以把数据发送给主机。
FAQ
IOS 手机如何获取蓝牙MAC地址?
IOS系统出于安全考虑,在底层将蓝牙MAC地址变成了UUID发送给上层应用。所以APP无法获取到设备的MAC地址。
FSC-BT986_HC05 默认会将MAC地址放在广播中,APP可以通过下面的方法从广播包中获取MAC地址。
- (void)centralManager:(CBCentralManager *)central didDiscoverPeripheral:(CBPeripheral *)peripheral advertisementData:(NSDictionary *)advertisementData RSSI:(NSNumber *)RSSI { if(![self describeDictonary:advertisementData]) { NSLog(@"is not fsc module"); return; } } - (Boolean)describeDictonary: (NSDictionary *) dict { NSArray *keys; id key; keys = [dict allKeys]; for(int i = 0; i < [keys count]; i++) { key = [keys objectAtIndex:i]; if([key isEqualToString:@"kCBAdvDataManufacturerData"]) { NSData *tempValue = [dict objectForKey:key]; const Byte *tempByte = [tempValue bytes]; if([tempValue length] == 6) { // tempByte 后面参数是蓝牙地址 return true } }else if([key isEqualToString:@"kCBAdvDataLocalName"]) { //there is name //NSString *szName = [dict objectForKey: key]; } } return false; }