久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 8119|回復: 0
打印 上一主題 下一主題
收起左側(cè)

智能化家庭健康監(jiān)護系統(tǒng)前端開發(fā)與設(shè)計論文

[復制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:268233 發(fā)表于 2017-12-28 11:20 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式

1 緒論

1.1 課題來源及背景

1.2 課題研究內(nèi)容及結(jié)構(gòu)

1.3 主要創(chuàng)新點

2 硬件電路設(shè)計

2.1 系統(tǒng)硬件電路構(gòu)成

2.2  Arduino微處理器最小系統(tǒng)

2.2.1 單片機控制芯片

2.2.2  ATMEGA2560單片機電路設(shè)計

2.3 藍牙無線通信模塊

2.4  ZigBee無線通信模塊

2.5 紅外測溫模塊

2.6 血氧飽和度傳感器

2.6.1血氧飽和度測量原理

2.6.2 血氧飽和度探頭

2.7  SD卡存儲模塊

3 系統(tǒng)軟件編程設(shè)計

3.1  軟件開發(fā)環(huán)境

3.1.1  Arduino IDE簡介

3.2  軟件各模塊程序設(shè)計

3.2.1  血氧飽和及心率數(shù)值采集

3.2.2  體溫溫度數(shù)值采集

3.2.3  藍牙無線通信

3.2.4  ZigBee無線通信

3.3  Android監(jiān)護軟件設(shè)計

3.3.1  系統(tǒng)的開發(fā)環(huán)境與安裝

3.3.2  Android應(yīng)用程序開發(fā)過程

3.3.3  主要應(yīng)用模塊的實現(xiàn)

4 系統(tǒng)整體功能測試

4.1 智能化家庭健康監(jiān)護系統(tǒng)實物圖

總結(jié)與展望

參考文獻

致謝

附錄A

智能化家庭健康監(jiān)護系統(tǒng)前端設(shè)計與開發(fā)

摘要:隨著人們生活質(zhì)量的提高,越來越多的人將關(guān)注的重心轉(zhuǎn)移到身體健康上面。醫(yī)療科技的日新月異,家用耳溫槍、體脂分析儀、便攜式血壓計、運動手環(huán)等測量設(shè)備層出不窮,使得各項指標的測量越來越方便。本課題提出了一種智能化家庭健康監(jiān)護系統(tǒng)前端方案,利用紅外MLX90614測量出人體體溫;通過血氧飽和度模塊測量的血氧和脈率;通過ZigBee傳輸給主板上的ZigBee協(xié)調(diào)器,主板接收到體溫數(shù)值后,均在TFT液晶屏上顯示多種生理參數(shù)的數(shù)值,并且繪制實時的血氧飽和度曲線,每當測量結(jié)束后會將測得的數(shù)據(jù)記錄在SD卡中,最后通過藍牙模塊將結(jié)果發(fā)送給手機APP客戶端,在APP上也可以非常直觀的看到采集的數(shù)據(jù)。本系統(tǒng)可以實現(xiàn)多生理參數(shù)同時采集、即時圖形顯示、遠程通信等功能。溫度、血氧、心率測量數(shù)據(jù)的可靠性和系統(tǒng)的穩(wěn)定性均可達到遠程醫(yī)療應(yīng)用需求。


Front-end Design and Exploitation of Intelligent Home Health Monitoring System

Name Jie Mei

IntroducerHuashan Ye

School of Biomedical Engineering, Hubei University of Science and Technology ,

Abstract: As the continuous improvement of people's living standards, more and more people began to pay special attention to their own health. With modern science and technology advances, home thermometers, body fat analyzer, a portable blood pressure monitors, sports bracelet and other measuring equipment after another, so that the indicators measuring more convenient. This paper presents a family of intelligent health monitoring system, which solutions using MLX90614 to measure the body temperature, the body temperature through ZigBee transmitted to the coordinator on the motherboard, the motherboard temperature value is received, oxygen saturation measured by the module blood oxygen. Pulsing rate values are shown in a variety of physiological parameters on the TFT LCD screen, real-time rendering and oxygen saturation curve, every measure will be measured after the data recorded on an SD card, and finally through Bluetooth module sends the results to a mobile phone APP client, the APP can also be very intuitive to see the data collected. This system can achieve simultaneous acquisition of multiple physiological parameters, real-time graphic display, remote communications, and other functions. Temperature, blood oxygen, heart rate measurement reliability and stability of the system can reach remote medical applications.

1 緒論1.1 課題來源及背景

人類社會從猿類時代進化到現(xiàn)在的高科技時代,人們的生活需求也一直在改變,從對基本溫飽的需求轉(zhuǎn)變?yōu)楝F(xiàn)在的健康需求,正在逐步升華。2013年 11 月,有關(guān)調(diào)查報告指出:我國有近 65%的人群是處于亞健康狀態(tài)的,這一特殊人群雖然沒有直接表現(xiàn)出明確的疾病,但是他們內(nèi)在活力卻不斷下降,長此以往,會非常容易引起各種疾病,因此,這部分人群特別需健全、便捷、舒適的家庭健康監(jiān)護及醫(yī)療保健服務(wù)[1]。然而目前在醫(yī)院中使用的大型醫(yī)療監(jiān)護設(shè)備無法滿足在家庭對這部分特殊群體的健康監(jiān)測,需要開發(fā)設(shè)計一種更加舒適、便捷、廉價、人性化的智能化家庭健康監(jiān)護系統(tǒng)來適應(yīng)人們對健康監(jiān)護設(shè)備的應(yīng)用需求。

繼互聯(lián)網(wǎng)之后,互聯(lián)網(wǎng)+的時代也漸漸到來,智能這個詞也唄使用的越來越廣泛,有關(guān)的智能技術(shù)也逐漸浮現(xiàn)出來,并且相當多的領(lǐng)域也開始使用智能技術(shù)[2]。“智能化”正在慢慢地使人們的生活健康方式發(fā)生變化。如今智能化的健康醫(yī)療產(chǎn)品在設(shè)計方面主要有以下兩種體現(xiàn):①智能化健康醫(yī)療產(chǎn)品在其功能上更加符合人們的需求和愿望。比如,現(xiàn)在的智能電子血壓儀,替代了以往老式的血壓儀,其體積變得更加輕盈,不僅使用場合不再受限制,而且可以隨時隨地的記錄用戶和患者自身的血壓狀況,可以幫助其管理自身健康和病情,并且通過最近3次血壓平均值顯示更精準。自動感應(yīng)高度功能,正確提示使用者的測量姿勢,獲得準確精值。并且通過智能手機連接應(yīng)用實時記錄健康信息。傳統(tǒng)的血壓儀同樣也運用的物理及生物技術(shù),但與傳統(tǒng)相比,新型智能血壓儀本質(zhì)性區(qū)別在于它的功能變得智能化,更加滿足人們的需求,實現(xiàn)了血壓問題患者的愿望[3]。②這類健康醫(yī)療產(chǎn)品的操作非常便捷,人機交互友好。友好的人機交互會給使用者帶來不錯的使用體驗。比如,在以往的醫(yī)療環(huán)境中,化驗血尿等常規(guī)檢查的流程極為煩冗,而且等待的排隊時間會讓人失去耐心。現(xiàn)在醫(yī)院中為患者提供的自動化驗以及自動取單機,只需要把取樣放到機器中,錄入病例里的個人信息二維碼,機器會提示過多久來取化驗單。取單時只需把病例上的二維碼掃入機器,單子便可輕松取出。這種智能化醫(yī)療設(shè)備不僅為患者節(jié)省了時間,同時也為醫(yī)護人員減輕了很多工作負擔[4]。

智能化家庭健康監(jiān)護系統(tǒng)就是一種新型家庭醫(yī)療監(jiān)護設(shè)備,將人體健康數(shù)據(jù)采集,并且具有數(shù)據(jù)交叉分析與處理以及本地健康問題咨詢和云共享等多種功能,可以將傳統(tǒng)的病人去醫(yī)院就診模式轉(zhuǎn)變?yōu)榭蛻艚】敌畔崟r上傳至云端服務(wù)器,同時也會傳送給手機APP,能夠由醫(yī)生對病人的信息進行監(jiān)護和管理,主動上門就診。

1.2 課題研究內(nèi)容及結(jié)構(gòu)

本文設(shè)計希望通過前端硬件采集多生理參數(shù),通過藍牙遠程傳輸給手機APP,從而實現(xiàn)對身體健康的遠程監(jiān)護。主要的研究工作在于對多生理參數(shù)同時采集和藍牙傳輸系統(tǒng)的設(shè)計方法,以及對整體框架進行分析,主要從硬件系統(tǒng)設(shè)計和軟件編程兩個方面展開工作設(shè)計和開發(fā)一個智能化家庭健康監(jiān)護系統(tǒng)。整個系統(tǒng)分為兩個部分:一是前端硬件,進行生理參數(shù)的采集、分析處理以及遠程傳輸;二是手機APP客戶端,負責接收前端硬件采集的數(shù)據(jù),并進行實時顯示。前端硬件包括:ATMEGA2560單片機、非接觸式紅外測溫模塊、血氧飽和測量模塊、BC417143B藍牙模塊、TFT液晶屏、供電系統(tǒng)。軟件設(shè)計方面,采用C語言編寫Arduino的程序,JAVA語言編寫手機APP程序,實現(xiàn)與硬件藍牙對接,接受數(shù)據(jù)后進行實時顯示。

本文首先介紹了硬件電路設(shè)計的思路,然后詳細闡明了芯片的選擇及其各自的特點,也引用了部分有關(guān)該課題設(shè)計方面的基本知識。然后敘述了手機APP的編程方法和過程,使用流程圖和程序代碼比較直觀的介紹了本設(shè)計的編程思路以及需要注意的一些問題。最后是硬件和軟件測試,通過具體的測量和控制說明智能化家庭健康監(jiān)護系統(tǒng)開發(fā)與設(shè)計的合理性和完整性。

