關(guān)志艷,趙一龍,邊皖佳,馮喜喜,黃澤欣
(1.山西工程科技職業(yè)大學(xué)信息工程學(xué)院,山西 太原 030060;2.山西大學(xué)商務(wù)學(xué)院信息學(xué)院,山西 太原 030001)
我們國(guó)家對(duì)于生命特征的監(jiān)測(cè)技術(shù)和相關(guān)產(chǎn)品的研究大多在體育、醫(yī)療等領(lǐng)域,或者是用于個(gè)人的功能型手環(huán)等,而針對(duì)于消防員作戰(zhàn)時(shí)的生命特征監(jiān)測(cè)領(lǐng)域的研究還處在初級(jí)階段,并沒(méi)有成熟的產(chǎn)品。大多數(shù)的產(chǎn)品存在攜帶不方便的問(wèn)題,甚至影響消防員在戰(zhàn)斗時(shí)做專業(yè)性的動(dòng)作,或者是當(dāng)消防員遇到了危險(xiǎn),但是報(bào)警系統(tǒng)不能及時(shí)傳達(dá)到指揮端,通信能力差,使用這些設(shè)備很有可能會(huì)造成一些不必要的犧牲[1]。
針對(duì)上述情況,本設(shè)計(jì)提出的基于ZigBee的消防員生命特征監(jiān)測(cè)系統(tǒng),感知層采用CC2530單片機(jī)、心率傳感器PulseSensor、溫度傳感器DS18B20和OLED顯示屏實(shí)現(xiàn)數(shù)據(jù)采集;網(wǎng)絡(luò)層采用ZigBee模塊實(shí)現(xiàn)數(shù)據(jù)傳輸;應(yīng)用層通過(guò)協(xié)調(diào)器串口將數(shù)據(jù)傳輸?shù)絇C機(jī)并顯示。整體上可以實(shí)現(xiàn)心率及體溫的監(jiān)測(cè)、數(shù)據(jù)遠(yuǎn)程傳輸和報(bào)警的功能,可以為消防員指揮端提供有效數(shù)據(jù)支持。
系統(tǒng)的整體結(jié)構(gòu)如圖1所示。ZigBee終端控制心率傳感器和溫度傳感器,獲取消防員的心率和體溫。ZigBee終端通過(guò)預(yù)設(shè)閾值來(lái)實(shí)現(xiàn)報(bào)警功能,如果所監(jiān)測(cè)的數(shù)據(jù)出現(xiàn)異常,終端的蜂鳴器報(bào)警提示消防員,同時(shí)終端采集到的數(shù)據(jù)會(huì)同步傳輸?shù)絑igBee協(xié)調(diào)器,并且通過(guò)串口將數(shù)據(jù)顯示在PC端,供指揮端查看,當(dāng)接收到的數(shù)據(jù)不在所設(shè)閾值的情況下蜂鳴器報(bào)警。
圖1 系統(tǒng)整體結(jié)構(gòu)圖
1) 通過(guò)心率傳感器和溫度傳感器采集消防員的心率和體溫?cái)?shù)據(jù)。
2) 采集到的數(shù)據(jù)通過(guò)ZigBee終端接收和處理在OLED液晶顯示屏上顯示。
3) 相關(guān)數(shù)據(jù)通過(guò)網(wǎng)絡(luò)傳輸?shù)絑igBee協(xié)調(diào)器并且在PC端實(shí)時(shí)查看數(shù)據(jù)。
4) 當(dāng)所測(cè)得的數(shù)據(jù)高于或低于閾值時(shí)通過(guò)蜂鳴器報(bào)警。
本設(shè)計(jì)的電路是在Aultium Designer軟件下進(jìn)行繪制與設(shè)計(jì)的,整個(gè)設(shè)計(jì)主要包括最小單片機(jī)系統(tǒng)、顯示模塊、心率采集模塊、體溫采集模塊、報(bào)警模塊,如圖2所示。
圖2 感知層電路
在本次設(shè)計(jì)中,首先終端部分使用了CC2530的并行I/O口,如圖2所示,其中P0_4連接心率傳感器Pulse Sensor; P0_5連接蜂鳴器;P0_7連接溫度傳感器DS18B20;P0_0、P1_2、P1_3、P1_7連接OLED顯示屏;協(xié)調(diào)器部分的P0_7連接蜂鳴器;P0_2、P0_3進(jìn)行串口通信。其次使用了CC2530單片機(jī)的硬件定時(shí)器T3。最后使用SPI總線用于OLED顯示屏的顯示。
在心率采集模塊使用Pulse Sensor傳感器,它可以測(cè)量人體的心率,測(cè)量的時(shí)候是通過(guò)發(fā)光二極管對(duì)動(dòng)脈血和血紅蛋白具有選擇性的波長(zhǎng)進(jìn)行測(cè)量,將得到的信號(hào)進(jìn)行濾波和放大,再由CC2530單片機(jī)將采集到的模擬信號(hào)值轉(zhuǎn)換為數(shù)字信號(hào),再通過(guò)對(duì)應(yīng)的計(jì)算得到心率數(shù)值[2]。
如圖2所示,心率傳感器的S端是脈搏信號(hào)輸出端,需要接在CC2530單片機(jī)的AD接口P0_4;“+”需要接在3.3V電源接口,“-”接在GND接口。當(dāng)手指放在傳感器上的時(shí)候,檢測(cè)腳就會(huì)隨著心率的變化,輸出對(duì)應(yīng)波形,ZigBee使用ADC周期(2ms采樣一次)去采樣,分析數(shù)據(jù),即可得到心率。
在環(huán)境溫度采集模塊使用DS18B20溫度傳感器,它的電源端接在單片機(jī)的3.3V電源接口,如圖2所示,信號(hào)線接在P0_7接口,負(fù)極接在單片機(jī)的GND端口,在使用DS18B20時(shí)切記不可將電源端與負(fù)極反接,否則會(huì)造成傳感器的損壞。
在顯示模塊采用OLED液晶顯示屏,其顯示數(shù)據(jù)的方式為SPI總線傳輸,如圖2所示,SPI時(shí)鐘接在P1_2引腳,SPI數(shù)據(jù)接在P1_3引腳,復(fù)位腳接在P1_7引腳,數(shù)據(jù)和命令選擇接在P0_0引腳,高電平獲取數(shù)據(jù),低電平是命令。
在主程序中,首先ZigBee終端要對(duì)心率傳感器、溫度傳感器以及串口定時(shí)器等進(jìn)行初始化工作,隨后與ZigBee協(xié)調(diào)器建立連接,進(jìn)行數(shù)據(jù)的傳輸,協(xié)調(diào)器通過(guò)串口通信功能將監(jiān)測(cè)到的數(shù)據(jù)顯示在PC端。如圖3所示為感知層主程序的流程圖。
圖3 感知層主程序流程
ZigBee協(xié)議是統(tǒng)一標(biāo)準(zhǔn),是為了實(shí)現(xiàn)兩個(gè)設(shè)備之間的通信。協(xié)議棧是在協(xié)議的基礎(chǔ)上所做的一個(gè)集合,通過(guò)協(xié)議棧就可以實(shí)現(xiàn)兩個(gè)設(shè)備之間的無(wú)線通信功能了。ZigBee協(xié)議分為兩個(gè)部分。IEEE 802.15.4開(kāi)發(fā)了有關(guān)PHY和MAC的相關(guān)標(biāo)準(zhǔn)。ZigBee聯(lián)盟已經(jīng)為NWK,APS和APL開(kāi)發(fā)了相關(guān)標(biāo)準(zhǔn)。如圖4所示。
圖4 ZigBee協(xié)議架構(gòu)
用戶自己添加的應(yīng)用任務(wù)程序在Zstack中的調(diào)用過(guò)程[3]:
main()—> osal_init_system()—> osalInitTasks()—> SampleApp_Init()
1) 程序入口
main函數(shù)的功能:首先執(zhí)行初始化任務(wù),包括硬件,網(wǎng)絡(luò)層和任務(wù)初始化。然后運(yùn)行osal_start_system()函數(shù)運(yùn)行操作系統(tǒng)。
2) 系統(tǒng)初始化[4]
osal_init_system();函數(shù)是系統(tǒng)的初始化功能。osalInitTasks();函數(shù)是任務(wù)初始化功能。SampleApp_Init();函數(shù)是使用協(xié)議棧所需的函數(shù),用戶通常在其中初始化自己的協(xié)議棧。
3) 運(yùn)行操作系統(tǒng)
4) 用戶應(yīng)用任務(wù)初始化
SampleApp_Init()函數(shù)是用于用戶應(yīng)用程序任務(wù)的初始化函數(shù)。
5) 應(yīng)用任務(wù)事件處理函數(shù)
SampleApp_ProcessEvent()函數(shù)是事件處理功能,用于用戶應(yīng)用程序任務(wù)。
6) 應(yīng)用層無(wú)線消息處理
應(yīng)用程序?qū)訜o(wú)線消息處理在函數(shù)SampleApp_MessageMSGCB中。
7) 周期發(fā)送數(shù)據(jù)
SampleApp_SendPeriodicMessage()周期發(fā)送信息函數(shù),內(nèi)部調(diào)用了函數(shù)AF_DataRequest進(jìn)行無(wú)線消息發(fā)送[5]。
PC端的數(shù)據(jù)顯示功能通過(guò)ZigBee協(xié)調(diào)器的串口與PC連接,使用sscom串口調(diào)試軟件實(shí)現(xiàn)數(shù)據(jù)的顯示與監(jiān)測(cè)供指揮端作出進(jìn)一步的指示。串口通信的流程:終端入網(wǎng)成功后,上傳自己的短地址到協(xié)調(diào)器,終端串口輸出“parent:0,xxxx”,其中“xxxx”為終端的短地址。協(xié)調(diào)器收到設(shè)備的短地址時(shí),會(huì)將其保存在SerialApp_TxAddr中,協(xié)調(diào)器將其用于將數(shù)據(jù)發(fā)送到設(shè)備。在這一系列的準(zhǔn)備工作完成之后就可以實(shí)現(xiàn)數(shù)據(jù)的發(fā)送接收功能。
該設(shè)計(jì)是基于ZigBee的消防員生命體征監(jiān)測(cè)系統(tǒng)。該系統(tǒng)分為兩部分,一部分是終端,可以通過(guò)攜帶的方式監(jiān)測(cè)到消防員的生命特征,提前設(shè)置好閾值起到報(bào)警的功能;另一部分是協(xié)調(diào)器,可以通過(guò)ZigBee與終端建立網(wǎng)絡(luò)連接,接收到終端傳回的數(shù)據(jù),并通過(guò)串口將數(shù)據(jù)顯示在PC端。