汪志勝,王天本,李張本,劉現濤,陳子毅
(1.西北農林科技大學 機械與電子工程學院,陜西 楊凌 712100;2.農業農村部農業物聯網重點實驗室,陜西 楊凌 712100;3.陜西省農業信息感知與智能服務重點實驗室,陜西 楊凌 712100)
無線行為感知是近年來新興的研究熱點,通過普適的無線信號,如RF、WiFi、聲波等對人進行非接觸式的行為感知,受到了學術界和產業界的廣泛關注與重視[1].由于聲波傳播速度慢且收發設備采樣率相對較高,因此單個采樣點對應的傳播距離短,能夠實現較高精度的感知,此外,收發設備相對廉價,利于推廣應用[2].近年來,國內外無線感知研究團隊利用聲波開展了一些高精度且極具實用價值的行為感知方面的研究,如人體呼吸監測、步態識別、手勢識別、軌跡追蹤等[3-12].
目前,基于聲波的行為感知研究中所使用的收發平臺可分為商用設備和自制設備兩類.商用設備主要包括智能移動設備[2]2960,[9]497,[10]32,[12]1085(如PC、智能手機及手表等)和音箱、麥克風等音頻設備[3]2959,[5]2,但這些設備一般不具備高采樣率且頻率響應范圍較窄,研究者一般能利用的僅為18 kHz ~22 kHz頻段.Ueda等[13]通過實驗得出部分嬰兒和兒童的可聽頻段略高于20 kHz,因此,目前的商用設備應用于家居環境可能存在干擾兒童的隱患.此外,一方面這些商用設備由于硬件限制,大多只能實現單發單收;另一方面,部分設備存在收發不同步的問題[2]74,[5]10,[11]5-6.收發不同步會影響系統的實時性而導致丟失有效數據,對基于實時測距原理的行為感知應用會產生較大影響.自制設備中所采用的壓電超聲換能器一般只能發送固定頻率的信號,而實現調頻信號發送的硬件成本很高,甚至需高壓才能驅動,而且波束角較小且靈敏度較差,感知范圍有限[4]15373.因此,為了解決現有平臺的缺陷,更好地開展聲波感知研究工作,設計一套可便捷控制、寬頻帶、收發同步以及不限于單發單收的超聲平臺具有重要意義.
超聲兩路同步收發平臺的總體結構如圖1所示,主要包括:USB兩路同步收發聲卡、超聲發射音箱以及數字MEMS麥克風三部分.平臺以USB兩路同步收發聲卡為核心,分別接入兩臺超聲發射音箱設備,能夠獨立且同步地發射兩種不同頻段和功率的超聲波;還可接入兩個能采集超聲波的數字MEMS麥克風,獨立且同步地全向接收超聲波.超聲發射音箱的功能主要是將聲卡輸出的信號源經功放電路功率放大后驅動電-聲換能單元發出超聲波;而數字MEMS麥克風采用樓氏電子的頻率響應為1 kHz~80 kHz的SPH0641LU4H-1型號數字MEMS麥克風,其內部集成ADC單元,能夠將全向接收的超聲轉化并輸出為可以被芯片直接采集的PDM數據流.
本平臺作為面向行為感知研究的支撐工具,樣機如圖2所示.在使用過程中,可根據實際需求接入單路或兩路的超聲發射音箱和數字MEMS麥克風,然后將USB兩路同步收發聲卡通過USB總線連接至任意一臺帶操作系統的平臺(如電腦、智能移動設備以及Linux嵌入式系統板等)以組建成系統.以操作系統的平臺作為處理中心,可將USB兩路同步收發聲卡識別為USB音頻播放和錄音設備,繼而可由上位機程序便捷地控制USB音頻驅動,實現自定義超聲信號的兩路同步實時收發.

圖1 平臺總體結構圖 圖2 平臺總體樣機圖

圖3 USB聲卡電路原理圖
USB兩路同步收發聲卡為本平臺的核心部分,其硬件的設計主要包括:主控核心電路、USB電路、音頻輸出電路、穩壓電源電路以及數字MEMS麥克風接口電路等.本聲卡的電路原理圖如圖3所示,主控核心電路以STM32F446VCT6單片機為核心器件,使用片內ULPI PHY接口外擴高速USB芯片USB3300以構建USB-OTG-HS通信電路,將片內I2S音頻接口連接ES9023音頻數模轉換芯片構建兩路音頻輸出電路,將片內SAI音頻接口設計為兩路FPC排線接口電路,用于接入數字MEMS麥克風.穩壓電源電路采用LD1086D2M33TR低壓差線性穩壓芯片,將USB的VBUS轉為3.3 V,作為整個聲卡板的電源.
為了降低USB開發難度,USB聲卡的固件程序基于ST(意法半導體)開源的USB_Audio類庫展開設計.USB聲卡固件程序的功能一般是與PC端實現基于USB音頻類通信協議的數據交互,以及播放和錄音音頻流的采樣、傳輸、讀寫及處理等過程.對于本USB聲卡主控芯片,該過程的實現主要包括主程序和系統中斷程序兩大部分的設計內容.主程序一般用于執行耗費CPU的工作,若耗費CPU的工作放入中斷處理函數內執行,會降低程序執行效率,使得音頻流的實時性被破壞.因此,除了實現主控芯片時鐘及外設的初始化和USB聲卡枚舉,應將PDM轉PCM的解碼操作放入主程序的while循環,簡要流程如圖4所示.

