無線傳感器網絡節點的設計與實現
作者:西安培華學院 陜西西安 王心妍
發布時間:2012-10-29 11:33:53 來源:陜西教育報刊社
[摘 要]文章設計并實現了一種基于嵌入式Linux的無線傳感器網絡匯聚節點,該節點以ARM9處理器S3C2440作為主控芯片,基于L inux平臺開發遠程監控體系。經測試,可以實現無線傳感器網絡數據接收的功能,并能夠將處理好的數據以動態網頁的形式提供給用戶訪問。
[關鍵詞] 無線傳感器網絡 傳感器節點 嵌入式系統 Boa Web服務器
無線傳感器網絡節點
無線傳感器網絡節點一般由4個部分組成:傳感器模塊、處理模塊、無線收發模塊和能量供應模塊[1]。傳感器模塊負責信息采集和數據轉換;處理模塊控制整個傳感器節點的操作,處理本身采集的數據和其他節點發來的數據點提供運行所需的能量,運行高層網絡協議;無線通信模塊負責與其他傳感器節點進行通信;能量供應模塊為傳感器節點微型蓄電池。
硬件設計
本文所設計的匯聚節點的硬件結構設計中,核心單元為處理器單元和射頻單元。處理器采用Samsung公司的ARM9處理器S3C2440,實現對整個系統的控制。射頻單元采用CC2430射頻芯片實現無線傳感器網絡的創建管理與數據收集的功能。系統的存儲采用SDRAM和FLASH來實現,Internet網絡接入芯片采用DM9000網卡,電源模塊與復位模塊用來實現整個系統的供能和復位。為了實現系統的監測與調試,又加入了串口模塊和JTAG模塊。
軟件設計
1.嵌入式Linux系統移植
建立一個與系統硬件密切相關的嵌入式系統軟件平臺不僅可以屏蔽系統的硬件特性,而且更是無線傳感器網絡節點的遠程監控軟件實現的基礎[2]。
對于系統移植而言,Linux實際上是由內核部分和系統部分構成。其內核初始化和控制絕大部分硬件設備,為內存管理、進程管理、設備讀寫等做好一切準備工作;其系統加載必需的設備,配置各種環境以便用戶可以使用整個系統。
2.遠程監控軟件系統
無線傳感器網絡節點實現遠程監控主要通過CC2430射頻芯片接收各個節點采集到的數據,并將接收到的數據作初步處理,再通過虛擬總線發送給S3C2440,S3C2440芯片將接收到的數據包解包后送到數據存儲區。需要在Linux系統中移植一個Boa web服務器,使用CGI編程技術和AJAX技術實現動態網頁,用戶終端就可以通過瀏覽器訪問到實時數據。
(1)ARM系統對CC2430監控程序
ARM-Linux軟件系統對CC2430監控過程如下:程序運行之后,首先調用CC2430設備驅動中的cc2430_apace_ropen函數,實現對CC2430設備的打開。然后打開數據存儲區,存儲來自無線傳感器網絡中的數據。接著,系統進入循環狀態。通過調用select函數來監測CC2430設備,如果此時沒有數據到達,則重新監測,一直等到有數據發送過來,則使用read函數讀取數據包,并按照協議解析數據包,將數據送到數據存儲區。此時為避免對數據存儲區的同時讀寫,先使用鎖定函數鎖定數據存儲區,然后將數據寫入數據存儲區,之后再解鎖數據存儲區,方便Internet客戶端訪問,至此則完成了一個數據包的接收。程序進入循環狀態,重新監測CC2430設備,等待下個數據包的到來。
(2)建立Linux Boa服務器
Boa web服務器的工作流程:Boa從新到達的套接字獲得HTTP請求(由一個request結構來存儲),使用get_request( )將所有數據保存在request→header_line中,之后調用process_request( )來處理在隊列中的每一個請求。根據request結構中status所表示的不同狀態,將進行不同的處理。如果這個請求符合HTTP協議,則會調用process_option_line( )將一些頭部信息填寫到request結構中完成這些環境變量的設置,隨后process_header_end( )會對用戶進行驗證。如果驗證通過,則判斷request結構中的is_cgi,非0則是CGI程序,調用init_cgi( )函數進行處理,為0則是靜態頁面,調用init_get( )函數進行處理。
(3)基于AJAX的實時監控動態網頁
本設計采用基于AJAX技術(asynchronousJavaScriptand XML)與CGI技術實現無線傳感器網絡的實時監控動態網頁。
AJAX是Web應用中JavaScript和XML相結合的一種異步交互式網頁開發技術,可以實現網頁無刷新動態更新的效果。它提供了到HTTP協議的所有細節的完整存取,包括頭部和數據的任何定制格式。
通用網關接口CGI(Common Gateway Interface)是外部擴展應用程序與web服務器進行數據交流的一種接口,Web服務器控制調用CGI程序可以實現外部應用程序的執行,CGI程序就是按照標準接口編程實現的運行于Web服務器上的一種程序。在無線傳感器網絡節點的軟件系統中,CGI程序主要的功能是向客戶端返回無線傳感器網絡中的實時數據。
要實現對無線傳感網絡節點數據的實時監控,首先需要通過表單向AJAX引擎發送請求,然后AJAX引擎會不斷地向web服務器發送請求,要求調用服務器中的CGI程序以獲取網絡實時數據,無刷新實時監控網頁中的數據。
系統測試
測試實驗中,選用8個CC2430、組建的匯聚節點和一臺PC機。將匯聚節點和PC機接入Internet,PC機作為客戶端,CC2430作為通用節點與匯聚節點構成一個星型拓撲結構的無線傳感器網絡,設置匯聚節點的IP為192.168.1.230。預先設定好數據,通用節點定時向匯聚節點發送數據包,匯聚節點接收到數據包后解包處理,等待PC機通過Internet訪問。在客戶端PC機上打開支持JavaScript的瀏覽器,單擊動態監控首頁上的send按鈕發送請求,屏幕上就會實時地顯示由8個通用無線節點所發送的數據包經過解包后的結果。
結束語
結果表明,所設計的匯聚節點能夠通過Internet對遠程的節點采集的數據進行實時動態監測。下一步,計劃將所設計的節點與具體的實際應用相結合,擴展其應用范圍。
參考文獻:
[1]孫利民,李建中.無線傳感器網絡[M].北京:清華大學出版社,2005:51—55.
[2]鄭靈翔.嵌入式Linux系統設計[M].北京:北京航空航天大學出版社,2008:61—70.
