孫朋 孫力娟 黃俊杰 王汝傳 黃海平
1南京郵電大學計算機學院 江蘇 210003
2江蘇省無線傳感網高技術研究重點實驗室 江蘇 210003
3寬帶無線通信與傳感網技術教育部重點實驗室 江蘇 210003
本文在上述思路的基礎上,設計完成一種具有匯聚節點功能的WSNs網關,并通過集成無線局域網、以太網以及GPRS多種通信方式,搭建起WSNs與外部網絡進行數據通信的橋梁。運用嵌入式操作系統μ-Clinux的多線程機制控制各通信軟件并行執行,提高系統運行的效率。該網關設計靈活可靠并具有可擴展性,為實現更多形式的網絡接入方案提供了有價值的參考。
網關設計在硬件上選取ARM9系列的S3C2440芯片為中央處理器,外圍電路主要包括存儲器系統、串行通信接口、以太網接口、USB接口、時鐘系統和其他電路系統。其中,在設計串行通信接口電路時,除了使用CPU自帶2通道UART(通用異步收發器)外,還利用EXAR 公司生產的異步通信芯片ST16C554擴展出兩個串口,連接GPRS模塊。在有線通信方式中,串行接口具有通信線路簡單,適用于遠距離通信以及價格低廉等優點,所以在網關上擴展串口能為其他串行設備的接入提供便利條件。
網關的通信模塊采用的是CC2420芯片以及相關的開發工具套件,通過該套件用戶可很快地進行Zig-bee網絡的評估和設計。軟件包括用于首次定制的Z-Stacktm Zigbee網絡配置器、用于建立用戶自己應用程序框架的Z-Stacktm Zigbee Porfile Builder以及為方便網絡調度而提供的Z-Tooltm Zigbee Pro2tocol Stack Trace工具。本文設計的網關通過6×2雙排插針外接CC2420通信模塊,實現與WSN的數據傳輸。圖1給出了多網融合網關的內部結構示意圖。

圖1 多網融合網關內部結構示意圖
網關系統軟件可分為硬件抽象層和設備適應層。在網關的軟件編寫過程中,設置了統一的硬件抽象層。硬件抽象層又由若干個功能子程序構成。功能子程序能夠直接通過對MCU寄存器的操作使硬件執行特定的功能,從而避免了上層軟件對硬件直接進行操作。設備適應層軟件按功能分為主程序、中斷處理程序和上層接口。中斷處理程序負責響應各種軟、硬件中斷。中斷處理函數將中斷設置成不同的優先級,并維護一個中斷向量表和處理隊列,負責對軟硬件中斷的處理。主程序協調各個模塊工作,主要負責初始化、從中斷處理程序中獲取數據并提交給上層接口和從上層接口內獲取數據并進行發送。上層接口為各種應用程序提供了統一的接口函數,便于統一進行協調和管理。
設備上電復位后,主函數將完成主要設備的初始化,調用上層接口程序完成加載協議棧、配置端口地址等工作,接著采用輪循與中斷處理相結合的方式完成對設備的調度。當系統中有中斷發生后,主函數將根據中斷向量優先級將中斷存入中斷處理隊列,等待中斷服務程序處理;當沒有中斷發生時,系統將進行中斷偵聽等待,周期檢測中斷隊列。表1給出了設備適應層軟件通過上層接口調度協議轉換模塊的過程。