1.3 主要創(chuàng)新點

本課題設(shè)計主要涉及到多生理參數(shù)的同時采集以及波形的實時顯示,還有硬件設(shè)備與手機APP通過藍牙對接建立通信鏈路。主要創(chuàng)新之處有以下幾點:

(1)在無線遠程傳輸上采用2.4GHz的ZigBee模塊和藍牙模塊,可以實現(xiàn)移動設(shè)備與前端硬件設(shè)備之間的短距離數(shù)據(jù)交換,并且在功耗方面具有極大優(yōu)勢,其自身具有超低功耗的特點,此外,傳輸數(shù)據(jù)穩(wěn)定可靠,支持雙向傳輸。

(2)實現(xiàn)多生理參數(shù)采集,本系統(tǒng)在運行時,會同時測量使用者的血氧飽和度、脈搏、體溫,并且將具體的數(shù)值實時顯示在液晶屏上,較為直觀。另外,本系統(tǒng)設(shè)計為便攜式,配備有可充電的移動電源,便于隨身攜帶并使用。


2 硬件電路設(shè)計2.1 系統(tǒng)硬件電路構(gòu)成

本設(shè)計是以ATMEGA2560單片機為微處理器,與非接觸式紅外測溫模塊、血氧飽和度測量模塊、藍牙、ZigBee、液晶組成了一個集多生理參數(shù)數(shù)據(jù)采集、處理、液晶顯示、無線傳輸、手機APP顯示為一體的智能化家庭健康監(jiān)護系統(tǒng)。系統(tǒng)硬件電路主要由紅外測溫傳感器、血氧飽和度測量模塊、單片機、TFT液晶顯示、藍牙傳輸模塊和ZigBee傳輸模塊組成。其原理圖如圖2.1所示:

圖2.1 硬件原理構(gòu)成圖

生理參數(shù)采集模塊中,在單片機ATMEGA2560的控制下,非接觸式紅外測溫傳感器會先采集外界的溫度并經(jīng)過模擬轉(zhuǎn)換后通過單總線接口傳輸給微控制器進行判斷處理,然后通過ZigBee傳輸模塊發(fā)送數(shù)據(jù)給主板上的ZigBee協(xié)調(diào)器。血氧飽和度采集數(shù)據(jù)后通過串口傳輸給單片機,經(jīng)過處理后數(shù)據(jù)一方面在模塊上通過TFT液晶顯示器進行數(shù)值和波形的實時顯示,另一方面通過藍牙無線模塊發(fā)送到手機APP客戶端進行顯示。在APP客戶端接收數(shù)據(jù)時,需要開啟手機藍牙功能,在客戶端搜索附近的藍牙設(shè)備,找到ID為BluetoothBee并輸入連接密碼建立通信鏈路。然后客戶端就會收到來自前端硬件的生理參數(shù)數(shù)據(jù),APP收到監(jiān)護系統(tǒng)的數(shù)據(jù)后會判斷該數(shù)據(jù)是否有效,若有效,則在手機屏幕上顯示出來。

2.2  Arduino微處理器最小系統(tǒng)

本設(shè)計采用的MCU是ATMEGA2560芯片。ATMEGA2560芯片適用于需要大量IO接口的設(shè)計。下面主要介紹所用芯片及相應(yīng)電路設(shè)計。

2.2.1 單片機控制芯片

ATMEGA2560的內(nèi)部資源非常豐富,提供了大量的IO接口,包括有54路數(shù)字IO口,其中有16路可以作為PWM輸出,此外,還有16路模擬采集引腳,每一路模擬輸入在芯片內(nèi)部為10位的A/D數(shù)據(jù)轉(zhuǎn)換器,可以采集多路模擬量[5]。在通用全雙工異步串行口(UART)方面,ATMEGA2560具有3路串行口可以使用,此外,還有一些引腳可以通過程序修改來實現(xiàn)虛擬軟串口,故在串行口通信方面ATMEGA2560具有豐富的資源。

2.2.2  ATMEGA2560單片機電路設(shè)計

Arduino ATMEGA2560的最小系統(tǒng)電路與STC系列的51單片機基本類似,對于AREF引腳,是AD轉(zhuǎn)換的參考電壓輸入端,即模擬端口輸入的電壓值是與此處的參考電壓相比較的,開發(fā)者可以通過改變這個引腳以及程序中的模擬電壓輸入設(shè)置函數(shù),來實現(xiàn)測量電壓范圍的改變[6]。在燒寫程序時,可通過RX0和TX0引腳以及GND引腳與PC機相連來實現(xiàn)。電路設(shè)計圖如圖2.2所示:

圖2.2  Arduino mega2560電路設(shè)計圖

2.3 藍牙無線通信模塊

藍牙通信技術(shù)是一種工作在2.4 GHz 頻段的無線通信技術(shù)。目前藍牙技術(shù)已經(jīng)逐漸趨向成熟。因為藍牙技術(shù)的日趨成熟,在使用和遠程傳輸方面具有非常好的系統(tǒng)穩(wěn)定性和抗干擾能力。本設(shè)計使用的藍牙模塊如下圖2.3所示:

     

圖2.3 藍牙傳輸模塊(圖A為正面,圖B為反面)

在局域網(wǎng)范圍內(nèi),可以使用藍牙無線傳輸給具有藍牙功能的設(shè)備發(fā)送數(shù)據(jù),并且可以實現(xiàn)自主組網(wǎng)。在本設(shè)計中,藍牙無線通信模塊采用的是BC417143B這款芯片,該芯片具有內(nèi)置天線、有超低功耗模式、收發(fā)靈敏度高、成本低、低功耗等優(yōu)點,而且只需配備少許外圍器件就可以實現(xiàn)其強大的功能。

1、主要特性

藍牙模塊具有全球開放的2.4GHz ISM 頻段免許可證;功率等級為Class 2,其自身為主從一體,抗干擾的能力比較優(yōu)秀,因此非常適合應(yīng)用在工業(yè)控制的場合;具有12路可AT命令編程的輸出IO口,1路帶硬件流控的UART接口,3路8位ADC輸入接口,板載有藍牙天線;無線串口數(shù)據(jù)透傳,其UART兼容3.3~5V的接口,具有128-bit安全校驗機制,符合ROHS等多種國際認證[7];運行在可配對連接模式時,電流最低可達3.3mA,在通訊模式下最低可達20mA;低功耗3.0 -3.6V 工作,關(guān)機模式下為29uA;

2、開發(fā)方式

藍牙模塊的開發(fā)方式分為2兩類:一類是基于TI公司的CC2560雙模藍牙的協(xié)議棧開發(fā),即在TI公司開放的藍牙協(xié)議棧上做二次開發(fā);一類是基于藍牙透傳模塊的AT指令開發(fā),這類開發(fā)相較前者而言難度稍微小一點,是使用串口與藍牙通信,通過發(fā)送AT指令的方式來對藍牙模塊進行配置以及相關(guān)的控制功能。

本設(shè)計采用的藍牙芯片是BC417143,支持藍牙2.0版本的標準協(xié)議,默認波特率為9600b/s。藍牙芯片與另外一個藍牙設(shè)備可以進行遠程無線通信,同時,藍牙芯片也可以通過串口與單片機進行通信,單片機可以通過串口通信的方式用AT指令控制藍牙芯片。

2.4  ZigBee無線通信模塊

ZigBee是一種低功耗局域網(wǎng)通信協(xié)議。該名字是源自蜜蜂的八字舞,蜜蜂之間是通過飛行和嗡嗡抖動自己的翅膀來與同伴進行溝通交流的。ZigBee技術(shù)的突出特點是復雜度較低、自組網(wǎng)、超低功耗、低成本,非常適用于蜂窩網(wǎng)中的遠程信息傳輸與自動控制,這種協(xié)議也可以嵌入各種MCU中進行使用。

本設(shè)計采用的ZigBee芯片為CC2530芯片,內(nèi)嵌有標準ZigBee協(xié)議棧,在芯片內(nèi)部集成了8051內(nèi)核,是增強型的51單片機。在ZigBee網(wǎng)絡(luò)中,所有的節(jié)點設(shè)備分為3種類型,一種是協(xié)調(diào)器,一種是路由器,一種是終端。在同一個網(wǎng)絡(luò)中,需要一個協(xié)調(diào)器來啟動并維護整個網(wǎng)絡(luò),這個協(xié)調(diào)器負責所在網(wǎng)絡(luò)中的各個節(jié)點設(shè)備的16位地址分配(為自動分配)[8]。路由模塊的作用是在協(xié)調(diào)器模塊啟動后,協(xié)助其維護整個網(wǎng)絡(luò)中的設(shè)備,同時,路由模塊也可以作為信息傳遞的中轉(zhuǎn)站,使得信息傳遞的距離更遠。而終端設(shè)備即處于網(wǎng)絡(luò)邊緣的設(shè)備,一般用于控制器,執(zhí)行來自路由器或協(xié)調(diào)器的命令。

ZigBee網(wǎng)絡(luò)的組建方式各種各樣,有星狀,網(wǎng)狀,樹狀等等。星狀網(wǎng)絡(luò),是以協(xié)調(diào)器為中心,向四周發(fā)散開來,連接路由設(shè)備或者終端設(shè)備。網(wǎng)狀網(wǎng)絡(luò),是由協(xié)調(diào)器、路由器組成的一個類似蜘蛛網(wǎng)般的網(wǎng)狀網(wǎng)絡(luò),路由與協(xié)調(diào)器之間可以互發(fā)互收數(shù)據(jù)。

