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