錢琳琳,劉婷
1. 泰安市中心醫(yī)院 設(shè)備科,山東 泰安 271000;2. 泰山醫(yī)學(xué)院 外國語學(xué)院,山東 泰安 271016
人體體溫監(jiān)測(cè)可以為人體疾病診治提供重要的依據(jù),傳統(tǒng)的體溫計(jì)具有測(cè)量體溫反應(yīng)時(shí)間長(zhǎng)、不方便觀察體溫?cái)?shù)據(jù),對(duì)于需要長(zhǎng)期監(jiān)測(cè)體溫?cái)?shù)據(jù)的測(cè)量者不方便記錄的缺點(diǎn)。隨著Android智能手機(jī)的快速普及,基于Android平臺(tái)的軟件開發(fā)很快成為新的主流開發(fā)平臺(tái)[1],本文設(shè)計(jì)了基于Android系統(tǒng)的人體智能體溫計(jì)的測(cè)量方案,可以實(shí)時(shí)實(shí)現(xiàn)對(duì)人體體溫?cái)?shù)據(jù)的采集、處理,實(shí)現(xiàn)體溫?cái)?shù)據(jù)的藍(lán)牙傳送、顯示、保存及查詢,具有測(cè)量準(zhǔn)確、操作簡(jiǎn)單的優(yōu)點(diǎn)[2]。
PT100是一種正溫度系數(shù)的熱敏電阻,其電阻隨溫度的升高阻值變大,它具有精度高、穩(wěn)定性好、抗干擾能力強(qiáng)的優(yōu)點(diǎn),廣泛應(yīng)用于溫度測(cè)量中[3]。溫度每變化一度,PT100的阻值變化0.39 Ω,如果PT100的線很長(zhǎng),其電阻值就越大,線長(zhǎng)短的不同會(huì)造成測(cè)量結(jié)果的不同,本文設(shè)計(jì)的人體智能體溫計(jì)外觀很小,屬于短距離測(cè)量,故采用兩線制的PT100。
本文設(shè)計(jì)的人體智能體溫計(jì)電路由電源電路、測(cè)溫電路(圖1)、控制電路和藍(lán)牙通訊模塊(圖2)組成,其中電源電路采用USB供電方式,它由USB、集成三端穩(wěn)壓塊LM317和相應(yīng)的電路組成,可以很穩(wěn)定的輸出3.0 V電壓。電橋電路由電阻R3,R4,R6(R3,R4,R6的精度均為±0.1%)和PT100組成,REF3030為電壓基準(zhǔn)芯片,它的作用是為電橋電路提供標(biāo)準(zhǔn)的3.0 V電壓。差分放大電路由差分放大芯片AD623和一個(gè)2 kΩ(精度為±0.1%)的放大反饋電阻組成,差分放大電路可以精確的把電橋電路的輸出壓差放大51倍,其輸出電壓為Vout。控制電路選用低功耗的MSP430F149單片機(jī)作為控制器,電橋電路的輸出壓差Vout與MSP430F149的P1.1管腳相連,藍(lán)牙模塊采用低功耗BLE藍(lán)牙4.0,其TXD管腳和RXD管腳分別與MSP430F149的P3.6/URXD1、P3.7/UTXD1管腳相連。
圖1 電源電路和測(cè)溫電路
圖2 控制電路和藍(lán)牙模塊電路
智能體溫計(jì)單片機(jī)控制程序主要功能是將AD623采集到的電壓轉(zhuǎn)換成PT100的電阻值[4],根據(jù)PT100鉑電阻的分度表找出電阻值對(duì)應(yīng)的溫度,將溫度數(shù)據(jù)通過藍(lán)牙模塊傳送給Android手機(jī),該部分的工作流程,見圖3。
本文中APP的設(shè)計(jì)采用Android 4.2版本和Eclipse Platform 4.2.1工具開發(fā),該APP的主要功能是接收單片機(jī)通過藍(lán)牙模塊傳送來的溫度數(shù)據(jù),顯示溫度數(shù)據(jù)的同時(shí)并語音播報(bào)溫度數(shù)據(jù),此外該溫度數(shù)據(jù)和被采集者的信息以.txt文檔的形式保存在名稱為data的文件夾中以方便查看,智能體溫計(jì)APP軟件工作流程,見圖4。
圖3 智能體溫計(jì)單片機(jī)控制程序流程圖
圖4 智能體溫計(jì)APP軟件工作流程圖
2.2.1 藍(lán)牙通信模塊的設(shè)計(jì)
該模塊與智能體溫計(jì)下位機(jī)的通信是通過Android平臺(tái)提供的藍(lán)牙API來實(shí)現(xiàn)的,其通信過程主要有四個(gè)步驟:藍(lán)牙設(shè)備打開與關(guān)閉、周圍藍(lán)牙設(shè)備的搜索、與所需藍(lán)牙設(shè)備的連接及配對(duì)藍(lán)牙設(shè)備間的數(shù)據(jù)通信。為了獲取Android手機(jī)藍(lán)牙硬件的支持,在調(diào)用藍(lán)牙API前,需要在AndroidManifest.xml文檔中聲明藍(lán)牙的使用權(quán)限,藍(lán)牙的使用權(quán)限的聲明代碼如下:
< uses-permission android: name=”android.permission.BLUE-TOOTH “/ >
< uses-permission android:name=”android.permission.BLUETOOTH_ADMIN”/>
該模塊界面設(shè)計(jì)比較簡(jiǎn)單,主要由一個(gè)藍(lán)牙按鈕組成,打開藍(lán)牙按鈕后會(huì)自動(dòng)打開藍(lán)牙搜索設(shè)備功能,將搜索到的藍(lán)牙設(shè)備以列表的形式列出,點(diǎn)擊設(shè)備列表下要連接的藍(lán)牙設(shè)備名稱,首次連接需要輸入密匙1234,即可實(shí)現(xiàn)和智能體溫計(jì)下位機(jī)的藍(lán)牙配對(duì)成功[5](圖5)。
2.2.2 體溫?cái)?shù)據(jù)接收與顯示模塊的設(shè)計(jì)
該模塊可以分別顯示開爾文溫度和華氏溫度,見圖6。當(dāng)Android手機(jī)的藍(lán)牙和下位機(jī)的藍(lán)牙配對(duì)成功后即可將接收到的智能體溫計(jì)下位機(jī)發(fā)送的溫度數(shù)據(jù)并在界面上顯示出來。藍(lán)牙模塊間的通信與串口通信方式相同,該模塊設(shè)計(jì)中藍(lán)牙與智能體溫計(jì)下位機(jī)間通信采用串口通信的方式,每個(gè)服務(wù)都有一個(gè)與藍(lán)牙設(shè)備對(duì)應(yīng)的全局唯一標(biāo)識(shí)符Universally Unique Identi fi er(簡(jiǎn)稱UUID),本文采用標(biāo)準(zhǔn) UUID:00001101-0000-1000-8000-0080 5F9B34FB, 通過調(diào)用藍(lán)牙設(shè)備類BluetoothDevice的createRfcommSocketToServiceRecord(UUID)方法來獲取藍(lán)牙通信的套接字BluetoothSocket??蛻舳苏{(diào)用藍(lán)牙適配器BluetoothAdapter的地址,對(duì)搜索到的智能體溫計(jì)下位機(jī)的藍(lán)牙設(shè)備發(fā)起連接請(qǐng)求,建立起在同一RFECOMM信道上的藍(lán)牙套接字BluetoothSocket,并通過套接字BluetoothSocket的getInputStream( )和getOutputStream( )方法獲取輸入輸出流與智能體溫計(jì)下位機(jī)進(jìn)行通信[6-10]。
圖5 體溫顯示模塊
圖6 體溫及采集者信息保存模塊
2.2.3 語音播報(bào)模塊的設(shè)計(jì)
Android平臺(tái)中默認(rèn)沒有安裝文字語音轉(zhuǎn)換Text To Speech(TTS)數(shù)據(jù)包,無法實(shí)現(xiàn)文字到語音的轉(zhuǎn)換,若需要讀取中文,需要下載第三方提供的語音包[11],本設(shè)計(jì)采用科大訊飛開發(fā)的語音包,并將該包的jar包引入到所建工程的buildPath中,此外Android手機(jī)上需要安裝訊飛語音APK,APK安裝成功后,打開手機(jī)設(shè)置→語言和輸入法→文字轉(zhuǎn)語音(TTS)輸出→默認(rèn)引擎選擇“訊飛語音合成”,可以設(shè)置男生或女生發(fā)音,當(dāng)接收到智能體溫計(jì)下位機(jī)發(fā)送來的體溫?cái)?shù)據(jù)后開始中文播報(bào)體溫?cái)?shù)據(jù)。
2.2.4 體溫及采集者信息保存模塊設(shè)計(jì)
溫度及采集者的信息以.txt文檔的形式保存在SD卡中,如圖6所示,為了能夠在SD卡中保存數(shù)據(jù),在調(diào)用API前,需要在 AndroidManifest.xml文檔中聲明SD卡的使用權(quán)限。
在SD卡中創(chuàng)建與刪除文件的權(quán)限:<uses-permission android:name=”android.permission.MOUNT_UNMOUNT_FILESYSTEMS” />
在SD卡中寫入數(shù)據(jù)的權(quán)限:<uses-permission android:name=”android.permission.WRITE_EXTERNAL_STORAGE” />
當(dāng)輸入完被測(cè)者的基本信息后,點(diǎn)擊保存按鈕后被測(cè)者的信息及智能體溫計(jì)下位機(jī)傳來的體溫?cái)?shù)據(jù)會(huì)保存在SD卡的data文件夾中日期文件夾下的.txt文檔中,見圖7~8。
圖7 體溫及采集者信息保存文件
圖8 體溫及采集者信息保存內(nèi)容
為了驗(yàn)證本文設(shè)計(jì)體溫計(jì)的準(zhǔn)確性,采用HWT系列恒溫水浴箱測(cè)量的溫度作為標(biāo)準(zhǔn)體溫,該水浴箱的溫控精度為±0.1℃,溫控范圍為25℃~100℃。人體溫度主要在35℃~42℃之間進(jìn)行變化,故在35℃~42℃之間每隔0.5℃選擇一個(gè)標(biāo)準(zhǔn)溫度進(jìn)行測(cè)量,該測(cè)量結(jié)果如表1所示,絕對(duì)誤差A(yù)E(Absolute Error)用T0表示,T0=∣T2-T1∣,水浴箱溫度用T1表示,本文設(shè)計(jì)的體溫計(jì)的測(cè)量溫度用T2表示,將本文設(shè)計(jì)的體溫計(jì)放入水浴中,將水浴箱的溫度從35℃~42℃范圍內(nèi)每隔0.5℃進(jìn)行設(shè)定,每次測(cè)量要求水浴箱的顯示溫度保持5 min內(nèi)且溫度不變時(shí)記錄下本文設(shè)計(jì)體溫計(jì)的溫度數(shù)據(jù)。本文測(cè)量的15組溫度數(shù)據(jù)結(jié)果顯示本文設(shè)計(jì)的體溫計(jì)與水浴箱溫度數(shù)據(jù)的最大絕對(duì)誤差為±0.2℃,說明本文設(shè)計(jì)的體溫計(jì)體溫測(cè)量的準(zhǔn)確度很高,能夠滿足對(duì)測(cè)量人體體溫的要求[12-14]。
本文設(shè)計(jì)的智能體溫計(jì)下位機(jī)是采用MSP430單片機(jī)作為控制器,比采用STC89C52單片機(jī)作為控制器設(shè)計(jì)的測(cè)溫儀處理速度快,測(cè)量值與標(biāo)準(zhǔn)溫度數(shù)據(jù)相比最大絕對(duì)誤差為0.2℃,具有很高的精度。智能體溫計(jì)的APP能夠顯示被測(cè)者的體溫?cái)?shù)據(jù),并能夠通過語音把體溫測(cè)量值播報(bào)出來,解決了傳統(tǒng)水銀體溫計(jì)及電子體溫計(jì)不便于視力不好人群使用的缺點(diǎn)[15-17],體溫?cái)?shù)據(jù)及被測(cè)者信息能夠保存在SD上,方便體溫?cái)?shù)據(jù)的記錄及日后查閱,對(duì)于需要長(zhǎng)期監(jiān)測(cè)體溫并對(duì)體溫?cái)?shù)據(jù)進(jìn)行對(duì)比的使用者具有重要意義。
表1 體溫計(jì)的準(zhǔn)確性的測(cè)量結(jié)果(℃)