本設(shè)計使用的ZigBee模塊為無線透傳模式,通過軟件配置模塊的PAN ID,即網(wǎng)絡(luò)號,用于分辨不同的網(wǎng)絡(luò),所以在同一個網(wǎng)絡(luò)中的設(shè)備的PAN ID需要設(shè)置為同一個ID[9]。其次,需要設(shè)置ZigBee的串口通信波特率,用于與外部單片機的通信。ZigBee模塊的實物圖如下圖2.4所示:


   

圖2.4  ZigBee模塊的實物圖(圖A為正面,圖B為反面)

每個ZigBee模塊在出廠時,就有一個終身屬于它的64位地址,例如這個ZigBee模塊的唯一64位地址為0x0013a20040e830dd,這個唯一地址可以用于在一個網(wǎng)絡(luò)中的唯一識別,也可以作為數(shù)據(jù)接收終端地址。

2.5 紅外測溫模塊

MLX90614是一個應(yīng)用于非接觸式的紅外溫度傳感器,其集成了紅外探測熱電堆芯片與信號處理專用集成芯片,且全部都封裝在TO-39。17位ADC、低噪聲放大器和強大的DSP處理單元的全集成,使傳感器實現(xiàn)了高分辨率,高精度的測量。處理好的被測目標溫度和環(huán)境溫度均存儲在MLX90302的RAM內(nèi),分辨率為0.01 ˚C。傳感器的測量結(jié)果均出廠校準化,數(shù)據(jù)接口為數(shù)字式的PWM和SMBus(System Management Bus) 輸出。傳感器出廠默認,上電復位時為SMBus通信[10]。

  • 主要特性

對于MLX90614芯片而言,引出了4個引腳,它們分別為VSS、SCL/Vz、PWM/SDA、VDD。接地端為VSS,接地端也與金屬封裝連通,使得信號更好,SCL/Vz是SMBus串行時鐘的輸入端。 VDD為電源的輸入端。

對于脈寬調(diào)制,PWM的數(shù)位帶寬為10bit,PWM的輸出周期為1.024ms,輸出高電位電壓值時,I=2mA,輸出低電位電壓值時,I=2mA,輸出驅(qū)動電流為7mA,輸出反向電流為13.5mA。對于SMBus標準雙線的參數(shù)如下表2.5所示:

表2.5  SMBus標準雙線的參數(shù)

參數(shù)

測試條件

最小值

典型值

最大值

單位

子設(shè)備地址

出廠設(shè)置

5A

Hex

SMBus請求時間

SCL線低電位

1.44

ms

低位超時值

SCL線低電位

27

33

ms

高位超時值

SCL線高電位

45

55

us

主設(shè)備接收信號

準備時間

第八個SCL時鐘下降沿,主設(shè)備

0.5

1.5

us

主設(shè)備接收信號

保持時間

第九個SCL時鐘下降沿,主設(shè)備

1.5

2.5

us

子設(shè)備接收信號

準備時間

第八個SCL時鐘下降沿,子設(shè)備

2.5

us

子設(shè)備接收信號

保持時間

第九個SCL時鐘下降沿,主設(shè)備

1.5

us


  • 工作原理

在自然界中,通過對某物體自身的紅外輻射收集并測量可以較精確的得出該物體的體表溫度。本設(shè)計使用的紅外測溫模塊由光電探測器、光學系統(tǒng)、信號處理和信號放大器及輸出等部分組成。紅外測溫的原理大致如下圖2.6所示:

圖2.6 紅外測溫原理圖

MLX90614系列測溫模塊是由Melexis公司生產(chǎn)的,用于非接觸式紅外測溫非常方便。這家公司生產(chǎn)的所有模塊在出廠前都進行了必要的校驗,使得紅外測溫模塊可以直接輸出線性信號,免去了復雜的校正過程。

環(huán)境溫度和目標溫度由81101內(nèi)置的一個熱電偶測定測量,兩路溫度信號經(jīng)由放大器放大后,再由一個17-bit的模數(shù)轉(zhuǎn)換器和較強大的數(shù)字信號處理單元后輸出。

  • 操作流程

MLX90614的SMBus協(xié)議:

1           7            1     1            8             1    1

S

Slave Address

Wr

A

Data Byte

A

P

S     Start condition(起始位)

Sr    Repeated start cordition(重復起始位)

Rd    Read(讀標志位)

Wr    Write(寫標志位)

A     Acknowledge(應(yīng)答位)

S     Stop Condition(停止位)

PEC   Packet Error Code(出錯數(shù)據(jù)包)

數(shù)據(jù)傳輸時序圖入下圖2.7所示:

圖2.7 數(shù)據(jù)傳輸時序圖

PWM/SDA為數(shù)據(jù)腳,若數(shù)據(jù)腳需要變化,將SCL引腳拉低300ns之后即可。而數(shù)據(jù)被捕獲需要在SCL為上升沿的時刻。數(shù)據(jù)傳輸時,16bit數(shù)據(jù)需分兩次傳輸,每個字節(jié)均按照高位(MSB)在前,低位(LSB)在后的順序傳輸。

2.6 血氧飽和度傳感器2.6.1血氧飽和度測量原理

血氧飽和度在進行測量時,使用兩個發(fā)光二極管,發(fā)射的波長分別為660nm和940nm,在手指的上下兩端分別放置發(fā)射管和接受管。發(fā)射管發(fā)射的光波透過手指后會在另一端被接受管接受,因為人體的內(nèi)部組織對于這種光的吸收系數(shù)是恒定的,所以此時的光波會有一定的衰減,通過衰減程度再配合一定的計算方法,我們便可以得出測量者的血氧飽和度為多少,如圖2.8所示

圖2.8 血氧飽和度測量原理

2.6.2 血氧飽和度探頭

血氧飽和度探頭是測定人體血液中的氧濃度即血氧飽和度的一種儀器,傳感器由兩只發(fā)光管和一只光電管組成,在外科手術(shù)或危重病人的監(jiān)護中可及時了解血液中氧含量。

在本設(shè)計中發(fā)射管采用的是660~905nm波長的發(fā)射管,接收管為235。這種血氧飽和度探頭為數(shù)字血氧探頭,其傳輸出來的信號為數(shù)字信號[11]。在采集模塊上,使用了一塊STM32核心芯片進行初步的采集以及處理,然后通過UART接口與atmega2560芯片相連,將數(shù)據(jù)傳輸過去,由atmega2560進行下一步的處理。其中數(shù)據(jù)傳輸協(xié)議入下表2.5.2所示:

與單片機進行數(shù)據(jù)傳輸時是默認設(shè)置:波特率為9600b/s;每秒發(fā)送50個數(shù)據(jù)包,每個數(shù)據(jù)包含有5個字節(jié)。





字節(jié)0:

描述

信號強度0

信號強度1

信號強度2

信號強度3

1=搜索超時

1=未接傳感器

1=脈搏跳動聲

1(同步位)

0

1

2

3

4

5

6

7

字節(jié)1:

描述

體積描記圖0

體積描記圖1

體積描記圖2

體積描記圖3

體積描記圖4

體積描記圖5

體積描記圖6

0(同步位)

0

1

2

3

4

5

6

7


字節(jié)2:

描述

棒圖0

棒圖1

棒圖2

棒圖3

1=傳感器錯誤

1=搜索脈搏

脈率7

0(同步位)

0

1

2

3

4

5

6

7


字節(jié)3:

描述

脈率0

脈率1

脈率2

脈率3

脈率4

脈率5

脈率6

0(同步位)

0

1

2

3

4

5

6

7


字節(jié)4:

描述

血氧0

血氧1

血氧2

血氧3

血氧4

血氧5

血氧6

0(同步位)

0

1

2

3

4

5

6

7


2.7  SD卡存儲模塊

SD卡即安全數(shù)碼卡,是繼MMC之后發(fā)展的一種快閃記憶器的新一代記憶設(shè)備,目前已經(jīng)被廣泛應(yīng)用在許多設(shè)備上。SD卡擁有大容量、速數(shù)據(jù)傳輸快、移動靈活性強以及高安全性等優(yōu)點。

SD卡使用的電壓為3.3V。同時,若在SPI模式下,需要注意的是,SPI通信的引腳均需要外加10~100K左右的上拉電阻才能保證其正常工作[12]。

SD卡有5個寄存器,如下表2.9所示:

表2.9  SD卡寄存器

名稱

寬度

描述

CID

128

卡標識寄存器

RCA

16

相對卡地址

CSD

128

卡操作條件相關(guān)的信息數(shù)據(jù)

SCR

64

SD配置寄存器

OCR

32

操作條件寄存器


操作SD卡的6條重要命令:

SD卡初始化過程:

  • 初始化與SD卡連接的硬件條件;
  • 上電延時;
  • 復位卡,進入IDLE狀態(tài);
  • 發(fā)送CMD8,檢查是否支持2.0協(xié)議;
  • 根據(jù)不同協(xié)議檢查SD卡;
  • 取消片選,發(fā)送多于8CLK,結(jié)束初始化;

SD卡讀取數(shù)據(jù):

  • 發(fā)送CMD17
  • 接收卡響應(yīng)R1
  • 接收數(shù)據(jù)起始令牌0XFE
  • 接收數(shù)據(jù);
  • 接收2個字節(jié)CRC,若不用CRC,這兩個字節(jié)在讀取后可丟掉;
  • 禁止片選,發(fā)多于8CLK

SD卡存儲數(shù)據(jù):

  • 發(fā)送CMD24
  • 接收卡響應(yīng)R1
  • 發(fā)送寫數(shù)據(jù)起始令牌0XFE
  • 發(fā)送數(shù)據(jù);
  • 發(fā)送2字節(jié)的偽CRC
  • 禁止片選,發(fā)多于8CLK

