基于ARM9的嵌入式網(wǎng)關設計
引 言
無線傳感網(wǎng)絡可對網(wǎng)絡分布區(qū)域內(nèi)監(jiān)測對象進行感知、采集、處理和監(jiān)控,并通過無線通信方式傳送給網(wǎng)絡終端用戶,將信息世界與物理世界融為一體。但無線傳感網(wǎng)絡要真正發(fā)揮其在物聯(lián)網(wǎng)領域中的作用還要借助于網(wǎng)關設備接入外部網(wǎng)絡。本文設計了針對多種應用場合的一種多模態(tài)網(wǎng)關。
1 硬件部分設計
嵌入式網(wǎng)關向上連接遠程監(jiān)控系統(tǒng),由上位機程序?qū)崿F(xiàn)遠程的數(shù)據(jù)獲取、設備監(jiān)控。向下連接到無線傳感器網(wǎng)絡的協(xié)調(diào)器模快,實現(xiàn)無線網(wǎng)絡終端節(jié)點的數(shù)據(jù)采集和相關節(jié)點的功能控制。根據(jù)系統(tǒng)功能需求,總體分為三個部分,如圖 1 所示。
1.1 無線傳感網(wǎng)接入模塊
無線接入模塊根據(jù)數(shù)據(jù)傳輸速率選擇基于ZigBee 通信協(xié)議的核心芯片 CC2531 和前端芯片 CC2591,如圖 2 所示,進一步改善其接收靈敏度,從而延長通信距離。無線接入模塊均采用USB 接口方式連接網(wǎng)關設備。
1.2 網(wǎng)關數(shù)據(jù)處理模塊
采用基于ARM9 的 S3C2440 平臺構建網(wǎng)關的硬件平臺。
主控制器分別接收各個采集模塊的數(shù)據(jù)進行統(tǒng)一分析,然后通過總線下達控制命令,把處理好的數(shù)據(jù)送回工業(yè)現(xiàn)場,進行實時控制。
1.3 遠程數(shù)據(jù)輸出模塊
遠程數(shù)據(jù)輸出模塊主要是將處理好的數(shù)據(jù)以特定的形式輸出。用戶可以根據(jù)具體的應用場景選擇 GSM/GPRS、Ethernet 以及UART 中的一種,即可實現(xiàn)上位機的實時顯示和監(jiān)控。
2 軟件部分設計
在Linux 操作系統(tǒng)下的程序開發(fā)過程中,每個程序模塊是以任務的形式開始運行,在創(chuàng)建任務時,可以對每個任務提前設定一個獨有的優(yōu)先級,系統(tǒng)會查詢就緒列表中的優(yōu)先級順序作為執(zhí)行任務的依據(jù)。軟件部分的組成根據(jù)硬件系統(tǒng)的組成分為三個部分:數(shù)據(jù)無線采集、無線接入模塊的USB 驅(qū)動、數(shù)據(jù)的處理和輸出。系統(tǒng)的軟件框圖如圖 3 所示。
2.1 數(shù)據(jù)無線采集
(1) 數(shù)據(jù)采集
根據(jù)網(wǎng)關節(jié)點發(fā)送的信標信號選擇傳感器節(jié)點,通過對CC2530 初始化后,開中斷進行數(shù)據(jù)采集,判斷存儲容量是否飽和,將數(shù)據(jù)發(fā)送至射頻前端 CC2591 準備進行無線傳輸。
(2) 采集節(jié)點低功耗設計
通過中斷信號的引入與中斷服務程序的設計,以及對射頻前端 CC2591 工作模式的控制,實現(xiàn)傳感器節(jié)點的休眠 / 喚醒調(diào)度,優(yōu)化節(jié)點休眠機制;減少節(jié)點功耗,保證網(wǎng)絡通信質(zhì)量。
2.2 無線接入模塊的USB驅(qū)動
在 Linux 驅(qū)動中,USB 驅(qū)動處于最底層的是 USB 主機 控制器硬件,在其之上運行的是 USB 主機控制器驅(qū)動,主機 控制器之上為 USB 核心層,再上層為 USB 設備驅(qū)動層。因此 要實現(xiàn)的 USB 驅(qū)動包括兩類 :USB 主機控制器驅(qū)動和 USB 設備驅(qū)動,前者控制插入其中的 USB 設備,后者控制 USB 設 備如何與主機通信。在編寫特定設備的 USB 設備驅(qū)動時,主 要應該完成的工作是 probe()和 disconnect()函數(shù),即探 測和斷開函數(shù),它們分別在設備被插入和撥出的時候被調(diào)用, 用于初始化和釋放軟硬件資源。
2.3 數(shù)據(jù)的處理和輸出
數(shù)據(jù)管理單元是本設計軟件實現(xiàn)的關鍵部分。負責數(shù)據(jù) 的轉發(fā)、存儲以及相關處理操作。這一部分所要處理的數(shù)據(jù) 包括實時的數(shù)據(jù)和以往數(shù)據(jù)兩部分。在系統(tǒng)完成了初始化后, 數(shù)據(jù)的管理單元即可通過平臺總線的方式來傳輸數(shù)據(jù),對于 數(shù)據(jù)的存儲主要基于兩種方式 :一是存儲于本地,二是存儲 于外部。此外,存儲于本地的數(shù)據(jù)有兩種形式,分為數(shù)據(jù)庫 系統(tǒng)存儲和文件系統(tǒng)存儲。根據(jù)嵌入式網(wǎng)關的應用需求和性 能要求,這里網(wǎng)關采用以本地文件的方式存儲。
3 測試結果
采用多個 ZigBee 模塊節(jié)點和 S3C2440 組成測試網(wǎng)絡。網(wǎng) 絡采用星型拓撲結構,各終端節(jié)點以協(xié)調(diào)節(jié)點為中心相互通信。 節(jié)點可設置為每隔一段時間采集一次數(shù)據(jù),組成數(shù)據(jù)幀發(fā)送 給網(wǎng)關部分。網(wǎng)關分別設置成通過 USB 接口接收 ZigBee 采集 數(shù)據(jù)和利用以太網(wǎng)傳輸數(shù)據(jù),服務器 IP 地址為 192.168.1.17, 網(wǎng)關上無線接入模塊為 CC2531。相關結果如圖 4 所示。
將嵌入式網(wǎng)關平臺、無線傳感網(wǎng)各節(jié)點上電,在網(wǎng)關系 統(tǒng)完成初始化和 ZigBee 無線傳感網(wǎng)絡成功建立后,網(wǎng)關平臺 接收匯聚節(jié)點的數(shù)據(jù)并進行相關數(shù)據(jù)處理,最后通過以太網(wǎng) 的方式傳輸?shù)缴衔粰C監(jiān)控系統(tǒng)。監(jiān)控系統(tǒng)通過 socket 客戶端 連接到網(wǎng)關的 socket 服務器。監(jiān)控系統(tǒng)通過對傳輸來的數(shù)據(jù) 進行數(shù)據(jù)包解析,并將無線傳感器網(wǎng)絡節(jié)點信息顯示在上位 機界面。
本地存儲通過搭建文件系統(tǒng)以及自制 GUI 程序來實現(xiàn), 如圖 5 所示。
4 結 語
無線傳感器網(wǎng)絡逐步應用到了越來越多的領域,嵌入式 網(wǎng)關作為無線傳感器網(wǎng)絡與外部網(wǎng)絡通信的橋梁,在 WSN 網(wǎng) 絡系統(tǒng)整體結構中起著顯著的關鍵作用。本設計針對目前無線 傳感網(wǎng)的應用趨勢,采用模塊化設計的思想,提出了一種基于 ARM 的嵌入式網(wǎng)關系統(tǒng)平臺的實現(xiàn)方案,實現(xiàn)了無線傳感器 網(wǎng)絡和外部網(wǎng)絡的數(shù)據(jù)傳輸,提高了網(wǎng)關的通用性。嵌入式 Linux 系統(tǒng)的應用也大大改善了網(wǎng)關實時性能。未來嵌入式網(wǎng) 關可用于區(qū)域環(huán)境的信息監(jiān)測,如智能樓宇、智能交通、工業(yè) 監(jiān)測等應用,利用近、遠距離通信方式的結合延伸了數(shù)據(jù)監(jiān)測 范圍,在實際測試當中取得了良好的效果。