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