在本設(shè)計中,由ATMEGA2560采集血氧飽和、脈率、體溫的數(shù)據(jù),進行處理后,在每次測量完畢后,這些數(shù)據(jù)會以TXT文件存儲到SD卡中,便于之后的數(shù)據(jù)分析。


















3 系統(tǒng)軟件編程設(shè)計3.1  軟件開發(fā)環(huán)境3.1.1  Arduino IDE簡介

Arduino是一款基于ATMEL AVR單片機的控制器平臺,便捷靈活而且較為容易上手。Arduino是一個開源的系統(tǒng),除了不能使用Arduino作為商標,任何人或公司都可以利Arduino公布的文檔來制作屬于自己的電子物品,而且Arduino的價格低廉,非常受國內(nèi)外廣大的電子愛好者歡迎[13]。

Arduino具有特定的標準擴展口,可以在擴展口上使用各種傳感器來采集或控制周邊事物,例如窗簾上的步進電機、房間的照明燈、室溫等等[14]。這款芯片可以通過Arduino特有的API(應(yīng)用程序編程接口)函數(shù)來編寫自己的程序。編譯生成二進制文件,燒錄編譯文件都可以使用Arduino IDE軟件完成[15]。

Arduino IDE的編程界面如下圖3.1所示:

Arduino IDE的編程方式與51單片機是相似的。在軟件編程界面有兩個空的函數(shù):void setup()和void loop(),前者中需要填寫程序的初始化部分,后者為整個程序的主循環(huán)內(nèi)容[16]。編寫完程序后,就要進入下載部分。Arduino的核心板具有ISP功能。這個功能可以在不改變硬件連接,即使硬件仍然在運行內(nèi)部代碼時,不需要分離任何電路也可以立即下載新的程序代碼,這樣就可以節(jié)省很多開發(fā)時間[17]。在Arduino的芯片內(nèi)部都有一個bootloader,這個bootloader可以幫助MCU加載程序,當單片機在復位時,首先會跳轉(zhuǎn)到bootloader中判斷之后進入的數(shù)據(jù)是否屬于程序代碼,若為程序代碼就將其安置到內(nèi)存的剩余空間中。所以因為有bootloader的存在,使得Arduinod 程序代碼非常便于下載[18]。

圖3.1  Arduino IDE界面

3.2  軟件各模塊程序設(shè)計3.2.1  血氧飽和及心率數(shù)值采集

     血氧飽和度測量模塊在采集到血氧數(shù)值后,會通過串口(UART)的方式發(fā)送給單片機,其格式在上文已經(jīng)有過介紹,血氧模塊回以每秒50個數(shù)據(jù)包的速度發(fā)送數(shù)據(jù),每個數(shù)據(jù)包包含有5個字節(jié)的數(shù)據(jù),其中有3個字節(jié)的數(shù)據(jù)是我們所必須的,一個字節(jié)是探頭監(jiān)測位,需要通過判斷這個位的數(shù)據(jù)來判斷傳感器是否連接成功[19];一個字節(jié)是血氧飽和度的數(shù)值,共有8位,將這8位2進制數(shù)值轉(zhuǎn)換成10進制的數(shù)值,即血氧飽和度的數(shù)值;一個字節(jié)是描述心率的數(shù)值,與血氧飽和度一樣,將二進制轉(zhuǎn)換為10進制即可顯示出來。所以在單片機處理時,需要定義一個數(shù)組來存儲我們所需的字節(jié)[20]。

3.2.2  體溫溫度數(shù)值采集

非接觸式紅外溫度傳感器是采用的SMBus協(xié)議進行讀取、寫入數(shù)據(jù)操作的。

讀器件的數(shù)據(jù)格式(命令決定是讀RAM或EEPROM)如下圖3.2所示:

圖3.2 讀數(shù)據(jù)格式

寫器件的數(shù)據(jù)格式(命令決定是寫RAM或EEPROM)如下圖3.3所示:

圖3.3 寫數(shù)據(jù)格式

在主程序中調(diào)用函數(shù)readObjectTempC();即可讀取溫度的數(shù)值。
3.2.3  藍牙無線通信

本設(shè)計使用的藍牙通信模塊為AT指令開發(fā),可以通過AT指令修改串口通信的波特率,設(shè)置配對碼等。具體的AT指令如下:

1、設(shè)置和查詢配對碼:

AT+PSWD = <Param>      

Param: 配對碼

2、設(shè)置和查詢串口參數(shù):

AT+UART = <Param1>,<Param2>,<Param3>

Param1:波特率(bits/s)

Param2:停止位

Param3:校驗位

3、設(shè)置和查詢模塊角色:

AT+ROLE = <Param>

Param :0——從角色(slave),被動連接,可以與任何藍牙適配器連接通信

           1——主角色(master),主動連接,建立通信數(shù)據(jù)傳輸通道

          2——回環(huán)角色(slave--loop),被動連接,接收主設(shè)備發(fā)送數(shù)據(jù)并返回給主設(shè)備

在進行程序設(shè)計之前可以先通過AT指令將模塊的參數(shù)配置完成,然后在程序中設(shè)置好波特率后即可直接使用串口發(fā)送函數(shù),將數(shù)據(jù)通過串口發(fā)送給藍牙模塊,然后藍牙模塊會自動再將數(shù)據(jù)遠程發(fā)送給手機APP端[21]。

    整個系統(tǒng)的程序設(shè)計流程圖如下圖3.4所示:

圖3.4 系統(tǒng)程序設(shè)計流程圖

3.2.4  ZigBee無線通信

本設(shè)計使用的局域網(wǎng)無線通信模塊為美國DIGI的一種ZigBee通信模塊,其內(nèi)置有ZigBee協(xié)議棧,可以使用DIGI提供的X-CTU軟件通過AT指令的方式配置ZigBee模塊的相關(guān)參數(shù),包括通信波特率、運行模式(協(xié)調(diào)器或路由或終端)、網(wǎng)絡(luò)ID、發(fā)送數(shù)據(jù)的目的地址等等[22]。

X-CTU軟件可以配置ZigBee模塊,界面如下圖3.5所示:

圖3.5  X-CTU界面

左上角的兩個按鈕用于發(fā)現(xiàn)設(shè)備,將ZigBee模塊通過串口與電腦端連接后,即可使用該功能發(fā)現(xiàn)設(shè)備進行下一步的配置,MAC尋找界面如下圖3.6所示:

圖3.6  MAC尋找界面

在這個界面讀出模塊后,會顯示一些基本參數(shù),比如此串口號和模塊的64為地址。然后點擊Add selected devices,即可進入?yún)?shù)讀取/配置界面,如下圖3.7所示:

圖3.7 讀取/配置參數(shù)界面

在設(shè)置參數(shù)時,主要設(shè)置以下參數(shù):首先為模塊波特率,用于與單片機之間的通信,本設(shè)計中設(shè)置為115200;然后設(shè)置PAN ID,這個ID用于加入網(wǎng)絡(luò),當多個ZigBee模塊的PAN ID相同時,便能實現(xiàn)自組網(wǎng),形成局域網(wǎng)絡(luò)進行通信;最后為發(fā)送數(shù)據(jù)的目的地址,在本設(shè)計中,是終端設(shè)備發(fā)送數(shù)據(jù)給協(xié)調(diào)器,故在終端設(shè)備中需要設(shè)置協(xié)調(diào)器的64位唯一地址[23]。也可以在協(xié)調(diào)器上設(shè)置終端的64位唯一地址,使用協(xié)調(diào)器給終端發(fā)送數(shù)據(jù)。

3.3  Android監(jiān)護軟件設(shè)計3.3.1  系統(tǒng)的開發(fā)環(huán)境與安裝

本設(shè)計開發(fā)android程序是采用的eclipse環(huán)境,eclipse編譯器是一款比較強大的APP開發(fā)軟件,相較其他的開發(fā)平臺而言,具有比較大的優(yōu)勢,比如界面的操作簡單,在編寫程序的過程中可以非常清晰、直觀地發(fā)現(xiàn)問題[24]。

              開發(fā)android軟件是采用的eclipse軟件,安裝時,先在官網(wǎng)eclipse.org中下載安裝包,分為32位與64位,注意要與電腦配置一致。下載完安裝包后,解壓并運行eclipse.exe[25]。現(xiàn)在首先需要安裝java環(huán)境,第一要設(shè)置工作環(huán)境,選擇你希望安裝的盤,點擊OK。如下圖3.8所示:

圖3.8 設(shè)置工作環(huán)境

然后創(chuàng)建項目,選擇file->new->java project,如下圖3.9所示:

圖3.9 創(chuàng)建項目

鍵入項目名,點擊finish。完成項目創(chuàng)建后,點擊Java按鈕,然后在菜單的左側(cè)選擇test項目,右鍵點擊new->class,鍵入工程名,完成。最后在代碼框中就可以開始敲代碼開發(fā)了。

3.3.2  Android應(yīng)用程序開發(fā)過程

Android應(yīng)用程序的設(shè)計分為以下幾個過程:在程序運行時,會開啟一個主線程,用于主界面的顯示,然后需要搜索手機附近開啟的藍牙設(shè)備,搜索到相關(guān)的藍牙設(shè)備后即可連接,在連接時會開啟一個子線程用于socket連接。當建立與設(shè)備的連接后,會不斷接收來自前端藍牙設(shè)備發(fā)送的多參數(shù)生理數(shù)據(jù)值,每次接收到數(shù)據(jù)后,程序會首先判斷該數(shù)據(jù)是否為有效數(shù)據(jù),若是,則在屏幕上顯示出來,若不是,則繼續(xù)監(jiān)測數(shù)據(jù)。

程序設(shè)計的流程圖如下圖3.10所示

圖3.10  APP程序流程圖


