趙劍, 畢京曉, 史麗娟*, 匡哲君, 王柳, 彭雄
( 1.長春大學 計算機科學技術(shù)學院, 長春 133000; 2.長春大學 電子信息工程學院, 長春 133000;3.吉林省人體健康狀態(tài)辨識與機能增強重點實驗室, 長春 130000 )
為了提高舌機接口系統(tǒng)的穩(wěn)定性,進一步改善失能患者的生活質(zhì)量,近年來舌頭-計算機交互領(lǐng)域?qū)?shù)據(jù)采集精度的要求越來越高.舌機接口技術(shù)是一種由舌頭操控的輔助技術(shù),由該技術(shù)建立的舌控智能輔助系統(tǒng)可以為中重度失能患者(特別是因脊柱神經(jīng)損傷造成上肢或手部失能的患者)在失能早期能夠自主康復(fù)和失能后能夠恢復(fù)生活自理提供有效的治療手段.精確采集舌部運動特征信號是研究舌機接口技術(shù)的關(guān)鍵問題之一.在舌機接口技術(shù)中,目前記錄舌部運動生理數(shù)據(jù)的方法主要有電磁記錄儀(EMA)、核磁共振成像技術(shù)(MRI)、超聲儀(ultrasound)以及X光技術(shù)(X-ray)等,但這些技術(shù)存在攜帶不便以及有害人體等問題[1-4];因此,這些方法目前仍然無法滿足現(xiàn)代舌機接口技術(shù)的發(fā)展需求.鑒于此,本文采用STM32H743作為控制器,結(jié)合由美國NI公司研制的LabVIEW(laboratory virtual instrument engineering workbench)進行編程[5],設(shè)計了一種對舌機接口系統(tǒng)進行信號采集的裝置,并對其可行性進行了驗證.
本文所采集的舌控信號是基于人口腔內(nèi)部生理結(jié)構(gòu)所制作的人造假腭.采集信號時,舌部需觸碰嵌入人造上腭的16個微小電極傳感器.信號經(jīng)過校正、放大和采樣后用于閾值設(shè)定.設(shè)定閾值的目的是決定是否選擇該電極.當某一電極的電壓超過設(shè)定的閾值時,表示該電極產(chǎn)生觸碰電極信號,用“1”表示;當電極電壓低于設(shè)定的閾值時,表示該電極未產(chǎn)生觸碰電極信號,用“0”表示.該裝置所采集的舌控智能輔助系統(tǒng)的指令數(shù)據(jù)通過模數(shù)轉(zhuǎn)換后輸出.
本文設(shè)置的通信裝置系統(tǒng)主要由電極傳感器、信號處理模塊、電源模塊組成,如圖1所示.由圖1可以看出,電極傳感器的輸入信號經(jīng)由信號采集模塊調(diào)整處理后發(fā)送給A/D轉(zhuǎn)換模塊(將模擬信號轉(zhuǎn)換為數(shù)字信號),信號經(jīng)A/D轉(zhuǎn)換后再通過信號傳輸模塊傳輸給計算機并實時保存.16個電極傳感器的觸發(fā)情況由LabVIEW顯示.
圖1 系統(tǒng)結(jié)構(gòu)圖
圖2為通信裝置系統(tǒng)的信息采集與獲取過程.該系統(tǒng)采用單片機控制系統(tǒng)檢測電極傳感器信號(單片機內(nèi)部由恒壓源串接電阻作為開關(guān)激勵信號[6]);采用比較器比較反饋的開關(guān)信號與預(yù)設(shè)的電阻值等效電壓信號[7](由此得到各引腳的電平狀態(tài));利用AD轉(zhuǎn)換模塊將模擬信號轉(zhuǎn)化為數(shù)字信號;利用LabVIEW中的VISA庫函數(shù)實時檢測單片機信號,以此實現(xiàn)計算機與單片機的通訊并最終獲取舌控數(shù)據(jù).由上述可看出,該通信裝置能夠?qū)崿F(xiàn)信號的采集、數(shù)據(jù)傳輸與存儲.
圖2 通信裝置的信息采集與獲取過程
為了消除由人為因素和外部環(huán)境對系統(tǒng)造成的輕微擦碰、抖動等不良觸碰,本文采取以下措施:上電復(fù)位后初始化串行口,并設(shè)定內(nèi)部定時器每隔20 ms檢測一次電平.如果每次測得的電平狀態(tài)與上次所測的相同,則認為是人為且穩(wěn)定的信號;如果某一次測得的電平狀態(tài)與上次所測的電平狀態(tài)不同,則觀察下一次檢測的狀態(tài),若與本次相同,說明信號發(fā)生了改變.測得的數(shù)據(jù)信號由串口傳輸給上位機[8],由此實現(xiàn)數(shù)據(jù)的獲取.計算機與單片機通信過程中,單片機串口與上位機USB口之間采用CH340芯片進行串口連接[9].考慮到主控性價比和穩(wěn)定性,本文選用STM32H743單片機作為核心控制器,其供電電源為一個9~24 V正負電源[10].
系統(tǒng)的軟件設(shè)計流程為: 開始 → 初始化 → 端口配置 → 串口通信設(shè)置 → 接收數(shù)據(jù) → 結(jié)束.
LabVIEW程序由數(shù)據(jù)流驅(qū)動[11],其數(shù)據(jù)接收端通過虛擬儀器軟件結(jié)構(gòu)(virtual instrument software architecture,VISA)來判斷是否有新數(shù)據(jù)接收[12],并對新接收的數(shù)據(jù)進行處理.LabVIEW的VISA庫包含有串口配置、數(shù)據(jù)寫入、數(shù)據(jù)讀取等一系列子VI[13],這些VI用于搭建串口通信的通道,以此實現(xiàn)計算機和設(shè)備之間的雙向通信.為了實現(xiàn)LabVIEW與單片機的快速通信,本文采用同步調(diào)用來傳輸數(shù)據(jù)(數(shù)據(jù)為數(shù)組形式).
由于數(shù)據(jù)傳輸過程中會遇到誤碼的情況,因此為了保證接收數(shù)據(jù)的正確性,本文在通信協(xié)議中嚴格定義了數(shù)據(jù)起始碼、結(jié)束碼以及數(shù)據(jù)位的長度(數(shù)據(jù)位的值介于5和8之間,默認值為8).接收端接收數(shù)據(jù)時,若發(fā)現(xiàn)數(shù)據(jù)有誤則自動舍棄當前所接收的數(shù)據(jù),并重新開始下一幀數(shù)據(jù)的接收.通信協(xié)議如下: ①傳輸數(shù)據(jù)為每秒50條.②數(shù)據(jù)段由起始位(FFAA)、數(shù)據(jù)位和結(jié)束位(FF55)組成.③傳輸數(shù)據(jù)的波特率為9 600.
上位機軟件的整體設(shè)計思路如圖3所示,其具體實現(xiàn)步驟為:
圖3 上位機整體設(shè)計圖
1)配置串口,設(shè)置波特率、字節(jié)數(shù)、停止位[14].
2)繪制直觀圖,觀察舌部執(zhí)行某一指令時觸到的極點數(shù)和各指令的極點接觸范圍.
3)將測得的舌控信息保存為文本格式(為方便后續(xù)進行數(shù)據(jù)處理).
4)設(shè)置數(shù)據(jù)回放(為在實驗時便于查看歷史數(shù)據(jù)).查詢歷史數(shù)據(jù)時,需首先確定讀取數(shù)據(jù)的路線和參數(shù).
上位機將采集的舌觸信息、時間以及采集次數(shù)等參數(shù)自動保存到所選擇的文件中.保存的具體方法為:首先在存儲單元的最外層使用楨順序結(jié)構(gòu)函數(shù)來實現(xiàn)文件路徑的數(shù)據(jù)流傳遞,用以控制節(jié)點的執(zhí)行順序;然后將最先執(zhí)行的代碼放在楨0邊框內(nèi)執(zhí)行,然后依次執(zhí)行其他幀中的程序即可完成參數(shù)的保存.軟件程序的結(jié)構(gòu)和循環(huán)由帶寄存器的While和Case結(jié)構(gòu)來完成,部分軟件程序如圖4所示.
圖4 上位機的部分數(shù)據(jù)采集程序
系統(tǒng)應(yīng)用程序由虛擬儀器LabVIEW平臺開發(fā),該程序可實時讀取16個電極傳感器產(chǎn)生的信號.當啟動系統(tǒng)數(shù)據(jù)接收程序后,系統(tǒng)將接收到的串口數(shù)據(jù)(舌觸信息)以界面的形式實時顯示,并將數(shù)據(jù)保存于Excel中.
為了驗證系統(tǒng)的性能及可靠性,本文對系統(tǒng)進行了硬件測試.硬件測試裝置如圖5所示.該測試裝置主要包括舌控智能輔助系統(tǒng)采集裝置、STM32核心處理器及其他硬件模塊.
圖5 硬件測試裝置圖
測試裝置在測試過程中執(zhí)行有目的的指令控制,系統(tǒng)篩選過濾非人為觸碰信號,并將處理后的數(shù)組傳輸給上位機.圖6為測試裝置執(zhí)行10次控制指令(包括前后左右)的觸碰電極顯示情況.由圖6可以看出,各指令的接觸電極基本在同一區(qū)域,這表明該通信裝置能夠準確地采集舌控智能輔助系統(tǒng)的控制信號.
(a) 前指令觸碰電極情況
(b) 后指令觸碰電極情況
(c) 左指令觸碰電極情況
(d) 右指令觸碰電極情況圖6 電極觸發(fā)顯示情況
研究表明,本文設(shè)計的舌控智能輔助系統(tǒng)的通信裝置能夠快速、準確地獲取STM32測得的電極傳感器信號,并具有實時顯示、自動保存和查詢歷史數(shù)據(jù)等功能.另外,該通信裝置還具有應(yīng)用方便、穩(wěn)定性高、功耗低等優(yōu)點.因此,該通信裝置可為舌控智能輔助系統(tǒng)的信號采集提供有效幫助.