楊 猛,呂 衛,宋 垣
(1.天津大學 電子信息工程學院,天津 300072;2.南京炮兵學院廊坊校區,河北 廊坊 065000)
當今,隨著社會競爭日趨激烈,生活壓力日益增長,心血管疾病發病率也逐漸升高,并且出現心血管疾病患者年輕化的趨勢。心腦血管疾病死亡率高、致殘率高、發病率高,在人類死亡病因中占最高比重,成為人類健康的頭號殺手。關注心臟狀況,預防和治療心血管疾病已成為社會研究熱點。心電圖對于監控心臟活動狀態具有重要作用,所以便攜式心電監護儀在家庭中得到了廣泛應用。
市面上已有的便攜式心電監護儀將數據采集模塊、存儲模塊、顯示模塊集成于一體,使得功耗、成本居高不下,并且相比可穿戴便攜設備略顯笨重??纱┐魇皆O備在不影響用戶正?;顒拥那疤嵯?,能夠實時檢測人體狀態,且具有較低的功耗,因此具有更好的市場前景。
文獻[1]提出了一種基于Android平臺的動態心電圖顯示終端設計,其利用藍牙實現ECG數據的傳輸,并將處理后的心電波形實時顯示在Android終端。本系統與之相比,利用藍牙BLE實現數據傳輸,藍牙BLE是藍牙低功耗版本,比傳統藍牙功耗更低,續航時間更長。另外,本系統除采集ECG數據外,還能采集呼吸數據,檢測用戶的呼吸頻率是否正常。
系統整體流程如圖1所示。

圖1 系統工作流程
1)數據采集模塊負責從人體表面采集ECG數據和呼吸數據,并通過藍牙BLE將數據傳輸到移動Android設備。
2)為確保Android應用軟件在后臺運行時數據的正常接收,在Service組件中實現數據接收。同時,在此組件中完成耗時較多的一系列數據解析、處理,并將處理過的數據在文件中備份。
3)由于Service組件是不可見的,為實現心電圖的動態顯示,需將處理好的數據暫存到Activity數據緩沖區。
4)通過繪圖線程,將ECG波形顯示于顯示屏上。
數據采集模塊如圖2所示,包括模擬前端ADS1292R、控制芯片CC2540、電池和SD卡。

圖2 數據采集模塊(照片)
ADS1292R采集電路具有高阻抗和高共模抑制比,適于采集微弱電信號;CC2540通過SPI接口讀取數模轉換器ADS1292R采集到的呼吸和ECG數據并通過藍牙BLE傳輸給移動Android設備,其集成度高,功耗低。在不需要實時傳輸數據的情況下,該模塊也可以將采集的數據存儲到本地SD卡中。
藍牙BLE技術是藍牙4.0的核心技術之一,是對傳統藍牙BR/EDR技術的補充。與傳統藍牙相比,BLE具有縮短無線開啟時間、快速建立連接、降低收發峰值功耗等特性,從而實現低功耗。傳統藍牙設備的一個重要缺陷是耗電量大,它使用了32個廣播信道,而藍牙BLE技術[2]僅使用了3個廣播信道,且廣播模式啟動時間也由傳統藍牙的22.5 ms減少到0.6~1.2 ms,極大地降低了因為廣播數據導致的待機功耗。此外,藍牙BLE技術將傳統藍牙的空閑狀態改進為深度睡眠狀態,深度睡眠狀態下功耗極低。廣播階段,藍牙BLE技術避免了重復掃描,設備連接過程可在3 ms內完成,而傳統藍牙需100 ms以上。低功耗藍牙對數據包長度進行了更加嚴格的定義,支持超短(8~27 byte)數據封包,并使用了隨機射頻和增加了GFSK調制索引,大大降低了數據收發的復雜性,有效降低了峰值功率。
Android系統為藍牙BLE開發提供了專門的API。支持Android設備作為服務器或客戶端與遠端藍牙BLE設備實現數據傳輸。
Android設備與心電采集模塊通信流程如圖3所示。數據采集模塊將采集的數據通過藍牙BLE傳輸給Android設備,數據包括ECG數據和呼吸數據,所有數據均以18個字節組成的數據包格式發送。接收到數據首先根據標志位判斷屬于哪類數據,分別做不同處理。對于ECG數據,由于數據量比較大,發送頻率高,ECG數據包接收順序可能會出現錯誤,所以接收到ECG數據后首先要根據數據包的序列號將數據調整為正確順序。由于ECG數據和呼吸數據都是24位精度,而數據包格式是以字節為單位的,因此要將字節型數據調整為整型。由于采集的數據中存在工頻干擾、基線漂移[3]等影響,需對原始數據進行一系列濾波處理,得到標準的ECG數據,然后將處理好的數據存入文件以備以后查看。以上操作運算量較大、耗時較長,是在Android應用程序Service組件中運行的,而Service組件是不可見的,這就需要將數據傳輸到具有可視化界面的Activity中。為使應用程序具有較好的運行性能,為Activity中的數據緩沖區設定閾值,當數據量達到閾值,將數據傳入繪圖線程,顯示給用戶。對于呼吸數據,由于不需要向用戶顯示呼吸曲線,只需在Service組件中將計算得到的呼吸率結果傳遞到Activity中顯示給用戶即可。另外,呼吸數據中會插入表示采集模塊狀態的狀態位,例如電量低、導聯脫落等信息;處理呼吸數據時,要檢查這些狀態位,并將狀態信息通過通知及時反饋給用戶。

