摘要:針對無線傳感器網絡傳統Sink網關的不足,提出了一種基于PDA的移動Sink網關系統的設計與實現方案,對其設計目標、體系結構和工作原理進行了論述,重點討論了PDA與Sink節點之間的連接,PDA與Sink節點、PDA與GPS接收機及PDA與控制終端之間通信的一些關鍵技術。
關鍵詞:網關系統;無線傳感器網絡;PDA
中圖分類號:TP393文獻標志碼:A
文章編號:1001—3695(2007)03—0241—03
無線傳感器網絡是由一組稠密布置、隨機布設的傳感器構成的無線自組織網絡,其目的是協作地感知、采集和處理網絡覆蓋的地理區域內感知對象的信息,并發布給觀察者[1]。
在無線傳感器網絡中,傳感器節點是通過Sink網關與控制終端進行通信及數據交換的[2]。目前,傳統的Sink網關由于采用有線方式與控制終端進行連接而存在較多的限制。相對于無線傳感器網絡使用方便、受限較小的特點來說,傳統Sink網關已經越來越不能適應無線傳感器網絡應用發展的需要,其不可避免地要朝著可移動、無線化的方向發展[3]。本文根據具體應用的需求,在WinCE系列PDA的基礎上,結合WLAN和藍牙等無線通信技術,提出了一種無線傳感器網絡移動Sink網關系統的設計和實現方案。
1傳統Sink網關存在的問題
傳統的Sink網關大多通過串口電纜(RS—232)與PC等控制終端相連或通過串口聯網服務器與局域網相連,從而導致傳統Sink網關在使用范圍上要受到電纜長度的制約,而且在某些場合的應用中也顯得十分不方便,同時由于受到傳統Sink網關自身資源限制的原因,其在應用上有以下缺點[4]:
(1)移動范圍受限
由于Sink網關的低速移動可以平衡多數節點之間的流量載荷,進而增加數據包的命中率[3],在無線傳感器網絡的大多數應用中,Sink網關的低速移動非常必要。但傳統Sink網關是通過有線方式與控制終端相連的,往往是不可移動的,即使可移動,其移動的范圍也會由于受到線纜長度的制約而被限制得比較小。
(2)遠程監控困難
對感知區域的遠程監控在無線傳感器網絡的應用中是十分必要的,特別是在惡劣的環境或者戰場環境中,當人們不能靠近無線傳感器網絡感知的區域時,遠程監控就顯得更為重要了[5]。但是傳統Sink網關與控制終端連接的電纜長度有限,這就要求控制終端與感知區域之間的距離必須非常接近。所以在使用傳統Sink網關的無線傳感器網絡中,通過Sink網關對感知區域的遠程監控十分困難。
(3)不能提供基準定位信息
傳感器節點的自身定位是無線傳感器網絡大多數實際應用的基礎,而傳感器節點需要以基準定位信息作為標準,通過自身定位算法來確定其自身的位置[6]。同時,對于控制終端也需要知道基準定位信息,以確定傳感器節點是否被正確布設到指定區域。在傳統的Sink網關中,由于其自身硬件資源有限,不具備向傳感器節點及控制終端提供基準定位信息的能力,這就導致傳統Sink網關在無線傳感器網絡的實際應用中沒有得到具體的應用。
2移動Sink網關系統設計
2.1設計目標
根據具體應用的需求,移動Sink網關系統設計的具體目標是:
(1)高移動性。移動Sink網關系統應便于攜帶、方便移動、不受線纜束縛。
(2)遠程監控方便。移動Sink網關系統采用無線方式與控制終端進行通信,這樣控制終端能夠方便地對感知區域進行監控。
(3)能夠提供基準定位信息。移動Sink網關系統能夠通過衛星定位裝置獲取自身定位信息,從而向感知區域內的傳感器節點及控制終端提供基準定位信息。
(4)可擴展性。移動Sink網關系統可以通過增加更多的硬件設備來擴展其功能。
2.2系統結構
根據具體目標,這里基于WinCE系列PDA、WLAN技術以及GPS衛星定位技術來構建移動Sink網關系統。WinCE系列PDA采用Windows CE操作系統,操作方便,具有強大的處理能力和足夠大的內存,而且它的硬件接口豐富,擴展性好;WLAN具有無需物理布線、組網靈活快捷、可移動性強、傳輸速率高、信號比較穩定等特點,而且利用WLAN技術,網關還可以通過無線接入點設備(AP)方便地連入Internet;GPS定位精度高、操作簡便,而且能夠全天候作業。
移動Sink網關系統由PDA、Sink節點、GPS衛星接收機和WLAN無線網卡等四部分組成,如圖1所示。PDA是移動Sink網關系統的核心部分,它負責對Sink節點、GPS衛星接收機和WLAN無線網卡進行管理,同時完成對采集數據信息的存儲、處理以及轉發;Sink節點負責接收傳感器節點采集的數據信息以及向傳感器節點發送控制信息;GPS衛星接收機負責向傳感器節點及控制終端提供基準定位信息;WLAN無線網卡負責PDA與控制終端之間的無線通信。
圖1系統結構示意圖
PDA與Sink節點之間通過一個串行口進行數據交換;PDA從GPS衛星接收機獲取信息是通過藍牙端口進行的;PDA與WLAN無線網卡之間的數據交換則是通過CF接口實現的。
2.3工作原理
布設在感知區域內的傳感器節點在采集相關數據信息后通過“多跳”路由方式將采集數據信息傳送給Sink節點[7],Sink節點在接收到采集數據信息后通過串口將采集數據信息傳遞給PDA,然后由PDA將采集數據信息通過WLAN無線網卡發送給控制終端或者由PDA對采集數據信息進行分析、處理。
當控制終端需要向傳感器節點發送控制信息時,首先控制終端通過WLAN無線方式將控制信息發送給PDA,PDA在接收到控制信息后通過串口將控制信息傳遞給Sink節點;然后由Sink節點向感知區域內的傳感器節點進行廣播。
當移動Sink網關需要向傳感器節點或者控制終端發送基準定位信息時,首先由PDA通過藍牙方式從GPS衛星接收機讀取自身定位信息;然后將自身定位信息傳遞給Sink節點,由Sink節點向傳感器節點進行廣播,或者通過WLAN無線網卡發送給控制終端。
3系統實現相關技術
3.1PDA與Sink節點之間的連接
在傳統的Sink網關中,Sink節點是通過51針擴展接口與節點編程板連接而構成網關的。在移動Sink網關系統中,Sink節點是通過與PDA進行連接構成網關的。Sink節點提供的是標準的UART接口,而PDA只提供了9針RS—232串口。所以在系統中采用將Sink節點通過UART接口與PDA的RS—232串口連接來實現PDA與Sink節點的連接。
由于RS—232電平與UART的TTL電平不兼容,UART接口與RS—232串口相連必須要經過電平轉換。系統采用了MAX3232芯片來完成UART接口與9針串口之間的電平轉換。按照Null Modem連接方式,Sink節點上的數據發送引腳UART_TX通過MAX3232芯片上的D2引腳組與PDA串口的數據接收引腳RXD相連;數據接收引腳UART_RX通過MAX3232芯片上的R2引腳組與PDA串口的數據發送引腳TXD相連。圖2是PDA與Sink節點連接的部分電路原理圖。
圖2PDA與Sink節點連接部分電路原理圖
3.2PDA與Sink節點之間的通信
PDA與Sink節點之間是通過串行端口進行通信的。在Win32下串行通信口是作為文件的方式來進行操作的, PDA一般只有一個串口,其使用時文件名為“COM1”,這樣在系統中就可以利用Windows API函數來實現對串口的操作。其操作的一般步驟如下:
(1)打開串口,使用CreateFile()函數,返回一句柄。
(2)設置串口參數,使用SetCommState()函數,其中只需改動DCB(Device Control Block)中有意義的幾個參數即可。
(3)對串行口進行讀寫,使用ReadFile()進行串口讀數據,使用WriteFile()進行串口寫數據。
(4)關閉串口,使用CloseHandle(打開串口時返回的句柄)函數。
利用Windows API函數能夠實現串口的簡單數據收發操作,但還不能自動收發數據。為了達到串行通信中自動收發的目的,有兩種方法可以實現:①利用定時器Timer或是Do…While循環不斷地發出信號詢問設備,要求設備返回計算機所要求的信息;②利用多線程技術,除了主線程之外,再開一個監聽數據線程,用于時刻監聽接收來的數據。系統采用的是第②種多線程方法來實現串行通信的自動收發數據。主線程負責向各傳感器節點轉發控制終端的控制信息。由于控制信息無需連續發送,主線程只是在需要時才向串行端口發送數據。主線程啟動的輔助線程(接收數據線程)負責接收Sink節點轉發的各傳感器節點的數據信息。接收數據線程一旦啟動就會時刻監聽串行端口,每當有數據到達串行端口,就會觸發事件通知接收數據線程,這時接收數據線程就會從串行端口讀取數據并將其存入數據緩沖區中。當數據緩沖區接收到一個完整的數據包時,它就會把數據包傳送給數據處理應用程序。
3.3PDA與GPS接收機之間的通信
PDA與GPS接收機之間是通過藍牙端口進行通信的。在WinCE系列PDA中,藍牙端口是通過虛擬串口來使用的,這樣就可以通過文件的方式來操作藍牙端口,其使用時文件名為“COM8”。系統程序利用Windows API函數來實現對藍牙端口的操作,其操作步驟與串行通信操作步驟相類似,具體參見第3.2節所述。
由于基準定位信息不需要連續發送,只需定時向節點及控制終端發送,系統采用的是輪詢的方法來實現移動Sink網關對藍牙GPS的自動收發數據。采用定時器Timer,Interval=5 000ms。PDA在定時器的作用下,每隔5 000ms接收一次GPS數據。PDA首先將GPS數據讀入緩沖區中,并從中截取一個完整數據包,然后解析數據包提取出自身位置信息,接著向Sink節點或控制終端發送定位信息。
GPS數據格式定義如下:
SGPRMC,204700,A,3403.868,N,11709.432,W,001.9,336.9,170698,013.6,E*6E
其中,SGPRMC代表GPS推薦的最短數據;204700是UTC_TIME 24小時制的標準時間,按照h/min/s的格式;A或者VA表示資料“OK”,V表示一個警告;3403.868是緯度值,精確到小數點前4位,后3位;N或者SN表示北緯,S表示南緯;11709.432是經度值,精確到小數點前5位,后3位;W或者EW表示西經,E表示東經。
3.4PDA與控制終端之間的通信
PDA與控制終端之間是通過WLAN無線方式進行通信的。在通信中,PDA擔任著客戶機的角色,控制終端擔任著服務器的角色。其原因是:在網絡系統中,控制終端處于監聽狀態,接收PDA轉發的各傳感器節點感知的數據信息;另外,控制終端還負責向PDA發送對各傳感器節點的控制信息。在PDA中,為了實現與控制終端的通信,可以采用面向連接的TCP Socket方式或者面向無連接的UDP Socket方式。TCP Socket方式能夠提供雙向、可靠、有次序、不重復的數據傳送;UDP Socket方式具有占用網絡資源少、處理速度快的優點,但沒有可靠、有次序、不重復的保證,數據在傳輸過程中可能會丟失。
在系統實現中,PDA采用的是面向連接的TCP Socket方式直接與控制終端進行通信,以保證數據的正確性,使得處理更靈活、性能更好。完整的通信程序包含兩部分程序,運行在PDA上的客戶端程序和運行在控制終端上服務器端程序。這里主要討論PDA的客戶端程序。由于Windows CE操作系統中集成了TCP/IP協議,系統軟件的實現即為基于套接字的網絡編程實現。又由于系統在傳輸層采用的是面向連接的服務方式,在程序中必須采用面向連接的套接字系統調用。系統程序首先調用WSAStartup()函數來與WinSock的動態鏈接庫建立關系,然后調用socket()函數創建一個用于與控制終端通信的TCP套接字,接著調用connect()函數與控制終端建立連接。連接建立之后,系統使用這個套接字與控制終端進行通信。在通信中,系統通過調用send()函數將傳感器節點感知的數據包轉發給控制終端,另外通過調用recv()函數來實現對控制終端發送的控制信息的接收。
4結束語
本文全面介紹了移動Sink網關系統的組成部分及工作原理,重點介紹了PDA與Sink節點之間的硬件連接、PDA與Sink節點之間的通信技術、PDA與GPS接收機之間的通信技術以及PDA與控制終端之間的通信技術。該網關系統采用PDA作為核心設備,可靠性高、便于擴展、維護方便、功能齊備,有著廣泛的應用前景。在進一步的開發中,筆者將致力于實現移動Sink網關通過GPRS/CDMA無線方式與遠程控制終端的通信,從而實現對移動Sink網關系統的遠程擴展。
本文中所涉及到的圖表、注解、公式等內容請以PDF格式閱讀原文。