圖4 主程序流程圖
系統中斷程序的設計如圖5所示,其主要包括USB中斷、I2S2 DMA1中斷以及SAI1 DMA2中斷.中斷優先級設置為:I2S2 DMA1中斷>SAI1 DMA2中斷>USB中斷,其中USB中斷又可分為OUT和IN中斷.為了實現播放音頻流的傳輸過程,設計了USB OUT中斷處理和I2S2 DMA1發送完成中斷處理程序.USB OUT中斷處理主要是將PC發送過來的數據包寫入到播放環形隊列.I2S2 DMA1發送完成中斷處理主要是循環,從播放環形隊列讀取數據傳輸至I2S2進行采樣并輸出.然后,為了實現錄音音頻流的傳輸過程,設計了SAI1 DMA2接收完成中斷處理程序,主要采用乒乓緩沖機制存儲PDM音頻數據,其配合主程序while循環實現了錄音數據流的實時傳輸、解碼以及錄音環形隊列的數據寫入過程,繼而設計了USB IN中斷處理程序,實現讀取錄音環形隊列的數據,待PC請求數據時進行上傳.
由于PC端和USB聲卡設備端采用不同的時鐘源,會造成兩端數據不能完全匹配而產生同步性問題,即在設備的寫入端,數據按照PC上的USB的時鐘進行傳輸,而在設備輸出端,數據按照處理平臺的時鐘進行操作,這兩個時鐘不可避免地存在一定誤差,從而隨時間增長造成緩存寫滿或讀空.實際上,這種時鐘不同步的特性有限但無規律,會對音頻流的實時收發帶來很大干擾,緩存溢出或消耗完畢會導致連續爆音問題[14].

圖5 系統中斷程序流程圖
為了解決上述問題,傳統方式是讓USB聲卡端的實際采樣率設置為略低于PC端,并建立一個長的緩存區,但這對于小內存空間的MCU并不適用.此外,隨著時間增長數據依舊會溢出.也有研究采用外部PLL將聲卡的采樣率與PC進行實時匹配,但是會增加硬件成本[10].實際上,試驗發現雖然使用ST提供的采樣率轉換算法(SRC)的同步機制效果好,但其會使CPU的負荷達到22.07%.如果USB聲卡還需對多組MEMS麥克風進行軟件解碼或者需要進行復雜的算法處理,則USB聲卡的CPU可能會滿負荷,將無法保障同步性.因此,本研究提出一種基于指針調整的無反饋同步算法,實現播放和錄音音頻流的同步.該算法位于圖5所示的播放和錄音同步操作程序塊處.

圖6 播放數據流指針調整的無反饋同步算法流程圖 圖7 算法上下限閾值設計
該算法的核心思想:以播放音頻流為例,實時監測環形隊列的數據量,環形隊列內每寫入數據包就會計算當前內部剩余的數據量,如果數據量超過設定的上限閾值(SPEAK_UP_COUNT)時,就會觸發讀指針out_rd_ptr加2,即舍棄一幀數據(左右聲道各半幀);反之,如果數據量減少到設定的下限閾值(SPEAK_DN_COUNT)時,就將讀指針out_rd_ptr減2,重復讀一幀數據,算法流程如圖6所示.SPEAK_DN_COUNT的取值為環形緩存區長度的3/8倍,而SPEAK_UP_COUNT的取值為環形緩存區長度的5/8倍,如圖7所示.同理,錄音音頻流的同步也采用上述思想.該算法不會像SRC同步機制一樣使得USB聲卡的CPU負荷加大,但每秒會丟失一幀數據.對于96 K采樣率來說,會造成1/96 K的錯誤率(實際上可以忽略),即通過合理丟幀保持了所需的同步性.
為了將USB聲卡輸出的電信號轉化為足夠功率的超聲波,設計了超聲發射音箱,其內部結構與普通音箱基本相同,但具有創新性的是對USB聲卡輸出的電信號進行低失真的功率放大,以驅動電-聲換能單元發出超聲.該超聲發射音箱主要包括揚聲器單元及功放電路等兩大部分.其中,揚聲器采用2.5寸AMT-65型鋁帶超高音揚聲器,其頻率響應上限高達40 kHz,額定功率為15 W,阻抗為8 Ω.功放電路采用OPA548單聲道集成功放芯片設計同相比例放大電路,通過切換的反饋電阻Rf阻值(10 kΩ/20 kΩ/30 kΩ/40.2 kΩ)使得功放輸出功率為四檔可調(2 W/4.5 W/8 W/12.6 W),電路原理簡圖如圖8所示.

