典型应用开发示例

初始化及参数修改

模块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: +VER=BT1036,V2.8.7,20250306 (示例固件版本号,请以实际为准)
bt -> host: +PROFILE=339 (通用默认,使能SPP、GATT Server、HFP-AG、A2DP Source、AVRCP Target)
bt -> host: +A2DPSTAT=1
bt -> host: +AVRCPSTAT=1
bt -> host: +HFPSTAT=1
bt -> host: +DEVSTAT=1
bt -> host: +DEVSTAT=7 (使能设备可发现,手机可以找到该bt蓝牙设备且可以建立连接)

rnote over host, bt: 修改蓝牙名称CARKIT,且不带地址码后缀,并校验
host -> bt: AT+NAME
bt -> host: AT+NAME=FSC-BT1036-188A
bt -> host: OK
host -> bt: AT+NAME=CARKIT,0
bt -> host: OK
host -> bt: AT+NAME
bt -> host: +NAME=CARKIT

@enduml

接收模式应用

应用框图

../_images/db200-bt1036-audio-rx-200dpi.png

应用流程图

Note

出厂固件如果是收发一体程序,程序默认profile=339, 需发送AT+PRFOILE=1195配置成音频接收模式 (打开SPP,GATT Server,HFP Sink,A2DP Sink,AVRCP-Controller,PBAP)

1.手机与模块建立连接并通过AT指令远程控制拨打电话,开发示例如下:

@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: +PROFILE=1195
bt -> host: ...
bt -> host: +DEVSTAT=7

rnote over host, bt: 手机搜索BT并发起连接
bt -> host: +PAIRREQ=797353,5C873026D673,Yui
bt -> host: +PAIRED=0,5C873026D673,Yui
bt -> host: +AVRCPSTAT=3
bt -> host: +A2DPSTAT=2
bt -> host: +HFPIBR=1
bt -> host: +A2DPSTAT=3 (A2DP已连接)
bt -> host: +A2DPDEV=5C873026D673,Yui
bt -> host: +DEVSTAT=1
bt -> host: +HFPSTAT=3 (HFP已连接)
bt -> host: +HFPDEV=5C873026D673,Yui
bt -> host: +HFPSIG=5 (手机的网络信号强度)
bt -> host: +HFPBATT=4 (手机的电池电量)
bt -> host: +HFPROAM=1 (手机的漫游状态)
bt -> host: +HFPNUM=86188xxxx9792 (手机号码)
bt -> host: +HFPMANU=AppleInc. (手机的制造商)

host -> bt: +HFPDIAL=10086 (模组端通过AT指令远程控制拨打"10086")
bt -> host: OK
bt -> host: +HFPSTAT=4 (去电中)
bt -> host: +HFPSTAT=4,10086,中国移动
bt -> host: +HFPAUDIO=1 (已建立HFP音频链路)
bt -> host: +HFPSR=16000 (通话采样率为16K)
bt -> host: +HFPSTAT=6 (通话中)
bt -> host: +HFPSTAT=6,10086,中国移动

host -> bt: AT+HFPCHUP(模组端通过AT指令远程控制挂断电话)
bt -> host: OK
bt -> host: +HFPAUDIO=0 (已断开HFP音频链路)
bt -> host: +HFPSTAT=3

2.手机与模块建立连接并通过AT指令远程控制音乐播放/暂停,上下曲切换,开发示例如下:

@startuml
hide footbox
skinparam sequenceMessageAlign center

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

rnote over host, bt: 手机端打开音乐播放器播放音乐
bt -> host: +A2DPSTAT=5 (音乐播放中)
bt -> host: +PLAYSTAT=1
bt -> host: +TRACKINFO=Paris,Caro Emerald,The Shocking Miss Emerald
bt -> host: +TRACKSTAT=1,9,287
bt -> host: +TRACKSTAT=1,10,287
bt -> host: +TRACKSTAT=1,11,287
bt -> host: +TRACKINFO=I live deep in symmetry,Paris — Caro Emerald,The Shocking Miss Emerald
bt -> host: +TRACKSTAT=1,16,287
bt -> host: +TRACKSTAT=1,17,287
bt -> host: +TRACKSTAT=1,18,287

host -> bt: AT+PAUSE (暂停播放)
bt -> host: OK
bt -> host: +PLAYSTAT=2 (媒体播放器状态,示例中参数2为暂停)
bt -> host: +A2DPSTAT=4

host -> bt: AT+PLAY(恢复播放)
bt -> host: OK
bt -> host: +A2DPSTAT=5
bt -> host: +PLAYSTAT=1
bt -> host: +TRACKINFO=Paris,Caro Emerald,The Shocking Miss Emerald
bt -> host: +TRACKSTAT=1,28,287
bt -> host: +TRACKSTAT=1,29,287
bt -> host: +TRACKSTAT=1,30,287
bt -> host: +TRACKINFO=In this room of disconnect,Paris — Caro Emerald,The Shocking Miss Emerald
bt -> host: +TRACKSTAT=1,31,287
bt -> host: +TRACKSTAT=1,33,287

host -> bt: AT+FORWARD (切换下一曲)
bt -> host: OK
bt -> host: +TRACKSTAT=1,0,187
bt -> host: +TRACKINFO=Ocean and Dreams,Aria Flux,Ocean and Dreams
bt -> host: +TRACKSTAT=1,0,187
bt -> host: +TRACKINFO=Ocean and Dreams - Aria Flux,Ocean and Dreams — Aria Flux,Ocean and Dreams
bt -> host: +TRACKSTAT=1,2,187

