目录
ALPHA CC2541 蓝牙4.0 BLE模块
ALPHA CC2541是一款蓝牙4.0 BLE模块,默认状态为从机透传,可以非常方便的与手机相连。
什么是BLE
从蓝牙4.0 开始有两个分支,经典4.0和BLE4.0,经典4.0 就是传统的3.0蓝牙升级而成,向下兼容。而BLE 4.0 是一个新的分支,不向下兼容。BLE 是低功耗蓝牙的缩写,顾名思义,其功耗较低。
哪些设备支持BLE
- iOS 平台:Iphone4s或者更高型号, Ipad 3或者更高型号等都支持BLE,无须做MFI认证。
- Android平台: 安卓平台比较混乱,一般而言默认安装Android 4.3或更高系统的手机都是BLE。
为什么在系统蓝牙界面下找不到BLE 设备
手机蓝牙默认工作在经典模式下,您需要通过程序来实现搜索,配对连接和通迅的整个过程。
- IOS系统:请从苹果商店下载LightBlue。
- Android:从市场搜索“BLE 串口”关键字,会搜到呼入BLE蓝牙串口,BLE调试工具等等工具。
BLE 的传输速度
BLE 的物理带宽只有1M,实际传输速度在1~6KB 之间。具体需要根据你使用的环境和项目进行验证,如果有可能,请尽可能的用高一点的波特率,会获得较好的通讯效果。
收发字节限制问题
我们的BLE模块,通过串口接收和发送无字节限制。
- 在iOS 系统下,与模块通讯时,目前iOS 系统最大可以支持90 字节的发送量,但是研究发现,iOS 内部是分包的,并且分包效率不高,因此请您将超过20 个字节的数据进行分包发送。
- 在Android 系统下,与模块通讯时,每次发送给模块的字节不能超过20字节,如果要发送超过20字节的数据,请分包发送。
使用BLE模块需要注意的问题
BLE 不是设计为传输大量数据的,但是其有距离远(100英尺/60 米),功耗低(休眠模式下9~800uA)等优势,请根据您的项目需求进行选型。
AT指令集
使用 AT 指令的时机?
当模块不处于休眠模式,没有建立蓝牙连接的情况下,可以通过串口使用 AT 指令.当模块建立了蓝牙连接的时候,如果配置了 AT+MODE1 或者AT+MODE2 的话,可以通过远端蓝牙收发 AT 指令.
1.测试或断开连接指令
指令 | 应答 | 参数 |
---|---|---|
AT | OK OK+LOST | 无 |
模块处于待机状态时,会通过串口返回: “OK”
模块处于连接状态时,会断开连接并返回:”OK+LOST”, 前提是设置了AT+NOTI1
2.查询 ADC 转换值
指令 | 应答 | 参数 |
---|---|---|
AT+ADC[P1]? | OK+Get:0.00 | P1: 3,4,5,6,7,8,9,A,B Map to PIO3~ PIOB |
该指令用于查询 PIO3 到 PIOB 口的 ADC 数据。参考电压为3V3.
3.查询本机 MAC 地址
指令 | 应答 | 参数 |
---|---|---|
AT+ADDR? | OK+LADD:MAC地址 | 无 |
4.查询/设置广播方式
指令 | 应答 | 参数 |
---|---|---|
AT+ADTY? | OK+ Get:[P1] | P1: 0 ~ 3 0: 允许任意设备搜索连接 1: 允许上次成功设备连接(在上电的 1.28 秒之内) 2: 允许广播和搜索 3: 只广播 Default: 0 |
AT+ADTY[P1] | OK+ Set:[P1] |
注:从模式下可用指令
5.查询/设置 ANCS 开关
指令 | 应答 | 参数 |
---|---|---|
AT+ANCS? | OK+ Get:[P1] | 无 |
AT+ANCS[P1] | OK+ Set:[P1] | P1: 0 ~ 1 0: Off 1: Open Default: 0 |
Note1: Must execute AT+TYPE3 command first
Note2: Please send AT+RESET to restart module if you set value 1.
Note3: Added in V524 version
6.查询/设置白名单开关(只允许 3 个指定地址链接)
指令 | 应答 | 参数 |
---|---|---|
AT+ALLO? | OK+ Get:[P1] | 无 |
AT+ALLO[P1] | OK+ Set:[P1] | P1: 0 ~ 1 0: Off 1: Open Default: 0 |
注:从模式下可用指令
7.查询/设置白名单地址
指令 | 应答 | 参数 |
---|---|---|
AT+AD[P1]?? | OK+Get:[P2] | P1: 1 ~ 3 P2: 蓝牙地址 如: 0017EA0943AE |
AT+AD[P1][P2] | OK+Set[P2] |
查询白名单地址 1:
Send: AT+AD1??
Recv: OK+Get:001122334455 (001122334455 为蓝牙地址)
设置白名单地址 1:
Send: AT+AD1001122334455 (001122334455 为蓝牙地址)
Recv: OK+Set:001122334455
8.查询/设置广播时间间隔
指令 | 应答 | 参数 |
---|---|---|
AT+ADVI? | OK+ Get:[P1] | P1: 0 ~ F 0: 100ms 1: 152.5 ms 2: 211.25 ms 3: 318.75 ms 4: 417.5 ms 5: 546.25 ms 6: 760 ms 7: 852.5 ms 8: 1022.5 ms 9: 1285 ms A: 2000ms B: 3000ms C: 4000ms D: 5000ms E: 6000ms F: 7000ms HMSoft Default: 0 HMSensor Default: 9 |
AT+ADVI[P1] | OK+ Set:[P1] |
1285ms 为 IOS 系统所建议的最大值. 也就是说,1285ms 是苹果允许的,但是响应扫描和连接的时间会变长.
9.查询/设置上电后模块的 PIO 输出状态
指令 | 应答 | 参数 |
---|---|---|
AT+BEFC? | OK+ Get:[P1] | P1: 000 ~ 3FF Default: 000 |
AT+BEFC[P1] | OK+ Set:[P1] |
P1 的值转为二进制后为 00XXXXXXXXXX,共计 12 位,从左到右分别对应着 PIO0~PIOB 管脚,其中左侧第一位和第二位为系统占用,设置无效,必须置零,其他位上的 X 代表 PIO 口的状态,X=1 代表此 PIO 口输出高电平,X=0 代表此 PIO 口输出低电平。
e.g.:设置上电后模块 PIO2~PIOB 全部输出高电平
Send: AT+BEFC3FF
Recv: OK+Get:3FF (下次模块上电后,PIO2~PIOB 会输出高电平)
Note: AT+MODE1 模式下(PIO 采集模式)此指令不生效
Note:如果要查询当前 PIO 口状态,请使用 AT+PIO??
Note: Added in V527
10.查询/设置连立远程蓝牙连接之后模块的 PIO 输出状态
指令 | 应答 | 参数 |
---|---|---|
AT+AFTC? | OK+ Get:[P1] | Para: 000 ~ 3FF Default: 000 |
AT+AFTC[P1] | OK+ Set:[P1] |
P1 的值转为二进制后为 00XXXXXXXXXX,共计 12 位,从左到右分别对应着 PIO0~PIOB 管脚, 其中左侧第一位和第二位为系统占用,设置无效,必须置零,其他位上的 X 代表 PIO 口的状态,X=1 代表此 PIO 口输出高电平,X=0 代表此 PIO 口输出低电平。
e.g.:设置建立蓝牙远程连接后模块 PIO2~PIOB 全部输出高电平
Send: AT+BEFC3FF
Recv: OK+Get:3FF (建立蓝牙远程连接之后,PIO2~PIOB 会输出高电平)
Note: AT+MODE1 模式下(PIO 采集模式)此指令不生效
Note:如果要查询当前 PIO 口状态,请使用 AT+PIO??
11.查询/设置电量监控开关
指令 | 应答 | 参数 |
---|---|---|
AT+BATC? | OK+ Get:[P1] | P1: 0 ~ 1 0: Off 1: On Default: 0 |
AT+BATC[P1] | OK+ Set:[P1] |
12.查询电量信息
指令 | 应答 | 参数 |
---|---|---|
AT+BATT? | OK+Get:[P1] | P1: 000~100 |
该指令仅对电池供电的方案有效。100 % = 3V, 0% = 2V。
有三种方式得到电量信息
A.电量值已经包含在广播包里,无须连接仅扫描一下就可以得到电量信息。
- Android 系统: 信息格式: 0x07, 0x16, 0x00, 0xB0, 【FLAG 字节】, 【温度值】, 【湿度值】【电量值】,在编程时,只需要对扫描到的设置信息进行拆分即可。
- iOS 系统: 系统搜索回调函数中的 NSDictionary 结构中,对该结构进行拆分,Service为 0xB000 的 UUID 的 Key 值包含四个字节,分别是【FLAG 字节】, 【温度值】, 【湿度值】和【电量值】
B. 在模块未连接到远端蓝牙的情况下,通过串口发送 AT+BATT?得到电量。
C. 用 AT+MODE1/2 将模块切换到非透传模式,建立蓝牙连接之后,远端设备可以发 AT+BATT?得到电量。
13.设置 BIT7 兼容模式
指令 | 应答 | 参数 |
---|---|---|
AT+BAUD? | OK+Get:[P1] | P1: 0~1 0: 不兼容 1: 兼容 |
AT+BAUD[P1] | OK+Set:[P1] |
该指令用于兼容某些串口设置为数据位 7,停止位 2 的设备,如无必要请不要随意使用。
14.查询、设置波特率
指令 | 应答 | 参数 |
---|---|---|
AT+BAUD? | OK+Get:[P1] | P1:0~8 0=9600; 1=19200; 2=38400; 3=57600; 4=115200; 5=4800; 6=2400; 7=1200; 8=230400; Default:0(9600) |
AT+BAUD[P1] | OK+Set:[P1] |
设置波特率为 38400 例子如下:
发送:AT+BAUD2
返回:OK+Set:2
注意: 切换到1200后将不支持AT指令进行配置,并且收发误码需要您自行控制,建议每次收发不超过 10 个字节,直到在待机状态下按下 PIO0,模块会自动恢复到出厂设置
注:该指令执行后,须重新上电新设置的参数才能生效。
15.设置连接最小间隔(Minimum Link Layer connection interval)
指令 | 应答 | 参数 |
---|---|---|
AT+COMI[P1] | OK+ Get [P1] OK+ Set [P1] | P1: ? , 0 ~ 9 ?: 查询 0=7.5ms 1=10ms 2=15ms 3=20ms 4=25ms 5=30ms 6=35ms 7=40ms 8=45ms 9=4Seconds Default: 3 (20ms) |
该指令为主模式指令,从模式下仅发送更改请求是否接受取决于主模式
16.设置连接最大间隔(Maximum Link Layer connection interval)
指令 | 应答 | 参数 |
---|---|---|
AT+COMA[P1] | OK+ Get [P1] OK+ Set [P1] | P1: ? , 0 ~ 9 ?: 查询 0: 7.5ms 1: 10ms 2: 15ms 3: 20ms 4: 25ms 5: 30ms 6: 35ms 7: 40ms 8: 45ms 9: 4Seconds Default: 7 (40ms) |
该指令为主模式指令, 从模式下仅发送更改请求是否接受取决于主模式。
最大连接间隔不能小于最小连接间隔,无则无效。
17.设置连接延迟数(Link Layer connection slave latency)
指令 | 应答 | 参数 |
---|---|---|
AT+COLA[P1] | OK+ Get [P1] OK+ Set [P1] | P1: ? , 0 ,1,2,3,4 ?: 查询 0 为不延迟,1~4 为可以跳过 P1 个连接间隔 Default: 0 |
该指令为主模式指令, 从模式下仅发送更改请求是否接受取决于主模式。
18.设置连接异常检测时间(Link Layer connection supervision timeout)
指令 | 应答 | 参数 |
---|---|---|
AT+COSU[P1] | OK+ Get [P1] OK+ Set [P1] | P1: ? , 0 ~ 9 ?: 查询 0: 100ms 1: 1000ms 2: 2000ms 3: 3000ms 4: 4000ms 5: 5000ms 6: 6000ms Default: 6(6000ms) |
该指令为主模式指令, 从模式下仅发送更改请求是否接受取决于主模式。
19.设置从模式更新连接参数开关
指令 | 应答 | 参数 |
---|---|---|
AT+COUP[P1] | OK+ Get [P1] OK+ Set [P1] | P1: ? , 0 ~ 1 ?: 查询 0: 不主动更新参数 1: 主动更新参数 Default: 0 |
该指令为从模式指令。
20.连接最后一次连接成功的从设备
指令 | 应答 | 参数 |
---|---|---|
AT+CONNL | OK+CONN[Para] | Para: L, N, E,F L:连接中 N:空地址 E:连接错误 F:连接失败 |
该指令为主模式、手动工作模式指令。使用前须满足 AT+ROLE1,AT+IMME1。若模块没有记住最后一次成功连接过设备地址,则不响应。若远程设备异常断电或是已经和别的设备建立连接,则 OK+CONNF 需要 10秒左右才会返回。
注:此指令只有在主设备时才有效;从设备时不接受此指令,发送此指令没有回复,也不执行
21.连接搜索返回列表中的从设备
指令 | 应答 | 参数 |
---|---|---|
AT+CONN[P1] | OK+CONN[P2] | P1: 0~5 P1: 蓝牙地址 如: 0017EA0943AE P2: A, E, F A: 连接中 B: 连接错误 F: 连接失败 |
该指令为主模式、手动工作模式指令。使用前须满足 AT+ROLE1,AT+IMME1,AT+DISC?条件。
注: 该指令取决于 AT+DISC?的返回值,下标从 0 开始,比如 AT+DISC?返回了3 个从机,那么可以使用 AT+CONN0, AT+CONN1 或者 AT+CONN2 指令.一次搜索过程,模块内部可以存储前 6 个搜到的设备,对于这前 6 个搜到的设备您可以使用下标去连接,对于超了 6 个的设备,您可以使用 AT+CO 指令来按地址连接.
注: 若远程设备异常断电或是已经和别的设备建立连接,则 OK+CONNF 需要 10 秒左右才会返回。
注:此指令只有在主设备时才有效;从设备时不接受此指令,发送此指令没有回复,也不执行。
22.连接指定 MAC 地址的设备
指令 | 应答 | 参数 |
---|---|---|
AT+CO[P0][P1] | OK+CO[P0][P0][P2] | P0: N, 0, 1, 2 N: Normal connect 0: 静态地址 1: 静态随机地址 2: 随机地址 P1: 蓝牙 MAC 地址。 P2: E, F, 0~5 E: 连接错误 F: 连接失败 A: 尝试连接中 |
该指令为主模式、手动工作模式指令。使用前须满足 AT+ROLE1,AT+IMME1条件。
P0 参数可由 AT+DISC?指令扫描得到.
若远程设备异常断电或是已经和别的设备建立连接,则 OK+CONNF 需要10秒左右才会返回。
23.查询 PIO4~PIO11 的输出(输入)状态
指令 | 应答 | 参数 |
---|---|---|
AT+COL?? | OK+Col:[P1] | P1:00~FF P1 为 16 进制参数,总共8 个 Bit,每个 Bit 代表一个 PIO 状态。 |
如:发送 AT+COL??
返回 OK+Col:00
解释如下:00 转换为 2 进制则为:“00000000”,对应着 PIO4~PIO11 为低电平。
如返回OK+Col:FF,转换成2进制则为:“11111111”,对应着PIO4~PIO11为高电平。
注:在 AT+MODE1 模式下,代表 PIO4~PIO11 的输入状态。
在 AT+MODE2 模式下,代表 PIO4_~PIO11 的输出状态。
在 AT+MODE0 模式下,该返回值无意义。
24.清除设备配对信息
指令 | 应答 | 参数 |
---|---|---|
AT+CLEAR | OK+CLEAR | 无 |
清除成功连接过的设备地址码信息。
25.查询\设置 PIO 采集速率
指令 | 应答 | 参数 |
---|---|---|
AT+CYC?? | OK+Get:[P1] | P1: 00~99 10进制,单位:秒 |
AT+CYC[P1] | OK+Set:[P1] |
该指令用于设置 PIO 采集的传输速率,单位是秒。
在 PIO 采集模式下,如果 PIO4~PIO11 其中的任意一个 PIO 口输入电平由低转高,则模块会按照此参数的设置上报给远端蓝牙(连接时)或是通过串口输出(未连接时),上报数据模式参见“AT+COL??”指令
26.更改 Characteristic 指令
指令 | 应答 | 参数 |
---|---|---|
AT+CHAR? | OK+Get:0x[P1] | P1: 0x0001~0xFFFE Default: 0xFFE1 |
AT+CHAR0x[P1] | OK+Set:0x[P1] |
注: 该设置值将在模块重启后生效
27.查询\设置模块的学习功能
指令 | 应答 | 参数 |
---|---|---|
AT+COMP? | OK+Get:[P1] | P1: ?, 0, 1 ?: 查询 0: 关闭 1: 打开 Default: 0 |
AT+COMP[P1] | OK+Set:[P1] |
该指令为主模式指令。 该指令用来学习不同厂家的 BLE 产品的通讯方式并与之通讯。
28.搜索 BLE 从机指令
指令 | 应答 | 参数 |
---|---|---|
AT+DISC? | OK+DISCS OK+DIS[P1]:[P2] OK+DISCE | P1: ‘C’,’0’,’1’,’2’ C: Common String 0~2: 设备地址类型 P2: MAC Address |
该指令为主模式、手动工作模式指令。使用前须满足 AT+ROLE1,AT+IMME1条件。
发送 AT+DISC?指令后,模块若处于待机状态,返回 OK+DISCS 后开始搜索。
如果搜到 BLE 设备会返回 OK+DIS[P1]:123456789012,其中数字字符串代表对方蓝牙地址,V535 之前版本最多返回 6 个,V535 之后版本
不限定,索引下标从 0 开始。搜索完成后返回 OK+DISCE。
如只搜到二个设备的例子:
发送: AT+DISC?
接收: OK+DISCS
接收: OK+DIS[P1]:123456789012
如果 AT+SHOW 的值是 2 或者 3,会返回 RSSI
接收: OK+RSSI: xxx,
发送完 RSSI 之后,后面加入”\r\n”回车换行符共计两个 Byte,方便编程判断
如果 AT+SHOW 的值是 1 或者 3,会返回名字
接收: OK+NAME: xxx,
发送完名字之后,会在名字后加入”\r\n”回车换行符共计两个 Byte,方便编程判断
接收: OK+DIS[P1]:234567890123
如果 AT+SHOW 的值是 2 或者 3,会返回 RSSI
接收: OK+RSSI: xxx,
发送完 RSSI 之后,后面加入”\r\n”回车换行符共计两个 Byte,方便编程判断
如果 AT+SHOW 的值是 1 或者 3,会返回名字
接收: OK+NAME: xxx,
发送完名字之后,会在名字后加入”\r\n”回车换行符共计两个 Byte,方便编程判断
接收: OK+DISCE
如果要连接搜到的前 6 个返回设备,下标从 0 开始。
发送: AT+CONN0 连接搜到的第一个设备
发送: AT+CONN1 连接搜到的第二个设备
依此类推…
也可以用 AT+CO[设备类型][MAC 地址]的形式来连接指定地址的设备
29.搜索 BLE 从机指令并返回全部数据
指令 | 应答 | 参数 |
---|---|---|
AT+DISA? | OK+DISCS OK+DISA:[P1][P2]P3][P4][P5] OK+DISCE | P1: MAC Address 6Bytes P2: Device type 1Byte P3: RSSI 1Byte P4: Rest data length 1Byte P5: Rest data |
30.iBeacon 设备搜索指令
指令 | 应答 | 参数 |
---|---|---|
AT+DISI? | OK+DISCS OK+DISC:[P1:P2:P3:P4:P5] OK+DISCE | P1: 厂商代码 P2: iBeacon 的 UUID P3: Major Value, Minor Value, Measured Power P4: MAC Address P5: RSSI |
该指令使用需满足 AT+IMME1 和 AT+ROLE1.
P1 长度:8,
P2 长度 32,
P3 长度 10,
P4 长度 12,
P5 长度 4
P3 包 4 位 Major value, 4 位 Minor value,2 位 Measured Power, 总长 10
如果扫描到的不是 iBeacon 设备,P1,P2,P3 将全部用’0’填充
31.设置 iBeacon 部署模式
指令 | 应答 | 参数 |
---|---|---|
AT+DELO[P1] | OK+DELO[P1] | P1: 1~2 1: 部署模式 1,允许扫描回应 2: 部署模式 2,仅允许广播 Default: 0 |
命令执行成功后,模块将重启进行部署模式,直到下一次重新上电自动解除。
32.擦除绑定信息
指令 | 应答 | 参数 |
---|---|---|
AT+ERASE | OK+ERASE | 无 |
该指令用于擦除模块端的绑定信息,手机端的绑定信息需要用户手动移除。
33.设置从模式广播包中的标志位
指令 | 应答 | 参数 |
---|---|---|
AT+FLAG[P1] | OK+ Set:[P1] | P1: 0 0~ FF 该设置值设置后会立即更新至广播包里,从模式有效,具体效果参见AT+BATT 指令中”FLAG字节的描述” Default: 0 |
34.查询\设置接收增益
指令 | 应答 | 参数 |
---|---|---|
AT+GAIN? | OK+ Get:[P1] | P1: 0 ~ 1 0: 无增益 1: 打开增益 Default: 0 |
AT+GAIN[P1] | OK+ Set:[P1] |
35.查询/设置硬件流控
指令 | 应答 | 参数 |
---|---|---|
AT+FLOW? | OK+ Get:[P1] | P1: 0 ~ 1 0: Off 1: On Default: 0 |
AT+FLOW[P1] | OK+ Set:[P1] |
36.帮助指令
指令 | 应答 | 参数 |
---|---|---|
AT+HELP? | 帮助信息 | 无 |
37.设置模块工作类型
指令 | 应答 | 参数 |
---|---|---|
AT+IMME? | OK+ Get:[P1] | P1: 0 ~ 1 0: 上电立即工作 1: 上电后暂不工作 等待 AT+START; AT+CON;AT+CONN; AT+CO;AT+DISI?; AT+DISC?等指令 Default: 0 |
AT+IMME[P1] | OK+Set:[P1] |
注:重新上电后该设置值生效。
38.查询\设置 iBeacon 开关
指令 | 应答 | 参数 |
---|---|---|
AT+IBEA? | OK+ Get:[P1] | P1: 0 ~ 1 0: 关闭 iBeacon 1: 打开 iBeacon Default: 0 |
AT+IBEA[P1] | OK+Set:[P1] |
iBeacon UUID is: 74278BDA-B644-4520-8F0C-720EAF059935.
注:iBeacon 开关仅在从模式下有生,主模式不发送 iBeacon 广播包。
注:重新上电后(也可执行 AT+RESET)该设置值生效。
注:从 V517 开始增加该指令
39.查询\设置 iBeacon UUID 值
指令 | 应答 | 参数 |
---|---|---|
AT+IBE0? | OK+ Get:[P1] | |
AT+IBE0[P1] | OK+Set:[P1] |
iBeacon UUID is: 74278BDA-B644-4520-8F0C-720EAF059935.
该指令用于修改 UUID 中74278BDA部分
40.查询\设置 iBeacon UUID 值
指令 | 应答 | 参数 |
---|---|---|
AT+IBE1? | OK+ Get:[P1] | P1: 00000001~ FFFFFFFE Default: B6444520 |
AT+IBE1[P1] | OK+Set:[P1] |
Beacon UUID is: 74278BDA-B644-4520-8F0C-720EAF059935.
该指令用于修改 UUID 中B644-4520部分
41.查询\设置 iBeacon UUID 值
指令 | 应答 | 参数 |
---|---|---|
AT+IBE2? | OK+ Get:[P1] | P1: 00000001~ FFFFFFFE Default: 8F0C720E |
AT+IBE2[P1] | OK+Set:[P1] |
iBeacon UUID is: 74278BDA-B644-4520-8F0C-720EAF059935. 该指令用于修改 UUID 中8F0C-720E部分
42.查询\设置 iBeacon UUID 值
指令 | 应答 | 参数 |
---|---|---|
AT+IBE3? | OK+ Get:[P1] | P1: 00000001~ FFFFFFFE Default: AF059935 |
AT+IBE3[P1] | OK+Set:[P1] |
iBeacon UUID is: 74278BDA-B644-4520-8F0C-720EAF059935. 该指令用于修改 UUID 中AF059935部分
43.查询\设置 iBeacon Marjor 值
指令 | 应答 | 参数 |
---|---|---|
AT+MARJ? | OK+ Get:[P1] | P1: 0x0001 ~ 0xFFFE Default: 0xFFE0 |
AT+MARJ[P1] | OK+Set:[P1] |
如设置 Marjor 为 0x0102
Send: AT+MARJ0x0102
Recv: OK+Set:0x0102 失败则不回复
0x0102 中的 x 为小写
44.查询\设置 iBeacon Minor 值
指令 | 应答 | 参数 |
---|---|---|
AT+MINO? | OK+ Get:[P1] | Para: 0x0001 ~ 0xFFFE Default: 0xFFE1 |
AT+MINO[P1] | OK+Set:[P1] |
如设置 Minor 为 0x0102
Send: AT+MINO0x0102
Recv: OK+Set:0x0102 若成功,失败则不回复
45.查询\设置 iBeacon Measured power 值
指令 | 应答 | 参数 |
---|---|---|
AT+MEA?? | OK+ Get:[P1] | P1: 0x00 ~ 0xFF Default: 0xC5 |
AT+MEA[P1] | OK+Set:[P1] |
46.设置模块工作模式
指令 | 应答 | 参数 |
---|---|---|
AT+MODE? | OK+ Get:[P1] | P1: 0 ~ 2 0: 透传模式 1: PIO 采集+远控+透传 2:透传+远控模式 Default: 0 |
AT+MODE[P1] | OK+Set:[P1] |
注:透传模式:即普通的串口透明传输,蓝牙通到数据后转发至串口,同时也转发串口收到的数据到远端蓝牙。
PIO 采集+远控+透传模式:在此模式下,远端蓝牙可以使用 AT 指令设置模块信息,还可以远程控制 2 路 PIO 输出状态(PIO2,PIO3),同时可以采集 8 路PIO 状态(PIO4~PIO11),同时还可以将不是“AT”打头的数据包转发至串口进行双向通讯。
透传+远控模式:在此模式下,远端蓝牙可以使用 AT 指令设置模块信息,还可以控制 10 路 PIO(PIO2~PIO11)输出状态,同时还可以将非“AT”开头的数据包转发至串口进行双向通讯。
47.设置是否通知上位机连接状态
指令 | 应答 | 参数 |
---|---|---|
AT+NOTI? | OK+ Get:[P1] | P1: 0 ~ 1 0: 连接后不通知上位机 1: 连接后通知上位机 Default: 0 |
AT+NOTI[P1] | OK+Set:[P1] |
注:如 Para 值设为 1,模块在成功连接上远端模块后,会通过串口发送”OK+CONN”字符给与模块焊接在一起的上位机,断开连接后则会发送”OK+LOST”字符。
48.设置通知上位机连接状态字符串格式
指令 | 应答 | 参数 |
---|---|---|
AT+NOTP? | OK+ Get:[P1] | Para: 0 ~ 1 0: 默认格式 1: 包含地址信息 Default: 0 |
AT+NOTP[P1] | OK+Set:[P1] |
注:该指令为 AT+NOTI 子指令,用于在 AT+NOTI1 的设置的基础上设置连接成功后的提示字符串如 Para 值设为 1,模块在成功连接上远端模块后,会通过串口发送”OK+CONN:001122334455”字符。 “001122334455”为当前连接主机的MAC 地址信息.
49.查询、设置设备名称
指令 | 应答 | 参数 |
---|---|---|
AT+NAME? | OK+Get[P1] | P1:设备名称 最长 28 位数字或字母,含中划线和下划线,支持中文 Default:HMSoft |
AT+NAME[P1] | OK+Set[P1] |
例子如下:
发送:AT+NAMEname
返回:OK+Set:name
参数 name:所要设置的当前名称,即蓝牙被搜索到的名称。11 个字符以内。
例:发送 AT+NAMEbill_gates
返回 OK+Set:bill_gates
这时蓝牙模块名称改为 bill_gates
注: 该指令执行后,须重新上电新设置的参数才能生效。
50.查询/设置串口校验
指令 | 应答 | 参数 |
---|---|---|
AT+PARI? | OK+ Get:[P1] | P1: 0, 1, 2 0: 无校验 1: EVEN 2: ODD Default: 0 |
AT+PARI[P1] | OK+Set:[P1] |
注:该指令执行后,须重新上电新设置的参数才能生效
51.查询/设置 PIO 口输出能力
指令 | 应答 | 参数 |
---|---|---|
AT+PCTL? | OK+ Get:[P1] | P1 范围 0, 1 0: 一般输出 1: 强输出 Default: 1 |
AT+PCTL[P1] | OK+Set:[P1] |
注:该指令执行后,须重新上电新设置的参数才能生效。
52.PIO1 口输出状态(Query/Set Pio1 output status)
指令 | 应答 | 参数 |
---|---|---|
AT+PIO1? | OK+ Get:[P1] | P1:0~1 0:待机慢闪,连接后常亮 1:待机不闪,连接后常亮 Default:0 |
AT+PIO1 [P1] | OK+Set:[P1] |
注:该指令执行后,须重新上电新设置的参数才能生效。
53.PIO 口输出控制(Query/Set Pio1 output status)
指令 | 应答 | 参数 |
---|---|---|
AT+PIO[P1]? | OK+ Get[P1]:[P2] | P1: 2,3,4,5,6,7,8,9,A,B, ? 对应模块 PIO2~PIOB P2: 0, 1, ? 0:输出低电平 1:输出高电平 ?: 查询状态 Default:0 |
AT+PIO [P1][P2] | OK+Set[P1]:[P2] |
1.查询全部 PIO 口状态:
发送: AT+PIO??
接收: OK+PIO?:[value], Value 值为 000~3FF,转化为二进制后,从左到右分
别对应着 PIO0~PIOB,详见 AT+BEFC 指令描述
2.设置 PIO2 口输出高电平
发送: AT+PIO21
回复: AT+PIO21(如果执行成功), AT+PIO20(如果没有执行成功)
3.设置 PIO2 口输出低电平
发送: AT+PIO20
回复: AT+PIO20(如果执行成功), AT+PIO21(如果没有执行成功)
注:
AT+MODE1 模式下,您只能设置 2 路输出,即 PIO2,PIO3 的输出。在
AT+MODE2 模式下可以设置 10 路输出。即 PIO2~PIO11.
54.查询、设置配对密码
指令 | 应答 | 参数 |
---|---|---|
AT+PASS? | OK+Get:[P1] | P1: 000000~999999 Default:000000 |
AT+PASS[P1] | OK+Set:[P1] |
例子如下:
发送 AT+PASS008888
返回 OK+Set:008888
这时蓝牙模块配对密码改为 008888,模块在出厂时的默认配对密码是000000。
55.设置模块休眠方式
指令 | 应答 | 参数 |
---|---|---|
AT+PWRM? | OK+ Get:[P1] | P1: 0 ~ 1 0: 自动休眠 1: 不自动休眠,等待 AT+SLEEP 进入休眠状态 Default: 1 |
AT+PWRM[P1] | OK+Set:[P1] |
该指令仅在从模式下生效。
56.模块功率设置指令
指令 | 应答 | 参数 |
---|---|---|
AT+POWE? | OK+ Get:[P1] | P1: 0 ~ 3 0: -23dbm 1: -6dbm 2: 0dbm 3: 6dbm Default: 2 |
AT+POWE[P1] | OK+Set:[P1] |
注:调大功率会引起电量损耗加剧。
57.查询\设置待机的增强模式
指令 | 应答 | 参数 |
---|---|---|
AT+RELI? | OK+ Get:[P1] | P1: 0 ~ 1 0: 普通待机 1: 增强待机模式 Default: 0 |
AT+RELI[P1] | OK+ Set:[P1] |
当您需要频繁断开并进行蓝牙连接的时候,需要打开此指令。
58.查询设置传感器采集频率(Rate)
指令 | 应答 | 参数 |
---|---|---|
AT+RAT?? | OK+Get:[P1] | P1: 00~99 单位: 分钟 默认: 1 分钟 |
AT+RAT[P1] | OK+Set:[P1] |
用于设置接在 HM-10 模块 P11 管脚上的传感器的自动采集频率,单位为分钟,自动采集完成后,会将采集数据更新至广播数据报中,目前支持 DHT11, DS18B20。
该指令设置后采集信息返回格式同 AT+TEHU?指令.
该指令需和 AT+SENS 指令配合使用。
59.恢复默认设置(Renew)
指令 | 应答 | 参数 |
---|---|---|
AT+RENEW | OK+RENEW | 无 |
恢复模块默认出厂设置值,模块的所有设置均会被重置,恢复到出厂时状态,恢复出厂设置后,模块延时 500ms 后重启,如无必要,请慎用。
60.模块复位,重启(Reset)
指令 | 应答 | 参数 |
---|---|---|
AT+RESET | OK+RESET | 无 |
该指令执行后,模块将延时 500ms 后重启。
61.查询、设置主从模式
指令 | 应答 | 参数 |
---|---|---|
AT+ROLE? | OK+ Get:[P1] | P1: 0 ~ 1 1: 主设备 0: 从设备 Default: 0 |
AT+ROLE[P1] | OK+Set:[P1] |
注:该指令执行后,会导致模块延时 500ms 重启。
62.读取 RSSI 信号值
指令 | 应答 | 参数 |
---|---|---|
AT+RSSI? | OK+ RSSI:[P1] | 无 |
注:该指令仅在远程控制(AT+MODE1,2)下起作用,上位机发送 AT+RSSI?后,模块读取 RSSI 值并回复给上位机。
63.查询成功连接过的远程主机地址
指令 | 应答 | 参数 |
---|---|---|
AT+RADD? | OK+RADD:MAC 地址 | 无 |
64.查询、设置从机通讯属性
指令 | 应答 | 参数 |
---|---|---|
AT+RESP? | OK+ Get:[P1] | P1: 0 ~ 1, ? 0: Notify WriteWithoutResponse 1: Notify Write WriteWithoutResponse Default: 0 |
AT+RESP[P1] | OK+Set:[P1] |
注:该指令重启生效
65.设置模块在手动搜索时是否返回设备名字和信号强度信息
指令 | 应答 | 参数 |
---|---|---|
AT+SHOW? | OK+ Get:[P1] | P1: 0 ~ 1 0: 不返回任何额外信息 1: 返回设备名称 2: 返回信号强度 3: 返回名称+信号强度 Default: 0 |
AT+SHOW[P1] | OK+Set:[P1] |
66.查询设置传感器型号
指令 | 应答 | 参数 |
---|---|---|
AT+SENS? | OK+Get:[P1] | P1: 0~2 0: None 1: DHT11 2: DS18B20 Default: 0 |
AT+SENS[P1] | OK+Set:[P1] |
用于设置接在 HM-10 模块 P11 管脚上的传感器的型号, 目前支持 DHT11, DS18B20。 该指令设置完成后如需设置自动采集频率请参见 AT+RATE 指令。
67.设置停止位
指令 | 应答 | 参数 |
---|---|---|
AT+STOP? | OK+ Get:[P1] | P1: 0~1 0: 1 停止位 1: 2 停止位 Default: 0 |
AT+STOP[P1] | OK+Set:[P1] |
注:该指令执行后,须重新上电新设置的参数才能生效。
68.开始工作指令
指令 | 应答 | 参数 |
---|---|---|
AT+START | OK+START | 无 |
注:该指令配合 AT+IMME 设置值为 1 时有效,指令执行后,模块延时 500ms开始工作。
69.手动让模块进行休眠状态
指令 | 应答 | 参数 |
---|---|---|
AT+SLEEP | OK+ SLEEP | 无 |
该指令仅在从模式下待机状态下生效。
70.设置模块成功连接后是否保存连接地址
指令 | 应答 | 参数 |
---|---|---|
AT+SAVE? | OK+ Get:[P1] | P1: 0 ~ 1 0: 保存 1: 不保存 Default: 0 |
AT+SAVE[P1] | OK+ Set:[P1] |
注:如果要设置主模块为不保存,请先执行一下 AT+CLEAR 指令清除以前的地址,这样每次主模块上电后,会先搜索,而非直接连接上次地址。
71.设置主模式下执行一次扫描时长
指令 | 应答 | 参数 |
---|---|---|
AT+SCAN? | OK+ Get:[P1] | P1: 1 ~ 9 Unit: Second Default: 3 Seconds |
AT+SCAN[P1] | OK+ Set:[P1] |
72.设置主模式下尝试连接时间
指令 | 应答 | 参数 |
---|---|---|
AT+TCON? | OK+Get:[P1] | P1: 000000~009999 000000 代表持续连接,其余代表尝试的毫秒数。 |
AT+TCON[P1] | OK+Set:[P1] |
注:该指令只在主模式下有效,当模块记住了上一次成功链接的地址后,再次开机自动尝试连接该地址的尝试时间由此参数控制,超过该数值,会自动进入搜索状态,000000 为一直尝试连接,该参数值为毫秒,如无必要请不要设置该值太小,会影响模块正常工作。
73.查询温度、湿度信息
指令 | 应答 | 参数 |
---|---|---|
AT+TEHU? | OK+ Get:[P1][P2] | P1:000~120 P2:000~100 |
使用前请用 AT+SENS 设置传感器型号。
该指令为 HMSensor 版本专用指令,用于读取连接在 HM-10 模块 P11 管脚上的传感器的数据,目前支持 DHT11, DS18B20。
有三种方式得到温度、湿度信息,请参考 AT+BATT 代码。
D. 温度、湿度值已经包含在广播包里,无须连接,仅扫描一下就可以得到。
Android 系统:
信息格式: 0x07, 0x16, 0x00, 0xB0, 【保留字节】, 【温度值】, 【温度值】【电量值】,在编程时,只需要对扫描到的设置信息进行拆分即可。
iOS 系统:
系统搜索回调函数中的 NSDictionary 结构中,对该结构进行拆分,Service为 0xB000 的 UUID 的 Key 值包含四个字节,分别是【保留字节】, 【温度值】,【湿度值】,【电量值】。
E. 在模块未连接到远端蓝牙的情况下,通过串口发送 AT+TEHU?得到。
F. 用 AT+MODE1/2 将模块切换到非透传模式,在建立蓝牙连接之后,远端设备可以发 AT+TEHU?得到。
G. 如果取得的温度值大于 128,为负数,请减掉 128,即为相应的负数值。
74.查询温度信息或设置广播包中温度标志位的值
指令 | 应答 | 参数 |
---|---|---|
AT+TEMP? | OK+ Get:[P1] | P1:000.000 |
用于读取连接在模块 P11 管脚上的传感器 DS18B20 的数据。 若是没有设 AT+SENS,则读取模块内部的温度传感器数据。 数据格式:OK+Get:000.000
指令 | 应答 | 参数 |
---|---|---|
AT+TEMP[P1] | OK+ Set:[P1] | P1: 0x00~0xFF Not include ‘?’ |
用于设置模块在从机待机的时候,发送的广播包中的温度标志位的值,待机时设置值立即生效,作用同 AT+FLAG,只是设置的标志位不同,设置值 生效后,主机可以立即扫描得到.如设置温度标志位为’A’, 发送 AT+TEMPA 即可.
75.设置广播包中湿度标志位中的值
指令 | 应答 | 参数 |
---|---|---|
AT+HUMI[P1] | OK+ Set:[P1] | P1:0x00~0xFF |
用于设置模块在从机待机的时候,发送的广播包中的温度标志位的值,待机时设置值立即生效,作用同 AT+FLAG,只是设置的标志位不同,设置值生效后,主机可以立即扫描得到.
如设置湿度标志位为’A’, 发送 AT+HUMIA 即可.
77.更改 Service UUID 指令
指令 | 应答 | 参数 |
---|---|---|
AT+UUID? | OK+Get:0x[P1] | P1: 0x0001~0xFFFE Default: 0xFFE0 |
AT+UUID0x[P1] | OK+Set:0x[P1] |
注: 该设置值将在模块重启后生效
78.查询、设置 UART 休眠方式
指令 | 应答 | 参数 |
---|---|---|
AT+UART? | OK+Get:[P1] | P1: 0, 1 0: 休眠时不关闭 UART,可以用 UART 唤醒。 1: 休眠时关闭 UART。 Default: 1 |
AT+UART[P1] | OK+Set:[P1] |
注: 该指令为专用指令,用于降低功耗。
79.查询\设置模块是否使用两个 UUID 特性
指令 | 应答 | 参数 |
---|---|---|
AT+FFE2? | OK+Get:[P1] | P1: 0, 1 0: 不使用 Char 2 1: 使用Char 2 = Char1 +1 2: 使用Char 2 = Char1 - 1 Default: 0 |
AT+FFE2[P1] | OK+Set:[P1] |
80.查询\设置模块使用 128Bit 特性
指令 | 应答 | 参数 |
---|---|---|
AT+128B? | OK+Get:[P1] | P1: 0, 1 0: 使用 16Bit 1: 使用 128Bit Default: 0 |
AT+128B[P1] | OK+Set:[P1] |
81.版本查询
指令 | 应答 | 参数 |
---|---|---|
AT+VERS? AT+VER?? | 版本信息 | 无 |