自组网蓝牙(BLE-Mesh)模块(微信版)使用指南v1.3.1

密级:公开资料

Version 1.3

(适用固件版本:V1.0.3)

LONGSEMI-BLE-T01

深圳市天玖隆科技有限公司

2015年2月10日

自组网透传蓝牙模块

(微信版)

L

O N G S E M

I 使用指南

目 录

1. 概述 ........................................................................................................... 1 2. 应用 .. (1)

2.1 模块与微信APP 连接通信 ............................................................ 1 3. 使用说明 (3)

3.1 模块出厂默认配置 .......................................................................... 3 3.2 数据透明传输 . (3)

3.2.1 工作准备 ............................................................................... 3 3.2.2 数据发送 ............................................................................... 3 3.2.3 数据接收 ............................................................................... 3 3.2.4 工作模式选择 ....................................................................... 4 3.3 AT 指令 (4)

3.3.1 指令格式 ............................................................................... 4 3.3.2 指令约束 ............................................................................... 5 3.3.3 AT 指令集 .............................................................................. 5 3.3.4 微信接口AT 指令说明 .. (7)

4. 模块封装与引脚定义 ............................................................................... 7 5. 性能指标 (9)

5.1 功耗 .................................................................................................. 9 6. 电气特性 ................................................................................................. 11 附录A 串口指令说明 ................................................................................. 12 附录B 操作错误码 . (28)

L

O N G S E M

I

1. 概述

模块是基于TI CC2540芯片设计的兼容蓝牙4.0低功耗(BLE )单模蓝牙模块。它主要应用于智能穿戴式设备、便携式医疗设备、运动健身设备、智慧家庭、消费电子、工业控制等,可满足低功耗、低时延、近距离无线数据通信的要求。蓝牙模块(微信版)可以让开发者无须了解低功耗蓝牙协议,直接使用类似串口通信方式、开发支持低功耗蓝牙通信和微信平台的智能产品。

本文档是蓝牙模块(微信版)的使用说明文档,包括模块的主要功能、应用场景、使用方法、逻辑结构、硬件接口及各项指标特性。

另外,原厂对外提供基于透传模块的C 语言示例。该示例工作在支持微信

事件响应的模式下。示例的使用请参考《wxLib 说明V1.0》。

2. 应用

蓝牙模块可以把所有来自外部MCU 的串口透传数据通过

BLE 无线信道透明传输给微信APP ,再传送给厂商的服务器。厂商服务器的数据也可以通过微信APP 透传给外部MCU 。

2.1 模块与微信APP 连接通信

在模块和微信APP 进行通信前,需要在微信后台对模块进行授权(具体操

作方法请参考微信后台接口文档),然后通过AT 指令配置模块和微信接口相关的参数,如认证方式,MD5码等。模块出厂默认上电后自动广播,当设置好相关的参数后,打开微信的公众平台,微信APP 便会自动的连接模块了。原理框图如图 2.1。

BLE-T01智能蓝牙BLE-T01组网透传BLE-T01组网透传BLE-T01组网透传L

O N G S E M

I

L

O N G S E M

I 注:实线为必接线,虚线可根据需求考虑是否使用

图 2.1模块与手机连接通信

3. 使用说明

3.1 模块出厂默认配置

蓝牙模块(微信版)的出厂默认配置如下表:

3.2 数据透明传输

开发者在应用开发前,需参考第四章模块封装引脚定义和 2.1节的描述将

MCU 和透传模块连接好,确保MCU 和模块的串口能正常通信。另外,模块支持两种工作模式。一种是支持微信事件响应模式,另一种是完全透传模式。由P1_3脚决定,因为模块上电复位前就需要根据自己想要的工作模式来确定好

P1_3电平。 MCU 在向模块发送串口数据前需先拉低WU/P0.4引脚来唤醒模块。延迟

2ms 后,再发送数据。在数据发送期间,WU/P0.4必须始终保持为低电平,数

据发送完毕后再拉高WU/P0.4引脚,使其可以进入睡眠,降低功耗。

每次向模块连续发送的串口数据不要超过200个字节。 模块在向MCU 发送串口数据之前会自动拉低P0.5引脚以通知MCU 接收数据。数据发送期间P0.5引脚保持为低电平。待全部串口数据发送完毕后,P0.5

引脚将被拉高。

BLE-T01组网透传L

O N G S E M

I

● 支持微信事件响应模式

在这种模式下,模块会主动向MCU 发送连接、断开连接、微信认证结果、微信事件等AT 指令。 ● 完全透传模式

