張玉杰 惠灑樂(lè)
(陜西科技大學(xué)電氣與信息工程學(xué)院,陜西 西安 710021)
隨著無(wú)線傳感器技術(shù)和無(wú)線通信技術(shù)的發(fā)展,無(wú)線傳感器網(wǎng)絡(luò)越來(lái)越受到人們的關(guān)注。傳統(tǒng)的無(wú)線傳感器網(wǎng)絡(luò)節(jié)點(diǎn)由于其自身結(jié)構(gòu)的原因,通信距離以及數(shù)據(jù)的處理能力受到很大限制[1]。針對(duì)這些問(wèn)題,本文提出了一種將ZigBee技術(shù)與GPRS技術(shù)相結(jié)合,以ARM9處理器為核心處理器、以μC/OS-Ⅱ?yàn)椴僮髌脚_(tái)的無(wú)線網(wǎng)關(guān)設(shè)計(jì)方案。ZigBee技術(shù)是一種面向短距離、低成本、低功耗的無(wú)線通信方式[2],GPRS技術(shù)是一種面向遠(yuǎn)距離的無(wú)線通信方式,兩者的結(jié)合即形成了一種在廣域內(nèi)使用GPRS傳輸數(shù)據(jù)、局域內(nèi)使用ZigBee傳輸數(shù)據(jù)的網(wǎng)絡(luò)架構(gòu)。該架構(gòu)實(shí)現(xiàn)了數(shù)據(jù)的遠(yuǎn)程、短距離相結(jié)合的傳輸方式[3]。嵌入式處理器豐富的內(nèi)部資源和操作系統(tǒng)完善的任務(wù)處理機(jī)制可以有效地提高網(wǎng)關(guān)系統(tǒng)的數(shù)據(jù)處理能力。
系統(tǒng)以S3C2440處理器為核心,主要包括ZigBee模塊、GPRS模塊、存儲(chǔ)器模塊、人機(jī)交互模塊、電源模塊等,系統(tǒng)整體框圖如圖1所示。
圖1 系統(tǒng)整體框圖Fig.1 Block diagram of the system
本系統(tǒng)主要實(shí)現(xiàn)ZigBee網(wǎng)絡(luò)協(xié)調(diào)器設(shè)計(jì),以及ZigBee網(wǎng)絡(luò)的組建[4]、節(jié)點(diǎn)的添加和刪除,GPRS網(wǎng)絡(luò)的通信,GPRS網(wǎng)絡(luò)和ZigBee網(wǎng)絡(luò)的數(shù)據(jù)交互等功能。系統(tǒng)的工作過(guò)程如下:ZigBee網(wǎng)絡(luò)協(xié)調(diào)器通過(guò)SPI接口與微控制器連接,將終端節(jié)點(diǎn)的數(shù)據(jù)發(fā)送給微控制器;微控制器對(duì)數(shù)據(jù)進(jìn)行處理,轉(zhuǎn)換成適合GPRS網(wǎng)絡(luò)傳輸?shù)臄?shù)據(jù)形式,并通過(guò)串口與GPRS模塊相連;由GPRS模塊連接到Internet,并上傳到監(jiān)控中心,實(shí)現(xiàn)數(shù)據(jù)的長(zhǎng)距離傳輸。電源模塊采用無(wú)線網(wǎng)關(guān)系統(tǒng),為ARM處理器、ZigBee模塊和GPRS模塊提供各自需要的供電電壓。
微處理器是整個(gè)網(wǎng)關(guān)系統(tǒng)的核心,其一方面要對(duì)ZigBee通信模塊進(jìn)行相應(yīng)的配置,接收傳感器節(jié)點(diǎn)的數(shù)據(jù);另一方面通過(guò)AT指令初始化GPRS通信模塊,將網(wǎng)關(guān)節(jié)點(diǎn)連接到Internet上,并與監(jiān)控中心建立有效連接。因此,微控制器必須要有較強(qiáng)的數(shù)據(jù)處理能力。本系統(tǒng)的微處理器選用Samsung公司的ARM9處理器S3C2440[5]。該微處理器采用ARM920T的內(nèi)核,內(nèi)部集成LCD控制器、3通道 UART、2通道 SPI、8通道10 bit ADC等資源,具有普通、慢速、空閑和掉電4種工作模式。S3C2440低功耗、高性能的優(yōu)點(diǎn)完全符合本系統(tǒng)的設(shè)計(jì)要求。
系統(tǒng)中微控制器單元的內(nèi)核供電電壓為1.2 V,存儲(chǔ)器供電電壓為1.8 V,I/O供電電壓為3.3 V,ZigBee模塊的供電電壓為3.3 V,GPRS模塊的供電電壓范圍為3.3~4.5 V。為了滿足各模塊的供電要求,系統(tǒng)的外部電源可以通過(guò)電源接口輸入7~24 V的直流電壓。二極管D1用于防止電源反接,經(jīng)過(guò)電容C3、C1濾波后,通過(guò)LM2575將電源穩(wěn)定至5 V。以5 V電壓作為電路板的整體供電電壓,再使用低壓差穩(wěn)壓電源芯片(low dropout regulator,LDO)穩(wěn)壓輸出3.3 V、1.8 V 和1.2 V 的電壓,分別為各個(gè)模塊供電。LM2575穩(wěn)壓電路如圖2所示。
圖2 LM2575穩(wěn)壓電路Fig.2 LM2575 voltage stabilizing circuit
ZigBee模塊負(fù)責(zé)ZigBee網(wǎng)絡(luò)的組建、網(wǎng)絡(luò)節(jié)點(diǎn)的動(dòng)態(tài)管理以及數(shù)據(jù)傳輸[4]。本系統(tǒng)中的ZigBee模塊選用 Chipcon公司推出的符合2.4 GHz IEEE 802.15.4標(biāo)準(zhǔn)的射頻收發(fā)器CC2420。該芯片是一款適用于ZigBee產(chǎn)品的RF器件,支持?jǐn)?shù)據(jù)傳輸率高達(dá)250 kbit/s,可以實(shí)現(xiàn)多點(diǎn)對(duì)多點(diǎn)的快速組網(wǎng)[6]。S3C2440利用中斷控制 CC2420,并通過(guò) SPI接口與 CC2420通信。CC2420與S3C2440的連接關(guān)系圖如圖3所示。
圖3 CC2420與S3C2440的連接關(guān)系圖Fig.3 Connections between CC2420 and S3C2440
本網(wǎng)關(guān)系統(tǒng)中,GPRS模塊通過(guò)GPRS網(wǎng)絡(luò)將數(shù)據(jù)連接到Internet,并發(fā)送到遠(yuǎn)程監(jiān)控中心。監(jiān)控中心對(duì)數(shù)據(jù)分析處理后,再通過(guò)GPRS網(wǎng)絡(luò)將其命令傳達(dá)下去。本系統(tǒng)的GPRS模塊選擇M23A。M23A是BenQ公司推出的GSM/GPRS雙頻通信模塊,集成了完整的射頻電路和GSM的基帶處理器,適用于開(kāi)發(fā)基于GSM/GPRS的無(wú)線應(yīng)用產(chǎn)品。GPRS通信電路部分以內(nèi)嵌TCP/IP協(xié)議棧的M23A模塊為中心,由M23A模塊的相關(guān)外圍電路組成,通過(guò)串口與S3C2440相連。
在2.4 GHz頻段中,ZigBee的速率為250 kbit/s,而M23A模塊的實(shí)際速率遠(yuǎn)低于250 kbit/s。當(dāng)網(wǎng)絡(luò)傳輸數(shù)據(jù)量較大,GPRS網(wǎng)絡(luò)無(wú)法將數(shù)據(jù)全部發(fā)送出去時(shí),就會(huì)造成數(shù)據(jù)的丟失。為了實(shí)現(xiàn)數(shù)據(jù)傳輸時(shí)的速度匹配,減少數(shù)據(jù)丟失,須使用外接64 MB存儲(chǔ)器作為數(shù)據(jù)緩存,以緩解傳輸速率不同所造成的瓶頸??刂葡到y(tǒng)使用統(tǒng)寶3.5英寸(1英寸=25.4 mm)LCD作為人機(jī)顯示器件,人機(jī)界面采用菜單操作方式,鍵盤(pán)模塊用來(lái)對(duì)菜單進(jìn)行操作。為了簡(jiǎn)化系統(tǒng)設(shè)計(jì),鍵盤(pán)采用獨(dú)立鍵盤(pán)結(jié)構(gòu)。
系統(tǒng)的軟件設(shè)計(jì)采用C語(yǔ)言為開(kāi)發(fā)語(yǔ)言,以嵌入式μC/OS-Ⅱ?yàn)椴僮髌脚_(tái)。μC/OS-Ⅱ是一個(gè)免費(fèi)的、源碼完全公開(kāi)的、可移植、可固化、可裁剪的占先式實(shí)時(shí)多任務(wù)操作系統(tǒng)。同其他操作系統(tǒng)一樣,μC/OS-Ⅱ[7]也是從main()函數(shù)開(kāi)始執(zhí)行,完成操作系統(tǒng)的初始化、任務(wù)創(chuàng)建和系統(tǒng)啟動(dòng)。網(wǎng)關(guān)系統(tǒng)的軟件設(shè)計(jì)采用分層設(shè)計(jì)的思想,不同的功能劃分為不同的模塊,并采用應(yīng)用程序編程接口(application programming interface,API)方式將各個(gè)模塊整合在一起。網(wǎng)關(guān)系統(tǒng)軟件整體框架如圖4所示。
圖4 網(wǎng)關(guān)系統(tǒng)軟件設(shè)計(jì)框圖Fig.4 Software design of the gateway system
系統(tǒng)中的底層驅(qū)動(dòng)程序有:LCD驅(qū)動(dòng)程序、鍵盤(pán)驅(qū)動(dòng)程序、存儲(chǔ)器驅(qū)動(dòng)程序、UART驅(qū)動(dòng)程序和射頻驅(qū)動(dòng)程序等。底層驅(qū)動(dòng)程序向中間層程序提供接口;中間層通過(guò)移植 μC/OS-Ⅱ?qū)崟r(shí)操作系統(tǒng)內(nèi)核實(shí)現(xiàn)ZigBee協(xié)議與GPRS協(xié)議的相互轉(zhuǎn)換;應(yīng)用層通過(guò)μC/OS-Ⅱ內(nèi)核開(kāi)發(fā)相應(yīng)的應(yīng)用程序,并將原本獨(dú)立的各個(gè)模塊整合起來(lái),實(shí)現(xiàn)數(shù)據(jù)的高效轉(zhuǎn)發(fā),進(jìn)而實(shí)現(xiàn)該網(wǎng)關(guān)系統(tǒng)的整體功能。
Z-Stack協(xié)議棧負(fù)責(zé)整個(gè)無(wú)線傳感器網(wǎng)絡(luò)的構(gòu)建與維護(hù),并接收傳感器網(wǎng)絡(luò)信息。ZigBee協(xié)議棧主要由三個(gè)分層組成[8],分別是硬件抽象層(hardware abstraction layer,HAL)、操作系統(tǒng)抽象層(operating system abstraction layer,OSAL)和調(diào)試層。Z-Stack 的硬件抽象層(HAL)對(duì)一些硬件接口進(jìn)行定義,用戶可以在這里進(jìn)行修改或者在應(yīng)用層重新定義。用戶的應(yīng)用程序應(yīng)該作為任務(wù)添加到OSAL,任務(wù)的添加通過(guò)調(diào)用OSAL層的函數(shù)來(lái)實(shí)現(xiàn)。在CC2420提供的Z-Satck協(xié)議棧中,添加的任務(wù)函數(shù)用以實(shí)現(xiàn)傳感器節(jié)點(diǎn)信息的接收和發(fā)送以及無(wú)線傳感器組網(wǎng)控制。
本系統(tǒng)中的ZigBee節(jié)點(diǎn)是ZigBee網(wǎng)絡(luò)的協(xié)調(diào)器節(jié)點(diǎn)。協(xié)調(diào)器節(jié)點(diǎn)上電初始化后,啟動(dòng)程序,通過(guò)調(diào)用函數(shù) aplFromNetwork()創(chuàng)建一個(gè)網(wǎng)絡(luò)[9];選定一個(gè)PANID作為協(xié)調(diào)器的網(wǎng)絡(luò)標(biāo)志,創(chuàng)建路由表;然后對(duì)外發(fā)布廣播幀,通知傳感器節(jié)點(diǎn)可以加入該網(wǎng)絡(luò)。協(xié)調(diào)器建立網(wǎng)絡(luò)之后,允許路由器節(jié)點(diǎn)或傳感器節(jié)點(diǎn)加入網(wǎng)絡(luò)。路由器節(jié)點(diǎn)或傳感器節(jié)點(diǎn)申請(qǐng)加入時(shí)搜索信道狀態(tài),若信道空閑,則發(fā)送信標(biāo)幀。在接收到多個(gè)帶鏈路質(zhì)量信號(hào)參數(shù)的信標(biāo)幀后,選取鏈路質(zhì)量較好的節(jié)點(diǎn)并向協(xié)調(diào)器發(fā)出入網(wǎng)請(qǐng)求,協(xié)調(diào)器準(zhǔn)許后會(huì)分配網(wǎng)內(nèi)短地址給該節(jié)點(diǎn)。這樣,網(wǎng)絡(luò)子節(jié)點(diǎn)即成功加入網(wǎng)絡(luò)。
協(xié)調(diào)器建立網(wǎng)絡(luò)主要代碼如下。
M23A GPRS模塊具有一套標(biāo)準(zhǔn)的AT命令集,在使用GPRS模塊之前,要通過(guò)AT命令對(duì)GPRS模塊進(jìn)行初始化和建立網(wǎng)絡(luò)連接等操作[10]。UDP連接具有實(shí)時(shí)性高的優(yōu)點(diǎn),經(jīng)過(guò)GPRS網(wǎng)絡(luò)實(shí)際測(cè)試,在網(wǎng)絡(luò)正常情況下,UDP傳輸有效性大于99%。因此,本系統(tǒng)采用UDP連接。系統(tǒng)建立UDP連接的過(guò)程如下。
①初始化,通過(guò)“AT+CFUN=1”命令使能所有的AT指令功能,用“AT+COPS=0”使M23A模塊登錄網(wǎng)絡(luò)。
② 參數(shù)設(shè)置,通過(guò)“AT%CGPCO=1,‘PAP,,’,1”命令激活 PCO字符串;使用“AT+CGDCONT=1,‘IP’,‘CMNET’”命令將網(wǎng)絡(luò)的接入點(diǎn)設(shè)置接入的網(wǎng)絡(luò)類型;并通過(guò)“AT$DESTINFO”指令設(shè)置UDP連接的服務(wù)器以及端口號(hào)。
③ 建立連接,使用“ATD*97#”指令建立連接,進(jìn)入數(shù)據(jù)傳輸模式。
M23A GPRS通信驅(qū)動(dòng)程序通過(guò)串口依次發(fā)送建立網(wǎng)絡(luò)連接的AT命令,同時(shí)通過(guò)串口接收返回的數(shù)據(jù),以判斷操作是否成功。如果成功,則進(jìn)入下一步,否則重新建立連接。M23A GPRS通信驅(qū)動(dòng)程序主要包括GPRS初始化、建立連接和數(shù)據(jù)傳輸三個(gè)部分。整個(gè)操作首先完成M23A模塊啟動(dòng),接著通過(guò)AT命令進(jìn)行數(shù)據(jù)傳輸環(huán)境的配置,最后建立UDP到GPRS網(wǎng)絡(luò)的連接。M23A GPRS通信驅(qū)動(dòng)程序處理流程如圖5所示。
圖5 M23A GPRS通信驅(qū)動(dòng)程序處理流程Fig.5 Process flow of M23A GPRS communication driver program
本文以S3C2440為核心處理器,設(shè)計(jì)了基于嵌入式技術(shù)的無(wú)線傳感器網(wǎng)絡(luò)網(wǎng)關(guān)系統(tǒng)。該網(wǎng)關(guān)系統(tǒng)能夠有效解決傳統(tǒng)網(wǎng)關(guān)系統(tǒng)中存在的ZigBee數(shù)據(jù)傳輸瓶頸以及計(jì)算能力差等問(wèn)題。大量試驗(yàn)結(jié)果表明,本系統(tǒng)數(shù)據(jù)傳輸可靠、抗干擾能力和數(shù)據(jù)處理能力強(qiáng),可廣泛應(yīng)用于各種監(jiān)測(cè)場(chǎng)所。
[1]馬福昌,馮道訓(xùn),張英梅,等.ZigBee和GPRS技術(shù)在水文監(jiān)測(cè)系統(tǒng)中的應(yīng)用研究[J].自動(dòng)化與儀器儀表,2008(3):18-20.
[2]Sung W T,Hsu Y C.Designing an industrial real-time measurement and monitoring system based on embedded system and ZigBee[C]//Expert Systems with Applications,2011:4522-4529.
[3]Jang W S,William M H,Miros?aw J S.Wireless sensor networks as part of a web-based building environmental monitoring system[C]∥Automation in Construction,2008:729-736.
[4]李玉忠.基于ZigBee技術(shù)水文監(jiān)測(cè)系統(tǒng)的設(shè)計(jì)及應(yīng)用[J].機(jī)械管理開(kāi)發(fā),2008,23(6):106-107.
[5]胡鴻豪,林程,宋麗平.基于S3C2410的ZIGBEE無(wú)線傳感器網(wǎng)絡(luò)網(wǎng)關(guān)的設(shè)計(jì)[J].大眾科技,2008(12):67-68.
[6]周怡颋,凌志浩,吳勤勤.ZigBee無(wú)線通信技術(shù)及其應(yīng)用探討[J].自動(dòng)化儀表,2005,26(6):5-9.
[7]宋暉,高小明.基于ARM的嵌入式操作系統(tǒng)μC/OS-Ⅱ的移植[J].微計(jì)算機(jī)信息,2006,2(2):135-136.
[8]崔光照,陳富強(qiáng),張海霞,等.基于ARM9的無(wú)線傳感器網(wǎng)路網(wǎng)關(guān)節(jié)點(diǎn)設(shè)計(jì)[J].計(jì)算機(jī)技術(shù)與應(yīng)用,2008,34(11):115-118.
[9]房好帥,李楠,王慧娟.基于ARM與ZigBee的嵌入式無(wú)線傳感器網(wǎng)絡(luò)網(wǎng)關(guān)的設(shè)計(jì)[J].北京航天工業(yè)學(xué)院學(xué)報(bào),2010,20(3):23-26.
[10]郝記生,張曦煌.基于GPRS網(wǎng)絡(luò)的無(wú)線數(shù)據(jù)傳輸系統(tǒng)[J].計(jì)算機(jī)工程與設(shè)計(jì),2008,29(20):5224-5226.