西北民族大學(xué)電氣工程學(xué)院 劉艷艷
該項(xiàng)目的名稱是“基于單片機(jī)的老人監(jiān)護(hù)系統(tǒng)”。本系統(tǒng)可以通過脈搏心率傳感器檢測(cè)老人的脈搏狀態(tài),把老人的數(shù)據(jù)狀態(tài)在單片機(jī)內(nèi)部進(jìn)行處理,然后反饋到PC端通過上位機(jī)顯示出來,這樣可以讓我們隨時(shí)隨地了解到老人現(xiàn)在的身體情況,以便對(duì)老人的突發(fā)情況能夠做出及時(shí)的預(yù)防和處理!而且如今,隨著老人年紀(jì)不斷的增長(zhǎng),身體體質(zhì)不斷的衰弱,在上樓梯或者走斜坡的時(shí)候很容易會(huì)發(fā)生摔倒或跌倒,如果不及時(shí)的接收到治療,很可能會(huì)造成很嚴(yán)重的后果。本套系統(tǒng)可以通過三軸加速傳感器實(shí)時(shí)檢測(cè)老人是否跌倒以及GPS模塊定位功能,當(dāng)老人跌倒時(shí),本系統(tǒng)會(huì)自動(dòng)發(fā)送老人所在位置的經(jīng)緯度短信通知你和報(bào)警,讓老人得到快速和有效的治療。不僅如此,隨著老人年紀(jì)不斷的增長(zhǎng),自身的體質(zhì)和免疫力不斷的下降,本套系統(tǒng)可以通過傳感器不斷的檢測(cè)外界的情況,例如濕度,溫度,PM2.5!再將數(shù)據(jù)反饋到手機(jī)或液晶屏上,以便你及時(shí)的對(duì)老人進(jìn)行增添衣物和對(duì)疾病的預(yù)防。
本智能醫(yī)療系統(tǒng)是由STM32最小系統(tǒng)、GSM模塊、三軸陀螺儀、穩(wěn)壓模塊、HX-M02 WIFI無線透?jìng)髂K、Arduino UNO單片機(jī)及拓展板、心率脈搏檢測(cè)裝置等部分構(gòu)成。
本系統(tǒng)設(shè)計(jì)將STM32最小系統(tǒng)以及外設(shè)電路作為中央控制器,Arduino uno單片機(jī)及拓展板作為輔助控制器。輔助控制器首先通過溫濕度傳感器將老人外界環(huán)境采集到的數(shù)值進(jìn)行判斷,并將采集到的數(shù)值通過WIFI無線透?jìng)髂K發(fā)送到服務(wù)器端的數(shù)據(jù)庫中。其裝置本身還配有三軸陀螺儀和心率脈搏傳感器,當(dāng)遇到老人突然發(fā)生摔倒事件或心率脈搏突發(fā)異常時(shí),本系統(tǒng)會(huì)自動(dòng)的報(bào)警并發(fā)送短信到指定的移動(dòng)號(hào)碼上。具體的實(shí)施過程為:(1)隨著老人年齡不斷的增長(zhǎng),其抵抗力變得越來越弱,為了更及時(shí)有效的預(yù)防外界環(huán)境的變化所給老人的感冒、著涼。本系統(tǒng)通過HX-M02 WIFI無線透?jìng)髂K實(shí)時(shí)的將采集到的溫度、濕度發(fā)送到云端數(shù)據(jù)庫中,再通過編寫手機(jī)客戶端對(duì)數(shù)據(jù)庫實(shí)時(shí)的讀取,使得無論在何時(shí)何地都可以知道老人周圍環(huán)境的數(shù)值,以便提醒老人是否添加衣物。(2)本系統(tǒng)還可以通過脈搏心率傳感器檢測(cè)老人的脈搏狀態(tài),把老人的數(shù)據(jù)狀態(tài)在Arduino UNO單片機(jī)內(nèi)部進(jìn)行處理,然后反饋到PC端通過上位機(jī)顯示出來,這樣可以讓我們隨時(shí)隨地了解到老人現(xiàn)在的身體情況,以便對(duì)老人的突發(fā)情況能夠做出及時(shí)的預(yù)防和處理。(3)在對(duì)老人的姿態(tài)檢測(cè)方面,我們決定采用MPU6050三軸陀螺儀對(duì)老人的姿態(tài)角度進(jìn)行實(shí)時(shí)解析,以及再使用三軸加速度計(jì)來對(duì)老人是否摔倒的檢測(cè)。(4)在檢測(cè)老人是否摔倒的軟件編程方面,我們決定將三軸陀螺儀和三軸加速度計(jì)采集到的值進(jìn)行控制算法處理,例如:PID算法、卡爾曼濾波算法、互補(bǔ)濾波算法。使得傳感器能更好的檢測(cè)到老人的姿態(tài),減少傳感器的誤檢。(5)當(dāng)老人摔倒時(shí),STM32單片機(jī)會(huì)通過串口通信使GSM模塊向指定的號(hào)碼撥打電話或發(fā)送短信,使得老人能夠得到及時(shí)得到有效的治療。(6)本系統(tǒng)還集成了GPS定位功能,當(dāng)老人摔倒后,本系統(tǒng)會(huì)自動(dòng)進(jìn)行定位,并將老人所在位置的經(jīng)緯度坐標(biāo)通過文本短信形式發(fā)送到指定號(hào)碼的移動(dòng)設(shè)備上(7)由于本系統(tǒng)要實(shí)時(shí)上傳采集到的數(shù)據(jù),因此我們選用WIFI模塊連接手機(jī)熱點(diǎn)或者4G模塊熱點(diǎn)進(jìn)行數(shù)據(jù)的接收與發(fā)送,這也打破了傳統(tǒng)意義上網(wǎng)線連接的局限性。在對(duì)WIFI無線透?jìng)髂K的配置中,我們通過串口對(duì)WIFI模塊所要連接的熱點(diǎn)進(jìn)行用戶名、密碼、連接服務(wù)器地址進(jìn)行寫入。配置完成后,我們只需將熱點(diǎn)的用戶名、密碼設(shè)置成與其配置的一致。就可以自動(dòng)的連接并進(jìn)行服務(wù)器數(shù)據(jù)的交互。
圖1 基于單片機(jī)的老人監(jiān)護(hù)系統(tǒng)硬件框圖
主控芯片STM32F103RBT6是以ARM 32的Cortex—M3為內(nèi)核的處理器,最高工作頻率可達(dá)72MHz,內(nèi)置大容量高速存儲(chǔ)器,為處理老人大量的姿態(tài)算法數(shù)據(jù)提供了足夠的內(nèi)存和處理時(shí)間;具備FSMC靈活的靜態(tài)存儲(chǔ)器控制器,用其來驅(qū)動(dòng)液晶屏極大地提高了刷新率;同時(shí),它內(nèi)嵌有支持CAN 2.0B的控制器,無需外擴(kuò)專用芯片便可以組成CAN網(wǎng)絡(luò)。因此作為此次模擬系統(tǒng)的中央控制器。
而作為輔助處理線程的Arduino uno是基于ATmega328P的單片機(jī)開發(fā)板。該開發(fā)板由14路數(shù)字輸入/輸出引腳(其中6路可以用作PWM輸出)、6路模擬輸入、1個(gè)16MHz的石英晶體振蕩器、一個(gè)USB接口、1個(gè)電源接頭、1個(gè)ICSP數(shù)據(jù)頭以及1個(gè)復(fù)位按鈕組成。Uno包含了單片機(jī)運(yùn)行所需的所有要素,只需用USB連接線將其連接到計(jì)算機(jī),或利用AC-DC適配器或電池供電后即可啟動(dòng)。Uno的特色在于將Atmega16U2編程為一個(gè)USB-to-serial轉(zhuǎn)換器,以便能簡(jiǎn)單、輕松和自由地安裝驅(qū)動(dòng)程序。
MPU-6050整合了3軸陀螺儀、3軸加速器,并含可藉由第二個(gè)I2C端口連接其他廠牌之加速器、磁力傳感器、或其他傳感器的數(shù)位運(yùn)動(dòng)處理(DMP:Digital Motion Processor)硬件加速引擎,由主要I2C端口以單一數(shù)據(jù)流的形式,向應(yīng)用端輸出完整的9軸融合演算技術(shù)。我們將MPU6050陀螺儀模塊與STM32最小系統(tǒng)板連接,單片機(jī)通過IIC總線通訊協(xié)議讀取轉(zhuǎn)化采集到的角度姿態(tài)。并通過軟件濾波方式使輸入的數(shù)據(jù)變得更加平滑與連續(xù),從而系統(tǒng)檢測(cè)變得更加穩(wěn)定。
在STM32最小系統(tǒng)板的程序設(shè)計(jì)上,通過編程對(duì)寄存器操作以及SCL、CLK、SDA時(shí)序邏輯的轉(zhuǎn)變從而使得溫濕度傳感器以及MPU6050三軸陀螺儀模塊正常檢測(cè)。在檢測(cè)老人是否摔倒的程序編寫上,我們將MPU6050陀螺儀檢測(cè)到的傾角數(shù)值通過卡爾曼濾波算法、低通濾波算法、PID算法使數(shù)值的變化曲線趨近于平滑的曲線,以便能夠更好的對(duì)老人姿態(tài)進(jìn)行準(zhǔn)確的檢測(cè)。當(dāng)單片機(jī)檢測(cè)到老人摔倒后,再通過單片機(jī)的串口通信開啟GPS定位功能,將老人所在位置的經(jīng)緯度通過GSM模塊短信文本發(fā)送到指定號(hào)碼的移動(dòng)設(shè)備上,以便老人能夠得到及時(shí)的救治。
由于脈搏傳感器檢測(cè)信號(hào)為模擬量,為了將其轉(zhuǎn)化為數(shù)字量,我們需要接入ADC0832芯片以及外設(shè)電路,并通過單片機(jī)內(nèi)自帶的AD通道將其數(shù)值采集轉(zhuǎn)換。當(dāng)檢測(cè)到老人的脈搏發(fā)生異常時(shí),通過IO的高低電平轉(zhuǎn)換,控制GSM通過單品機(jī)的串口通信向指定的號(hào)碼撥打電話和報(bào)警。作為拓展,我們將Arduino連接HX-M02 WiFi模塊,并通過外網(wǎng)傳輸將單片機(jī)采集到的溫濕度數(shù)值以及脈搏傳感器數(shù)值分別發(fā)送到程序指定的云服務(wù)數(shù)據(jù)庫中,我們僅需在另一終端上登錄指定數(shù)據(jù)庫就可以將數(shù)值顯示出來。
為了將檢測(cè)結(jié)果更能簡(jiǎn)單方便的顯示給用戶,我們決定使用手機(jī)應(yīng)用程序來讀取數(shù)據(jù)庫中老人身體狀態(tài)的數(shù)值。因此我們將采用Andriod Studio軟件來進(jìn)行安卓程序的編寫。在軟件的開發(fā)中,我們?cè)O(shè)計(jì)了登錄界面、老人狀態(tài)顯示界面。并通過添加方法將登錄、注冊(cè)功能寫入,增加了其系統(tǒng)的安全性。當(dāng)我們登錄成功后,頁面會(huì)自動(dòng)跳轉(zhuǎn)到老人狀態(tài)顯示界面。在此界面中,文本框顯示老人的身體狀態(tài)數(shù)值,以及對(duì)數(shù)值進(jìn)行分析得出合理性的建議。在數(shù)據(jù)的接收和分析中,我們?cè)谠品?wù)器中創(chuàng)建一個(gè)網(wǎng)頁,并通過PHP語言編寫條件的邏輯判斷以及對(duì)數(shù)據(jù)庫的讀寫操作,從而實(shí)現(xiàn)數(shù)據(jù)的交互傳輸。
本文通過對(duì)老人監(jiān)護(hù)系統(tǒng)的硬件電路選擇以及軟件控制程序編寫的介紹,系統(tǒng)結(jié)合了硬件優(yōu)化結(jié)構(gòu)的電路控制和單片機(jī)濾波程序控制兩種方式,先經(jīng)過模擬電路初步調(diào)節(jié),再通過單片機(jī)程序軟件逐步精細(xì)優(yōu)化、以及安卓應(yīng)用程序的不斷測(cè)試修改。在測(cè)試過程中,表現(xiàn)出了穩(wěn)定、靈活、高效的特點(diǎn),能夠有效體現(xiàn)系統(tǒng)的方便智能,具有廣闊的應(yīng)用前景、市場(chǎng)價(jià)值。