楊 猛,呂 衛(wèi),宋 垣
(1.天津大學(xué) 電子信息工程學(xué)院,天津 300072;2.南京炮兵學(xué)院廊坊校區(qū),河北 廊坊 065000)
當(dāng)今,隨著社會(huì)競(jìng)爭(zhēng)日趨激烈,生活壓力日益增長(zhǎng),心血管疾病發(fā)病率也逐漸升高,并且出現(xiàn)心血管疾病患者年輕化的趨勢(shì)。心腦血管疾病死亡率高、致殘率高、發(fā)病率高,在人類死亡病因中占最高比重,成為人類健康的頭號(hào)殺手。關(guān)注心臟狀況,預(yù)防和治療心血管疾病已成為社會(huì)研究熱點(diǎn)。心電圖對(duì)于監(jiān)控心臟活動(dòng)狀態(tài)具有重要作用,所以便攜式心電監(jiān)護(hù)儀在家庭中得到了廣泛應(yīng)用。
市面上已有的便攜式心電監(jiān)護(hù)儀將數(shù)據(jù)采集模塊、存儲(chǔ)模塊、顯示模塊集成于一體,使得功耗、成本居高不下,并且相比可穿戴便攜設(shè)備略顯笨重。可穿戴式設(shè)備在不影響用戶正?;顒?dòng)的前提下,能夠?qū)崟r(shí)檢測(cè)人體狀態(tài),且具有較低的功耗,因此具有更好的市場(chǎng)前景。
文獻(xiàn)[1]提出了一種基于Android平臺(tái)的動(dòng)態(tài)心電圖顯示終端設(shè)計(jì),其利用藍(lán)牙實(shí)現(xiàn)ECG數(shù)據(jù)的傳輸,并將處理后的心電波形實(shí)時(shí)顯示在Android終端。本系統(tǒng)與之相比,利用藍(lán)牙BLE實(shí)現(xiàn)數(shù)據(jù)傳輸,藍(lán)牙BLE是藍(lán)牙低功耗版本,比傳統(tǒng)藍(lán)牙功耗更低,續(xù)航時(shí)間更長(zhǎng)。另外,本系統(tǒng)除采集ECG數(shù)據(jù)外,還能采集呼吸數(shù)據(jù),檢測(cè)用戶的呼吸頻率是否正常。
系統(tǒng)整體流程如圖1所示。
圖1 系統(tǒng)工作流程
1)數(shù)據(jù)采集模塊負(fù)責(zé)從人體表面采集ECG數(shù)據(jù)和呼吸數(shù)據(jù),并通過(guò)藍(lán)牙BLE將數(shù)據(jù)傳輸?shù)揭苿?dòng)Android設(shè)備。
2)為確保Android應(yīng)用軟件在后臺(tái)運(yùn)行時(shí)數(shù)據(jù)的正常接收,在Service組件中實(shí)現(xiàn)數(shù)據(jù)接收。同時(shí),在此組件中完成耗時(shí)較多的一系列數(shù)據(jù)解析、處理,并將處理過(guò)的數(shù)據(jù)在文件中備份。
3)由于Service組件是不可見(jiàn)的,為實(shí)現(xiàn)心電圖的動(dòng)態(tài)顯示,需將處理好的數(shù)據(jù)暫存到Activity數(shù)據(jù)緩沖區(qū)。
4)通過(guò)繪圖線程,將ECG波形顯示于顯示屏上。
數(shù)據(jù)采集模塊如圖2所示,包括模擬前端ADS1292R、控制芯片CC2540、電池和SD卡。
圖2 數(shù)據(jù)采集模塊(照片)
ADS1292R采集電路具有高阻抗和高共模抑制比,適于采集微弱電信號(hào);CC2540通過(guò)SPI接口讀取數(shù)模轉(zhuǎn)換器ADS1292R采集到的呼吸和ECG數(shù)據(jù)并通過(guò)藍(lán)牙BLE傳輸給移動(dòng)Android設(shè)備,其集成度高,功耗低。在不需要實(shí)時(shí)傳輸數(shù)據(jù)的情況下,該模塊也可以將采集的數(shù)據(jù)存儲(chǔ)到本地SD卡中。
藍(lán)牙BLE技術(shù)是藍(lán)牙4.0的核心技術(shù)之一,是對(duì)傳統(tǒng)藍(lán)牙BR/EDR技術(shù)的補(bǔ)充。與傳統(tǒng)藍(lán)牙相比,BLE具有縮短無(wú)線開啟時(shí)間、快速建立連接、降低收發(fā)峰值功耗等特性,從而實(shí)現(xiàn)低功耗。傳統(tǒng)藍(lán)牙設(shè)備的一個(gè)重要缺陷是耗電量大,它使用了32個(gè)廣播信道,而藍(lán)牙BLE技術(shù)[2]僅使用了3個(gè)廣播信道,且廣播模式啟動(dòng)時(shí)間也由傳統(tǒng)藍(lán)牙的22.5 ms減少到0.6~1.2 ms,極大地降低了因?yàn)閺V播數(shù)據(jù)導(dǎo)致的待機(jī)功耗。此外,藍(lán)牙BLE技術(shù)將傳統(tǒng)藍(lán)牙的空閑狀態(tài)改進(jìn)為深度睡眠狀態(tài),深度睡眠狀態(tài)下功耗極低。廣播階段,藍(lán)牙BLE技術(shù)避免了重復(fù)掃描,設(shè)備連接過(guò)程可在3 ms內(nèi)完成,而傳統(tǒng)藍(lán)牙需100 ms以上。低功耗藍(lán)牙對(duì)數(shù)據(jù)包長(zhǎng)度進(jìn)行了更加嚴(yán)格的定義,支持超短(8~27 byte)數(shù)據(jù)封包,并使用了隨機(jī)射頻和增加了GFSK調(diào)制索引,大大降低了數(shù)據(jù)收發(fā)的復(fù)雜性,有效降低了峰值功率。
Android系統(tǒng)為藍(lán)牙BLE開發(fā)提供了專門的API。支持Android設(shè)備作為服務(wù)器或客戶端與遠(yuǎn)端藍(lán)牙BLE設(shè)備實(shí)現(xiàn)數(shù)據(jù)傳輸。
Android設(shè)備與心電采集模塊通信流程如圖3所示。數(shù)據(jù)采集模塊將采集的數(shù)據(jù)通過(guò)藍(lán)牙BLE傳輸給Android設(shè)備,數(shù)據(jù)包括ECG數(shù)據(jù)和呼吸數(shù)據(jù),所有數(shù)據(jù)均以18個(gè)字節(jié)組成的數(shù)據(jù)包格式發(fā)送。接收到數(shù)據(jù)首先根據(jù)標(biāo)志位判斷屬于哪類數(shù)據(jù),分別做不同處理。對(duì)于ECG數(shù)據(jù),由于數(shù)據(jù)量比較大,發(fā)送頻率高,ECG數(shù)據(jù)包接收順序可能會(huì)出現(xiàn)錯(cuò)誤,所以接收到ECG數(shù)據(jù)后首先要根據(jù)數(shù)據(jù)包的序列號(hào)將數(shù)據(jù)調(diào)整為正確順序。由于ECG數(shù)據(jù)和呼吸數(shù)據(jù)都是24位精度,而數(shù)據(jù)包格式是以字節(jié)為單位的,因此要將字節(jié)型數(shù)據(jù)調(diào)整為整型。由于采集的數(shù)據(jù)中存在工頻干擾、基線漂移[3]等影響,需對(duì)原始數(shù)據(jù)進(jìn)行一系列濾波處理,得到標(biāo)準(zhǔn)的ECG數(shù)據(jù),然后將處理好的數(shù)據(jù)存入文件以備以后查看。以上操作運(yùn)算量較大、耗時(shí)較長(zhǎng),是在Android應(yīng)用程序Service組件中運(yùn)行的,而Service組件是不可見(jiàn)的,這就需要將數(shù)據(jù)傳輸?shù)骄哂锌梢暬缑娴腁ctivity中。為使應(yīng)用程序具有較好的運(yùn)行性能,為Activity中的數(shù)據(jù)緩沖區(qū)設(shè)定閾值,當(dāng)數(shù)據(jù)量達(dá)到閾值,將數(shù)據(jù)傳入繪圖線程,顯示給用戶。對(duì)于呼吸數(shù)據(jù),由于不需要向用戶顯示呼吸曲線,只需在Service組件中將計(jì)算得到的呼吸率結(jié)果傳遞到Activity中顯示給用戶即可。另外,呼吸數(shù)據(jù)中會(huì)插入表示采集模塊狀態(tài)的狀態(tài)位,例如電量低、導(dǎo)聯(lián)脫落等信息;處理呼吸數(shù)據(jù)時(shí),要檢查這些狀態(tài)位,并將狀態(tài)信息通過(guò)通知及時(shí)反饋給用戶。
圖3 通信流程圖
開啟心電圖繪制線程[4]后,首先檢查是否收到結(jié)束線程命令,若收到結(jié)束命令,則結(jié)束繪圖線程,如果沒(méi)有,則判斷數(shù)據(jù)緩沖區(qū)中的數(shù)據(jù)個(gè)數(shù)是否大于5個(gè),若大于5個(gè),則以5個(gè)數(shù)據(jù)為單位在SurfaceView上繪制心電圖[5],直到數(shù)據(jù)緩沖區(qū)中數(shù)據(jù)小于5個(gè),否則睡眠50 ms,讓出CPU資源,在下次獲得CPU資源時(shí),重復(fù)上述步驟。繪圖模塊流程圖如圖4所示。
圖4 繪圖流程圖
繪制心電圖時(shí),若數(shù)據(jù)不足一屏,則原數(shù)據(jù)顯示位置不變,新數(shù)據(jù)加在原數(shù)據(jù)之后;若數(shù)據(jù)個(gè)數(shù)超過(guò)一屏顯示個(gè)數(shù),則舊的數(shù)據(jù)前移,新數(shù)據(jù)始終出現(xiàn)在屏幕最右側(cè)。心電圖繪制效果如圖5所示。
圖5 心電圖繪制效果(截圖)
該軟件的主要功能為接收并存儲(chǔ)數(shù)據(jù)模塊發(fā)送的心電波形數(shù)據(jù),并將處理后的心電數(shù)據(jù)顯示在顯示屏上;另外,可及時(shí)將計(jì)算出的心率和呼吸率等參數(shù)顯示出來(lái),使用戶可以更直觀地了解身體狀態(tài)。
測(cè)試時(shí),首先令數(shù)據(jù)采集模塊發(fā)送標(biāo)準(zhǔn)正弦波和方波,用Google公司的Nexus 7二代平板PC。經(jīng)測(cè)試,平板PC可以正確穩(wěn)定地接收數(shù)據(jù)而無(wú)丟包現(xiàn)象,并能夠?qū)⒔邮盏降牟ㄐ螖?shù)據(jù)實(shí)時(shí)顯示到顯示屏上。使用容量為800 mAh的充電電池做續(xù)航能力測(cè)試,數(shù)據(jù)采集模塊可以持續(xù)工作72 h以上。
初步測(cè)試成功后,利用數(shù)據(jù)采集模塊采集人體心電數(shù)據(jù),繪制出心電圖如圖6所示。
實(shí)驗(yàn)表明,Android設(shè)備能夠穩(wěn)定、實(shí)時(shí)地接收數(shù)據(jù),心電波形顯示清晰、流暢,心電采集模塊續(xù)航時(shí)間長(zhǎng),系統(tǒng)設(shè)計(jì)達(dá)到了預(yù)期目的。
圖6 實(shí)測(cè)人體心電圖(截圖)
心電監(jiān)護(hù)設(shè)備已經(jīng)歷了幾十年的發(fā)展,正朝著實(shí)時(shí)性、便攜性、智能化的方向發(fā)展。與當(dāng)前現(xiàn)有的相關(guān)產(chǎn)品相比,本文設(shè)計(jì)了一種基于藍(lán)牙BLE的心電監(jiān)護(hù)系統(tǒng),功耗低,續(xù)航能力強(qiáng),實(shí)時(shí)性能良好,并且具有對(duì)心率、呼吸率是否正常的檢測(cè)功能,便于用戶使用。
[1] 楊德龍,褚晶輝,楊博菲,等.基于Android平臺(tái)的動(dòng)態(tài)心電圖顯示終端設(shè)計(jì)[J].計(jì)算機(jī)應(yīng)用,2013(S2):283-285.
[2] 范晨燦.基于藍(lán)牙4.0傳輸?shù)腁ndroid手機(jī)心電監(jiān)護(hù)系統(tǒng)[D].杭州:浙江大學(xué),2013.
[3] 李剛,劉巍,虞啟璉,等.抑制工頻干擾及基線漂移的快速算法[J].中國(guó)生物醫(yī)學(xué)工程學(xué)報(bào),2000,19(1):99-103.
[4] 楊德龍.基于Android系統(tǒng)的藍(lán)牙無(wú)線動(dòng)態(tài)心電監(jiān)護(hù)系統(tǒng)設(shè)計(jì)[D].天津:天津大學(xué),2013.
[5] 崔浩然.基于Android平臺(tái)的手機(jī)游戲的設(shè)計(jì)與實(shí)現(xiàn)[D].西安:西安科技大學(xué),2011.