在这种模式下,除了响应MCU 发送的AT 请求外,模块不会主动的向MCU 发送AT 指令。模块会将接收到的厂商数据直接通过串口转发给MCU 。 两种模式是通过模块的P1.3引脚来选择的。在模块上电复位时,如果P1.3为低电平,模块会进入支持微信事件响应的工作模式。否则会进入完全透传的工作模式。在模块正常工作后,P1.3电平的改变将不会导致工作模式的切换。即P1.3的电平需要在复位前就确定好。

用户需要根据自己的实际需求来选择这两个模式。如果用户的产品是需要获取微信支持的事件,如手机型号,手机平台,公众号页面切换等信息,就需要选择“支持微信事件响应模式”;如果用户的产品只关注产品和微信公众号之间的用户数据交互。则只需要选择”完全透传模式”。在这种模式下,对用户的MCU 来说,就相当于在MCU 和微信公众号之间接了一根串口线。这种方式也大大的简化了MCU 的操作。

3.3 AT 指令

蓝牙模块(微信版)的串口数据流中包含两种数据类型:AT

指令和透传数据。利用模块丰富的

AT 指令集,开发者可以设置模块的波特率、

广播和连接间隔,开启或关闭广播,断开连接等。

模块的指令数据和透传数据在同一数据流中,因此指令数据需要一定的指令

封装格式和指令约束条件,以便模块能从串口数据流中分离出指令数据。 蓝牙模块(微信版)的指令数据是ASCII 码。它由四部分组成,如下所示:

● 指令开始标志:AT+

这三个连续的字符用于指示一个指令包的开始。 ● 指令码:

BLE-T01组网透传O N G S E M

I BLE-T01组网透传

L

O N G S E M

I 指令的具体标识,用于区分不同的指令。如:setBR 。 ● 参数列表:

不同的指令有不同的参数、不同的参数数目(大于等于0)。指令中每两个参数间需要用空格分隔。指令码和参数列表之间也需要用空格分隔。 ● 指令结束标志:\r\n\0

这3个字符(即回车符、换行符和空字符)用于指示一个指令包的结束。 例:设置模块为从设备: “AT+setBR 9600\r\n\0”

其中,”AT+”为指令开始标志;”setBR”为指令码,表示切换角色操作;”9600”为参数,表示将模块的串口波特率设置为9600bps ;”\r\n\0”为指令结束标志。

使用蓝牙模块(微信版)的指令数据有三个约束条件:

1)

一条完整的指令应该要被连续地发送到模块,或一条完整的指令的发送总时

间不能超过300ms 。(在9600bps 波特率下,发送一个字节大约需要1ms ,连续发送60个字节大约需要60ms 。而一条正确的指令的长度一般在30个

字节之内,因此只要字节是连续发送地就不必担心指令超时问题) 2) “AT+”和”\r\n\0”之间的数据不能超过50个字节。

3) 使用正确的、已定义了的指令码。如:“AT+setbr 115200\r\n\0”数据包会被

理解为透传数据,因为setbr(br 没有大写)不是正确的指令码。

注意事项:透传模块的指令数据和透传数据在同一个数据流中,指令数据只

会作用到模块状态参数切换。当开发者希望将指令数据作为透传数据传输到另一端设备时,可使用sendData 指令来实现。

透传模块拥有丰富的AT 指令集。 ● 外部MCU 发送到模块的指令:

BLE-T01组网透传

I

● 模块发送给外部MCU 的响应指令

L

O N G S

I

透传模块的AT 指令使用说明参见附录A 。

用户只需要简单的配置一下模块的相关参数,就能实现和微信APP 的连接通信。

在模块和微信APP 连接前,需要在后台对模块进行授权。授权方法请参考微信后台接口文档。授权结束后,配置模块过程如下:

1. 设置微信认证方式(setAuthMode),目前认证方式有三种:采用MD5码加密

认证、采用MD5码不加密认证和采用MAC 地址不加密认证。 2. 当认证方式为采用MD5码加密认证或采用MD5码不加密认证时,需要将在

后台授权模块时的对应的MD5发送给模块(setMD5)。

3. 当认证方式采用MD5码加密认证时,需要将在后台授权模块时对应的

Device ID 发送给模块(setDevID)。

4. 当认证方式采用MD5码加密认证时,需要将在后台授权模块时对应的

Aes128密钥发送给模块(setAesKey)。 5. 发送saveConfigure 保存更改的参数。

至此,模块配置完毕。这时,如果模块处于广播状态,打开对应的公众号,微信就会自动的连接模块,模块会自动的根据配置好的MD5码等参数和微信进行登录认证过程。成功登录后,外部MCU 便能和公众号对应的厂商服务器进行数据传输。

4. 模块封装与引脚定义

图 4.1 模块尺寸

图 4.2 模块引脚分布

