【作 者】王帥,沈浩,駱長澤,沙憲政
中國醫(yī)科大學(xué)生物醫(yī)學(xué)工程系,沈陽市,110122
Android平臺下藍牙溫度測量
【作 者】王帥,沈浩,駱長澤,沙憲政
中國醫(yī)科大學(xué)生物醫(yī)學(xué)工程系,沈陽市,110122
利用智能手機平臺和藍牙實現(xiàn)溫度數(shù)據(jù)的實時傳輸顯示。使用Arduino Uno r3板采集DS18B20數(shù)字溫度傳感器采集的溫度數(shù)據(jù),通過HC-05藍牙將數(shù)據(jù)傳輸給Android系統(tǒng)的智能手機,實現(xiàn)溫度數(shù)據(jù)的傳輸。利用Java語言編寫Android開發(fā)環(huán)境下的應(yīng)用程序,可以實現(xiàn)實時溫度數(shù)據(jù)顯示、存儲和繪制出溫度波動圖形。溫度傳感器經(jīng)過實驗測試,滿足人體體溫測量精度和準確度。該文可以為其他移動醫(yī)療手機智能產(chǎn)品開發(fā)提供借鑒。
Arduino;藍牙;溫度測量;安卓
隨著移動智能產(chǎn)品的越來越普及,相關(guān)設(shè)備的技術(shù)和性能也都在飛快的發(fā)展。因此不少傳統(tǒng)或新興產(chǎn)業(yè),正逐步將目光集中到手機等便攜設(shè)備上[1]。手機的移動性和便攜性具有電腦所難以取代的地位,是真正的可以為人人所擁有、隨時隨地在線的網(wǎng)絡(luò)終端。移動醫(yī)療預(yù)計帶來的產(chǎn)值也會由2013年的24億美元飆升至2017年的265億美元[2]。移動醫(yī)療越來越受到重視,與此相關(guān)研究也日益增多起來。
Arduino是源自意大利的一個開源的硬件項目平臺,該平臺包括一塊具有簡單I/O功能的電路板以及一套程序開發(fā)環(huán)境軟件。Arduino可以用來開發(fā)交互產(chǎn)品,比如它可以讀取大量的開關(guān)和傳感器信號,并且可以控制電燈、電機和其他各式各樣的物理設(shè)備。Arduino也可以開發(fā)與PC相連的周邊裝置,能在運行時與PC上的軟件通信[3]。Arduino可以看做一個帶有一系列AVR單片機的最小系統(tǒng),是一款便捷、靈活、方便上手的開源電子原型平臺,并且包含硬件和獨立的軟件,雖然體積很小但其功能和易操作性已經(jīng)足夠強大。實驗采用Arduino Uno R3型號板,該電路板是基于Atmel 公司的ATmega8單片機。電路板上有串口、電源電路、擴展插座和其他一些必要元件[4]。
DS18B20數(shù)字溫度傳感器是美國DALLAS公司生產(chǎn)的單總線數(shù)字溫度傳感器。它可以將采集的溫度信號直接以數(shù)字信號形式傳遞給輸出端??蓱?yīng)用于各種領(lǐng)域、各種環(huán)境溫度測量,使用方便靈活、測試精度高。本設(shè)計采用的是10 bit采樣精度的溫度采集。
藍牙技術(shù)是一種無線數(shù)據(jù)和語音通信的開放性全球規(guī)范,它以低成本的近距離無線傳輸為基礎(chǔ),為固定或移動設(shè)備建立起一個特別的連接。另外藍牙還具備功率小、體積小、抗干擾等傳輸優(yōu)點,適合于語音傳輸和數(shù)據(jù)傳輸。目前,藍牙產(chǎn)品已經(jīng)被廣泛應(yīng)用于移動通信、計算機及周邊設(shè)備、汽車、工業(yè)控制、智能家居、移動醫(yī)療等多個領(lǐng)域[5]。
藍牙模塊利用藍牙串口協(xié)議SPP(Serial Port Profile),將采集的溫度信號發(fā)送出去。藍牙協(xié)議由下至上可以分為底層協(xié)議、中間層協(xié)議及應(yīng)用層三層協(xié)議。藍牙串口協(xié)議SPP定義了如何設(shè)置虛擬串行端口
以及如何連接兩個藍牙設(shè)備,并提供了不同廠商的設(shè)備之間特定服務(wù)和使用情況的互通性操作[6]。SPP協(xié)議比原有串口仿真RFCOMM協(xié)議層更上一層,更接近應(yīng)用層協(xié)議,SPP協(xié)議使用RFCOM協(xié)議進行串口仿真,并且具有更好的兼容性和控制性。
圖1 硬件連接示意圖Fig.1 Hardware connection diagram
Arduino開發(fā)環(huán)境是采用Java編寫的,軟件不需要安裝,開發(fā)環(huán)境使用的語法與C/C++相似,非常容易使用,具有開源性,界面友好,用戶可以通過USB接口進行燒寫程序和傳輸數(shù)據(jù),作為開源性的軟件,Arduino IDE是以AVR-GCC和其他一些開源軟件為基礎(chǔ),另一個特點是兼容性好,可以適用多個平臺。
Arduino引腳上3.3 V輸出為藍牙模塊供電。溫度數(shù)據(jù)信號經(jīng)過單片機的采集然后串口傳遞給藍牙模塊,再由藍牙模塊將數(shù)據(jù)傳遞給PC機。在PC環(huán)境下對單片機進行硬件調(diào)試,然后通過藍牙將Arduino板與PC進行遠程連接。編寫程序?qū)崿F(xiàn)與PC的數(shù)據(jù)傳輸來檢驗數(shù)據(jù)傳輸速度和準確性。
Android是基于Linux內(nèi)核的軟件平臺和操作系統(tǒng),它是Google公司專門為移動設(shè)備開發(fā)的平臺,其中包含操作系統(tǒng)、中間件和核心應(yīng)用等。Android系統(tǒng)的進程管理、安全性、內(nèi)存管理、網(wǎng)絡(luò)協(xié)議、驅(qū)動模型等都是基于Linux內(nèi)核的[7],但只提供基本功能的API,其他的應(yīng)用軟件則由各公司自行開發(fā),也允許任何移動終端廠商加入到Android聯(lián)盟中來。使用Java或C++等語言程序編寫應(yīng)用程序。其優(yōu)點是開放性,官方推薦Eclipse軟件作為開發(fā)平臺。
Arduino 單片機采用USB供電或者電池供電。DS18B20溫度傳感器產(chǎn)生隨溫度變化的數(shù)字信號,該數(shù)字信號通過單片機引腳接入單片機,然后由單片機串口轉(zhuǎn)成藍牙SPP協(xié)議由藍牙將數(shù)據(jù)發(fā)送出去。最后由Android系統(tǒng)設(shè)備接收和顯示數(shù)據(jù)。
溫度測量的主要功能由兩部分構(gòu)成,第一部分為藍牙搜索和連接部分。點擊Android圖標進入到藍牙連接界面。藍牙可見按鈕能夠讓本機藍牙能夠被其他設(shè)備搜索和識別。藍牙開關(guān)負責本機藍牙的打開和關(guān)閉。點擊設(shè)備搜索按鈕可以搜索到附近可以連接的藍牙設(shè)備,當有可以連接的設(shè)備時,會在界面中部ListView顯示可以連接設(shè)備的名稱和Mac地址。點擊設(shè)備名稱圖標,如果該設(shè)備正在發(fā)送符合格式的數(shù)據(jù)時,溫度測量APP將進入到數(shù)據(jù)接收界面。
圖2 信號傳播示意圖Fig.2 Signal propagation diagram
圖3 Android手機程序流程圖Fig.3 Android program schedule diagram
數(shù)據(jù)接收界面布局又由兩部分組成:界面中部SurfaceView可以將實時收到的溫度數(shù)值,利用Android系統(tǒng)的繪圖工具Paint將數(shù)值繪制到背景的畫布Canvas上,可以顯示溫度的走勢和趨勢。界面上部TextView組件可以將藍牙傳輸過來的數(shù)值以文本的形式實時顯示溫度值,每經(jīng)過0.5 s接收到另一個溫度數(shù)值傳輸過來時刷新當前文本。利用Handler打開一個新線程,來接收有藍牙傳遞過來的新的數(shù)據(jù),這樣就避免了在主繪圖界面中,加入了文本溫度更新界面而使程序出現(xiàn)錯誤,實現(xiàn)溫度數(shù)值和溫度變化圖形同時實時顯示。
當程序需要結(jié)束時,點擊左下腳的返回按鈕,程序會彈出一個對話框,提示直接退出或者將程序儲存。需要數(shù)據(jù)存儲時,輸入文件名,點擊儲存文件按鈕后可以儲存為手機SD卡固定路徑下的一個.txt文件。點擊直接退出按鈕就可以將程序退出。將儲存數(shù)據(jù)的文本文檔打開,可以顯示已經(jīng)記錄下的溫度數(shù)值。
醫(yī)療設(shè)備的溫度計的主要用途體現(xiàn)在測量溫度的精度和準確度上。使用德國JULABO F12-ED精確控溫水浴作對比試驗,該設(shè)備的精度為0.1oC。因為溫度傳感器主要用作人體體溫測量,所以選擇從32oC~43oC的范圍內(nèi)12個連續(xù)溫度點進行測量。首先利用控溫水浴隨機一個溫度值來校正DS18B20溫度傳感器,然后開始實驗。將溫度傳感器插入水浴中,待水浴顯示的溫度數(shù)值保持3 min內(nèi)不變時記錄數(shù)據(jù)。數(shù)據(jù)結(jié)果顯示:溫度傳感器測量的12組數(shù)據(jù)最大的絕對誤差為±0.2oC。標準誤差RMSE為±0.1oC,說明測量的準確度很高。最大的相對誤差為0.5%,傳感器的溫度分辨率為0.06oC,數(shù)據(jù)每0.5 s變化一次,所以測量的精度也很高。滿足對人體體溫的測量。
移動醫(yī)療作為新興產(chǎn)業(yè)已經(jīng)越來越融入到人們生活中,也倍受科研工作者和相關(guān)程序開發(fā)人員的青睞。本文研究了利用Arduino單片機和藍牙模塊同手機之間進行數(shù)據(jù)傳輸,達到無線溫度測量的目的。DS18B20溫度傳感的精度和準確度很高,能夠滿足人體體溫測量的需要。Android 手機端可以實時顯示溫度值和變化趨勢,可以存儲數(shù)據(jù),方便記錄,可開發(fā)為家用體溫監(jiān)護或其他移動醫(yī)療產(chǎn)品。
[1] 張曉丁, 劉靜. 基于手機的遠程可視化醫(yī)學(xué)技術(shù)研究[J]. 中國醫(yī)療器械信息, 2010, 16(10): 28-33,79.
[2] mHealth App Developer Economics 2014[R/OL]. http:// research2guidance.com.2014-06-01.
[3] 程晨. Arduino開發(fā)實戰(zhàn)指南[M]. 北京: 機械工業(yè)出版社, 2012.
[4] Dale Wheat, Aduino技術(shù)內(nèi)幕[M]. 北京: 人民郵電出版社,2013.
[5] 莊弈琪. 藍牙-夢想與現(xiàn)實[M]. 北京: 機械工業(yè)出版社,2002.
[6] Bluetooth. Specification of the Bluetooth System[S].2012.
[7] 王國輝. Android開發(fā)實戰(zhàn)[M]. 北京: 清華大學(xué)出版社, 2013.
Temperature Measurement with Bluetooth under Android Platform
【W(wǎng)riters】WANG Shuai, SHEN Hao,LUO Changze,SHA Xianzheng
Department of Biomedical Engineering, China Medical University, Shenyang, 110122
To realize the real-time transmission of temperature data and display using the platform of intelligent mobile phone and bluetooth. Application of Arduino Uno R3 in temperature data acquisition of digital temperature sensor DS18B20 acquisition, through the HC-05 bluetooth transmits the data to the intelligent smart phone Android system, realizes transmission of temperature data. Using Java language to write applications program under Android development environment, can achieve real-time temperature data display, storage and drawing temperature fluctuations drawn graphics. Temperature sensor is experimentally tested to meet the body temperature measurement precision and accuracy. This paper can provide a reference for other smart phone mobile medical product development.
Arduino, bluetooth, temperature measurement, Android
TH771
A
10.3969/j.issn.1671-7104.2015.03.007
1671-7104(2015)03-0181-02
2014-12-31
遼寧省自然科學(xué)基金(201102289);
沈陽市科技專項資金(F12-193-9-12)
沙憲政,E-mail: xzsha@mail.cmu.edu.cn