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