摘 要: 設(shè)計并實現(xiàn)了一種基于ARM9處理器的無線傳感器網(wǎng)絡(luò)嵌入式網(wǎng)關(guān),用來完成Zigbee和GPRS之間數(shù)據(jù)的透明轉(zhuǎn)換。節(jié)點以ARM9嵌入式處理器S3C2410為核心, ARM Linux為實時操作系統(tǒng),并結(jié)合Zigbee模塊JN5139和GPRS模塊MC55實現(xiàn)采集數(shù)據(jù)的節(jié)點匯聚和遠程轉(zhuǎn)發(fā),給出了網(wǎng)關(guān)節(jié)點的硬件組成結(jié)構(gòu)和軟件實現(xiàn)流程。
關(guān)鍵詞: Zigbee; 嵌入式; GPRS; 網(wǎng)關(guān)
無線傳感器網(wǎng)絡(luò)WSN(Wireless Sensor Network)是指由大量成本相對低廉并且具有感知能力、計算能力、實時通信能力的傳感器節(jié)點組成的嵌入式無線網(wǎng)絡(luò),是當(dāng)前眾多領(lǐng)域的研究和應(yīng)用熱點[1]。其應(yīng)用已經(jīng)由軍事領(lǐng)域擴展到反恐、防爆、環(huán)境監(jiān)測、醫(yī)療健康、工業(yè)控制等眾多生活領(lǐng)域,并且能夠完成由傳統(tǒng)系統(tǒng)無法完成的任務(wù)。
在對特定領(lǐng)域(如油井、水文和環(huán)境等)的監(jiān)測應(yīng)用中,有時需要搭建Zigbee網(wǎng)絡(luò)通過遠程監(jiān)測的方式實現(xiàn)對區(qū)域目標(biāo)數(shù)據(jù)的采集,這就需要利用現(xiàn)有的網(wǎng)絡(luò)基礎(chǔ)設(shè)施對采集到的數(shù)據(jù)進行遠程傳輸,此時網(wǎng)關(guān)節(jié)點在整個無線傳感器網(wǎng)絡(luò)體系中起著重要的樞紐作用,是系統(tǒng)設(shè)計的關(guān)鍵部分之一。本文從實現(xiàn)角度對無線傳感器網(wǎng)絡(luò)網(wǎng)關(guān)節(jié)點進行了研究,提出了基于GPRS模塊的網(wǎng)關(guān)設(shè)計方案,實現(xiàn)了對Zigbee網(wǎng)絡(luò)采集數(shù)據(jù)的遠程傳輸。
1 網(wǎng)關(guān)系統(tǒng)總體結(jié)構(gòu)
網(wǎng)關(guān)節(jié)點是無線傳感器網(wǎng)絡(luò)的控制中心,能夠主動掃描其覆蓋范圍內(nèi)的所有傳感器節(jié)點,管理整個無線監(jiān)測網(wǎng)絡(luò)完整的路由表,接收來自其他節(jié)點的數(shù)據(jù),并對數(shù)據(jù)進行校正、融合等處理,然后通過GPRS或以太網(wǎng)等網(wǎng)絡(luò)基礎(chǔ)設(shè)施發(fā)給遠程監(jiān)測中心;同時對于監(jiān)控中心所發(fā)的指令給予相應(yīng)的處理。網(wǎng)關(guān)節(jié)點通常連接兩個或多個相互獨立的網(wǎng)絡(luò),需要在傳輸層以上對不同的協(xié)議進行轉(zhuǎn)換,因此對中央控制器的數(shù)據(jù)傳輸和運算能力有較高的要求。本文采用具有較強的信息處理能力和網(wǎng)絡(luò)功能的ARM9系列芯片S3C2410作為控制器完成硬件系統(tǒng)的搭建。
本網(wǎng)關(guān)采用模塊化設(shè)計方案,如圖1所示由硬件層、軟件層和應(yīng)用層三大部分組成。硬件層描述了網(wǎng)關(guān)節(jié)點的硬件實現(xiàn);軟件層移植ARM Linux實時操作系統(tǒng)內(nèi)核,實現(xiàn)Zigbee和GPRS協(xié)議的雙向轉(zhuǎn)換;應(yīng)用層在Linux內(nèi)核上開發(fā)相應(yīng)的驅(qū)動程序和應(yīng)用程序,實現(xiàn)對數(shù)據(jù)的高效轉(zhuǎn)發(fā)。
2 網(wǎng)關(guān)硬件平臺設(shè)計
網(wǎng)關(guān)節(jié)點硬件電路主要由控制器模塊、存儲單元、電源管理模塊、傳輸通信模塊和顯示模塊等組成,其硬件電路結(jié)構(gòu)框圖如圖2所示。
2.1 控制器模塊
主控制器是整個嵌入式網(wǎng)關(guān)的核心,用來對Zigbee通信模塊進行相應(yīng)配置并接收傳感器節(jié)點的數(shù)據(jù),通過AT指令初始化GPRS通信模塊,利用PPP協(xié)議將網(wǎng)關(guān)節(jié)點連接到GPRS網(wǎng)絡(luò),獲得網(wǎng)絡(luò)運營商動態(tài)分配的IP地址,并與監(jiān)控中心終端或服務(wù)器建立有效連接。為了達到高性能、低功耗的目的,設(shè)計的嵌入式網(wǎng)關(guān)采用以ARM920T為核心的32位的RISC微處理器S3C2410作為主控制器,該處理器集成了LCD控制器、USBHost、NAND控制器、BUS控制器、中斷控制、功率控制、存儲控制、UART、WatchDog、SPI、SDI/MMC、IS、IC、GPIO、RTC、TIMER/PWM、ADC等豐富的外圍資源[2],通過外擴存儲器、串口、JTAG調(diào)試接口等構(gòu)建硬件平臺。
2.2 電源管理模塊
ARM處理器和Zigbee模塊的供電電壓為DC 3.3V,GPRS模塊的電源范圍為3.3V~4.8V,為了滿足系統(tǒng)各部分供電要求,采用DC 5V作為電路板總體供電電源,該部分電路設(shè)計原理如圖3所示。
為使電路簡單,設(shè)計中一部分采用兩個二極管1N5817串聯(lián)的方法,將5.0V的供電電壓降到合適的范圍內(nèi)供GPRS模塊使用。兩個二極管串聯(lián)后的電壓降大約為0.4V,這樣GPRS模塊的實際供電電壓為4.6V,符合其供電要求。另一部分電路采用三端線性穩(wěn)壓芯片LM1117實現(xiàn)5.0V到3.3V的電壓變換,對ARM處理器和Zigbee模塊進行供電,為了減小雜波干擾,在LM1117芯片兩端都加上0.1μF和100μF的電容進行濾波處理。
2.3 存儲器模塊
為充分發(fā)揮S3C2410的性能優(yōu)勢,設(shè)計中擴展了1片64MB的Flash芯片K9F1208和2片SDRAM芯片HY57V641620并聯(lián)構(gòu)建32位的SDRAM存儲器系統(tǒng)。Flash存儲器用來存放程序啟動代碼(Bootloader)、Linux內(nèi)核映像和RAMDISK壓縮映像,剩余的存儲空間存放用戶程序。SDRAM用來對操作系統(tǒng)和各類數(shù)據(jù)進行緩存,當(dāng)系統(tǒng)啟動時,CPU首先從復(fù)位地址0x0處讀取啟動代碼,在完成系統(tǒng)的初始化后,程序代碼調(diào)入SDRAM中運行,以提高系統(tǒng)的運行速度,同時系統(tǒng)及用戶堆棧、運行數(shù)據(jù)也都存放在SDRAM中,為系統(tǒng)的高速運行提供足夠的存儲空間。
2.4 傳輸通信模塊
該部分電路用來實現(xiàn)兩種通信協(xié)議的透明轉(zhuǎn)換,主要包括主控制器S3C2410與無線傳感器網(wǎng)絡(luò)連接的Zigbee模塊通信的接口電路及與Internet連接的無線GPRS模塊通信的接口電路設(shè)計。S3C2410具有三個通用異步串行接口,UART0是RS232接口,用來連接PC機,UART1和UART2是TTL接口,對其設(shè)置相應(yīng)波特率后分別與Zigbee模塊和GPRS模塊相連傳輸數(shù)據(jù)。該部分電路連接原理圖如圖4所示。
2.4.1 Zigbee模塊
Zigbee模塊在網(wǎng)關(guān)節(jié)點上作為網(wǎng)絡(luò)協(xié)調(diào)器負責(zé)各子傳感器節(jié)點的通信管理、動態(tài)組網(wǎng)與數(shù)據(jù)傳輸。本設(shè)計采用Jennic公司的JN5139無線模塊,JN5139是業(yè)界第一款兼容于IEEE802.15.4的低功耗、低成本無線微型控制器[3]。該模塊與S3C2410的通信接口電路如圖4所示,只需連接TXD0和RXD0兩根信號線即可實現(xiàn)二者的數(shù)據(jù)傳輸通信。
2.4.2 GPRS模塊
采用西門子的MC55 GPRS模塊來實現(xiàn)采集數(shù)據(jù)的遠程傳輸,MC55模塊內(nèi)嵌TCP/IP協(xié)議棧[4],降低了設(shè)計的難度, 同時大大提高了主控制器處理其他數(shù)據(jù)的能力。MC55與S3C2410的連接非常簡單,如圖4所示,二者可以通過標(biāo)準(zhǔn)的串口直接相連。值得注意的是,MC55模塊串口部分的邏輯電平為+2.65V,不能直接與S3C2410的+3.3V串口相連,需要加邏輯電平轉(zhuǎn)換電路,所以本設(shè)計在其各引腳電路中都串接了一個100Ω的電阻,以實現(xiàn)二者串口電平的匹配。MC55模塊的RING0口與S3C2410的UCLK引腳相連,當(dāng)數(shù)據(jù)到來時用來通知主控制器,作為數(shù)據(jù)傳輸?shù)闹袛嘈盘枴?nbsp;
2.5 顯示模塊
S3C2410 內(nèi)部集成有LCD控制器,為液晶顯示器提供了時序信號、顯示數(shù)據(jù)和接口電路,通過驅(qū)動芯片就可直接與不帶控制器的液晶模塊相連。系統(tǒng)采用128×64點陣LCD系列芯片HY12864,采用2片HD61202作為列驅(qū)動器,同時使用1片HD61203作為行驅(qū)動器。主控制器通過SPI接口來傳輸LCD的顯示數(shù)據(jù)。HY12864具有功能強大的指令集,與主控制器的數(shù)據(jù)傳輸采用8位并行傳輸方式,片內(nèi)Flash中存入了需要使用的字符庫,通過調(diào)用LCD字符顯示程序顯示中英文字符,便于對子傳感器節(jié)點數(shù)據(jù)的現(xiàn)場查詢。
3 系統(tǒng)軟件平臺設(shè)計
開發(fā)平臺采用開放源碼的Linux操作系統(tǒng),在其基礎(chǔ)上完成各項相關(guān)應(yīng)用程序的開發(fā)。軟件主要由操作系統(tǒng)的裁剪與編譯、驅(qū)動程序和系統(tǒng)主程序的編寫三部分組成。
3.1 網(wǎng)關(guān)節(jié)點軟件體系結(jié)構(gòu)
網(wǎng)關(guān)是建立在傳輸層以上的協(xié)議轉(zhuǎn)換器,通常它連接兩個或多個相互獨立的網(wǎng)絡(luò),每接收一種協(xié)議的數(shù)據(jù)包后,在轉(zhuǎn)發(fā)之前將它轉(zhuǎn)換為另一種協(xié)議的格式。本設(shè)計網(wǎng)關(guān)節(jié)點軟件體系結(jié)構(gòu)如圖5所示。
Zigbee協(xié)議棧由一系列分層結(jié)構(gòu)組成,包括物理層、數(shù)據(jù)鏈路層、網(wǎng)絡(luò)層、應(yīng)用支持層和應(yīng)用層,每一層為上一層提供服務(wù)。采集節(jié)點將需要傳輸?shù)墓?jié)點地址信息和監(jiān)測數(shù)據(jù)以Zigbee幀的形式打包發(fā)送給路由節(jié)點,再通過空中接口經(jīng)過一跳或多跳將數(shù)據(jù)傳送到網(wǎng)關(guān)節(jié)點。傳輸數(shù)據(jù)在通過物理介質(zhì)進入網(wǎng)關(guān)后,先用Zigbee的協(xié)議棧解封裝得到原始數(shù)據(jù),網(wǎng)關(guān)節(jié)點可應(yīng)用其操作系統(tǒng)上的應(yīng)用軟件根據(jù)需要對原始數(shù)據(jù)進行處理,處理后的數(shù)據(jù)再以TCP/IP協(xié)議打包后通過串口與GPRS通信模塊相連,將數(shù)據(jù)通過空中接口Um傳送到GPRS骨干網(wǎng)上。GPRS是一種基于IP的分組交換技術(shù),在GSM網(wǎng)絡(luò)的基礎(chǔ)上增加了網(wǎng)關(guān)支持節(jié)點SGSN和服務(wù)支持節(jié)點GGSN兩個網(wǎng)絡(luò)核心實體[5]。GGSN在GPRS網(wǎng)絡(luò)中主要起網(wǎng)關(guān)作用,MC55與GGSN通信采用點對點協(xié)議(PPP),使用PPP協(xié)議登錄網(wǎng)關(guān)GGSN之后,MC55模塊就轉(zhuǎn)入在線模式(On-line),網(wǎng)關(guān)發(fā)送的所有數(shù)據(jù)通過MC55模塊可以透明地傳送給GGSN,從而實現(xiàn)WSN網(wǎng)關(guān)通過GGSN與Internet互聯(lián),最終根據(jù)IP地址將數(shù)據(jù)傳送到監(jiān)控中心。為實現(xiàn)系統(tǒng)的監(jiān)測和控制兩大功能,數(shù)據(jù)幀結(jié)構(gòu)的設(shè)計由前導(dǎo)碼、數(shù)據(jù)模式、目標(biāo)地址、數(shù)據(jù)長度、數(shù)據(jù)信息與校驗和等部分構(gòu)成,其中數(shù)據(jù)信息字段又劃分為方向位、功能類型和數(shù)據(jù)。方向位分為上行和下行兩種,上行傳輸?shù)氖潜O(jiān)測數(shù)據(jù),下行傳輸?shù)氖强刂泼睢?nbsp;
3.2 嵌入式ARM Linux內(nèi)核的裁減與編譯
標(biāo)準(zhǔn)Linux內(nèi)核對于嵌入式系統(tǒng)來說過于龐大,需要根據(jù)目標(biāo)平臺的具體情況對其進行裁剪和配置,去掉不需要的功能和代碼,然后對內(nèi)核重新編譯生成內(nèi)核映像文件。Linux內(nèi)核移植過程如圖6所示。
本設(shè)計中影響內(nèi)核大小的因素主要有以下三個方面:
(1)裁剪Shell可執(zhí)行應(yīng)用程序
Linux系統(tǒng)中提供了非常豐富的shell應(yīng)用程序,占用大量的存儲空間。因此設(shè)計中使用BusyBox來替代shell應(yīng)用程序,以有效地減小系統(tǒng)的體積。BusyBox是一個著名的開源項目,它把許多常用Unix/Linux的shell命令的簡化版本組合成一個單獨的小的可執(zhí)行文件,并提供了一個 make menuconfig 的可視化配置界面,在界面中即可完成所需組件的選擇,保存配置后直接執(zhí)行make編譯,就可在當(dāng)前目錄下生成可執(zhí)行文件Busybox。
(2)裁剪配置文件
Linux系統(tǒng)中,/etc目錄下包含許多必要的系統(tǒng)配置文件,它們用于配置系統(tǒng)初始化和運行文件。在嵌入式系統(tǒng)中,大部分文件都可以去掉,只保留幾個必要的腳本文件,如inittab(Sysvinit進程配置文件)、rc.d/*(系統(tǒng)啟動腳本)和fstab(文件系統(tǒng)信息)即可。
(3)裁剪設(shè)備驅(qū)動文件
標(biāo)準(zhǔn)Linux系統(tǒng)支持很多不同種類的硬件,/dev目錄下存放著大量系統(tǒng)支持的硬件設(shè)備文件,但其中大多數(shù)都是根本用不到的。只保留系統(tǒng)必須的設(shè)備文件console、kmem、mem、null、ram、tty*、ttyS*、ptys*等,而并行口、即插即用設(shè)備、軟驅(qū)、光驅(qū)、鼠標(biāo)等驅(qū)動程序則可以裁剪掉。
裁剪完畢后使用/usr/src/linux的“make config”命令對內(nèi)核進行配置,選擇處理器類型、設(shè)置Flash/SDRAM相應(yīng)的起始地址和大小、選擇對字符設(shè)備驅(qū)動的配置、選擇虛擬RAM盤文件系統(tǒng)支持和romfs文件系統(tǒng)支持。配置完成后執(zhí)行“make dep”命令,創(chuàng)建內(nèi)核依賴關(guān)系;執(zhí)行“make zImage”命令,創(chuàng)建內(nèi)核模塊;執(zhí)行“make modules” 和“make modules _install”命令,創(chuàng)建內(nèi)核模塊,完成編譯工作。使用Flash燒寫工具依次將BootLoader、編譯后的內(nèi)核及根文件系統(tǒng)燒寫到Flash里,系統(tǒng)加電后ARM Linux就可以被引導(dǎo)啟動。
3.3 系統(tǒng)主程序設(shè)計
網(wǎng)關(guān)的主要功能就是實現(xiàn)串口數(shù)據(jù)和網(wǎng)絡(luò)數(shù)據(jù)的轉(zhuǎn)發(fā),移植Linux操作系統(tǒng)后,只需在操作系統(tǒng)上編寫應(yīng)用程序就可以實現(xiàn)網(wǎng)關(guān)的設(shè)計要求。應(yīng)用程序主要包括串口數(shù)據(jù)收發(fā)程序和數(shù)據(jù)轉(zhuǎn)發(fā)處理程序。軟件采用模塊化的設(shè)計方案,各功能子程序分開編寫,以庫的形式給出供主程序調(diào)用。MC55模塊內(nèi)置TCP/IP協(xié)議棧,提供了連接網(wǎng)絡(luò)的API接口, 可通過AT指令直接對其進行網(wǎng)絡(luò)配置[6],降低了設(shè)計的復(fù)雜度。GPRS通信部分以子程序的模式進行編寫,供主程序調(diào)用,用來管理GPRS模塊的初始化、網(wǎng)絡(luò)激活、數(shù)據(jù)傳輸?shù)认嚓P(guān)操作。本文只介紹網(wǎng)關(guān)節(jié)點主程序結(jié)構(gòu),其程序流程圖如圖7所示。
系統(tǒng)上電后,首先啟動Linux操作系統(tǒng),初始化應(yīng)用程序,選定一個PANID作為協(xié)調(diào)器的網(wǎng)絡(luò)標(biāo)識,創(chuàng)建路由表,建立Zigbee網(wǎng)絡(luò)并通知其他節(jié)點加入。通過發(fā)送AT指令啟動GPRS模塊,設(shè)定串口的通信速率,建立socket連接準(zhǔn)備數(shù)據(jù)通信。初始化完畢后監(jiān)聽網(wǎng)絡(luò),等候外部事件中斷的產(chǎn)生,并通過判斷響應(yīng)的類型進行相應(yīng)的數(shù)據(jù)轉(zhuǎn)發(fā)動作。
本文提出了基于GPRS模塊的無線傳感器網(wǎng)絡(luò)網(wǎng)關(guān)節(jié)點的設(shè)計和實現(xiàn)方案,該方案采用低功耗ARM處理器S3C2410為核心,利用內(nèi)嵌TCP/IP協(xié)議棧的GPRS模塊MC55為網(wǎng)絡(luò)的數(shù)據(jù)出口,克服了傳統(tǒng)網(wǎng)關(guān)架構(gòu)下Zigbee傳輸速率的瓶頸。實驗表明,該網(wǎng)關(guān)可靠性高、抗干擾能力強,同時具有很好的通用性,能夠方便地應(yīng)用于各種監(jiān)測場合。
參考文獻
[1] 王殊,閻毓杰,胡富平,等.無線傳感器網(wǎng)絡(luò)的理論及應(yīng)用[M].北京:北京航空航天大學(xué)出版社,2007.
[2] SAMSUNG. S3C2410X 32-bit risc microprocessor user's manual revision 1.2.2003.
[3] JN-DS-JN513x v1.4.Jennic,Http://www.jennic.com.2007.
[4] SIEMENS. MC55/56 hardware interface description.2006.
[5] 鐘章隊,蔣文怡,李紅君,等.GPRS通用分組無線業(yè)務(wù)[M].北京:人民郵電出版社,2001.
[6] 徐樂年,陳西廣,甄雁翔,等. 基于GPRS的鉆孔水文無線遙測系統(tǒng)[J]. 煤礦安全, 2007(8):47-50.