表 4.1模块引脚定义

L

O N G S E M

I

5. 性能指标 5.1 功耗

下表为用Agilent 66319B 电源实测的模块在各种状态下的功耗数据(供电电

压为3.3V):

表 5.1模块功耗

L

O N G S I

L

O N G S E M

I

L

O N G S

I

6. 电气特性

表 6.1 绝对最大额定值

表 6.2 推荐的运行条件

附录A 串口指令说明

● setName

作用:设置模块名字 参数个数:1个 参数取值:

说明:

该指令的参数为’=’与”\r\n\0”之间的内容,允许出现空格,但不允许出现”\r\n\0”。名字的最大长度不能超过20个字节。

例: 设置模块的名字为“ bde dev ”:“AT+setName = bde dev\r\n\0”

响应:

“AT+ok\r\n\0”(操作成功)

“AT+err reason\r\n\0”(操作失败,reason 的具体值参见附录B )

● getName

作用:获取模块名字 参数个数:无 响应:

“AT+ok = bde dev\r\n\0”(操作成功,设备名字为” bde dev”)

“AT+err reason\r\n\0”(操作失败,reason 的具体值参见附录B )

● setBR

作用:设置模块的波特率(bps) 参数个数:1个 参数取值:

L

O N G S E M

I

说明:

模块只支持上表中的5个波特率,且其默认的波特率为115200bps 。当MCU 向模块发送该指令后,模块会先返回ok 指令,然后再改变自身的波特率。MCU 在接收到ok 指令后,也应该改变自己的波特率,以保持和模块一致,避免产生误码。

注意:若忘记了已设置的波特率,开发者可以尝试在不同的波特率下发送getRole(或其他get 指令),直到得到正确的回复,以此来确定模块当前的波特率。 响应:

“AT+ok\r\n\0”(操作成功)

“AT+err reason\r\n\0” (操作失败,reason 的具体值参见附录B )

● getBR

作用:获取模块波特率(bps) 参数个数:无 响应:

“AT+ok 115200\r\n\0”(模块波特率为115200bps)

“AT+err reason\r\n\0” (操作失败,reason 的具体值参见附录B )

● setTxDly

作用:设置模块串口输出延迟时间(ms ) 参数个数:1个 参数取值:

说明:

串口输出延迟是配合DATAOUT/P0.5引脚使用的,目的是让MCU 有

足够的时间从睡眠状态中唤醒,从而正确的接收模块发送给MCU 的串口数据。当模块有串口数据要发送给MCU 时,会先将P0.5引脚拉低,延迟指定的时间后,再发送串口数据。在全部的串口数据发送完成后,模块又会将P0.5引脚置为高电平。串口输出延迟时间默认为5ms 。该值不应该设置得过大,避免模块因串口数据没有及时发送出去而导致串口缓冲区溢出,造成数据丢失。DATAOUT/P0.5引脚和串口数据输出的关系图如下:

L

N G S E M

I

响应:

“AT+ok\r\n\

0”(操作成功)

“AT+err reason\r\n\0” (操作失败,reason 的具体值参见附录B )

● getTxDly

作用:获取串口输出延迟时间(ms ) 参数个数:无 响应:

“AT+ok n\r\n\0”(n 为延迟的时间值,如5、8等)

“AT+err reason\r\n\0” (操作失败,reason 的具体值参见附录B )

● setDBM

作用:设置模块的发射功率(dbm ) 参数个数:1个 参数取值:

说明:

模块发射功率的默认值为0dbm 。模块只支持上表中四个功率值。

响应:

“AT+ok\r\n\0”(操作成功)

“AT+err reason\r\n\0” (操作失败,reason 的具体值参见附录B )

● getDBM

作用:获取模块的发射功率(dbm ) 参数个数:无 响应:

“AT+ok n\r\n\0”(n 表示具体的功率值)

“AT+err reason\r\n\0” (操作失败,reason 的具体值参见附录B )

E M

I

● setAdvInt

作用:设置模块广播间隔(625us ) 参数个数:2个 参数取值:

说明:

模块的最大、最小广播间隔默认为320(单位:625us )。广播间隔的

有效范围为20ms~10.24s 。最大广播间隔不能小于最小广播间隔。广播间隔越大,广播时模块功耗就越低。设置广播间隔成功后,需要重新开启广播。

例:设置模块的最小广播间隔为80*625us 、最大广播间隔为100*625us 的指令为:“AT+setAdvInt 80 100\r\n\0”。

响应:

“AT+ok\r\n\0”(操作成功)

“AT+err reason\r\n\0” (操作失败,reason 的具体值参见附录B )

● getAdvInt

作用:获取广播间隔(625us ) 参数个数:无 响应:

