应用开发示例

初始化及参数修改

模块Profile初始化修改蓝牙名称,响应事件示例如下:

@startuml
hide footbox
skinparam sequenceMessageAlign center

box  #LightBlue
participant Host as host
participant Blueware as bt
end box

rnote over host, bt: Profile初始化

bt -> host: +PWRSTAT=1
bt -> host: +SPPSTAT=1
bt -> host: +GATTSTAT=1
bt -> host: +HFPSTAT=1,1,1
bt -> host: +A2DPMUTED=0
bt -> host: +A2DPSTAT=1,1,1
bt -> host: +ABSVOL=0
bt -> host: +AVRCPSTAT=1,1,1
bt -> host: +PBSTAT=1
bt -> host: +VER=BT936E,V2.3.5,20250305
bt -> host: +DEVSTAT=1
bt -> host: +DEVSTAT=7 (可发现打开,手机可以找到bt且可以连接)
rnote over host, bt: 修改蓝牙名称CARKIT,且不带地址码后缀,并校验
host -> bt: AT+NAME
bt -> host: AT+NAME=FSC-BT936E-1B43
host -> bt: AT+NAME=CARKIT,0
bt -> host: OK
host -> bt: AT+NAME
bt -> host: +NAME=CARKIT
@enduml

一从两主应用

应用框图

../_images/bt936e-rx-2tx.jpg

Note

1、FSC-BT936E模块收发一体支持同时工作,支持同时连接2个耳机和1个手机。没连接耳机时,手机播放音乐,本地播放。连接耳机时,声音自动传输到耳机端;

2、由于该应用场景对蓝牙模块的RF要求较高,Module天线设置为外置, 同时建议客户终端产品设计完成后,将蓝牙部分的电路图/PCB发给我司硬件部核对, 确认没问题后再进行打板.

应用操作示例

(1).将开发板和PC通过Type-C线连接

(2).连接后PC会识别到串口COMx

../_images/bt936e-rx-2tx-comx.png

(3).手机搜索、连接Module

串口反馈: +HFPSTAT=3,1,1   //表示HFP协议已连接(用于通话)
串口反馈: +A2DPSTAT=3,1,1  //表示A2DP协议已连接(用于音乐)

(4).将需要连接的耳机开启配对状态,同时Module发送AT+SCAN=1进行搜索

../_images/bt936e-rx-2tx-scan.png

(5).Module端发送AT+FOCUS=连接指定耳机/音箱,示例如下

发送: AT+FOCUS=FF733EEF25E9                 //只连接1个耳机A
发送: AT+FOCUS=,B85E052670BD                //连接主耳机A后连接副耳机B,需用 “,” 分隔
发送: AT+FOCUS=FF733EEF25E9,B85E052670BD    //同时连接主副耳机A和B

响应: +A2DPSTAT=3,3,1  // 表示耳机A A2DP连接成功
响应: +HFPSTAT=3,3,1   // 表示耳机A HFP连接成功
响应: +A2DPSTAT=3,3,3  // 表示耳机B A2DP连接成功
响应: +HFPSTAT=3,3,3   // 表示耳机B HFP连接成功

Note

  • 设置后Module会自动连接指定的耳机,不需要发送其他指令(重新上电后也会自动连接)

(6).音乐模式:

手机播放音乐时,串口响应示例如下:

响应: +A2DPSTAT=5,3,3    //手机播放音乐
响应: +PLAYSTAT=1
响应: +A2DPSTAT=5,5,5    //耳机A2DP音乐中

(7).通话模式:

手机拨打电话时,且和第一路耳机通话,AT示例如下:

Mode1:Host端切换到第一路耳机通话模式

发送: AT+AUDROUTE=2   // host端切换到第一路耳机通话
响应: +HFPSTAT=4,3,3   // 拨打电话
响应: +HFPAUDIO=1,0,0  // 建立音频
响应: +HFPAUDIO=1,1,0   // 耳机A通话中
响应: +HFPCID=10086
响应: +HFPCIE=移动
响应: +HFPSTAT=6,6,3

Mode2:Host端切换到第二路耳机通话模式

发送: AT+AUDROUTE=3      // host端切换到第二路耳机通话
响应: +HFPSTAT=6,3,4
响应: +HFPAUDIO=1,0,0
响应: +HFPAUDIO=1,0,1    //耳机B通话中
响应: +HFPSTAT=6,3,6

Mode3:主副耳机对讲模式

Note

支持主副耳机对讲模式,需进行 AT+HFPCFG=0 配置才生效

发送: AT+HFPCFG=0        //需进行此项HFP配置后,AT+AUDROUTE=4 模式切换才能生效
发送: AT+AUDROUTE=4      //Host端切换到主副耳机对讲模式

Note

如果未连接耳机,播放音乐时,开发板的speaker将输出音频, 通话时speaker和mic也将工作

AT交互示例

@startuml
hide footbox
skinparam sequenceMessageAlign center

box  #LightBlue
participant Host as host
participant Blueware as bt
end box

rnote over bt, host: scan nearby headset
host -> bt: AT+SCAN=1
bt -> host: +SCAN=1,-56,0,FF733EEF25E9,N-612,240408
bt -> host: +SCAN=2,-78,0,7C9A1DA36B41,AirPods,240404
bt -> host: +SCAN=E

rnote over bt, host:(add 2 device to foucu list)
host -> bt: AT+FOCUS=FF733EEF25E9,7C9A1DA36B41
bt -> host: +A2DPSTAT=3,3,1 (devA a2dp connected)
bt -> host: +A2DPSTAT=3,3,3 (devB a2dp connected)
bt -> host: +HFPSTAT=3,3,1 (devA hfp connected)
bt -> host: +HFPSTAT=3,3,3 (devB hfp connected)

host -> bt: AT+PLAY (send music play command to phone)
bt -> host: +A2DPSTAT=5,4,4 (a2dp streaming)
bt -> host: +A2DPSTAT=5,5,4 (devA a2dp streaming)
bt -> host: +A2DPSTAT=5,5,5 (devB a2dp streaming)

host -> bt: AT+PAUSE(send music pause command to phone)
bt -> host: +A2DPSTAT=4,5,5 (a2dp pause)
bt -> host: +A2DPSTAT=4,4,5 (devA a2dp pause)
bt -> host: +A2DPSTAT=4,4,4 (devB a2dp pause)

host -> bt: AT+HFPDIAL=10086
host -> bt: AT+AUDROUTE=2 (establish devA hfp audio)
bt -> host: +HFPSTAT=4,3,3
bt -> host: +HFPAUDIO=1,0,0 (voice connected,phone)
bt -> host: +HFPAUDIO=1,1,0 (voice connected,devA)
bt -> host: +HFPCID=10086
bt -> host: +HFPCIE=10086
bt -> host: +HFPSTAT=6,6,3
host -> bt: AT+AUDROUTE=3 (establish devB hfp audio)
bt -> host: +HFPAUDIO=1,0,1 (voice connected,devA)
bt -> host: +HFPSTAT=6,3,6

host -> bt: AT+HFPCHUP
bt -> host: +HFPSTAT=3,3,3
bt -> host: +HFPAUDIO=0,0,0(voice disconnected)

@enduml