3.3.3  主要應(yīng)用模塊的實現(xiàn)

首先進入APP界面后,會進行一系列的初始化過程,進入界面后會有一個搜索按鈕,用于發(fā)現(xiàn)周圍的可連接藍牙設(shè)備。

點擊搜索按鈕后,在界面會出現(xiàn)一個設(shè)備列表,用于展現(xiàn)發(fā)現(xiàn)的所有藍牙設(shè)備,此時,選擇我們的前端藍牙設(shè)備“BluetoothBee”,進行連接,連接過程是一個基于socket通信的連接,因為其相對來說耗時較長,故不能運行在主線程,所以開辟了另外一個子線程供手機與藍牙設(shè)備進行連接。當手機APP與前端藍牙設(shè)備建立連接后,即可開始讀取數(shù)據(jù)。

讀取完數(shù)據(jù)后需要進行解析數(shù)據(jù),然后會在界面上顯示相應(yīng)的生理參數(shù)。

    手機APP的界面以及生理參數(shù)數(shù)值顯示實物圖如下圖3.11:

   

圖3.11  APP界面

在APP客戶端顯示的數(shù)據(jù)都是根據(jù)主控板采集的數(shù)據(jù)實時變化的,可以方便使用者非常直觀的看到自己的生理參數(shù)數(shù)值。












4 系統(tǒng)整體功能測試4.1 智能化家庭健康監(jiān)護系統(tǒng)實物圖

智能化家庭健康監(jiān)護系統(tǒng)是一個便攜式的多生理參數(shù)實時監(jiān)測系統(tǒng),在整套系統(tǒng)中包含有主控板ATMEGA2560、Arduino模塊、血氧飽和度測量模塊、紅外測溫模塊、藍牙傳輸模塊、ZigBee無線傳輸模塊、TFT液晶屏、充電模塊、升壓模塊、充電電池。在實際使用時,進行血氧飽和度、心率、體溫的參數(shù)測量,并且每次測量時都會將數(shù)據(jù)實時傳入手機APP端進行顯示,可以讓使用者很直觀的看到測量的具體參數(shù)。對于電源,采用的是充放電電池,并設(shè)計有充電電源口,當電池電量不足時可以通過這個接口充電,使用起來非常方便。具體的實物圖如下圖4.1所示:

圖4.1 系統(tǒng)整機圖

對于紅外測溫模塊,在另外一個節(jié)點設(shè)備上,打開電源后,模塊會自動采集目標體溫,然后通過ZigBee模塊傳輸給主系統(tǒng)板上的ZigBee協(xié)調(diào)器,實物圖如下圖4.2所示:

圖4.2 紅外測溫從機圖

在進行測量的時候,按下電源開關(guān),然后手指戴上血氧探頭,幾秒鐘過后,即可同步成功,然后在液晶屏上面會有血氧的波形圖和血氧值、心率值、體溫值的顯示。在TFT液晶屏上的效果圖如下圖4.3所示,屏幕上方左邊為BMP(心率),中間為SPO(血氧飽和度),右邊為TEMP(體溫):

圖4.3  TFT液晶屏顯示

在手機APP上的顯示界面如下圖4.4所示,手機通過藍牙接收到的數(shù)據(jù)在屏幕上進行顯示,包括心跳、血氧、體溫的具體數(shù)值,并根據(jù)前端設(shè)備的實時采集進行更新:

圖4.4  實測效果圖


總結(jié)與展望

本課題設(shè)計的智能化家庭健康監(jiān)護系統(tǒng)采取了硬件與軟件相結(jié)合的開發(fā)方法。在整個設(shè)計的過程中需要我對單片機開發(fā)、PCB繪制調(diào)試、C/C++編程語言、JAVA語言都有一定程度的了解。與此同時,需要學會查找相關(guān)的資料文件,熟悉各個芯片的開發(fā)使用方法以及它們的電氣特性等等,這些資料對于開發(fā)者來說,是非常重要的第一步。整個課題設(shè)計的過程也同時是我再次學習、鞏固、加深的過程,對“溫故而知新”這句話也有了更深一步的理解。我們只有在不斷學習,不斷鞏固,不斷思考,才能不斷進步,掌握的知識技能才能越來越牢靠,并且在實踐過程中需要我們本著實事求是的心態(tài)去做事,善于發(fā)現(xiàn)并解決問題,有意識培養(yǎng)自己解決問題的能力,為今后的學習和工作打下良好的基礎(chǔ)。

作者在最初進行本課題的設(shè)計時遇到了很多的艱難困阻。首先是血氧飽和度的數(shù)據(jù)一直無法同步,因為單片機無法采用串口中斷的方式,所以一直是采用的串口查詢的方式來接收數(shù)據(jù),這就導致時不時會丟包,而不能完全同步。其次,在單片機設(shè)計方面,沒有接觸過TFT液晶屏的開發(fā),所以當采集到生理數(shù)值時,需要在液晶屏上顯示出具體數(shù)值,同時還需要實時繪制血氧飽和度的波形,這一部分在程序設(shè)計上也花費了很大精力才得以解決。再就是android APP開發(fā)方面,因為作者一直都是使用C語言開發(fā)單片機程序,而完全沒有接觸過軟件APP的開發(fā),所以從零開始學習java語言,了解并熟悉eclipse開發(fā)環(huán)境也是難點之一。

本文在設(shè)計上有兩大特點:一是采用主從一體的藍牙傳輸模塊進行遠程的數(shù)據(jù)傳輸。這種無線通信方式是使用的很頻繁,也深受大眾喜愛的一種通信方式,其使用起來非常便捷,而且傳輸數(shù)據(jù)穩(wěn)定可靠,同時還具有低功耗模式,適用于便攜式設(shè)備。二是系統(tǒng)采集的多生理參數(shù)除了會在設(shè)備本身的TFT液晶屏上顯示出來,還會通過藍牙將數(shù)據(jù)發(fā)送給APP客戶端,在手機上進行實時的顯示。

最后,本文雖然實現(xiàn)了智能化家庭健康監(jiān)護系統(tǒng)的生理參數(shù)采集、顯示、無線傳輸功能,但仍然存在很多問題有待改進,而且在功能上還有很多是可以繼續(xù)完善的。在生理參數(shù)采集部分,可以加入心電的采集、分析,在無線傳輸部分可以使用WIFI或其他可以接入互聯(lián)網(wǎng)的設(shè)備,讓前端系統(tǒng)采集的生理數(shù)據(jù)能夠傳輸?shù)皆贫朔⻊?wù)器,與醫(yī)院進行合作,使醫(yī)院的主治醫(yī)師能夠查看我們的生理數(shù)據(jù),從而能夠在日常飲食或生活習慣上給予適當?shù)慕ㄗh,使得全社會人的身體都能夠更加健康。在系統(tǒng)的供電部分可以設(shè)計的再微小點,不用占據(jù)很大的空間,同時也能提供足夠的電量。通過上述改進措施,此智能化家庭健康監(jiān)護系統(tǒng)將會具備更加強大的實用價值以及商業(yè)價值。


參考文獻

[1] 劉翔, 朱士俊, 李信春. 我國遠程醫(yī)療發(fā)展現(xiàn)狀、難點和對策分析[J]. 中國信息界, 2006(4):60-63.

[2] 吳明, 張振忠. 中國農(nóng)村合作醫(yī)療發(fā)展模式的制度分析[J]. 中國衛(wèi)生資源, 2000(3):104-107.

[3] 鄔寬明. 單片機外圍器件實用手冊--數(shù)據(jù)傳輸接口器件分冊(第2版)[M]. 北航大學出版社, 2005.

[4] 劉坤, 趙紅波, 張憲棟. 51單片機C語言應(yīng)用開發(fā)技術(shù)大全[M]. 人民郵電出版社, 2011.

[5] 陸垂偉, 毛雪濤, 戴翔宇,等. 遠程串行數(shù)據(jù)通信技術(shù)的實現(xiàn)方法及其應(yīng)用[J]. 計算機應(yīng)用研究, 2002, 19(3):23-24.

[6] 石東海. 單片機數(shù)據(jù)通信技術(shù)從入門到精通[M]. 西安電子科技大學出版社, 2002.

[7] 高潮. TFT液晶顯示驅(qū)動電路與電源優(yōu)化設(shè)計方法[J]. 深圳信息職業(yè)技術(shù)學院學報, 2007, 5(2):14-18.

[8] 原羿, 蘇鴻根. 基于ZigBee技術(shù)的無線網(wǎng)絡(luò)應(yīng)用研究[J]. 計算機應(yīng)用與軟件, 2004, 21(6):89-91.

[9] 屈景輝 李傳偉. TEECHART應(yīng)用技術(shù)詳解--快速圖表制作工具[M]. 水利水電出版社, 2008.

[10] 繆璐璐. 基于Arduino平臺開發(fā)交互式產(chǎn)品原型的研究[D]. 上海交通大學, 2013.

[11] 惠特. Arduino技術(shù)內(nèi)幕[M]. 人民郵電出版社, 2013.

[12] 李莉, 劉剛. 基于藍牙技術(shù)的溫室環(huán)境監(jiān)測系統(tǒng)設(shè)計[J]. 農(nóng)業(yè)機械學報, 2006, 37(10):97-100.

[13] 龔建偉. Visual C++/Turbo C 串口通信編程實踐[M]. 電子工業(yè)出版社, 2004.

[14] 何希才. 數(shù)字移動通信技術(shù)及應(yīng)用[M]. 機械工業(yè)出版社, 2003.

[15] 鐘君, 蔡黎明, 于涌. 基于MLX90614的無線溫度采集系統(tǒng)設(shè)計[J]. 傳感器與微系統(tǒng), 2015, 34(3):87-89.

