应用开发示例

数据透传应用

什么是透传?

FSC-HC05 系列蓝牙双模数传模块,工作模式包含两种数据传输模式:透传模式和指令模式。

FSC-BT2064x系列通用数传固件一般默认数据透传模式,如需切换,可参考 FSC-HC05 AT命令集 使用 AT+TPMODE 指令来进行切换。

两种数据传输模式工作机制与区别如下:

  • 透传模式

蓝牙未连接,串口收到的数据按照AT指令进行解析;

蓝牙连接后,串口收到的数据全部原样发送到远端蓝牙,不会包含任何数据包头和包围,不需要通过AT指令来发送数据。

  • 指令模式

蓝牙未连接,串口收到的数据按照AT指令进行解析;

蓝牙连接后,串口收到的数据仍然按照AT指令进行解析,会包含特定响应指示数据包头和包围,需要通过AT指令发送数据给远端,如AT+SPPSEND。

模块与手机间透传应用

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

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

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

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

../_images/dev-datatp-hc05-feasyblue.png

模块与模块间透传应用

FSC-HC05x 与 FSC-BT910x 蓝牙模块间 SPP 通讯数据透传演示,如下:

  1. FSC-HC05 改为主端模式和开启查询,AT操作示例如下:

1发送: >>AT+ROLE=1     //设置模块为主设备
2响应: <<OK
3
4发送: >>AT+CLASS=0    //设置为可查询各种蓝牙设备类
5响应: <<OK
  1. FSC-HC05 开启扫描,AT操作示例如下

 1发送:>>AT+INQ                     //开启扫描
 2响应:<<
 3    +INQ:F0FA:C7:82C255,280704,FFCB
 4    +INQ:DC0D:30:44B,240404,FFF2
 5    +INQ:8667:7A:3CAAA,40680,FFBB
 6    +INQ:B48C:9D:D259D6,2A410C,FFD3
 7    +INQ:E0D8:C4:660C75,2C043C,FFC4
 8    +INQ:DC0D:30:1ADB,240408,FFDC
 9    +INQ:DC0D:30:2034,40680,FFC9
10    +INQ:2:5B:FF03,5A020C,FFC1
11    OK                          //扫描结束
  1. FSC-HC05 通过 AT+LINK 指令向 FSC-BT910x 发起建立SPP协议连接请求,AT指令操作示例如下:

1发送: >>AT+LINK=DC0D,30,44B       //向目标设备远端发起SPP链接请求
2响应: <<OK                        //表示指令发送成功

4.建立SPP连接成功

在数据透传模式下,当蓝牙连接成功后,串口将无法收到事件响应指示,可通过FSC-HC05的Pin33连接状态指示引脚电平状态来判断当前连接状态,具体如下:

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

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

5.发送数据

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

../_images/dev-datatp-hc05-bt9101.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: 拉低连接状态脚

@enduml