寧運(yùn)琨,熊顯名,趙國如
(1.桂林電子科技大學(xué) 電子工程與自動化學(xué)院 ,廣西 桂林 541004;2.中國科學(xué)院深圳先進(jìn)技術(shù)研究院生物醫(yī)學(xué)與健康工程研究所,廣東深圳 518055)
跌倒是對老年人健康乃至生命的嚴(yán)重威脅,在我國,跌倒是65歲以上老年人首位傷害死因[1]。在對人體跌倒實(shí)驗(yàn)數(shù)據(jù)分析階段,目前普遍采用的方法是在傳感器節(jié)點(diǎn)模塊上內(nèi)置存儲介質(zhì),實(shí)時(shí)存儲姿態(tài)數(shù)據(jù),然后后期用Matble分析處理,采用該方法,測量數(shù)據(jù)不容易丟失,但分析數(shù)據(jù)不夠靈活??紤]到人體佩戴的方便性和功耗,不適合在傳感器節(jié)點(diǎn)端安裝人機(jī)交互模塊(按鍵或觸摸屏等)進(jìn)行配置和顯示。在數(shù)據(jù)采集系統(tǒng)中,有線方式可靠、穩(wěn)定,但需要在測量現(xiàn)場布置大量的導(dǎo)線或電纜,安裝、拆卸都比較復(fù)雜,靈活性差,成本高[2]。而射頻通信具有成本低,布線簡單的優(yōu)點(diǎn),特別適用于電池供電的手持或者人體佩戴設(shè)備。
本文提出一種基于nRF905的數(shù)據(jù)包和配置命令無線傳輸?shù)能浻布鉀Q方案,可以實(shí)現(xiàn)將節(jié)點(diǎn)采集到的加速度和角速度通過射頻方式上傳到界面友好的PC機(jī)顯示控制和分析,無線傳感器節(jié)點(diǎn)上傳感器的量程、采樣率等以及數(shù)據(jù)采集命令均可以通過PC機(jī)可視化操作。
如圖1所示,系統(tǒng)主要由無線傳感器節(jié)點(diǎn)、基站和上位機(jī)組成。節(jié)點(diǎn)模塊通過腰帶綁定在人體腰部,確保傳感器三維坐標(biāo)隨同人體坐標(biāo)而變化,節(jié)點(diǎn)的MCU負(fù)責(zé)將傳感器數(shù)據(jù)通過無線方式發(fā)往基站,并可以接收基站上位機(jī)發(fā)來的各種配置命令從而對傳感器和MSP430配置,而基站負(fù)責(zé)將接收的數(shù)據(jù)發(fā)送到上位機(jī)。上位機(jī)可實(shí)現(xiàn)跌倒過程的加速度和角速度波形顯示控制、配置命令發(fā)送等功能。
節(jié)點(diǎn)的電源管理單元包括充電電路和穩(wěn)壓電路,采用3.7 V鋰電池給各模塊供電。
圖1 系統(tǒng)硬件結(jié)構(gòu)圖Fig 1 Structure diagram of system hardware
主控芯片采用了TI公司的基于16位精簡指令集架構(gòu)的微控制器MSP4302418作為處理器單元,該芯片電源電壓范圍為1.8~3.6 V,具有5種節(jié)能模式,從待機(jī)模式中喚醒僅需不到1 μs的時(shí)間,內(nèi)含116 kB+256 B的FLASH,8 kB的RAM,在芯片上集成了4個(gè)獨(dú)立的SPI同步串行接口和2個(gè)RS—232異步串行接口,可以方便地與PC機(jī)和采用SPI通信的MEMS硬件模塊連接。MSP4302418 P1.P2口具有外部中斷能力,可以對P1,P2口的每個(gè)引腳獨(dú)立的設(shè)置為上升沿或者下降沿中斷,在功耗體積要求苛刻而運(yùn)算處理速度要求較快的場合得到了廣泛的應(yīng)用[3]。
系統(tǒng)采用NORDIC公司的nRF905芯片,配上外圍電路和天線作為射頻模塊,該芯片采用32引腳的QFN 5 mm×5 mm封裝結(jié)構(gòu),nRF905是工作于433/868/915 MHz ISM頻段的單片射頻收發(fā)器,最高數(shù)據(jù)傳輸速率為50kps,收發(fā)模式切換時(shí)間小于650 μs,內(nèi)置CRC檢錯(cuò)和高效GFSK調(diào)制,抗干擾能力強(qiáng),125頻道,通過SPI總線可以對nRF905進(jìn)行點(diǎn)對多點(diǎn)地址控制和頻率、功耗等控制,滿足多點(diǎn)通信和調(diào)頻通信的要求。采用1.9~3.3 V的工作電壓,待機(jī)模式下僅消耗2.5 μA的電流,在發(fā)送模式下,當(dāng)發(fā)射功率為10 dBm的時(shí)候僅消耗30 mA的電流,接收模式下僅消耗12.2 mA的電流[4]。
傳感器組件采用美國 InvenSense公司的 MPU6000,4 mm×4 mm ×0.9 mm QFN 超小封裝,MPU—6000整合了3軸陀螺儀、3軸加速器,量程分別為±2,±4,±8,±16gn;±250°/s,±500°/s,±1000°/s,±2000°/s。
如圖2所示,MSP430自帶同步串行總線接口,相比普通單片機(jī)的軟件模擬SPI方式,它不需要CPU過多的干預(yù),使得CPU有更多的時(shí)間處理其他事務(wù),SPI總線的時(shí)鐘、相位、極性、中斷等可以通過相應(yīng)的寄存器進(jìn)行靈活的配置。相比I2C方式,具有速度快、編程簡單的優(yōu)點(diǎn),故MSP430采用四線制SPI總線與MPU6000和nRF905進(jìn)行數(shù)據(jù)傳輸。在節(jié)點(diǎn)中MPU6000和nRF905都作為從機(jī),時(shí)鐘和片選都由MSP430控制,MPU6000中斷輸出線 INT用于當(dāng)MPU6000三軸上的所有傳感器數(shù)據(jù)準(zhǔn)備好,INT置高,通知MSP430進(jìn)行SPI讀取數(shù)據(jù)。nRF905的3根狀態(tài)指示線:CD(當(dāng)載波偵聽置1)、AM(當(dāng)?shù)刂菲ヅ渲?)、DR(當(dāng)數(shù)據(jù)準(zhǔn)備好置1)分別與 P2.3,P2.4,P2.5 相連,作為 MCU 的中斷輸入線。模式控制線用于模式轉(zhuǎn)換[5],如表1所示,三線不同組合指示nRF905不同的工作模式?;镜腗SP430與nRF905的硬件電路一樣,只是多了串口模塊,采用RS—232與PC機(jī)通信,雖然效率比不上并口,但是具有線路少、成本低、結(jié)構(gòu)簡單的優(yōu)點(diǎn),而且基站的MSP430本身就帶有波特率可設(shè)置的異步串行硬件接口,為數(shù)據(jù)通信提供了方便。
圖2 節(jié)點(diǎn)硬件電路圖Fig 2 Circuit diagram of node hardware
表1 nRF905工作模式Tab 1 Operating mode of nRF905
系統(tǒng)軟件分為節(jié)點(diǎn)數(shù)據(jù)采集、節(jié)點(diǎn)數(shù)據(jù)包無線發(fā)送、節(jié)點(diǎn)命令接收處理,基站數(shù)據(jù)包接收、基站命令中轉(zhuǎn),系統(tǒng)采用模塊化的設(shè)計(jì)方法,兼顧功耗與運(yùn)算速率,充分利用MSP430的中斷系統(tǒng)來確保數(shù)據(jù)的實(shí)時(shí)傳輸。
為了提高節(jié)點(diǎn)端MSP430的處理速率和充分發(fā)揮PC機(jī)強(qiáng)大運(yùn)算能力和面向?qū)ο罂梢暬幊痰膬?yōu)勢,數(shù)據(jù)包僅包括三軸加速度和三軸陀螺儀原始數(shù)據(jù)和中斷狀態(tài)寄存器內(nèi)容,MPU6000內(nèi)置3種運(yùn)動狀態(tài)檢測:自由落體、運(yùn)動、零運(yùn)動,在相應(yīng)配置寄存器中使能相應(yīng)狀態(tài)檢測中斷之后,當(dāng)MPU6000檢測到的加速度閾值低于或者高于設(shè)定的加速度閾值時(shí),就會觸發(fā)中斷,中斷狀態(tài)寄存器中相應(yīng)標(biāo)志位置1,MPU6000運(yùn)動狀態(tài)檢測系統(tǒng)的運(yùn)用能夠降低CPU處理跌倒算法的難度。從原始數(shù)據(jù)到相應(yīng)物理數(shù)據(jù)的轉(zhuǎn)換和波形可視化分析的工作,都由上位機(jī)完成,數(shù)據(jù)包格式如表2所示,Acc-X,Gyr-X分別代表X軸16位補(bǔ)碼(實(shí)質(zhì)上是高8位和低8位寄存器數(shù)據(jù)的組合)加速度和陀螺儀原始數(shù)據(jù),均占2個(gè)字節(jié),Y,Z依次類推,0xab代表包頭,INT-STATUS代表8位中斷狀態(tài)寄存器,數(shù)據(jù)包一共14個(gè)字節(jié)。
表2 數(shù)據(jù)包格式Tab 2 Data packet format
在人體跌倒慣性數(shù)據(jù)的傳輸實(shí)驗(yàn)中,需要結(jié)合各種日常生活行為和跌倒行為進(jìn)行對比分析(比如:快速坐下、緩慢蹲下,跳躍等),MPU6000需要根據(jù)實(shí)驗(yàn)條件設(shè)定不同的加速度、角速度量程、采樣率、濾波器頻率等。這些配置都由上位機(jī)以命令包的形式下發(fā),然后通過節(jié)點(diǎn)無線接收、解析后再通過SPI寫入配置寄存器。命令包如表3所示,Reg1—a和Reg1—d都是1個(gè)字節(jié)寬度,分別代表包中第一個(gè)寄存器的地址編號和配置內(nèi)容,后面依次類推。一個(gè)命令包共32個(gè)字節(jié),0xba代表命令包包頭,一條命令最多只能同時(shí)配置8個(gè)MPU6000寄存器,后面15個(gè)字節(jié)是MSP430和nRF905的配置信息,包括節(jié)點(diǎn)MSP430的SPI配置和啟動采集、停止采集等特殊命令。
表3 命令包格式Tab 3 Command packet format
節(jié)點(diǎn)主要包括MPU6000和nRF905初始化,慣性數(shù)據(jù)采集、打包處理,數(shù)據(jù)包無線發(fā)送,中斷響應(yīng)接收幾大模塊。流程圖如圖3所示。當(dāng)系統(tǒng)進(jìn)行一系列的初始化之后,節(jié)點(diǎn)軟件系統(tǒng)進(jìn)入待機(jī)模式(低功耗模式LPM0)并且開啟中斷等待命令,當(dāng)nRF905接收到載波頻段匹配和接收到的數(shù)據(jù)包中的地址與本身地址一致的時(shí)候,AM引腳即可置高,MSP430馬上退出LPM0并觸發(fā)中斷。以PC機(jī)端的啟動命令來開啟“采集數(shù)據(jù)—發(fā)送數(shù)據(jù)”的循環(huán),以結(jié)束命令結(jié)束該循環(huán)并返回待機(jī)模式。這為靈活控制采集數(shù)據(jù)的時(shí)段和增強(qiáng)電池續(xù)航能力提供了良好解決方案。為了保證該循環(huán)處理數(shù)據(jù)的實(shí)時(shí)性,所有的命令配置的接收和處理都放在P2.4(AM)中斷服務(wù)函數(shù)。因?yàn)楣?jié)點(diǎn)端數(shù)據(jù)包發(fā)送完畢同樣會令DR端置1,所以,節(jié)點(diǎn)若利用DR來通知命令接收將會引起嚴(yán)重干擾,只能采用AM檢測。系統(tǒng)軟件中在初始化和發(fā)送數(shù)據(jù)后必須根據(jù)表1讓nRF905進(jìn)入接收模式,否則,不能接收命令。
基站的初始化大部分與節(jié)點(diǎn)類似,但多了串口初始化部分,軟件采用9600 kbs的波特率通信。流程圖如圖4所示。當(dāng)節(jié)點(diǎn)不發(fā)送數(shù)據(jù)的時(shí)候,基站可以進(jìn)入低功耗模式或者做其他事務(wù)處理。經(jīng)測試發(fā)現(xiàn),系統(tǒng)若采用輪詢方式接收數(shù)據(jù)包,當(dāng)節(jié)點(diǎn)端數(shù)據(jù)包發(fā)送太快會出現(xiàn)丟包現(xiàn)象,而采用外部中斷接收可以避免上述現(xiàn)象,當(dāng)基站的nRF905的DR端置1,說明數(shù)據(jù)已經(jīng)接收成功,并放到了nRF905的接收寄存器,觸發(fā)P2.5(DR)上升沿中斷,之后系統(tǒng)退出低功耗或者終止其他事務(wù)處理,之后在P25外部中斷服務(wù)函數(shù)里面,令nRF905進(jìn)入待機(jī)模式,通過SPI讀取nRF905接收數(shù)據(jù)寄存器的內(nèi)容,再通過RS—232發(fā)往上位機(jī)。為了快速響應(yīng)命令,基站的MCU采用串口中斷接收上位機(jī)的命令,流程圖如圖4所示。
圖3 節(jié)點(diǎn)軟件流程圖Fig 3 Flow chart of node software
圖4 基站軟件流程圖Fig 4 Flow chart of base station software
上位機(jī)采用VC++6.0開發(fā),上位機(jī)通過調(diào)用動態(tài)鏈接庫Pcomm.dll來進(jìn)行串口通信,避免了基于MSComm控件的通信函數(shù)中數(shù)據(jù)類型轉(zhuǎn)換和配置的復(fù)雜性,并減少了應(yīng)用程序執(zhí)行時(shí)所占內(nèi)存空間[6],可以通過按鈕、文本框等操作對波特率、串口端口號、節(jié)點(diǎn)各個(gè)模塊進(jìn)行可視化配置,上位機(jī)利用繪圖的雙緩沖技術(shù),有效避免了繪制波形過程中的閃爍,并且提高繪圖速率。上位機(jī)還利用了多線程技術(shù),X,Y,Z軸的加速度和陀螺儀六通道數(shù)據(jù)都可以實(shí)時(shí)采集并顯示波形。結(jié)合MPU6000的運(yùn)動狀態(tài)中斷寄存器檢測結(jié)果,可以對波形進(jìn)行觸發(fā)控制,波形數(shù)據(jù)還可以保存打印輸出。
系統(tǒng)調(diào)試分為命令測試和數(shù)據(jù)測試,篇幅有限,僅給出部分測試數(shù)據(jù)。表4為節(jié)點(diǎn)處于靜止條件,根據(jù)傳感器量程不同和MPU6000的X軸所處在的姿態(tài)不同,對應(yīng)的X軸加速度測量數(shù)據(jù),圖5是節(jié)點(diǎn)佩戴到人體身上后人體跌倒過程中上位機(jī)捕獲到的三軸加速度、三軸角速度數(shù)據(jù)。根據(jù)表中可以看出,采集的數(shù)據(jù)和實(shí)際很相符,無線傳輸具有良好的可靠性。
圖5 上位機(jī)捕獲到的加速度和角速度波形Fig 5 Acceleration and angular velocity wave captured by upper computer
該系統(tǒng)的數(shù)據(jù)傳輸是在單一節(jié)點(diǎn)單一基站之間進(jìn)行實(shí)驗(yàn)該系統(tǒng)的數(shù)據(jù)傳輸是在單一節(jié)點(diǎn)單一基站之間進(jìn)行實(shí)驗(yàn)的,因此,功能上有一定的局限性。因?yàn)檐浖胁捎弥袛喾绞教幚頂?shù)據(jù),使得無論基站還是節(jié)點(diǎn)都可以實(shí)現(xiàn)實(shí)時(shí)發(fā)送接收,實(shí)時(shí)響應(yīng)命令,數(shù)據(jù)包不丟失,該系統(tǒng)在多節(jié)點(diǎn)多基站構(gòu)成的無線傳感器網(wǎng)絡(luò)或者其他無線傳輸應(yīng)用系統(tǒng)中也有一定的參考價(jià)值。
表4 X軸加速度值Tab 4 Acceleration value of X axis
[1] 張 玉.老年跌倒研究概況與進(jìn)展[J].中國老年學(xué)雜志,2008,28(5):929 -931.
[2] 趙建華,韓玉杰.基于nRF905的溫室無線數(shù)據(jù)傳輸系統(tǒng)[J].機(jī)電產(chǎn)品開發(fā)與創(chuàng)新,2009,22(6):141-142.
[3] 沈建華,楊艷琴.MSP430系列16位超低功耗單片機(jī)原理與實(shí)踐[M].北京:北京航空航天大學(xué)出版社,2008.
[4] 蔣 博.nRF905的無線數(shù)據(jù)傳輸系統(tǒng)[J].工業(yè)儀表與自動化裝置,2006(3):59-60.
[5] 張孝云,江小華.基于nRF905的無線加速度測量系統(tǒng)設(shè)計(jì)[J].現(xiàn)代電子技術(shù),2011,34(17):155 -156.
[6] 孫 鑫,余安萍.VC++深入詳解[M].北京:電子工業(yè)出版社,2006.