孫朋 孫力娟 黃俊杰 王汝傳 黃海平
1南京郵電大學(xué)計算機(jī)學(xué)院 江蘇 210003
2江蘇省無線傳感網(wǎng)高技術(shù)研究重點(diǎn)實(shí)驗室 江蘇 210003
3寬帶無線通信與傳感網(wǎng)技術(shù)教育部重點(diǎn)實(shí)驗室 江蘇 210003
本文在上述思路的基礎(chǔ)上,設(shè)計完成一種具有匯聚節(jié)點(diǎn)功能的WSNs網(wǎng)關(guān),并通過集成無線局域網(wǎng)、以太網(wǎng)以及GPRS多種通信方式,搭建起WSNs與外部網(wǎng)絡(luò)進(jìn)行數(shù)據(jù)通信的橋梁。運(yùn)用嵌入式操作系統(tǒng)μ-Clinux的多線程機(jī)制控制各通信軟件并行執(zhí)行,提高系統(tǒng)運(yùn)行的效率。該網(wǎng)關(guān)設(shè)計靈活可靠并具有可擴(kuò)展性,為實(shí)現(xiàn)更多形式的網(wǎng)絡(luò)接入方案提供了有價值的參考。
網(wǎng)關(guān)設(shè)計在硬件上選取ARM9系列的S3C2440芯片為中央處理器,外圍電路主要包括存儲器系統(tǒng)、串行通信接口、以太網(wǎng)接口、USB接口、時鐘系統(tǒng)和其他電路系統(tǒng)。其中,在設(shè)計串行通信接口電路時,除了使用CPU自帶2通道UART(通用異步收發(fā)器)外,還利用EXAR 公司生產(chǎn)的異步通信芯片ST16C554擴(kuò)展出兩個串口,連接GPRS模塊。在有線通信方式中,串行接口具有通信線路簡單,適用于遠(yuǎn)距離通信以及價格低廉等優(yōu)點(diǎn),所以在網(wǎng)關(guān)上擴(kuò)展串口能為其他串行設(shè)備的接入提供便利條件。
網(wǎng)關(guān)的通信模塊采用的是CC2420芯片以及相關(guān)的開發(fā)工具套件,通過該套件用戶可很快地進(jìn)行Zig-bee網(wǎng)絡(luò)的評估和設(shè)計。軟件包括用于首次定制的Z-Stacktm Zigbee網(wǎng)絡(luò)配置器、用于建立用戶自己應(yīng)用程序框架的Z-Stacktm Zigbee Porfile Builder以及為方便網(wǎng)絡(luò)調(diào)度而提供的Z-Tooltm Zigbee Pro2tocol Stack Trace工具。本文設(shè)計的網(wǎng)關(guān)通過6×2雙排插針外接CC2420通信模塊,實(shí)現(xiàn)與WSN的數(shù)據(jù)傳輸。圖1給出了多網(wǎng)融合網(wǎng)關(guān)的內(nèi)部結(jié)構(gòu)示意圖。
圖1 多網(wǎng)融合網(wǎng)關(guān)內(nèi)部結(jié)構(gòu)示意圖
網(wǎng)關(guān)系統(tǒng)軟件可分為硬件抽象層和設(shè)備適應(yīng)層。在網(wǎng)關(guān)的軟件編寫過程中,設(shè)置了統(tǒng)一的硬件抽象層。硬件抽象層又由若干個功能子程序構(gòu)成。功能子程序能夠直接通過對MCU寄存器的操作使硬件執(zhí)行特定的功能,從而避免了上層軟件對硬件直接進(jìn)行操作。設(shè)備適應(yīng)層軟件按功能分為主程序、中斷處理程序和上層接口。中斷處理程序負(fù)責(zé)響應(yīng)各種軟、硬件中斷。中斷處理函數(shù)將中斷設(shè)置成不同的優(yōu)先級,并維護(hù)一個中斷向量表和處理隊列,負(fù)責(zé)對軟硬件中斷的處理。主程序協(xié)調(diào)各個模塊工作,主要負(fù)責(zé)初始化、從中斷處理程序中獲取數(shù)據(jù)并提交給上層接口和從上層接口內(nèi)獲取數(shù)據(jù)并進(jìn)行發(fā)送。上層接口為各種應(yīng)用程序提供了統(tǒng)一的接口函數(shù),便于統(tǒng)一進(jìn)行協(xié)調(diào)和管理。
設(shè)備上電復(fù)位后,主函數(shù)將完成主要設(shè)備的初始化,調(diào)用上層接口程序完成加載協(xié)議棧、配置端口地址等工作,接著采用輪循與中斷處理相結(jié)合的方式完成對設(shè)備的調(diào)度。當(dāng)系統(tǒng)中有中斷發(fā)生后,主函數(shù)將根據(jù)中斷向量優(yōu)先級將中斷存入中斷處理隊列,等待中斷服務(wù)程序處理;當(dāng)沒有中斷發(fā)生時,系統(tǒng)將進(jìn)行中斷偵聽等待,周期檢測中斷隊列。表1給出了設(shè)備適應(yīng)層軟件通過上層接口調(diào)度協(xié)議轉(zhuǎn)換模塊的過程。
表1 對協(xié)議轉(zhuǎn)換模塊的調(diào)度
利用socket機(jī)制設(shè)計以太網(wǎng)通信軟件,考慮到對數(shù)據(jù)傳輸?shù)目煽啃砸筝^高,采用面向連接的TCP客戶機(jī)——服務(wù)器模型。
在網(wǎng)關(guān)的GPRS通信方式設(shè)計中,利用SIMCOM公司生產(chǎn)的SIM100模塊實(shí)現(xiàn)移動通信網(wǎng)絡(luò)的接入。
SIM100模塊提供標(biāo)準(zhǔn)的RS232串行接口,可以通過串口使用AT指令完成對模塊的操作。由于在實(shí)際應(yīng)用中,網(wǎng)關(guān)并不需要語音、傳真等功能,故在設(shè)計電路時將其略去,節(jié)省成本與硬件空間。網(wǎng)關(guān)使用串口dev/ttyS2與SIM100模塊通信,同樣利用如前所述的μClinux串口編程來設(shè)計短消息發(fā)送和數(shù)據(jù)傳輸程序。
在無線局域網(wǎng)的通信方式設(shè)計中,本文通過加載無線網(wǎng)卡模塊,以無線的方式接入外部網(wǎng)絡(luò)。這需要為網(wǎng)關(guān)設(shè)備的嵌入式Linux系統(tǒng)加載無線模塊內(nèi)核,并移植無線網(wǎng)卡驅(qū)動到嵌入式Linux系統(tǒng)中。步驟如下:
(1) 修改wireless_tools.29.tar.gz工具包的Makefile文件。修改內(nèi)容包括CC,AR,RALINB,使其編譯時采用交叉編譯,生成適合嵌入式網(wǎng)關(guān)設(shè)備的文件。
(2) 順序執(zhí)行make,make install命令,進(jìn)行編譯及安裝。
(3) 用網(wǎng)線將網(wǎng)關(guān)設(shè)備與PC機(jī)連接起來,用mount命令將PC Linux系統(tǒng)掛載到網(wǎng)關(guān)Linux系統(tǒng)下,并將wireless/sbin目錄及wireless/lib目錄下的內(nèi)容分別復(fù)制到網(wǎng)關(guān)Linux系統(tǒng)下的/sbin和/lib目錄。
(4) 下載最新版本的無線網(wǎng)卡驅(qū)動,修改其Makefile文件。修改內(nèi)容包括CC,LD,PLATFORM,使其編譯時采用交叉編譯,生成適合嵌入式網(wǎng)關(guān)設(shè)備的文件。
(5) 在嵌入式Linux系統(tǒng)中,在/etc目錄下新建目錄Wireless/RT73STA。
(6) 執(zhí)行make all指令,將生成的rt73.ko,rt73.bin,rt73sta.dat拷貝至Wireless/RT73STA目錄下。
(7) 在網(wǎng)關(guān)設(shè)備終端下執(zhí)行 dos2unix /etc/Wireless/RT73 STA/rt73sta.dat命令,實(shí)現(xiàn)格式轉(zhuǎn)換。
(8) 執(zhí)行insmod命令加載rt73.ko,再用ifconfig,iwconfig等命令設(shè)置網(wǎng)關(guān)IP地址等內(nèi)容。
為驗證網(wǎng)關(guān)的性能,本文構(gòu)建了一套測試環(huán)境。首先放置一個測試用傳感器節(jié)點(diǎn),負(fù)責(zé)向網(wǎng)關(guān)發(fā)送各種測試數(shù)據(jù),在以太網(wǎng)內(nèi)設(shè)置一臺基于Linux系統(tǒng)的PC機(jī)運(yùn)行抓包工具,負(fù)責(zé)捕獲來自網(wǎng)關(guān)和服務(wù)器的數(shù)據(jù)包,記錄面向網(wǎng)關(guān)的測試數(shù)據(jù)。利用一臺終端,接收、發(fā)送測試數(shù)據(jù)。使用Chipcon Sniffer無線抓包工具監(jiān)測測試過程中無線數(shù)據(jù)測試情況。我們以網(wǎng)關(guān)在以太網(wǎng)方式下的通信為例,通過長時間向測試節(jié)點(diǎn)以相對高的固定速率(大于250kbit/s)發(fā)送不同長度ICMP數(shù)據(jù),可以獲得系統(tǒng)地的時延、丟包率等數(shù)據(jù)指標(biāo)。由于以太網(wǎng)的速度通常遠(yuǎn)遠(yuǎn)高于IEEE802.15.4無線傳感器網(wǎng)絡(luò)速度,因此通過在無丟包周期內(nèi)Chipcon Sniffer 記錄到的數(shù)據(jù),可以計算出系統(tǒng)的吞吐量;而根據(jù)ping包的返回時間減去數(shù)據(jù)空中傳遞時間和節(jié)點(diǎn)收發(fā)時間可以計算出系統(tǒng)的時延;通過定長時間內(nèi)(120s)監(jiān)測到的Chipcon Sniffer的ACK包數(shù)量和相應(yīng)發(fā)送數(shù)據(jù)報數(shù)量之比,可以計算出系統(tǒng)的丟包率。
圖2給出了該網(wǎng)關(guān)設(shè)備的性能測試曲線。其中,所標(biāo)識數(shù)據(jù)比特數(shù)為ICMP包文長度。對網(wǎng)關(guān)進(jìn)行的性能測試獲得的各項指標(biāo)中,對于吞吐量指標(biāo),隨著測試數(shù)據(jù)包長度的增加,吞吐量逐漸增加,轉(zhuǎn)包收發(fā)數(shù)量逐漸減小,見圖2(a)、(b);其中,圖2(b)是根據(jù)圖2(a)計算得到的。隨著測試數(shù)據(jù)包長度的增加,時延逐漸增大,見圖2(c)。對于不同的測試數(shù)據(jù)包長度,在120s范圍內(nèi)丟包率為0,隨著測試時間的增加丟包率有所上升,但仍不影響正常通信(小于4%),見圖2(d)。綜上,該網(wǎng)關(guān)完全可以在實(shí)際網(wǎng)絡(luò)環(huán)境下高性能的運(yùn)行。
圖2 網(wǎng)關(guān)系統(tǒng)性能測試曲線
本文設(shè)計并實(shí)現(xiàn)了一種多網(wǎng)融合的無線傳感器網(wǎng)絡(luò)網(wǎng)關(guān),將有線方式與無線方式相結(jié)合,擴(kuò)展了網(wǎng)關(guān)的應(yīng)用范圍。本網(wǎng)關(guān)通過多種通信模塊的接入,實(shí)現(xiàn)了無線傳感器網(wǎng)絡(luò)與以太網(wǎng)、GPRS網(wǎng)絡(luò)、無線局域網(wǎng)等多種網(wǎng)絡(luò)的通信。網(wǎng)關(guān)還預(yù)留了多個通信模塊的接口,可接入其他通信模塊實(shí)現(xiàn)與其他網(wǎng)絡(luò)的通信,如CDMA等通信網(wǎng)。本網(wǎng)關(guān)在上行速率、集成成本、開發(fā)難易程度上具有綜合性的優(yōu)勢。作為與外部網(wǎng)絡(luò)連接的可靠、便捷的紐帶,本網(wǎng)關(guān)從邏輯上將物理世界與信息世界更加緊密地融合于一體。
[1] 于海濱,曾鵬,王忠鋒等.分布式無線傳感器網(wǎng)絡(luò)通信協(xié)議研究[J].通信學(xué)報.2004.
[2] 霍宏偉,牛延超,郜帥等.一種IPv6無線傳感器網(wǎng)絡(luò)以太網(wǎng)接入網(wǎng)關(guān)的設(shè)計[J].傳感技術(shù)學(xué)報.2007.
[3] 段渭軍,何戟,張倩.無線傳感器網(wǎng)絡(luò)移動Sink網(wǎng)關(guān)系統(tǒng)的設(shè)計與實(shí)現(xiàn)[J].計算機(jī)應(yīng)用研究.2007.
[4] 匡興紅,邵惠鶴.無線傳感器網(wǎng)絡(luò)網(wǎng)關(guān)研究[J].計算機(jī)工程.2007.
[5] 歐杰峰,劉興華.基于CDMA模塊的無線傳感器網(wǎng)絡(luò)網(wǎng)關(guān)的實(shí)現(xiàn)[J].計算機(jī)工程.2007.