表1 對協議轉換模塊的調度
利用socket機制設計以太網通信軟件,考慮到對數據傳輸的可靠性要求較高,采用面向連接的TCP客戶機——服務器模型。
在網關的GPRS通信方式設計中,利用SIMCOM公司生產的SIM100模塊實現移動通信網絡的接入。
SIM100模塊提供標準的RS232串行接口,可以通過串口使用AT指令完成對模塊的操作。由于在實際應用中,網關并不需要語音、傳真等功能,故在設計電路時將其略去,節省成本與硬件空間。網關使用串口dev/ttyS2與SIM100模塊通信,同樣利用如前所述的μClinux串口編程來設計短消息發送和數據傳輸程序。
在無線局域網的通信方式設計中,本文通過加載無線網卡模塊,以無線的方式接入外部網絡。這需要為網關設備的嵌入式Linux系統加載無線模塊內核,并移植無線網卡驅動到嵌入式Linux系統中。步驟如下:
(1) 修改wireless_tools.29.tar.gz工具包的Makefile文件。修改內容包括CC,AR,RALINB,使其編譯時采用交叉編譯,生成適合嵌入式網關設備的文件。
(2) 順序執行make,make install命令,進行編譯及安裝。
(3) 用網線將網關設備與PC機連接起來,用mount命令將PC Linux系統掛載到網關Linux系統下,并將wireless/sbin目錄及wireless/lib目錄下的內容分別復制到網關Linux系統下的/sbin和/lib目錄。
(4) 下載最新版本的無線網卡驅動,修改其Makefile文件。修改內容包括CC,LD,PLATFORM,使其編譯時采用交叉編譯,生成適合嵌入式網關設備的文件。
(5) 在嵌入式Linux系統中,在/etc目錄下新建目錄Wireless/RT73STA。
(6) 執行make all指令,將生成的rt73.ko,rt73.bin,rt73sta.dat拷貝至Wireless/RT73STA目錄下。
(7) 在網關設備終端下執行 dos2unix /etc/Wireless/RT73 STA/rt73sta.dat命令,實現格式轉換。
(8) 執行insmod命令加載rt73.ko,再用ifconfig,iwconfig等命令設置網關IP地址等內容。
為驗證網關的性能,本文構建了一套測試環境。首先放置一個測試用傳感器節點,負責向網關發送各種測試數據,在以太網內設置一臺基于Linux系統的PC機運行抓包工具,負責捕獲來自網關和服務器的數據包,記錄面向網關的測試數據。利用一臺終端,接收、發送測試數據。使用Chipcon Sniffer無線抓包工具監測測試過程中無線數據測試情況。我們以網關在以太網方式下的通信為例,通過長時間向測試節點以相對高的固定速率(大于250kbit/s)發送不同長度ICMP數據,可以獲得系統地的時延、丟包率等數據指標。由于以太網的速度通常遠遠高于IEEE802.15.4無線傳感器網絡速度,因此通過在無丟包周期內Chipcon Sniffer 記錄到的數據,可以計算出系統的吞吐量;而根據ping包的返回時間減去數據空中傳遞時間和節點收發時間可以計算出系統的時延;通過定長時間內(120s)監測到的Chipcon Sniffer的ACK包數量和相應發送數據報數量之比,可以計算出系統的丟包率。
圖2給出了該網關設備的性能測試曲線。其中,所標識數據比特數為ICMP包文長度。對網關進行的性能測試獲得的各項指標中,對于吞吐量指標,隨著測試數據包長度的增加,吞吐量逐漸增加,轉包收發數量逐漸減小,見圖2(a)、(b);其中,圖2(b)是根據圖2(a)計算得到的。隨著測試數據包長度的增加,時延逐漸增大,見圖2(c)。對于不同的測試數據包長度,在120s范圍內丟包率為0,隨著測試時間的增加丟包率有所上升,但仍不影響正常通信(小于4%),見圖2(d)。綜上,該網關完全可以在實際網絡環境下高性能的運行。

圖2 網關系統性能測試曲線
本文設計并實現了一種多網融合的無線傳感器網絡網關,將有線方式與無線方式相結合,擴展了網關的應用范圍。本網關通過多種通信模塊的接入,實現了無線傳感器網絡與以太網、GPRS網絡、無線局域網等多種網絡的通信。網關還預留了多個通信模塊的接口,可接入其他通信模塊實現與其他網絡的通信,如CDMA等通信網。本網關在上行速率、集成成本、開發難易程度上具有綜合性的優勢。作為與外部網絡連接的可靠、便捷的紐帶,本網關從邏輯上將物理世界與信息世界更加緊密地融合于一體。
[1] 于海濱,曾鵬,王忠鋒等.分布式無線傳感器網絡通信協議研究[J].通信學報.2004.
[2] 霍宏偉,牛延超,郜帥等.一種IPv6無線傳感器網絡以太網接入網關的設計[J].傳感技術學報.2007.
[3] 段渭軍,何戟,張倩.無線傳感器網絡移動Sink網關系統的設計與實現[J].計算機應用研究.2007.
[4] 匡興紅,邵惠鶴.無線傳感器網絡網關研究[J].計算機工程.2007.
[5] 歐杰峰,劉興華.基于CDMA模塊的無線傳感器網絡網關的實現[J].計算機工程.2007.