STM32 上位機 測試藍芽電話功能功能(包括撥打電話/結束通話電話/接聽電話/Audio Transfer/獲取通話電話號碼/獲取本地電話號碼/啟用語音識別/獲取本地號碼/獲取運營商名字/3GPP指令)

專注於無線通訊的蓬勃發表於2020-10-26

零. 概述

本小節主要介紹下用PC上位機測試藍芽協議棧功能HFP Profile,包括

撥打電話,結束通話電話,接聽電話,Audio Transfer,獲取通話電話號碼,獲取本地電話號碼,啟用語音識別,獲取本地號碼,獲取運營商名字,3GPP指令.

注意:此上位機我已經整合了串列埠助手功能,所以不需要額外的開串列埠工具,集串列埠助手以及協議棧測試一體的工具

使用視訊如下:

超級酷炫!!上位機跟藍芽電話協議棧搭配,實現PC控制手機

一. 宣告

本專欄文章我們會以連載的方式持續更新,本專欄計劃更新內容如下:

第一篇:藍芽綜合介紹 ,主要介紹藍芽的一些概念,產生背景,發展軌跡,市面藍芽介紹,以及藍芽開發板介紹。

第二篇:Transport層介紹,主要介紹藍芽協議棧跟藍芽晶片之前的硬體傳輸協議,比如基於UART的H4,H5,BCSP,基於USB的H2等

第三篇:傳統藍芽controller介紹,主要介紹傳統藍芽晶片的介紹,包括射頻層(RF),基帶層(baseband),鏈路管理層(LMP)等

第四篇:傳統藍芽host介紹,主要介紹傳統藍芽的協議棧,比如HCI,L2CAP,SDP,RFCOMM,HFP,SPP,HID,AVDTP,AVCTP,A2DP,AVRCP,OBEX,PBAP,MAP等等一系列的協議吧。

第五篇:低功耗藍芽controller介紹,主要介紹低功耗藍芽晶片,包括物理層(PHY),鏈路層(LL)

第六篇:低功耗藍芽host介紹,低功耗藍芽協議棧的介紹,包括HCI,L2CAP,ATT,GATT,SM等

第七篇:藍芽晶片介紹,主要介紹一些藍芽晶片的初始化流程,基於HCI vendor command的擴充套件

第八篇:附錄,主要介紹以上常用名詞的介紹以及一些特殊流程的介紹等。

另外,開發板如下所示,對於想學習藍芽協議棧的最好人手一套。以便更好的學習藍芽協議棧,相信我,學完這一套視訊你將擁有修改任何協議棧的能力(比如Linux下的bluez,Android下的bluedroid)。

-------------------------------------------------------------------------------------------------------------------------

CSDN學院連結(進入選擇你想要學習的課程):https://edu.csdn.net/lecturer/5352?spm=1002.2001.3001.4144

藍芽交流扣扣群:970324688

Github程式碼:https://github.com/sj15712795029/bluetooth_stack

入手開發板:https://item.taobao.com/item.htm?spm=a1z10.1-c-s.w4004-22329603896.18.5aeb41f973iStr&id=622836061708

藍芽學習目錄https://blog.csdn.net/XiaoXiaoPengBo/article/details/107727900

--------------------------------------------------------------------------------------------------------------------------

二. 上位機-藍芽電話功能介紹

整個通訊架構如下:

上位機主要通過UART跟藍芽開發板通訊,用於傳送指令給藍芽開發板,並且用於接收藍芽開發板的回傳狀態

上位機-藍芽電話功能圖篇如下:

整個藍芽電話一共分幾個功能區:

① 串列埠配置區,此部分包括自動偵測熱插拔,串列埠開啟,關閉功能,注意波特率是115200,其他資料格式沒有開放出來(資料位是8,停止位為1,無奇偶校驗)

② 藍芽功能開啟/關閉按鈕,後續所有的功能要在藍芽開啟的條件下測試

③ HFP狀態資訊,包括HFP連線狀態,對端的BT mac地址,訊號強度顯示以及電量顯示

④ 部分HFP測試區,包括獲取運營商名字,獲取本地號碼,開啟/關閉語音信箱,擴充套件HFP的3GPP指令獲取手機制造商名字,擴充套件HFP的3GPP指令獲取手機元件名稱

⑤ 通話資訊區測試,包括通話狀態顯示,通話時間顯示,通話號碼顯示,接聽電話,結束通話電話,切換音源(Audio Transfer),設定MIC/SPK的印象,通話中鍵盤號碼傳送(DTMF)

⑥ 撥打電話號碼區

⑦ 串列埠助手區,包括接收區以及傳送區

注意:上位機跟MCU是通過串列埠指令互動json指令來實現控制以及狀態回傳的,所以在執行APP的時候需要把Newtonsoft.Json.dll放在跟exe一個路徑下,互動指令如下

① 上位機控制MCU的指令如下:

藍芽測試例程上位機傳送給開發板JSON格式
說明FUNCOPERATEPARAM1PARAM2PARAM3PARAM4PARAM5PARAM6
HFP獲取運營商名字BTHFP_NET_N      
HFP Audio TransferBTBT_AUDIO_TRANSFER      
HFP接聽來電BTHFP_ANSWER      
HFP結束通話電話BTHFP_CALLEND      
HFP通過手機號撥打電話BTHFP_CALLOUT_PN電話號碼     
HFP獲取本機電話號碼BTHFP_LPN      
HFP獲取通話電話號碼BTHFP_CLCC      
HFP設定MIC音量BTHFP_VGMMIC音量值     
HFP設定SPK音量BTHFP_VGSSPK音量值     
HFP傳送通話鍵盤號BTHFP_DTMF鍵盤號     
HFP開啟語音識別功能BTHFP_VGE      
HFP關閉語音識別功能BTHFP_VGD      
HFP獲取廠商名稱BTHFP_CGMI      
HFP獲取手機名稱BTHFP_CGMM      

② MCU回傳給上位機的指令如下:

藍芽測試例程開飯傳送給上位機JSON格式
說明FUNCOPERATESTATUSPARAM1PARAM2PARAM3PARAM4PARAM5
HFP連線成功BTBT_CON_RESULTSUCCESS/FAILHFP藍芽地址   
HFP斷開成功BTBT_DISCON_RESULTSUCCESS/FAILHFP    
HFP SCO連線成功BTBT_SCO_CON_RESULTSUCCESS/FAILHFP藍芽地址   
HFP SCO斷開成功BTBT_SCO_DISCON_RESULTSUCCESS/FAILHFP    
HFP訊號強度更新BTBT_HFP_SIGNAL_STRENGTHSUCCESS訊號強度    
HFP漫遊狀態更新BTBT_HFP_ROAM_STATUSSUCCESS漫遊狀態    
HFP電量狀態更新BTBT_HFP_BATT_LEVELSUCCESS電量狀態    
HFP運營商名稱更新BTBT_HFP_OPERATORSUCCESS運營商名稱    
HFP電話狀態更新BTBT_HFP_CALL_STATUSSUCCESS電話狀態    
HFP電話Setup狀態更新BTBT_HFP_CALL_SETUPSUCCESS電話Setup狀態    
HFP本地號碼更新BTBT_HFP_LOCAL_PNSUCCESS本地號碼    
HFP電話號碼更新BTBT_HFP_CALL_PNSUCCESS電話號碼    
HFP廠商名稱更新BTBT_HFP_MANU_IDSUCCESS廠商名稱    
HFP裝置名稱更新BTBT_HFP_MODULE_IDSUCCESS裝置名稱    

相關文章