圖8 功放電路原理圖

圖9 信號沖擊保護程序
鋁帶超高音揚聲器振動膜為薄弱的鋁膜,易被信號源突然輸入和斷開時的不穩定沖擊損壞.此外,沖擊表現出的刺耳爆破音會對行為感知產生干擾.為了保護超高音揚聲器的同時消除干擾,設計了圖8所示的信號沖擊保護電路模塊,主要由MCU主控模塊、電壓比較器模塊、光耦控制模塊以及時長設定交互外設等部分組成.
信號沖擊保護程序的設計如圖9所示,為了實現信號輸入時對揚聲器的保護,采用電壓比較器電路監測信號源電壓,通過計量來自信號源產生的外部中斷數目,根據累計數是否達到閾值判斷有無信號輸入.當監測到有信號輸入便延時幾秒,繼而控制光耦電路拉高(E/S)引腳,以使OPA548輸出,開啟定時器計時.該方案完成了信號源先輸入后開啟功放的過程,實現信號突然輸入的沖擊保護.對于信號斷開時沖擊的揚聲器保護,首先利用時長設定交互外設設定已知超聲發射時長,當計時到達設定時長前5秒便斷開光耦電路,使得OPA548的(E/S)引腳被拉低以失能輸出.該方案完成了功放先于信號源斷開的過程,實現信號突然斷開的沖擊保護.

圖10 系統超聲收發時頻域分析
在西北工業大學消聲實驗室內,將USB兩路同步收發聲卡的數字MEMS麥克風放置于距離超聲發射音箱正前方1 m,超聲發射音箱輸出功率為1 W,對關鍵頻點(20 kHz、30 kHz、40 kHz)分別測試兩路超聲收發信號.測試結果顯示,每一路收發測試信號的時域和頻域結果都與圖10相似.隨著超聲信號頻率的增加,對時域信號的重建結果逐漸變差,但頻率值精準且主頻率峰值尖銳,幾乎無諧波干擾.因此,本平臺能夠有效收發20 kHz~40 kHz頻率范圍的超聲信號.
為了評估平臺的收發同步性,在消聲室內將本平臺組建單發單收系統,采用時域相關法設計測試試驗[5].具體方法為:①循環發送設計的26 kHz~36 kHz的正弦掃頻信號(掃頻周期T為0.04 s),同時無阻塞地接收信號并利用先進先出隊列(FIFO)存儲實時數據;②利用快速卷積實時計算收發信號的相關序列;③實時提取相關序列峰值對應的橫坐標采樣點值.測試結果如圖11所示,在連續收發100 min內除極少數的局部抖動外,未出現收發信號間延遲隨時間的變化趨勢,因此,本研究超聲平臺能夠實現同步收發.

圖11 超聲信號收發同步性測試圖
對超聲發射音箱內的信號沖擊保護機制的效果進行測試,控制平臺音箱突然發射一段40 kHz超聲并同時錄制發送信號.在沒有接入信號沖擊保護電路的音箱時開始會產生極不穩定的信號,如圖12(a)所示,而設置信號沖擊電路的音箱會消除極不穩定的信號沖擊,如圖12(b)所示.

圖12 信號沖擊保護機制測試效果
為了解決目前行為感知研究中所使用聲波收發平臺存在的可用超聲頻段低、頻帶窄、單發單收以及收發不同步等問題,本研究設計了一套面向行為感知的超聲兩路同步收發平臺.該平臺主要包括USB兩路同步收發聲卡、超聲發射音箱以及數字MEMS麥克風三部分.其中,作為核心部分的USB兩路同步收發聲卡硬件成本低,超聲發射音箱能夠低失真地發射超聲且具備信號沖擊保護機制.在使用過程中,該平臺能夠根據研究實際需求便捷地進行兩路收發的自由組合,在20 kHz~40 kHz頻段內能夠任意自主設計超聲信號,并且保持收發同步.綜上,本平臺能夠支撐更多且更高精度的聲波感知研究.