应用开发示例

BLE数据透传应用

模块与手机间透传应用

  1. 模块端:上电后,模块会持续发送广播包数据;

  2. 手机端:打开FeasyBlue APP,扫描附近的蓝牙BLE设备广播包,找到目标蓝牙模块,并建立连接;

  3. 连接成功后,模块端状态引脚将拉高电平,说明已连接;

  4. 连接成功后,在透传模式下,模块端收到串口数据后,会自动透传经空中发送到远端(手机端)

../_images/data-bt-app2.png

模块与模块间透传应用

FSC-BT630x 与 FSC-BT986-LE 蓝牙模块间 BLE 通讯数据透传演示,如下:

1.扫描附近的BLE设备

FSC-BT630x 扫描附近的蓝牙BLE设备,操作如下:

 1发送:<<AT+SCAN=1                  //扫描附近的蓝牙BLE设备
 2响应:>>OK
 3     >>+SCAN={             //扫描开始
 4     >>+SCAN=0,0,E0798DB74BD5,-82,9,FSC-WY001
 5     >>+SCAN=1,0,E0798DB74B93,-88,9,FSC-WY001
 6     >>+SCAN=2,1,DD0D30500762,-89,13,FSC-BW256B-LE
 7     >>+SCAN=3,0,E0798DB39B34,-86,9,FSC-WY001
 8     >>+SCAN=4,1,DC0D30683A7B,-52,12,FSC-BT986-LE     //识别到目标模块MAC地址和地址类型1
 9     >>+SCAN=5,1,FCB7E6A1E72C,-89,10,LE_WI-C100
10     >>+SCAN=6,1,DD0D30001885,-80,18,FSC-BT909C-LE-1885
11     >>+SCAN=7,0,E0798DB74BA9,-75,9,FSC-WY001
12     >>+SCAN=8,0,E0798DB74BD3,-81,9,FSC-WY001
13     >>+SCAN=E}             //扫描结束

2.发送建立BLE连接请求

FSC-BT630 通过 AT+LECONN 指令与FSC-BT986-LE 建立BLE协议连接,操作如下:

1发送:<<AT+LECCONN=DC0D30683A7B1       //向远端FSC-BT986-LE发起BLE链接
2响应:>>OK

Warning

AT+LECCONN=目标蓝牙MAC地址+1位地址类型,一般情况下地址类型为”0”或者”1”。

地址类型获取方式:

使用 AT+SCAN=1 扫描,返回结果中的第二个参数为地址类型,如下示例:

1 响应:>>+SCAN=0,0,DC0D30001ED4,-65,10,FSC-BT946  //示例中,地址类型为第二个参数0

3.建立BLE连接成功

在数据透传模式下,当蓝牙连接成功后,串口不会收到事件响应指示(指令模式下,会收到连接成功事件响应指示),可通过 FSC-BT630x 的 Pin18 状态指示引脚电平状态来判断当前连接状态,具体如下:

  • 高电平(H): 表示蓝牙已成功连接;

  • 低电平(L): 表示蓝牙未连接或连接已断开。

4.发送数据

通用数传固件透传模式默认开启,BLE建立连接成功后,即可直接发送数据,而不需要通过AT指令来发送数据,如下图示:

../_images/data-bt-bt2.png

查询/修改模组默认参数

模组在蓝牙没有连接的状态下,会将串口数据按照AT指令解析。 主机可以对模组的默认参数进行查询和修改,下图展示了:

  1. 修改设备名为 ABC

  2. 查询设备名

  3. 查询蓝牙地址

@startuml
hide footbox
skinparam sequenceMessageAlign center

box "local" #LightBlue
participant Host as host
participant Module as bt
end box


rnote over host, bt: 修改设备名为 ABC

host -> bt: AT+NAME=ABC\\r\\n
bt -> host: \\r\\nOK\\r\\n"

rnote over host, bt: 查询设备名

host -> bt: AT+NAME\\r\\n
bt -> host: \\r\\n+NAME=ABC\\r\\n\\r\\nOK\\r\\n"

rnote over host, bt: 查询蓝牙地址

host -> bt: AT+ADDR\\r\\n
bt -> host: \\r\\n+ADDR=DC0D30010203\\r\\n\\r\\nOK\\r\\n

@enduml

发送数据的流程

模组上电会持续向外发送广播数据,远端蓝牙(手机)可以通过搜索获取到广播包, 并向模组发起连接请求。连接成功后模组会拉高连接状态脚通知主机蓝牙连接成功。 主机可以通过蓝牙模组将数据发送给远端蓝牙,远端蓝牙也可以把数据发送给主机。

@startuml
hide footbox
skinparam sequenceMessageAlign center

box "local" #LightBlue
participant Host as host
participant Module as bt
end box

box "remote" #LightBlue
participant ”Remote BT“ as remote
end box

rnote over host, remote: 建立连接

        bt --> remote: 广播包
        bt <-  remote: 扫描
        bt --> remote: 广播包
        bt <-  remote: 请求建立连接

rnote over host, remote: 连接成功

host <- bt: 拉高连接状态脚

rnote over host, remote: 发送数据

host -> bt: 串口发送 ABC
        bt ->  remote: 蓝牙发送 ABC
        bt <-  remote: 蓝牙发送 DEF
host <- bt: 串口输出 DEF

        bt <-  remote: 断开蓝牙

host <- bt: 连接断开

host <- bt: 拉低连接状态脚
        bt --> remote: 广播包

@enduml

模组做主机连接远端设备

模组可以作为主设备去连接从设备,主机可以发送指令控制模组进行扫描连接和断开。下图展示了连接其他设备的过程:

@startuml

hide footbox
skinparam sequenceMessageAlign center

box "local" #LightBlue
participant Host as host
participant Module as bt
end box

box "remote" #LightBlue
participant ”Remote BT“ as remote
end box

host -> bt: AT+SCAN=1\\r\\n
host <- bt: \\r\\nOK\\r\\n
        bt ->  remote: 扫描
        bt <-- remote: 广播包
host <- bt: \\r\\n+SCAN=0,1,DC0D30001ED4,-65,10,FSC-BT946\\r\\n
host -> bt: AT+LECCONN=DC0D30001ED41\\r\\n
host <- bt: \\r\\nOK\\r\\n
        bt ->  remote: 请求建立连接

rnote over host, remote: 连接成功

host <- bt: 拉高连接状态脚

rnote over host, remote: 发送数据

host -> bt: 串口发送 ABC
        bt ->  remote: 蓝牙发送 ABC
        bt <-  remote: 蓝牙发送 DEF
host <- bt: 串口输出 DEF

host -> bt: AT+LEDISC\\r\\n
host <- bt: \\r\\nOK\\r\\n
        bt ->  remote: 断开蓝牙

rnote over host, remote: 连接断开

host <- bt: 拉低连接状态脚
        bt --> remote: 广播包

@enduml