圖3 通信流程圖
開啟心電圖繪制線程[4]后,首先檢查是否收到結束線程命令,若收到結束命令,則結束繪圖線程,如果沒有,則判斷數據緩沖區中的數據個數是否大于5個,若大于5個,則以5個數據為單位在SurfaceView上繪制心電圖[5],直到數據緩沖區中數據小于5個,否則睡眠50 ms,讓出CPU資源,在下次獲得CPU資源時,重復上述步驟。繪圖模塊流程圖如圖4所示。

圖4 繪圖流程圖
繪制心電圖時,若數據不足一屏,則原數據顯示位置不變,新數據加在原數據之后;若數據個數超過一屏顯示個數,則舊的數據前移,新數據始終出現在屏幕最右側。心電圖繪制效果如圖5所示。

圖5 心電圖繪制效果(截圖)
該軟件的主要功能為接收并存儲數據模塊發送的心電波形數據,并將處理后的心電數據顯示在顯示屏上;另外,可及時將計算出的心率和呼吸率等參數顯示出來,使用戶可以更直觀地了解身體狀態。
測試時,首先令數據采集模塊發送標準正弦波和方波,用Google公司的Nexus 7二代平板PC。經測試,平板PC可以正確穩定地接收數據而無丟包現象,并能夠將接收到的波形數據實時顯示到顯示屏上。使用容量為800 mAh的充電電池做續航能力測試,數據采集模塊可以持續工作72 h以上。
初步測試成功后,利用數據采集模塊采集人體心電數據,繪制出心電圖如圖6所示。
實驗表明,Android設備能夠穩定、實時地接收數據,心電波形顯示清晰、流暢,心電采集模塊續航時間長,系統設計達到了預期目的。

圖6 實測人體心電圖(截圖)
心電監護設備已經歷了幾十年的發展,正朝著實時性、便攜性、智能化的方向發展。與當前現有的相關產品相比,本文設計了一種基于藍牙BLE的心電監護系統,功耗低,續航能力強,實時性能良好,并且具有對心率、呼吸率是否正常的檢測功能,便于用戶使用。
[1] 楊德龍,褚晶輝,楊博菲,等.基于Android平臺的動態心電圖顯示終端設計[J].計算機應用,2013(S2):283-285.
[2] 范晨燦.基于藍牙4.0傳輸的Android手機心電監護系統[D].杭州:浙江大學,2013.
[3] 李剛,劉巍,虞啟璉,等.抑制工頻干擾及基線漂移的快速算法[J].中國生物醫學工程學報,2000,19(1):99-103.
[4] 楊德龍.基于Android系統的藍牙無線動態心電監護系統設計[D].天津:天津大學,2013.
[5] 崔浩然.基于Android平臺的手機游戲的設計與實現[D].西安:西安科技大學,2011.