李瑩 劉炳言 李昱釗 楊麗芳
摘 要本文設計了一種便攜的基于安卓平臺的心電監(jiān)護系統(tǒng)。該系統(tǒng)由心電采集模塊、單片機模塊、藍牙模塊、安卓APP顯示模塊組成。心電采集模塊采集到的數據通過單片機模塊進行AD轉換之后經由藍牙模塊將數據傳輸至安卓手機顯示和分析,從而實現(xiàn)對心電圖的觀察,提供了一個可靠的家用健康監(jiān)護平臺。
【關鍵詞】心電 AD轉換 藍牙 安卓
隨著科技的發(fā)展和人們生活習慣不斷變化,心臟類疾病的發(fā)病率越來越高且呈年輕化趨勢發(fā)展,同時,患者需要能夠進行日??祻凸ぷ?、減少高額且不必要的醫(yī)院監(jiān)護。而目前的心電監(jiān)護設備成本高,體積大,使用場所局限于醫(yī)院??紤]到這些因素并結合目前智能終端設備迅猛發(fā)展的趨勢,我們研發(fā)了基于安卓平臺的心電遠程監(jiān)控系統(tǒng),它具有低功耗、小體積、低成本,可便攜等優(yōu)點。
1 心電信號采集模塊
心電信號采集模塊主要是完成心電信號的采集和處理,對心電信號進行放大濾波之后傳輸給單片機。我們采用的是ADI公司新推出的一款用于心電及其他生物電測量的集成信號調理模塊——AD8232芯片。主要是提取、放大及過濾微弱的生物電信號。因其低成本、低功耗、小尺寸等優(yōu)勢被廣泛應用在便攜式健身設備、遠程醫(yī)療監(jiān)護終端、等多種電子設備上。
AD8232芯片采用三電極單導聯(lián)的方式完成信號的采集,采集信號包括左臂驅動,右臂驅動,大腿驅動(本文中不采用此電極,此電極主要用于改善系統(tǒng)的共模抑制性能)。通過連接到左臂驅動電極+IN和右臂驅動電極-IN貼在人體上進行心電信號的采集,在芯片外圍電路添加電阻、電容等元器件并通過調試實現(xiàn)芯片內部功能部件的功能,從而實現(xiàn)模塊濾波等信號處理等功能,最終將處理后心電信號通過OUT端即運算放大器輸出端輸出,連接到單片機AD轉換引腳的輸入端。
實驗過程中根據實際情況適當調節(jié)電阻電容以更好的實現(xiàn)心電信號的采集及濾波等處理。
2 單片機模塊
單片機應用程序的設計主要包括各端口和寄存器聲明、各參數初始化、串口初始化、ADC初始化、讀取模數轉換結果、發(fā)送串口數據、PC顯示結果、軟件延時和主函數。STC15F2K60S2芯片可實現(xiàn)10位模數轉換。主要實現(xiàn)過程如下:經過初始化串口和ADC來設置串口并對單片機進行初始化,此后進入主循環(huán),即單片機從所選信號輸入通道讀取數據,利用函數對數據進行ADC轉換后返回ADC結果,當前一個數據發(fā)送完畢后,輸出當前數據。
3 藍牙無線傳輸設計
3.1 藍牙硬件模塊的選擇
我們選擇BMX-03A作為藍牙硬件模塊,它是一款藍牙轉串口模塊,可以通過串口來和單片機以及主控芯片連接,版本為2.0。該模塊采用CSR BlueCore芯片,配置有8Mbit的軟件存儲空間,支持AT指令,用戶可根據需要更改設備名稱、主從模式、配對密碼、串口波特率等參數,使用起來非常的靈活。
3.2 安卓環(huán)境下藍牙模塊連接的設計
安卓平臺的藍牙系統(tǒng)是基于BlueZ實現(xiàn)的,支持GAP、SDP和RFCOMM規(guī)范。由于我們是串口通信,所以主要利用藍牙的RFCOMM協(xié)議來完成數據的傳輸。
其主要開發(fā)步驟如下:
(1)設置權限:在文件AndroidManifest.xml中聲明使用藍牙的權限,代碼如下
(2)啟動藍牙:通過bluetooth.enable()打開藍牙,并獲取藍牙適配器對象。
(3)搜索藍牙:通過startDiscovery()方法搜索附近的藍牙設備,為連接做準備。
(4)建立連接:通過藍牙設備的MAC地址來建立連接。我們選擇的是藍牙串口協(xié)議SPP,其對應的UUID為00001101-0000-1000-8000-00805F9B34FB。
4 安卓手機端的應用程序設計
4.1 安卓平臺的搭建及實現(xiàn)
Android是一個多任務的操作系統(tǒng),可以多線程同時運行,以便能同時處理不同的功能。在本設計中,應用程序包含1個主線程和2個獨立進行的子線程——讀寫線程和繪圖線程。
4.2 讀寫線程的設計
在藍牙連接之后,需要進行數據的通信。藍牙上的數據讀寫主要是通過socket.getInputStream()和socket.getOutputStream()來實現(xiàn)的,構造方法如下:
publicReadWriteThread(BluetoothSocket socket, Context context) {
Log.i(MainActivity.TAG, "構造ReadWriteThread");
mmSocket = socket;
this.context = context;
InputStreamtmpIn = null;
OutputStreamtmpOut = null;
// 獲得bluetoothsocket輸入輸出流
try {
tmpIn = socket.getInputStream();
tmpOut =socket.getOutputStream();
} catch (IOException e) {
Log.e(MainActivity.TAG, "創(chuàng)建sockets不成功", e);
}
mmInStream = tmpIn;
mmOutStream = tmpOut;
}
4.3 繪圖線程的設計
主要步驟如下:
(1)初始化畫筆,畫布:
Paint p = newPaint();
p.setColor(Color.BLACK);// 畫筆顏色為藍色
p.setStrokeWidth(linewidth);// 畫筆的粗細
p.setAntiAlias(true);// 設置抗鋸齒
p.setDither(true);//抖動處理
(2)繪制坐標線:
canvas.drawLine((counterAllPre-1)*width,indexTemp,counterAllPre* width,dataDraw[0], p);
canvas.drawLines(pts, p);
(3)將存儲數據的數組轉化成坐標(數據長度為4,即每四個數據刷新一次):
pts = newfloat[4 * (dataCount.length - 1)];
for (inti = 0; i if (i % 4 == 0) { j1++; pts[i] = (counterAllPre + j1) * width;} if (i % 4 == 1) pts[i] = dataDraw[j1]; if (i % 4 == 2) pts[i] = (counterAllPre + j1 + 1) * width; if (i % 4 == 3) pts[i] = dataDraw[j1 + 1]; } 5 心電信號監(jiān)測結果顯示 按照以上的步驟我們可以得到最終結果如圖1所示。 6 結論 本文成功實現(xiàn)了Android 6.0平臺下的心電遠程監(jiān)控系統(tǒng)的設計。使得日常生活中的心電檢測監(jiān)護成為可能。未來可以針對該系統(tǒng)進行更多有關心電監(jiān)護的拓展諸如心臟問題預警、實時傳送給醫(yī)生進行病情分析等。隨著人們對疾病和自身健康的日益重視以及手機app的不斷發(fā)展,在移動互聯(lián)網的不斷推動下,各類生物信號檢測及病情監(jiān)控必將得到更加長足的發(fā)展,從而發(fā)揮出更加深遠的作用。 (通訊作者:王振中 張祥雪) 參考文獻 [1]劉一,任占兵.基于安卓手機的遠程心電測量系統(tǒng)的設計[J].電子器件,2015,38(1):194-197. [2]彭保基.基于藍牙及 Android 的便攜式心電儀的設計與實現(xiàn)[D].吉林大學(碩士學位論文),2014. [3]盧潭城,劉鵬,高翔等.基于AD8232芯片的便攜式心電監(jiān)護儀設計[J].實驗技術與管理,2015,32(3):112-117. [4]唐曙,羅武勝,魯琴等.基于Android平臺的USB通信技術研究[J].計算機測量與控制,2015,23(12):4123. 作者單位 北京林業(yè)大學理學院 北京市 100083