[16] 封瑜, 葛萬成. 基于ZigBee技術(shù)的無線傳感器網(wǎng)絡(luò)構(gòu)建與應(yīng)用[J]. 電子工程師, 2007, 33(3):21-23.

[17] 許一萍. Zigbee技術(shù)在無線傳感器網(wǎng)絡(luò)中的應(yīng)用研究[D]. 復旦大學, 2008.

[18] 張利江, 郭進利, 宋亞娟. 遠程醫(yī)療監(jiān)護的現(xiàn)狀與發(fā)展[J]. 新農(nóng)村:黑龍江, 2011(2):138-139.

[19] 諸強, 王學民, 胡賓,等. 無線遠程醫(yī)療系統(tǒng)[J]. 北京生物醫(yī)學工程, 2004, 23(3):225-227.

[20] 張利江, 郭進利, 宋亞娟. 遠程醫(yī)療監(jiān)護的現(xiàn)狀與發(fā)展[J]. 新農(nóng)村:黑龍江, 2011(2):138-139.

[21] 范曉武. 基于嵌入式設(shè)備的家庭健康監(jiān)護系統(tǒng)的設(shè)計與實現(xiàn)[J]. 浙江工業(yè)大學學報, 2010, 38(3):289-293.

[22] Roll J S, Froma W. Systemic training for healthcare professionals: the Chicago Center For Family Health approach.[J]. Family Process, 2005, 44(3):283-301.

[23] Heydon A, Mcdonald J. Measurement of family health teams is underdeveloped.[J]. Sedimentology, 2011, 183(14):1628-1628.

[24] 朱新建, 吳寶明, 卓豫,等. 多參數(shù)家庭健康監(jiān)護實時檢測的方法[J]. 中國組織工程研究與臨床康復, 2007(1):121-123.

[25] 黃永健, 王偉, 謝廣明,等. 物聯(lián)網(wǎng)家庭健康監(jiān)護系統(tǒng)[J]. 兵工自動化, 2013(11):87-90.


附錄A

1.  主控板程序:

  1. #include <UTFT.h>

  2. #include <SPI.h>

  3. #include <SD.h>

  4. #include <SoftwareSerial.h>

  5. #include <Wire.h>

  6. #include <Adafruit_MLX90614.h>



  7. Adafruit_MLX90614 mlx = Adafruit_MLX90614();

  8. SoftwareSerial mySerial(6, 7);



  9. // Declare which fonts we will be using

  10. extern uint8_t SmallFont[];

  11. UTFT myGLCD(QD220A,A2,A1,A5,A4,A3);   //初始化液晶的類

  12. File myFile;     / /初始化SD卡的類

  13. extern uint8_t BigFont[];

  14. int data[5];

  15. char str[9];

  16. int buf[220],buf1[4];

  17. int y1=0;      //判斷是否為第一次畫線

  18. int y2=45;   

  19. int x=1, x2=0;

  20. int r=0,time=0;

  21. long a=0,t1=0;



  22. void setup()

  23. {

  24.   myGLCD.InitLCD();            //液晶屏初始化

  25.   myGLCD.setFont(SmallFont);     //設(shè)置液晶屏上字的大小

  26.   Serial.begin(9600);              //ZigBee波特率

  27.   Serial1.begin(9600);             //調(diào)試串口

  28.   mySerial.begin(115200);          //血氧飽和度通信

  29.   mlx.begin();                    //初始化紅外測溫模塊



  30.   myGLCD.fillScr(255,255,255);    //清屏



  31.   if (!SD.begin(53)) {               //檢測SD卡是否讀取成功

  32.     return;

  33.   }

  34.   myFile = SD.open("SPO2.txt", FILE_WRITE);

  35.   myGLCD.setColor(0,255,255);               //設(shè)置字體顏色

  36.   myGLCD.setBackColor(255, 0, 0);            //設(shè)置背景顏色

  37.   myGLCD.print("BMP:", 5, 1);

  38.   myGLCD.print("SPO:", 70, 1);

  39.   myGLCD.print("TEMP:", 130, 1);

  40. }



  41. void loop() {

  42. if (Serial1.available()){                //采用循環(huán)查詢方式檢測串口是否有數(shù)據(jù)

  43.     for(int i=0;i<5;i++){               //采用for循環(huán)連續(xù)讀取5個字節(jié)數(shù)據(jù)

  44.       data[i] = Serial1.read();           //讀一個字節(jié)數(shù)據(jù)

  45.       delay(1);

  46.     }

  47.   }

  48. Serial.println(data[4]);

  49. if(data[3]<120&&data[3]>50){          //判斷數(shù)據(jù)是否已經(jīng)同步,為有效數(shù)據(jù)

  50.    y1=data[1];

  51.     if(a==1){                    //若滿屏,則開始清理歷史數(shù)據(jù),即消除部分波形

  52.         myGLCD.setColor(255,255,255);

  53.         if(t1==1){

  54.           myGLCD.drawLine(1,135-buf[209],2,135-buf[1]); //第一次畫波形,兩點連線

  55.           t1=0;

  56.         }               

  57.         myGLCD.drawLine(x+1,135-buf[x],x+2,135-buf[x+1]); //兩點連線,繪制波形

  58.     }

  59.     if(x<210){                   //若沒有滿屏,則繼續(xù)繪制波形

  60.         myGLCD.setColor(0,255,255);

  61.                               myGLCD.drawLine(x,135-y2,x+1,135-y1);

  62.                               y2=y1;

  63.                               buf[x]=y1;

  64.                               x++;

  65.         time++;

  66.     }else{

  67.                 x=1;a=1;t1=1;

  68.     }

  69. }

  70.     if(time==100){

  71.        myGLCD.setBackColor(255, 0, 0);

  72.        String b = (String)data[3];

  73.        myGLCD.print(b, 35, 1);      //在液晶屏上顯示心率的數(shù)值

  74.        b = (String)data[4];

  75.        myGLCD.print(b, 100, 1);     //在液晶上顯示血氧飽和度的數(shù)值

  76.        b = (String)mlx.readObjectTempC();

  77.        myGLCD.print(b, 168, 1);     //在液晶上顯示溫度的數(shù)值

  78.        delay(20);

  79.        mySerial.print(data[3]);       //通過串口發(fā)送將心率的數(shù)值發(fā)送給藍牙

  80.        mySerial.print(",");

  81.        mySerial.print(data[4]);       //將血氧飽和度的數(shù)值發(fā)送給藍牙

  82.        mySerial.print(",");

  83.        mySerial.print(b);            //將體溫的數(shù)值發(fā)送給藍牙

  84.        mySerial.print(" ");

  85.        time=0;

  86.      }

  87. }

  88. 2.  紅外測溫讀取數(shù)據(jù)部分代碼:

  89. #define MLX90614_TOBJ1  0x07



  90. uint16_t read16(uint8_t a)

  91. {

  92. uint16_t  ret;

  93. uint8_t  pec;

  94. Wire.beginTransmission(_addr); // 開始發(fā)送數(shù)據(jù)給設(shè)備

  95. Wire.write(a); // 發(fā)送寄存器地址給傳遞參數(shù)

  96.     Wire.endTransmission(false); // 結(jié)束數(shù)據(jù)傳送

  97. Wire.requestFrom(_addr, (uint8_t)3);// 發(fā)送讀取的n字節(jié)數(shù)據(jù)

  98.     ret  =  Wire.read(); // 接受數(shù)據(jù)

  99. ret  |=  Wire.read() << 8; // 接受數(shù)據(jù)

  100. pec  =  Wire.read();

  101. return ret;

  102. }

  103. float readTemp(uint8_t reg)

  104. {

  105. float temp;

  106. temp  =  read16(reg);

  107. temp  *=  .02;

  108. temp  -=  273.15;

  109. return  temp;

  110. }

  111. double readObjectTempC(void)

  112. {

  113. return readTemp(MLX90614_TOBJ1);

  114. }



  115. 2.  APP客戶端初始化代碼:

  116. private void init() {                              

  117.                             list = new ArrayList<SiriListItem>();

  118.                             mAdapter = new ChatListAdapter(this, list);

  119.                             mListView = (ListView) findViewById(R.id.list);

  120.                             mListView.setAdapter(mAdapter);

  121.                             mListView.setFastScrollEnabled(true);

  122.                             mListView.setOnItemClickListener(mDeviceClickListener);                           



  123.                   IntentFilterdiscoveryFilter=new IntentFilter(BluetoothDevice.ACTION_FOUND);

  124.         this.registerReceiver(mReceiver, discoveryFilter);

  125.         // Register for broadcasts when discovery has finished

  126.         IntentFilter foundFilter = new IntentFilter(BluetoothDevice.ACTION_FOUND);

  127.         this.registerReceiver(mReceiver, foundFilter);



  128.         Set<BluetoothDevice> pairedDevices = mBtAdapter.getBondedDevices();

  129.         if (pairedDevices.size() > 0) {

  130.             for (BluetoothDevice device : pairedDevices) {

  131.           list.add(new SiriListItem(device.getName() + "\n" + device.getAddress(), true));

  132.                           mAdapter.notifyDataSetChanged();

  133.                                     mListView.setSelection(list.size() - 1);

  134.             }

  135.         } else {

  136.                       list.add(new SiriListItem("沒有設(shè)備已經(jīng)配對", true));

  137.                       mAdapter.notifyDataSetChanged();

  138.                                 mListView.setSelection(list.size() - 1);

  139.         }

  140.                            

  141.                             seachButton = (Button)findViewById(R.id.start_seach);

  142.                             seachButton.setOnClickListener(seachButtonClickListener);

  143.                            

  144.                             serviceButton = (Button)findViewById(R.id.start_service);

  145.                             serviceButton.setOnClickListener(new OnClickListener() {

  146.                                           @Override

  147.                                           public void onClick(View arg0) {

  148.                                                         Bluetooth.serviceOrCilent=ServerOrCilent.SERVICE;

  149.                                                         Bluetooth.mTabHost.setCurrentTab(1);

  150.                                           }

  151.                             });            

  152.               }   

  153. 3.  發(fā)現(xiàn)藍牙模塊:

  154. private OnClickListener seachButtonClickListener = new OnClickListener() {

  155. public void onClick(View arg0) {

  156. if(mBtAdapter.isDiscovering())

  157.               {

  158.                             mBtAdapter.cancelDiscovery();

  159.                             seachButton.setText("重新搜索");

  160.               }

  161.               else

  162.               { list.clear();

  163.               mAdapter.notifyDataSetChanged();

  164.                                          

  165.               Set<BluetoothDevice> pairedDevices = mBtAdapter.getBondedDevices();

  166.               if (pairedDevices.size() > 0) {

  167.                             for (BluetoothDevice device : pairedDevices) {

  168.                   list.add(new SiriListItem(device.getName() + "\n" + device.getAddress(), true));

  169.                   mAdapter.notifyDataSetChanged();

  170.                             mListView.setSelection(list.size() - 1);

  171.                             }

  172.               } else {

  173.                             list.add(new SiriListItem("No devices have been paired", true));

  174.                             mAdapter.notifyDataSetChanged();

  175.                             mListView.setSelection(list.size() - 1);

  176.               }                                                                     

  177.               /* 開始搜索 */

  178.               mBtAdapter.startDiscovery();

  179.               seachButton.setText("停止搜索");

  180.                             }                                                      

  181.               }

  182. };



  183. 4.  連接藍牙模塊

  184. // 開啟客戶端

  185. private class clientThread extends Thread {

  186. public void run() {

  187.               try {

  188.               // 創(chuàng)建一個Socket連接:只需要服務(wù)器在注冊時的UUID號

  189.               socket = device.createRfcommSocketToServiceRecord(UUID

  190.                             .fromString("00001101-0000-1000-8000-00805F9B34FB"));

  191.               // 連接

  192.               Message msg2 = new Message();

  193.               msg2.obj = "請稍候,正在連接服務(wù)器:" + Bluetooth.BlueToothAddress;

  194.               msg2.what = 0;

  195.               LinkDetectedHandler.sendMessage(msg2);



  196.               socket.connect();



  197.               Message msg = new Message();

  198.               msg.obj = "已經(jīng)連接上服務(wù)端!可以發(fā)送信息。";

  199.               msg.what = 0;

  200.               LinkDetectedHandler.sendMessage(msg);

  201.               // 啟動接受數(shù)據(jù)

  202.               mreadThread = new readThread();

  203.               mreadThread.start();

  204.               } catch (IOException e) {

  205.               Log.e("connect", "", e);

  206.               Message msg = new Message();

  207.               msg.obj = "連接服務(wù)端異常!斷開連接重新試一試。";

  208.               msg.what = 0;

  209.               LinkDetectedHandler.sendMessage(msg);

  210.                   }

  211.               }

  212. };



  213.      讀取數(shù)據(jù):

  214. // 讀取數(shù)據(jù)

  215. private class readThread extends Thread {

  216.               public void run() {

  217.                             byte[] buffer = new byte[1024];

  218.                             int bytes;

  219.                             InputStream mmInStream = null;

  220.                             try {

  221.                                           mmInStream = socket.getInputStream();

  222.                             } catch (IOException e1) {

  223.                                           e1.printStackTrace();

  224.                             }

  225.                             while (true) {

  226.                                           byte[] buffer1 = new byte[128];

  227.                                           int count;

  228.                                           try {

  229.                                                         count = mmInStream.read(buffer1);

  230.                                                         Message msg = new Message();

  231.                                                         msg.obj = new String(buffer1, 0, count, "UTF-8");

  232.                                                         msg.what = 1;

  233.                                                         LinkDetectedHandler.sendMessage(msg);

  234.                                           } catch (IOException e) {

  235.                                                         e.printStackTrace();

  236.                                           }

  237.                             }

  238.               }

  239. }

  240. 6.  解析并顯示數(shù)據(jù):

  241. public void setdata(String string)

  242. {

  243.               String[] s = string.split(",");

  244.               int s_0 = 0, s_1 = 0, s_2 = 0;

  245.             

  246.               if (s.length == 3 && s[0] != null && !s[0].equals("")

  247.                             && s[1] != null && !s[1].equals("") && s[2] != null

  248.                             && !s[2].equals("")) {

  249.                             s_0 = Integer.parseInt(s[0].trim());

  250.                             s_1 = Integer.parseInt(s[1].trim());

  251.                             double  d = Double.parseDouble(s[2]);

  252.                             s_2 = (int)d;

  253.               }

  254.               if (s.length == 3 && s_0 > 49 && s_0 < 121 && s_1 > 94 && s_1 < 100

  255.                                           && s_2 > 20 && s_2 < 40) {

  256.                             chat_textview.setText("心跳:" + s[0] + "\n血氧:" + s[1] + "\n體溫:"

  257.                                                                       + s[2]);

  258.                             }

  259. }