host -> bt: AT+FORWARD (切换下一曲)
bt -> host: OK
bt -> host: +TRACKSTAT=1,0,195
bt -> host: +TRACKINFO=Tangled Up,Caro Emerald,The Shocking Miss Emerald
bt -> host: +TRACKSTAT=1,1,195
bt -> host: +TRACKSTAT=1,2,195
bt -> host: +TRACKSTAT=1,3,195

host -> bt: AT+STOP (停止播放)
bt -> host: OK
bt -> host: +PLAYSTAT=2
bt -> host: +A2DPSTAT=4

@enduml

发射模式应用

应用框图

../_images/db200-bt1036-audio-tx-200dpi.png

应用流程图

Note

FSC-BT1036C默认PROFILE为339,即同时启用经典蓝牙音频发射功能以及SPP,GATT_Server;模块默认为模拟输入,如需要使用I2S输入请参考指令AT+I2SCFG,配置I2S后需要重启才能生效

@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: +PROFILE=339
bt -> host: ...
bt -> host: +DEVSTAT=7

rnote over host, bt: 搜索周边经典蓝牙耳机/音箱并连接(被连接的设备需进入配对状态)
host -> bt: AT+SCAN=1
bt -> host: +DEVSTAT=1
bt -> host: +DEVSTAT=9
bt -> host: +SCAN=1,-87,0,DC0D30001E49,FSC-BT1036-1E49,5A020C
bt -> host: +SCAN=2,-78,0,A0A3091593E7,AirPods Pro - Find My,240418
bt -> host: ...
bt -> host: +SCAN=E
bt -> host: << +DEVSTAT=1
bt -> host: << +DEVSTAT=1

host -> bt: AT+A2DPCONN=A0A3091593E7
bt -> host: OK
bt -> host: +A2DPSTAT=2
bt -> host: +PAIRREQ=838273,A0A3091593E7,AirPods Pro - Find My
bt -> host: +PAIRED=0,A0A3091593E7,AirPods Pro - Find My
bt -> host: +A2DPSTAT=3
bt -> host: +A2DPDEV=A0A3091593E7,AirPods Pro - Find My
bt -> host: +DEVSTAT=1
bt -> host: +HFPSTAT=2
bt -> host: +HFPSTAT=3 (HFP已连接)
bt -> host: +HFPDEV=A0A3091593E7,AirPods Pro - Find My
bt -> host: +HFPVGS=11
bt -> host: +AVRCPSTAT=3(A2DP已连接)
bt -> host: +PLAYSTAT=2

rnote over host, bt: 启动A2DP音频发射
host -> bt: AT+AUDROUTE=1
bt -> host: +AUDROUTE=1
bt -> host: OK
bt -> host: +PLAYSTAT=1
bt -> host: +A2DPSTAT=5 (A2DP播放中)
bt -> host: +AUDMODE=1

rnote over host, bt: 关闭A2DP音频发射
host -> bt: AT+AUDROUTE=0
bt -> host: +PLAYSTAT=2
bt -> host: +A2DPSTAT=4
bt -> host: +AUDMODE=0

rnote over host, bt: 启动HFP音频发射
host -> bt: AT+AUDROUTE=2
bt -> host: +AUDROUTE=2
bt -> host: OK
bt -> host: +HFPSR=16000
bt -> host: +HFPAUDIO=1 (已建立HFP音频链路)
bt -> host: +HFPAUDIO=1
bt -> host: +AUDMODE=2
bt -> host: +HFPSTAT=6

rnote over host, bt: 关闭HFP音频发射
host -> bt: AT+AUDROUTE=0
bt -> host: +AUDROUTE=0
bt -> host: OK
bt -> host: +HFPAUDIO=0
bt -> host: +HFPSTAT=3
bt -> host: +AUDMODE=0

@enduml

PBAP应用

Note

SOC音频模块部分固件不支持下载联系人时自动连接PBAP, 需发送AT+PBCONN连接PBAP再下载

@startuml
hide footbox
skinparam sequenceMessageAlign center

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

rnote over host, bt: 设置Profile
host -> bt: AT+PROFILE=1032
bt -> host: OK
bt -> host: +HFPSTAT=1 (HFP已连接)
bt -> host: +DEVSTAT=0
bt -> host: +PWRSTAT=0
bt -> host: ...
bt -> host: +PBSTAT=1
bt -> host: +DEVSTAT=3

rnote over host, bt: 手机端搜索BT并连接
bt -> host: ...
bt -> host: +HFPSTAT=3

rnote over host, bt: 模组端发起PBAP连接
host -> bt: AT+PBCONN=5C873026D673
bt -> host: +PBSTAT=2
bt -> host: OK
bt -> host: +PBSTAT=3 (PBAP已连接)

rnote over host, bt: 下载所有电话本
host -> bt: AT+PBDOWN=1
bt -> host: +PBSTAT=4 (PBAP下载中)
bt -> host: OK
bt -> host: +PBSTAT=3 (PBAP已连接)
bt -> host: +PBCNT=33 (远端设备的电话簿条目)
bt -> host: +PBDATA=1,本机号码,+86186xxxx7272
bt -> host: +PBDATA=1,张三,0571-85592192
bt -> host: ...
bt -> host: +PBDATA=1,jerry,189xxxx1215
bt -> host: +PBDATA=E (下载完成)
bt -> host: +PBSTAT=3

rnote over host, bt: 下载50条通话记录
host -> bt: AT+PBWODN=5,50
bt -> host: +PBSTAT=4 (PBAP下载站)
bt -> host: OK
bt -> host: +PBDATA=3,yidong,+10086,20200213T114247
bt -> host: ...
bt -> host: +PBDATA=2,andy,85592192,20200212T104202
bt -> host: +PBDATA=E
bt -> host: +PBSTAT=3

@enduml