“AT+

ok min max\r\n\0”(min 为最小广播间隔,max 为最大广播间隔,单

位:625us)

“AT+err reason\r\n\0” (操作失败,reason 的具体值参见附录B )

● setAdvData

作用:设置广播数据

参数个数:1个 参数取值:

说明:

由于该指令的参数中允许出现空格,因此需要在设定的数据前加上一个字符’=’,模块会将’=’到“\r\n\0”之间的数据作为有效的数据,因此数据中不能出现”\r\n\0”,广播用户自定义数据最大长度为22个字节。

L

O N G S E M

I

例:

“AT+setAdvData =0123456789\r\n\0”

当想去除广播数据时,发送空参数即可:“AT+setAdvData =\r\n\0”。 响应:

“AT+ok\r\n\0”(操作成功)

“AT+err reason\r\n\0” (操作失败,reason 的具体值参见附录B )

● getAdvData

作用:获取当前广播数据 参数个数:无 响应:

“AT+ok =data\r\n\0”(data 为当前广播数据)

“AT+err reason\r\n\0” (操作失败,reason 的具体值参见附录B )

● setAdv

作用:开启或关闭广播 参数个数:1个 参数取值:

说明:

该指令只有在从设备处于非连接状态时才会被执行。

例:

“AT+setAdv on\r\n\0”(开启广播)

响应:

“AT+ok\r\n\0”(操作成功)

“AT+err reason\r\n\0” (操作失败,reason 的具体值参见附录B )

● setConnInt

作用:设置连接参数 参数个数:4个 参数取值:

L

E M

I

说明:

? 最小连接间隔和最大连接间隔:取值范围均为:0x0006~0x0C80,最大

连接间隔不能小于最小连接间隔。连接间隔越大,功耗就越低,传输速率也越低。 ? Latency :取值范围为:0x0000~0x01F3。

? 连接超时:取值范围为:0x000A~0x0C80。连接间隔必须小于连接超时

时间,即:[max*1.25 + (1 + latency)] < 10 * timeout 。

? 模块更新连接参数时需要等待另一端设备参与响应,响应时间跟连接间

隔有关,连接间隔越短,响应时间越短,反之亦然,。因此,有时会存在延迟几秒才响应的现象。成功更新连接参数后,模块会响应ok 指令;更新失败或更新超时时,模块会响应err 指令,超时时间为10s 。由于模块指令执行时具有单步性,因此在得到响应之前再往模块发送其他指令时都会返回err ,故开发者发送了更新连接参数指令后应该要等待接收到相应的响应后才执行其他操作。

? 如果模块当前处于非连接状态,使用setConnInt 指令将会返回错误:

AT+err notConn\r\n\0。

响应:

“AT+ok\r\n\0”(操作成功)

“AT+err reason\r\n\0” (操作失败,reason 的具体值参见附录B )

● getConnInt

作用:获取连接参数 参数个数:无 响应:

“AT+ok interval latency timeout\r\n\0”(interval 为实际的连接间隔,timeout 为连接超时)

“AT+err reason\r\n\0” (操作失败,reason 的具体值参见附录B )

● getAddr

L

O N G S E M

I

作用:获取模块的地址 参数个数:无 响应:

“AT+ok FF:11:22:33:55:FF\r\n\0”

“AT+err reason\r\n\0” (操作失败,reason 的具体值参见附录B )

● disconnect

作用:模块主动断开连接 参数个数:无 说明:

成功断开连接后,模块会回到空闲状态。当成功发送该指令后,模块会

先返回ok 响应,等到连接真正断开后,再返回disconn 响应。需要注意的是,在主模块处于connecting 状态时,发送该指令会直接中止建立连接,返回ok 响应,但不会返回disconn 响应的。

响应:

“AT+ok\r\n\0”(操作成功)

“AT+disconn\r\n\0”(连接已经断开)

“AT+err reason\r\n\0” (操作失败,reason 的具体值参见附录B )

● getStatus

作用:获取模块运行状态 参数个数:无 说明: 设备的运行状态有三种:空闲、广播和连接(”idle”、”adv”和”conn ected ”)。

响应:

“AT+ok idle\r\n\0”(模块处于空闲状态) “AT+ok adv\r\n\0”(模块处于广播状态) “AT+ok connected\r\n\0”(模块处于连接状态) “AT+ok scan rsp\r\n\0”(带响应扫描) “AT+ok scan norsp\r\n\0”(不带响应扫描) “AT+o k connecting\r\n\0”(正在连接)

“AT+err reason\r\n\0” (操作失败,reason 的具体值参见附录B )

● saveConfigure

作用:保存当前的配置

L

O N G S E M

I

相关文档
最新文档