復制代碼






文獻綜述
前言:
目前人們的生活質(zhì)量正在逐漸提高,越來越多的人們開始將關(guān)注的重心從金錢轉(zhuǎn)移到身體健康上面,所以做好疾病預(yù)防工作的重要性尤為突出。對于一些單獨在家的“空巢老人”,我們更加需要重視他們的日常健康監(jiān)護,這也是現(xiàn)代社會關(guān)注的焦點問題之一[1]。以往老人需要進行身體檢查時要前往醫(yī)院進行檢查,但隨著信息化時代的到來,我們可以讓老人在家進行健康檢查,并且能遠程異地的對老人的健康進行監(jiān)護。本課題設(shè)計了一個智能化家庭健康監(jiān)護系統(tǒng),通過血氧傳感器,體溫傳感器采集人體的血氧飽和度、脈率以及體溫,通過液晶屏顯示出來并且通過藍牙模塊發(fā)送到手機APP中[2]。
主體:
主要芯片選擇
  • arduino單片機控制模塊
Arduino Mega2560是基于ATmega2560的微控制板,具有54路數(shù)字輸入輸出,適合需要大量IO接口的設(shè)計。處理器的核心是ATmega2560,采用晶振為16MHz晶體振蕩器。
  • AT Mega2560系列單片機操作電壓:5V
  • I/O腳直流電流:40mA
  • 3.3V腳的電流: 50mA
  • 閃存: 256K(其中8KB用于引導程序);
  • SRAM8KB
  • EEPROM4KB
(7)工作溫度范圍: -40℃~+85℃/0℃~+75℃;
  • 藍牙模塊
藍牙通信技術(shù)是一種工作在2.4 GHz 頻段的無線通信技術(shù)。目前藍牙技術(shù)已經(jīng)逐漸趨向成熟。因為藍牙技術(shù)的日趨成熟,在使用和遠程傳輸方面具有非常好的系統(tǒng)穩(wěn)定性和抗干擾能力,而且只需配備少許外圍器件就可以實現(xiàn)其強大的功能[3]。
藍牙模塊是使用2.4Ghz 全球開放的ISM 頻段免許可證;Class 2功率等級,主從一體,抗干擾能力強,特別適合工業(yè)控制場合;具有12路可AT命令編程的輸出IO口,1路帶硬件流控的UART接口,3路8位ADC輸入接口,板載有藍牙天線;無線串口數(shù)據(jù)透傳,其UART兼容3.3~5V的接口,具有128-bit安全校驗機制,符合ROHS等多種國際認證[4];運行在可配對連接模式時,電流最低可達3.3mA,在通訊模式下最低可達20mA;低功耗3.0 -3.6V 工作,關(guān)機模式下為29uA;
  • ZigBee模塊
本設(shè)計采用的ZigBee芯片為TI公司設(shè)計生產(chǎn)的CC2530芯片,芯片內(nèi)嵌有標準ZigBee協(xié)議棧,而且在芯片內(nèi)部還集成有一塊8051內(nèi)核,是一片增強型的51單片機[5]。在ZigBee網(wǎng)絡(luò)中,所有的節(jié)點設(shè)備分為3中類型,一種是協(xié)調(diào)器,一種是路由器,一種是終端。在同一個網(wǎng)絡(luò)中,需要一個協(xié)調(diào)器來啟動并維護整個網(wǎng)絡(luò),這個協(xié)調(diào)器負責所在網(wǎng)絡(luò)中的各個節(jié)點設(shè)備的16位地址分配(為自動分配)。路由器是在協(xié)調(diào)器啟動網(wǎng)絡(luò)后,協(xié)助其維護整個網(wǎng)絡(luò)的設(shè)備,同時,路由器也可以作為信息傳遞的中轉(zhuǎn)站,使得信息傳遞的距離更遠[6]。而終端設(shè)備即處于網(wǎng)絡(luò)邊緣的設(shè)備,一般用于控制器,執(zhí)行來自路由器或協(xié)調(diào)器的命令。
  • MLX90164模塊
MLX90614是一款用于非接觸式的紅外溫度傳感器,它的內(nèi)部集成了紅外探測熱電堆芯片和信號處理專用集成芯片。這款芯片全部封裝在TO-39。MLX90614在信號調(diào)節(jié)的芯片中使用了先進的低噪音放大器,是一個17-bit ADC以及具有強大功能的DSP器件,從而實現(xiàn)高精度溫度測量[7]。其中MLX90614的輸出方式分為SMBus和PWM兩種數(shù)字輸出方式。
  • TFT液晶屏
