用户工具

站点工具


ocrobot:alpha:cc2541:main

差别

这里会显示出您选择的修订版和当前版本之间的差别。

到此差别页面的链接

ocrobot:alpha:cc2541:main [2017/10/04 04:22] 弘毅ocrobot:alpha:cc2541:main [2023/06/07 04:23] (当前版本) – 外部编辑 127.0.0.1
行 1: 行 1:
 +====== 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??|版本信息|无|
 +
 +===== 参考图片 =====
 +{{:ocrobot:alpha:cc2541:蓝牙未焊接侧面435.png|}}
 +{{:ocrobot:alpha:cc2541:蓝牙未焊接正面435.png|}}