文獻(xiàn)標(biāo)識(shí)碼: A
文章編號(hào): 0258-7998(2015)06-0062-04
0 引言
隨著科技的進(jìn)步和人們生活水平的提高,便攜式導(dǎo)航系統(tǒng)在人們的生活中已經(jīng)得到了廣泛的應(yīng)用。采用MIMU/GPS組合導(dǎo)航系統(tǒng)在一定程度上可以實(shí)現(xiàn)個(gè)人導(dǎo)航系統(tǒng)不受GPS信號(hào)限制的全區(qū)域?qū)Ш降倪B續(xù)性和可靠性[1]。而便攜式導(dǎo)航設(shè)備往往穿戴于人身上,若傳感器是以硬件有線(xiàn)連接方式進(jìn)行數(shù)據(jù)傳輸,會(huì)使設(shè)備穿戴不便,且會(huì)妨礙捕捉對(duì)象的正常運(yùn)動(dòng)過(guò)程。ZigBee技術(shù)是一種短距離、低成本、低功耗、低復(fù)雜度的無(wú)線(xiàn)通信技術(shù),它擁有強(qiáng)大的網(wǎng)絡(luò)功能,并且網(wǎng)絡(luò)數(shù)據(jù)傳輸穩(wěn)定、可靠[2]?;谏鲜霈F(xiàn)狀,本導(dǎo)航系統(tǒng)使用GPS和MEMS組合導(dǎo)航,并采用全無(wú)線(xiàn)的通信方式,使本系統(tǒng)在穿戴時(shí)方便可靠,對(duì)捕捉對(duì)象運(yùn)動(dòng)無(wú)束縛作用。
1 便攜式導(dǎo)航系統(tǒng)方案設(shè)計(jì)
基于微慣性及GPS組合的便攜式導(dǎo)航系統(tǒng)主要由無(wú)線(xiàn)發(fā)送終端和手持無(wú)線(xiàn)接收終端兩部分構(gòu)成。無(wú)線(xiàn)發(fā)送終端通常穿戴于人體的某個(gè)部位,如鞋上、腿上或腰上等,實(shí)現(xiàn)微慣性傳感器數(shù)據(jù)采集,并通過(guò)無(wú)線(xiàn)通信的方式將數(shù)據(jù)發(fā)送到便攜式手持無(wú)線(xiàn)接收終端;手持無(wú)線(xiàn)接收終端主要實(shí)現(xiàn)接收無(wú)線(xiàn)慣性傳感器數(shù)據(jù)和采集GPS信息,并將所有數(shù)據(jù)傳輸給手持終端的導(dǎo)航計(jì)算機(jī)進(jìn)行導(dǎo)航解算,并將解算的導(dǎo)航信息顯示在LCD液晶屏幕上。便攜式導(dǎo)航系統(tǒng)示意圖如圖1所示。
系統(tǒng)主要由微慣性測(cè)量單元、導(dǎo)航計(jì)算機(jī)、GPS接收機(jī)、電源穩(wěn)壓電路、LCD液晶屏等構(gòu)成。根據(jù)MIMU/GPS組合便攜式導(dǎo)航系統(tǒng)對(duì)導(dǎo)航計(jì)算機(jī)體積、功耗、運(yùn)算能力、接口等各方面需求,以DSP+MCU架構(gòu)實(shí)現(xiàn)導(dǎo)航計(jì)算機(jī)的設(shè)計(jì)。其中DSP主要完成導(dǎo)航算法和系統(tǒng)控制的主處理器,專(zhuān)注于導(dǎo)航數(shù)據(jù)的實(shí)時(shí)解算;另一個(gè)為基于無(wú)線(xiàn)通信技術(shù)的微控制器MCU負(fù)責(zé)完成對(duì)外的數(shù)據(jù)接口電路及無(wú)線(xiàn)通信部分,導(dǎo)航器件包括一個(gè)集成三軸陀螺儀、三軸加速度計(jì)和三軸磁強(qiáng)計(jì)的微慣性測(cè)量傳感器以及GPS接收機(jī)。
系統(tǒng)選用的器件均為性?xún)r(jià)比高、可靠性強(qiáng)、技術(shù)發(fā)展成熟的器件,因此系統(tǒng)具有工作壽命長(zhǎng)、功耗低、體積小、便于攜帶等優(yōu)點(diǎn),應(yīng)用前景廣闊。
2 系統(tǒng)硬件設(shè)計(jì)
2.1 數(shù)據(jù)采集發(fā)送終端
如圖2所示,數(shù)據(jù)采集發(fā)送終端主要由微慣性測(cè)量單元ADIS16405、ZigBee無(wú)線(xiàn)通信模塊CC2530、電源穩(wěn)壓電路等構(gòu)成,實(shí)現(xiàn)MEMS傳感器數(shù)據(jù)采集,并可將數(shù)據(jù)通過(guò)無(wú)線(xiàn)或UART協(xié)議傳輸給外部設(shè)備(PC機(jī)等)。MEMS微慣性傳感器選用ADIS16405慣性傳感器,ADIS16405傳感器是一個(gè)完整的慣性傳感系統(tǒng),它包括一個(gè)三軸陀螺儀、一個(gè)三軸加速度計(jì)和一個(gè)三軸磁強(qiáng)計(jì)[3]。CC2530微控制器通過(guò)SPI接口與MEMS微慣性測(cè)量傳感電路之間進(jìn)行雙向通信,一方面通過(guò) SPI 接口對(duì)慣性測(cè)量模塊相應(yīng)寄存器進(jìn)行配置;另一方面讀取MEMS微慣性測(cè)量傳感器中的數(shù)據(jù)。在兩者通信中,CC2530作為主機(jī),ADIS16405為從機(jī)。
由于CC2530本身帶有射頻的功能,對(duì)于此種小功率網(wǎng)絡(luò)節(jié)點(diǎn)的設(shè)計(jì)不需要外加額外的射頻芯片,只需加一些簡(jiǎn)單電路即可實(shí)現(xiàn)射頻功能。但是在設(shè)計(jì)節(jié)點(diǎn)時(shí),對(duì)于發(fā)射功率會(huì)有一定的要求,當(dāng)傳輸距離較遠(yuǎn)的時(shí)候需要加上功放芯片。因?yàn)樵撏饨与娐返纳漕l部分使用了單極子的不平衡天線(xiàn),所以要用一個(gè)巴倫電路來(lái)優(yōu)化性能,可以采用低成本的分立電容和電感來(lái)實(shí)現(xiàn)[4]。
2.2 數(shù)據(jù)處理接收終端
如圖3所示,數(shù)據(jù)處理接收終端主要由ZigBee無(wú)線(xiàn)通信模塊CC2530、導(dǎo)航計(jì)算機(jī)、GPS接收機(jī)、電源穩(wěn)壓電路、LCD液晶屏幕等構(gòu)成。系統(tǒng)以DSP+MCU架構(gòu)實(shí)現(xiàn)導(dǎo)航計(jì)算機(jī)的設(shè)計(jì),其中DSP主要完成導(dǎo)航數(shù)據(jù)的實(shí)時(shí)解算,另一個(gè)基于ZigBee技術(shù)的微控制器MCU負(fù)責(zé)完成對(duì)外部無(wú)線(xiàn)通信數(shù)據(jù)和GPS數(shù)據(jù)接收。導(dǎo)航結(jié)果參數(shù)通過(guò)液晶屏幕顯示。
系統(tǒng)選用TI公司C6000系列的浮點(diǎn)DSP TMS320C6727B作為導(dǎo)航解算的主處理器,由C6727組成的最小系統(tǒng)主要包括其基礎(chǔ)配置和存儲(chǔ)器電路兩部分,其中基礎(chǔ)配置主要由時(shí)鐘模塊、復(fù)位電路、調(diào)試接口電路等組成。
3 系統(tǒng)軟件設(shè)計(jì)
3.1 數(shù)據(jù)采集發(fā)送終端軟件設(shè)計(jì)
系統(tǒng)采用型號(hào)為CC2530的MCU,配置定時(shí)器10 ms中斷,以100 Hz的采樣頻率通過(guò)SPI總線(xiàn)讀取MEMS傳感器原始數(shù)據(jù),并應(yīng)用ZigBee協(xié)議,將傳感器數(shù)據(jù)傳輸?shù)綗o(wú)線(xiàn)接收終端。其軟件流程如圖4所示。
3.1.1 MIMU傳感器數(shù)據(jù)采集
MEMS微慣性測(cè)量模塊配置為SPI通信的從機(jī)模式,時(shí)鐘由主機(jī)CC2530提供。SPI 通信雙方靠主機(jī)提供的同步時(shí)鐘協(xié)調(diào)各自的收/發(fā)操作,其雙方是否可以通信取決于時(shí)鐘模式是否匹配。ADIS16405的SPI模塊在時(shí)鐘上升沿接收數(shù)據(jù),在時(shí)鐘下降沿發(fā)送數(shù)據(jù),因此要求主機(jī)CC2530在時(shí)鐘空閑時(shí)期要處于低電平狀態(tài)。
在圖5中,SCLK表示SPI 的時(shí)鐘,DIN表示SPI接收數(shù)據(jù),DOUT表示SPI發(fā)送數(shù)據(jù)。慣性測(cè)量模塊的SPI在SCLK為高電平時(shí)有效,在SCLK上升沿時(shí)刻接收數(shù)據(jù),在SCLK下降沿發(fā)送數(shù)據(jù)。
3.1.2 MIMU數(shù)據(jù)無(wú)線(xiàn)發(fā)送軟件設(shè)計(jì)
在組網(wǎng)步驟中,本文使用Basic RF。Basic RF由TI公司提供,它包含了IEEE 802.15.4標(biāo)準(zhǔn)的數(shù)據(jù)包的收發(fā)功能[7]。Basic RF為雙向無(wú)線(xiàn)通信提供了一個(gè)簡(jiǎn)單的協(xié)議,通過(guò)這個(gè)協(xié)議能夠進(jìn)行數(shù)據(jù)的發(fā)送和接收。
Basic RF的發(fā)送為:
(1)創(chuàng)建一個(gè)buffer,把payload放入其中。Payload最大為103 B。
(2)調(diào)用basicRfSendPacket()函數(shù)發(fā)送,并查看其返回值。uint8 basicRfSendPacket(uint16 destAddr, uint8* pPayload, uint8 length)函數(shù)功能是給目的短地址發(fā)送指定長(zhǎng)度的數(shù)據(jù),發(fā)送成功剛返回SUCCESS,失敗則返回FAILED。其中destAddr為目的短地址,pPayload是指向發(fā)送緩沖區(qū)的指針,length為發(fā)送數(shù)據(jù)長(zhǎng)度。
3.2 數(shù)據(jù)處理接收終端軟件設(shè)計(jì)
數(shù)據(jù)處理接收終端通過(guò)RF中斷接收無(wú)線(xiàn)慣性傳感器數(shù)據(jù),使用DMA控制器采集GPS串口信息,并將所有數(shù)據(jù)傳輸?shù)綄?dǎo)航計(jì)算機(jī)進(jìn)行導(dǎo)航解算,也可通過(guò)串口通信將數(shù)據(jù)傳輸給上位機(jī)監(jiān)控平臺(tái)。其軟件流程圖如圖6所示。
3.2.1 無(wú)線(xiàn)接收軟件設(shè)計(jì)
Basic RF的接收為:
(1)上層通過(guò)basicRfPacketIsReady()函數(shù)來(lái)檢查是否收到一個(gè)新數(shù)據(jù)包,此函數(shù)功能是檢查模塊是否已經(jīng)可以接收下一個(gè)數(shù)據(jù),如果準(zhǔn)備好則返回 TRUE。
(2)調(diào)用basicRfReceive()函數(shù),把收到的數(shù)據(jù)復(fù)制到buffer中,此函數(shù)功能是接收來(lái)自Basic RF層的數(shù)據(jù)包,并為所接收的數(shù)據(jù)配緩沖區(qū)。
3.2.2 基于DMA的串口數(shù)據(jù)收發(fā)
便攜式組合導(dǎo)航系統(tǒng)需要解析出的GPS相應(yīng)參數(shù)主要為速度和位置信息。實(shí)際OEM板輸出的數(shù)據(jù)主要有ASCII碼和二進(jìn)制方式兩種格式。ASCII碼格式比較符合人的閱讀習(xí)慣,而二進(jìn)制方式較適合計(jì)算機(jī)操作。本文選用二進(jìn)制方式進(jìn)行數(shù)據(jù)解析。GPS共輸出180個(gè)字節(jié),頭信息28個(gè)字節(jié),其中同步字符有3個(gè)AA 44 12,根據(jù)3個(gè)連續(xù)同步字符,可以判斷數(shù)據(jù)幀接收開(kāi)始。
針對(duì)大數(shù)據(jù)量的GPS串口間通信,在常規(guī)的UART串行數(shù)據(jù)通信的基礎(chǔ)上,結(jié)合CC2530微控制器中DMA控制器的作用,實(shí)現(xiàn)DMA控制的UART串口數(shù)據(jù)包收發(fā),可以避免在MCU處理接收RF數(shù)據(jù)過(guò)程中大流量數(shù)據(jù)串口通信中的數(shù)據(jù)丟失,極大地提高串行數(shù)據(jù)通信過(guò)程的MCU獨(dú)立性和MCU利用的效率[5-6]。
為了使用DMA通道,必須首先對(duì)DMA通道的源地址、目標(biāo)地址、傳送長(zhǎng)度、觸發(fā)事件等寄存器進(jìn)行配置。當(dāng)DMA通道配置完畢后,在允許任何傳輸發(fā)起之前,必須進(jìn)入工作狀態(tài)。DMA通道通過(guò)將DMA通道工作狀態(tài)寄存器DMAARM中指定位置1,就可以進(jìn)入工作狀態(tài)。一旦DMA通道進(jìn)入工作狀態(tài),當(dāng)配置的DMA觸發(fā)事件發(fā)生時(shí),即可開(kāi)始數(shù)據(jù)傳送。圖7為DMA工作流程圖。
4 測(cè)試與驗(yàn)證
本系統(tǒng)無(wú)線(xiàn)接收終端接收包含MIMU數(shù)據(jù)的RF信號(hào)并通過(guò)DMA采集GPS信號(hào)。CC2530有一個(gè)內(nèi)置的接收信號(hào)強(qiáng)度指示器(RSSI),可以從寄存器讀出,或自動(dòng)附加到收到的幀[8];同時(shí)在采集MEMS數(shù)據(jù)時(shí),MCU軟件進(jìn)行了幀計(jì)數(shù),每采集一組數(shù)據(jù)便計(jì)數(shù)加1,采集的數(shù)據(jù)可以通過(guò)此信息計(jì)算誤包率,判斷是否有數(shù)據(jù)丟失。
無(wú)線(xiàn)接收終端將表1所示的信息通過(guò)串口傳輸?shù)缴衔粰C(jī)監(jiān)控平臺(tái),并計(jì)算顯示當(dāng)前的誤包率、RSSI值和接收到數(shù)據(jù)包的個(gè)數(shù)。
在圖8所示的實(shí)驗(yàn)結(jié)果中,RECE為接收包的序號(hào),PER為誤包率,RSSI為和傳輸距離等因素相關(guān)的信號(hào)強(qiáng)度值。根據(jù)串口助手顯示的數(shù)據(jù)可以看到誤包率一直為零,這說(shuō)明所設(shè)計(jì)模塊發(fā)送的數(shù)據(jù)包在一定的距離內(nèi)全部被正確接收,無(wú)線(xiàn)通信的過(guò)程中沒(méi)有丟包,實(shí)驗(yàn)證明了系統(tǒng)的可靠性很高。
如圖9所示,按矩形路線(xiàn)進(jìn)行了系統(tǒng)導(dǎo)航實(shí)驗(yàn),先向北行進(jìn)大約45 m,再向東按矩形路線(xiàn)回到出發(fā)點(diǎn),導(dǎo)航結(jié)果說(shuō)明系統(tǒng)能夠可靠正常地運(yùn)行。
本文設(shè)計(jì)的便攜式導(dǎo)航系統(tǒng)采用型號(hào)為CC2530的ZigBee微控制器以100 Hz的采樣頻率讀取MIMU原始數(shù)據(jù),并以無(wú)線(xiàn)的方式將傳感器數(shù)據(jù)發(fā)送給無(wú)線(xiàn)接收終端。同時(shí)無(wú)線(xiàn)接收終端通過(guò)功能強(qiáng)大的DMA控制器采集GPS串口數(shù)據(jù),實(shí)現(xiàn)DMA控制的串口數(shù)據(jù)收發(fā),避免了MCU處理串口通信大流量數(shù)據(jù)時(shí)數(shù)據(jù)丟失,極大地提高了MCU的利用效率。并根據(jù)誤包率、RSSI值和接收到數(shù)據(jù)包的丟失情況對(duì)本系統(tǒng)的穩(wěn)定性和信號(hào)傳輸質(zhì)量進(jìn)行了評(píng)價(jià),最后通過(guò)行人導(dǎo)航實(shí)驗(yàn)驗(yàn)證了系統(tǒng)的正確性。
參考文獻(xiàn)
[1] 龐晗.基于MEMS慣性器件的徒步個(gè)人導(dǎo)航儀設(shè)計(jì)與實(shí)現(xiàn)[D].哈爾濱:哈爾濱工程大學(xué),2011.
[2] 王權(quán)平,王莉.ZigBee技術(shù)及其應(yīng)用[J].現(xiàn)代電信科技.2004(1).
[3] 牛妍.基于MEMS的微小型嵌入式航姿系統(tǒng)的實(shí)現(xiàn)[D].南京:南京航空航天大學(xué),2010.
[4] 劉輝,趙麗芬,孫番典,等.基于CC2530的ZigBee射頻收發(fā)模塊設(shè)計(jì)[J].云南民族大學(xué)學(xué)報(bào)(自然科學(xué)版),2012(6).
[5] 楊福廣,李貽斌,尹占芳,等.ARM中基于DMA的高效UART通訊及其應(yīng)用[J].微計(jì)算機(jī)信息,2008(2).
[6] 張為,胡曉楠,王曄.基于DMA控制器的UART串行通信設(shè)計(jì)[J].電子設(shè)計(jì)工程,2012(6).
[7] 王銘明,陳濤,王建立.基于BasicRF的家居環(huán)境監(jiān)測(cè)預(yù)警系統(tǒng)設(shè)計(jì)[J].現(xiàn)代電子技術(shù),2013(24).
[8] ZigBee Alliance.ZigBee Specification V1.0.2005.