TFT液晶屏是每個像素都設(shè)有一個半導體開關(guān),其加工工藝類似于大規(guī)模集成電路。因為每個像素都可以通過點脈沖直接控制,所以,每個節(jié)點都相對獨立,并且可以進行連續(xù)控制,這種設(shè)計不僅提高了顯示屏的反應(yīng)速度,同時可以精確控制顯示灰度,所以TFT液晶的色彩更逼真[8]。
  • 血氧飽和度檢測模塊
血氧飽和度(SpO2)是指血液中被氧氣結(jié)合的氧合血紅蛋白(HbO2)的總?cè)萘克既靠山Y(jié)合的血紅蛋白(Hb,hemoglobin)容量的百分比,即血液中血氧的濃度,是呼吸循環(huán)的一個重要生理參數(shù)[9]。
血氧飽和度檢測模塊指標:
血氧值:
測量范圍:70%~100%
分 辨 率:1%
精    度:90-100: ±2%  70-89: ±3%
脈率值:
  測量范圍:30~250 BPM
  分 辨 率:1BPM
  精    度:2BPM或2%,兩者取大者
抗弱灌注:
BCI™兼容模式:0.3%
血氧探頭為數(shù)字血氧探頭,其發(fā)射管波長為660,940nm,接受管為235,并且接受管采用光頻轉(zhuǎn)換器,可以將光信號直接轉(zhuǎn)換成數(shù)字信號由OUT引腳輸出[10]。數(shù)字血氧探頭有5個引腳,分別為LEDR-,LEDR+,OUT,VCC,GND其中LEDR-,LEDR+連接發(fā)射管兩端,當測量時,探頭中的光頻轉(zhuǎn)換器會將光信號轉(zhuǎn)換為電信號后可以直接被單片機的模擬輸入引腳讀取[11]。血氧飽和度模塊上有一片ARM架構(gòu)的32位單片機,對探頭輸出的信號進行放大,濾波,然后以串口通信的方式對外輸出。輸出的格式為:9600波特率;每秒有50個數(shù)據(jù)包,每個數(shù)據(jù)包為5個字節(jié)[12]。

  • SD卡存儲
SD存儲卡是一種完全開放的標準,存儲方便,大多用在MP3,數(shù)碼相機等電子產(chǎn)品上[13]。SD卡具有容量大、體積小、安全性能好、靈活等優(yōu)點,目前市場上已有各種大小容量,2G、8G、16G、32G等等,這里采用的是Kingston公司的8G容量SD卡[14]。該SD卡模塊與單片機之間的通信方式為SPI通信,這種通信方式可以使得數(shù)據(jù)的寫入或者讀取的速度能得以保障。在編程時,對SD卡的操作主要為初始化以及寫入操作,此處采用的是多塊寫模式[15]。SD卡的存儲功能可以記錄每次使用者所采集的生理數(shù)據(jù),便于以后進行定量分析或診斷等等[16]。
Arduino開發(fā)環(huán)境介紹
    Arduino是一個近幾年興起的開源單片機設(shè)計開發(fā)平臺。其硬件部分由Atmel公司開發(fā)的AVR單片機、I/O接口以及外圍電路組成。在軟件部分,Arduino IDE 包括標準的程序編譯器和程序下載器[17]。它作為一種集成開發(fā)環(huán)境,最大的一個優(yōu)點是簡單易用,使得開發(fā)者可以在短時間內(nèi)學會如何使用。它使用的編程語言是類似與C++、C和Java的一種語言,許多的功能函數(shù)都經(jīng)過了很好的模塊化,開發(fā)者只需了解這些功能函數(shù)即可,無需理解底層函數(shù)的設(shè)計部分,因此Arduino極大降低了開發(fā)者的編程難度[18]。
主體芯片編程方法
Arduino mega2560的編程是采用Arduino語言,編寫時除了主體函數(shù)外還需要根據(jù)具體的外設(shè)模塊加入特定的函數(shù)庫文件,編寫后檢查編譯是否有誤,以及編寫是需注意各個函數(shù)之間的模塊化思想[19]。
整個程序中需要使用多個串口進行通信,所以要先分配好串口引腳。首先需要對TFT液晶屏、SD卡進行初始化,然后讀取血氧飽和度模塊和紅外測溫模塊的數(shù)據(jù)值,在讀取數(shù)據(jù)值時需要注意模塊端發(fā)送的格式及協(xié)議。其中紅外測溫模塊由從機通過ZigBee傳輸給主板,然后由主板單片機進行分析處理,并且在液晶屏上顯示數(shù)值及血氧飽和度的波形圖[20]。最后將測量的結(jié)果通過藍牙模塊傳輸給手機APP。

參考文獻

[1] 劉翔, 朱士俊, 李信春. 我國遠程醫(yī)療發(fā)展現(xiàn)狀、難點和對策分析[J]. 中國信息界, 2006(4):60-63.

[2] 吳明, 張振忠. 中國農(nóng)村合作醫(yī)療發(fā)展模式的制度分析[J]. 中國衛(wèi)生資源, 2000(3):104-107.

[3] 鄔寬明. 單片機外圍器件實用手冊--數(shù)據(jù)傳輸接口器件分冊(第2版)[M]. 北航大學出版社, 2005.

[4] 劉坤, 趙紅波, 張憲棟. 51單片機C語言應(yīng)用開發(fā)技術(shù)大全[M]. 人民郵電出版社, 2011.

[5] 陸垂偉, 毛雪濤, 戴翔宇,等. 遠程串行數(shù)據(jù)通信技術(shù)的實現(xiàn)方法及其應(yīng)用[J]. 計算機應(yīng)用研究, 2002, 19(3):23-24.

[6] 石東海. 單片機數(shù)據(jù)通信技術(shù)從入門到精通[M]. 西安電子科技大學出版社, 2002.

[7] 高潮. TFT液晶顯示驅(qū)動電路與電源優(yōu)化設(shè)計方法[J]. 深圳信息職業(yè)技術(shù)學院學報, 2007, 5(2):14-18.

[8] 原羿, 蘇鴻根. 基于ZigBee技術(shù)的無線網(wǎng)絡(luò)應(yīng)用研究[J]. 計算機應(yīng)用與軟件, 2004, 21(6):89-91.

[9] 屈景輝 李傳偉. TEECHART應(yīng)用技術(shù)詳解--快速圖表制作工具[M]. 水利水電出版社, 2008.

[10] 繆璐璐. 基于Arduino平臺開發(fā)交互式產(chǎn)品原型的研究[D]. 上海交通大學, 2013.

[11] 惠特. Arduino技術(shù)內(nèi)幕[M]. 人民郵電出版社, 2013.

[12] 李莉, 劉剛. 基于藍牙技術(shù)的溫室環(huán)境監(jiān)測系統(tǒng)設(shè)計[J]. 農(nóng)業(yè)機械學報, 2006, 37(10):97-100.

[13] 龔建偉. Visual C++/Turbo C 串口通信編程實踐[M]. 電子工業(yè)出版社, 2004.

[14] 何希才. 數(shù)字移動通信技術(shù)及應(yīng)用[M]. 機械工業(yè)出版社, 2003.

[15] 鐘君, 蔡黎明, 于涌. 基于MLX90614的無線溫度采集系統(tǒng)設(shè)計[J]. 傳感器與微系統(tǒng), 2015, 34(3):87-89.

[16] 封瑜, 葛萬成. 基于ZigBee技術(shù)的無線傳感器網(wǎng)絡(luò)構(gòu)建與應(yīng)用[J]. 電子工程師, 2007, 33(3):21-23.

[17] 許一萍. Zigbee技術(shù)在無線傳感器網(wǎng)絡(luò)中的應(yīng)用研究[D]. 復旦大學, 2008.

[18] 張利江, 郭進利, 宋亞娟. 遠程醫(yī)療監(jiān)護的現(xiàn)狀與發(fā)展[J]. 新農(nóng)村:黑龍江, 2011(2):138-139.

[19] 諸強, 王學民, 胡賓,等. 無線遠程醫(yī)療系統(tǒng)[J]. 北京生物醫(yī)學工程, 2004, 23(3):225-227.

[20] 張利江, 郭進利, 宋亞娟. 遠程醫(yī)療監(jiān)護的現(xiàn)狀與發(fā)展[J]. 新農(nóng)村:黑龍江, 2011(2):138-139.


完整的Word格式文檔51黑下載地址:
智能化家庭健康監(jiān)護系統(tǒng)前端設(shè)計與開發(fā).docx (3.83 MB, 下載次數(shù): 17)


評分

參與人數(shù) 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎勵!

查看全部評分

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏1 分享淘帖 頂 踩
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機教程網(wǎng)

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 成人一区二区三区在线观看 | av在线免费网站 | 国产精品污www一区二区三区 | 欧美日韩视频一区二区 | 爱高潮www亚洲精品 中文字幕免费视频 | 在线观看av网站 | 欧美一区二区在线 | av中文天堂 | 在线观看欧美一区 | 国产精品一区二区久久 | 国产我和子的乱视频网站 | 日韩精品二区 | 国产黄视频在线播放 | 91久久国产综合久久 | 国产精品久久久久一区二区三区 | 日韩欧美视频在线 | 午夜激情小视频 | 精品一区久久 | 欧美日一区 | 午夜在线观看视频 | 精品欧美一区二区精品久久 | 日韩精品一区二区三区中文在线 | 欧美福利影院 | 国产观看 | 久久精品高清视频 | 欧美一二三四成人免费视频 | 99精品国产一区二区青青牛奶 | 亚洲精品中文字幕在线观看 | 国产精品高潮呻吟久久 | 精品国产三级 | 亚洲草草视频 | 一区二区三区四区国产 | 国产福利久久 | 亚洲综合色自拍一区 | 成人在线观| 亚洲最新在线视频 | 亚洲色图插插插 | 97国产精品 | 亚洲高清免费观看 | 美日韩精品 | 免费中文字幕 |