【文章內(nèi)容簡(jiǎn)介】
信,我們是利用zigbee 組網(wǎng)來(lái)實(shí)現(xiàn)路由單板與各單板節(jié)點(diǎn)的數(shù)據(jù)通信的。 ZigBee 技術(shù)是一種近距離、低復(fù)雜度、低功耗、低速率、低成本的雙向無(wú)線通訊技術(shù)。主要用于距離短、功耗低且傳輸速率不高的各種電子設(shè)備之間進(jìn)行數(shù)據(jù)傳輸以及典型的有周期性數(shù)據(jù)、間歇性數(shù)據(jù)和低反應(yīng)時(shí)間數(shù)據(jù)傳輸?shù)膽?yīng)用。 在 zigbee 組網(wǎng)過程中,難點(diǎn)是對(duì)數(shù)據(jù)包的定義,同時(shí)要解決數(shù)據(jù)在傳輸過程中失真或丟失的問題,還有就是如何給每個(gè)單板節(jié)點(diǎn)數(shù)據(jù) 加上各自獨(dú)一的標(biāo)簽。 系統(tǒng)控制流設(shè)計(jì) 通過對(duì)系統(tǒng)的分析,系統(tǒng)實(shí)現(xiàn)用戶通過網(wǎng)絡(luò)上 PC 機(jī)的瀏覽器來(lái)登入到服務(wù)器,通過網(wǎng)頁(yè)來(lái)實(shí)時(shí)的查看和監(jiān)控被控區(qū)域的溫濕度、光亮強(qiáng)度以及控制模擬的家電設(shè)備。具體的系統(tǒng)控制流程圖如圖 32 所示。 信息科學(xué)與技術(shù)學(xué)院學(xué)士學(xué)位論文 家 電 服 務(wù) 器打 開 串 口 并 初始 化打 開 緩 存 文件 F發(fā) 送 命令獲 取 數(shù)據(jù)寫 入 緩 存 文件 FB O A 服 務(wù) 器登 入 頁(yè) 面控 制 頁(yè) 面C o n t r o l . c g i給 串 口發(fā) 送 數(shù)據(jù)路 由 單 板z i g b e e 收 發(fā) 數(shù) 據(jù)節(jié) 點(diǎn) 2節(jié) 點(diǎn) 1 節(jié) 點(diǎn) n緩 存 文件 F發(fā) 送 命 令 圖 32 系統(tǒng)控制流 如圖 32 中,可以非常直觀的顯示該系統(tǒng)所設(shè)計(jì)的功能流程和其功能實(shí)現(xiàn)。從何圖中我們可以更直觀的看到數(shù)據(jù)源不斷的采集數(shù)據(jù)并接收來(lái)自服務(wù)器端的命令,服務(wù)器端則響應(yīng)來(lái)自網(wǎng)絡(luò)的請(qǐng)求與下層進(jìn)行交流。從圖可知, 用戶可以在遠(yuǎn)程端通過網(wǎng)絡(luò) 連接到我們的服務(wù)器,然后服務(wù)器接到請(qǐng)求后給用戶發(fā)送一個(gè)網(wǎng)頁(yè),則用戶可以通過網(wǎng)頁(yè)直觀的查看各類環(huán)境參數(shù)。并按照自己的意愿對(duì)遠(yuǎn)程的家電設(shè)備進(jìn)行監(jiān)控。 通過對(duì)系統(tǒng)的分析,在整個(gè)系統(tǒng)中,關(guān)鍵的是如何數(shù)據(jù)的傳輸,本系統(tǒng)中涉及了有線傳輸和無(wú)線傳輸,有線傳輸是給遠(yuǎn)程網(wǎng)絡(luò)的用戶提供服務(wù),無(wú)線傳輸主要是路由對(duì)節(jié)點(diǎn)數(shù)據(jù)的收集。 系統(tǒng)詳細(xì)設(shè)計(jì) 在系統(tǒng)的概要設(shè)計(jì)中,已將系統(tǒng)劃分為多個(gè)模塊,并將它們按照一定的原則進(jìn)行組裝,同時(shí)確定了每個(gè)模塊的功能。詳細(xì)設(shè)計(jì)是系統(tǒng)設(shè)計(jì)的第二階段,主要確定每個(gè)模塊的具體執(zhí) 行過程。 數(shù)據(jù)源端功能設(shè)計(jì) 通過對(duì)數(shù)據(jù)源端功能的分析, 數(shù)據(jù)是由多個(gè)節(jié)點(diǎn)提供。節(jié)點(diǎn)提供給路由端相同的數(shù)據(jù)類型。 數(shù)據(jù)源端節(jié)點(diǎn)數(shù)據(jù)的采集是通過 zigbee 無(wú)線傳輸方式,路由節(jié)點(diǎn)的流程圖如圖 33所示。 信息科學(xué)與技術(shù)學(xué)院學(xué)士學(xué)位論文 m i a n 函 數(shù)初 始 化接 收 一 個(gè)串 口 命 令W h i l e 循 環(huán)是 否 設(shè) 置 溫 度是 否 為 自己 的 命 令是 否 為讀 命 令接 收 串口 數(shù) 據(jù)設(shè) 置 報(bào) 警N執(zhí) 行YYZ i g b e e發(fā) 送接 收 z i g b e e數(shù) 據(jù)串 口 發(fā) 數(shù) 據(jù)YN 圖 33 路由節(jié)點(diǎn)流程圖 普通節(jié)點(diǎn)數(shù)據(jù)流程圖如圖 34 所示。 信息科學(xué)與技術(shù)學(xué)院學(xué)士學(xué)位論文 M i a n 函 數(shù)初 始 化W h i l e 循 環(huán)接 收 z i g b e e數(shù) 據(jù)是 否 為讀 命 令執(zhí) 行采 集 數(shù) 據(jù)Z i g b e e發(fā) 送YN 圖 34 普通節(jié)點(diǎn)流程圖 圖 33 中,在該數(shù)據(jù)源端,即單板 LPC1114,在本系統(tǒng)中該模塊有三個(gè)作用,其一是采集本身相關(guān)的 傳感模塊的數(shù)據(jù), 其二是直接與服務(wù)器建立有線連接,該模塊可以接收服務(wù)器的命令,同時(shí)不斷地給服務(wù)器發(fā)送數(shù)據(jù)。其三是與其他節(jié)點(diǎn)建立無(wú)線連接,接收其他節(jié)點(diǎn)的數(shù)據(jù),同時(shí)給其他節(jié)點(diǎn)發(fā)送命令。 即該模塊除具備普通節(jié)點(diǎn)的采集數(shù)據(jù)的功能外,還具備了路由的功能,所以可以稱為路由節(jié)點(diǎn)。 圖 34 中,在該此數(shù)據(jù)源端中,其主要是與路由節(jié)點(diǎn)建立無(wú)線連接,當(dāng)接收到路由節(jié)點(diǎn)的命令后進(jìn)行解析,然后響應(yīng),如果接收的命令是采集數(shù)據(jù)命令,則采集本身數(shù)據(jù),然后發(fā)送給路由節(jié)點(diǎn)。所以本節(jié)點(diǎn)只有簡(jiǎn)單的與路由節(jié)點(diǎn)連接,故稱為普通節(jié)點(diǎn)。 如果把路由路節(jié)點(diǎn)和普通 節(jié)點(diǎn)看作一個(gè)整體,即數(shù)據(jù)源端的數(shù)據(jù)節(jié)點(diǎn)的話,其主要有以下的功能。 (1) 采集各類傳感器數(shù)據(jù),并按照相應(yīng)的格式打包。 (2) 接收來(lái)自服務(wù)器端的命令。 (3) 發(fā)送數(shù)據(jù)。 數(shù)據(jù)源端 zigbee 組網(wǎng)設(shè)計(jì) 通過對(duì)數(shù)據(jù)源端多節(jié)點(diǎn)數(shù)據(jù)傳輸方式的分析,系統(tǒng)采用 zigbee 無(wú)線組網(wǎng)方式, zigbee無(wú)線組網(wǎng)方式拓?fù)浣Y(jié)構(gòu)如圖 35 所示。 信息科學(xué)與技術(shù)學(xué)院學(xué)士學(xué)位論文 路 由 z i g b e e節(jié) 點(diǎn) 2節(jié) 點(diǎn) 1節(jié) 點(diǎn) n數(shù) 據(jù) + I D命 令 + I D命 令 + I D 數(shù) 據(jù) + I D數(shù) 據(jù) + I D命 令 + I D 圖 35 zigbee 拓?fù)浣Y(jié)構(gòu) 從 圖 35 zigbee 拓?fù)浣Y(jié)構(gòu)圖中可知,路由單板是根據(jù)各單板節(jié)點(diǎn)的 ID 號(hào)來(lái)區(qū)別各個(gè)單 板節(jié)點(diǎn)的。所以單板節(jié)點(diǎn)在定義數(shù)據(jù)包時(shí)要在數(shù)據(jù)包的頭部增加自身的 ID 號(hào),這樣路由單板在接收到數(shù)據(jù)包后只要解析數(shù)據(jù)頭部的 ID 就可以區(qū)分接收的數(shù)據(jù)包是哪塊單板發(fā)送的。當(dāng)路由單板在給某個(gè)單板節(jié)點(diǎn)發(fā)送命令時(shí),也是只要在命令的頭部加上要控制的單板節(jié)點(diǎn)的 ID 號(hào)。所有單板節(jié)點(diǎn)在接收到數(shù)據(jù)后,解析數(shù)據(jù)頭部 ID 號(hào),如果解析的 ID號(hào)與自己 ID 號(hào)相符則執(zhí)行該命令,如果解析的 ID 號(hào)與自己的不相符則丟棄該命令。 新節(jié)點(diǎn)的加入如圖 36 所示。 路 由節(jié) 點(diǎn)請(qǐng) 求 加 入分 配 I D 圖 36 新節(jié)點(diǎn)加入圖 新節(jié)點(diǎn)加 入的詳細(xì)流程圖如圖 37 所示。 信息科學(xué)與技術(shù)學(xué)院學(xué)士學(xué)位論文 要 求 加 入 命 令次 節(jié)點(diǎn)主 節(jié) 點(diǎn)服 務(wù) 器加 入 節(jié) 點(diǎn) 命 令網(wǎng) 頁(yè)刷 新 網(wǎng) 頁(yè) 列 表按 鍵 觸 發(fā) s e r c h ( )S e r c h ( ) 發(fā) 送 搜 索 命 令B O A R D _ C M D發(fā) 送 廣 播 命 令B O A R D _ C M D節(jié) 點(diǎn) 退 出 命 令 圖 37 新節(jié)點(diǎn)加入流程圖 從圖 37 可以很直觀的了解到新節(jié)點(diǎn)動(dòng)態(tài)加入的流程。設(shè)計(jì)這一功能的優(yōu)點(diǎn)是增加系統(tǒng)的實(shí)用性與擴(kuò)展性。這樣,系統(tǒng)的適用能力更強(qiáng),可以自動(dòng)識(shí)別新節(jié)點(diǎn)和舊節(jié)點(diǎn),這一設(shè)計(jì)使得系統(tǒng)可以在節(jié)點(diǎn)流動(dòng)性大的區(qū)域可靠的使用。 新節(jié)點(diǎn)加入過程中, 系統(tǒng)服務(wù)器端各功能設(shè)計(jì) 通過對(duì)系統(tǒng)整體分析得知,系統(tǒng)服務(wù)器承載著大部分的數(shù)據(jù)處理,單板只負(fù)責(zé)簡(jiǎn)單的命令執(zhí)行 。根據(jù)這一設(shè)計(jì)思想,系統(tǒng)設(shè)計(jì)出了 圖 38 所示的系統(tǒng)流程圖,該圖 主要描述了服務(wù)器端的數(shù)據(jù)流程,其主要是作為遠(yuǎn) 程客戶端和數(shù)據(jù)源端連接的紐帶,同時(shí)處理比較復(fù)雜的工作,比如處理來(lái)自數(shù) 據(jù)源的數(shù)據(jù)以及響應(yīng)來(lái)自網(wǎng)絡(luò)的遠(yuǎn)程客戶端的連接。其主要有以下功能: ( 1)接收來(lái)自單板的數(shù)據(jù) ( 2)接收來(lái)自遠(yuǎn)程客戶端的命令 ( 3)給單板發(fā)送命令 系統(tǒng)服務(wù)端整體流程 如圖 38 所示。 信息科學(xué)與技術(shù)學(xué)院學(xué)士學(xué)位論文 M a i n ( )打 開 t t y U S B初 始 化 t t y U S B打 開 t e m p . x m l ,t e m p _ 1 . x m l創(chuàng) 建 a n d r o i d 線 程W h i l e ( 1 )發(fā) 讀 取 板 子 1 的 命 令 ,w r i t e ( f d , G E T _ B O A R D 1 _ D A T A , 1 )發(fā) 讀 取 板 子 2 的 命 令 ,w r i t e ( f d , G E T _ B O A R D 2 _ D A T A , 1 )獲 得 板 子 1 的 數(shù) 據(jù)g e t _ i n f o ( f d , amp。 i n f o 1 )獲 得 板 子 2 的 數(shù) 據(jù)g e t _ i n f o ( f d , amp。 i n f o 1 )等 待 a n d r o i d 手 機(jī) 客 戶 的 連接 ? a c c e p t ( ) .客 戶 連 接 成 功進(jìn) 入 客 戶 操 作 線 程c l i e n t _ t h r e a d讀 取 客 戶 端 發(fā) 來(lái) 的 命 令r e a d ( f d _ a c c e p t 2 , amp。 r e a d _ b u f , 1 )選 取 2 板 子 中 其 中 一 塊 板 子發(fā) 獲 取 板 子 信 息的 命 令發(fā) 設(shè) 置 報(bào) 警 溫 度 的命 令發(fā) 操 作 板 子 的 命令更 新 t e m p . x m l 和 t e m p _ 1 . x m l 里的 信 息w r i t e ( f d _ a c c e p t 2 , ( c h a r * ) amp。 i n f o 1 , 1 1 )w r i t e ( f d _ t t y , amp。 r e a d _ b u f , 1 ) w r i t e ( f d , b u f f e r , 4 )打 開 t t y U S B單 板 圖 38 服務(wù)器端流程圖 系統(tǒng)客戶端各功能設(shè)計(jì) 信息科學(xué)與技術(shù)學(xué)院學(xué)士學(xué)位論文 在 P C 瀏 覽 器 輸 入 服 務(wù) 器 I P登 入 界 面監(jiān) 控 頁(yè) 面獲 取 網(wǎng) 頁(yè) 的 動(dòng) 態(tài) 變 化 值打 開 串 口向 串 口 發(fā) 送 命 令關(guān) 閉 串 口單 板 狀 態(tài) 信 息顯 示 圖 39 客戶端流程圖 圖 39 主要描述了客戶端網(wǎng)頁(yè)的簡(jiǎn)單流程,從圖中可以看出系統(tǒng) 客戶端的主要功能有 以下 兩點(diǎn)。 ( 1) 一個(gè)動(dòng)態(tài)網(wǎng)頁(yè),動(dòng)態(tài)顯示遠(yuǎn)程單板數(shù)據(jù) ( 2) 實(shí)現(xiàn)相關(guān)控制按鈕 本章小結(jié) 系統(tǒng)設(shè)計(jì)是每個(gè)系統(tǒng)的靈魂所在,這一章分為概要設(shè)計(jì)和詳細(xì)設(shè)計(jì)兩個(gè)部分,通過對(duì)系統(tǒng)的概要設(shè)計(jì)得出來(lái)系統(tǒng)的結(jié)構(gòu)功能圖以及系統(tǒng)的控制流圖,這是整個(gè)系統(tǒng)的核心,它直接展示了系統(tǒng)的功能以及整個(gè)系統(tǒng)的控制流。在詳細(xì)設(shè)計(jì)階段,主要闡述服務(wù)器端和客戶端在各個(gè)功能上的設(shè)計(jì)過程,這個(gè)階段為系統(tǒng)的實(shí)現(xiàn)奠定了基礎(chǔ)。 信息科學(xué)與技術(shù)學(xué)院學(xué)士學(xué)位論文 4 嵌入式 ARMLinux 環(huán)境建立 絕大多數(shù)的軟件開發(fā)都是本機(jī)開發(fā)、調(diào)試,本機(jī)運(yùn)行的方式進(jìn)行,但是 這種方式不適合于嵌入式系統(tǒng)的軟件開發(fā),因?yàn)閷?duì)于嵌入式系統(tǒng)的開發(fā),它沒有足夠的資源在本機(jī)運(yùn)行開發(fā)工具和調(diào)試工具。因此在宿主機(jī)上搭建一個(gè)好的開發(fā)環(huán)境是很關(guān)鍵的一步,它的成敗直接影響下一步的進(jìn)展。根據(jù)需求分析確定了系統(tǒng)的開發(fā)環(huán)境是嵌入式 Linux 操作系統(tǒng)。 基于 ArmLinux系統(tǒng)的總體設(shè)計(jì) 根據(jù)需求分析和嵌入式系統(tǒng)結(jié)構(gòu),得出了系統(tǒng)所需的系統(tǒng)結(jié)構(gòu)如下圖 41 所示。 B O A 服 務(wù) 器 應(yīng) 用 程 序嵌 入 式 L i n u x 操 作 系 統(tǒng)文 件 系 統(tǒng) 設(shè) 備 驅(qū) 動(dòng)加 載 引 導(dǎo) 程 序 U B O O TM i n i S 3 C 2 4 4 0 硬 件 平 臺(tái) 圖 41 系統(tǒng)結(jié)構(gòu)圖 論文設(shè)計(jì)的嵌入式 實(shí)時(shí)監(jiān)控系統(tǒng)主要分為四個(gè)層次: ( 1) 基于 S3C2440A 處理器的硬件平臺(tái) 。 ( 2)加載程序 uboot,主要初始化處理器及存儲(chǔ)器等硬件設(shè)備。 ( 3) ArmLinux 內(nèi)核的裁剪、移植,設(shè)備驅(qū)動(dòng)的加載以及文件系統(tǒng)的建立。 ( 4) boa 服務(wù)器的移植和應(yīng)用程序的開發(fā): 包括數(shù)據(jù) 采集、傳輸和網(wǎng)頁(yè)動(dòng)態(tài)顯示。 根據(jù)系統(tǒng)結(jié)構(gòu)的設(shè)計(jì),將分以下三個(gè)步驟實(shí)現(xiàn),這一章只實(shí)現(xiàn)其中的前兩步,其它的部分的實(shí)現(xiàn)在后續(xù)章節(jié)展開。實(shí)現(xiàn)步驟如下: ( 1) ArmLinux 交叉開發(fā)環(huán)境的建立。 ( 2)嵌入式 ArmLinux 的裁剪和移植:其中包括啟動(dòng)加載程序 UBoot 的移植、內(nèi)核的裁剪與移植、設(shè)備驅(qū)動(dòng)模塊的加載、文件系統(tǒng)的移植。 ( 3) boa 服務(wù)器移植。 ( 4)外界環(huán)境數(shù)據(jù)的采集,傳輸 。 信息科學(xué)與技術(shù)學(xué)院學(xué)士學(xué)位論文 ArmLinux交叉編譯工具鏈的建立 與主流軟件開發(fā)相同,嵌入式系統(tǒng)開發(fā)同樣需要用到編譯器、鏈接器、解釋程序、集成開發(fā)環(huán)境以及諸如此類的開發(fā)工具。但是在嵌入式系統(tǒng)開發(fā)中,由于執(zhí)行應(yīng)用程序的平臺(tái) (目標(biāo)機(jī) )與創(chuàng)建應(yīng)用程序的平臺(tái) (宿主機(jī) )并不兼容,因此,需要交叉開發(fā)工具進(jìn)行交叉編譯。本文采用工具鏈 創(chuàng)建 ArmLinux 交叉編譯環(huán)境 [9]。 建立過程如下: 以超級(jí)用戶的身份登錄 Linux 操作系統(tǒng),然后 在 /opt 目錄下新建 arm目錄。 將工具鏈 復(fù)制到新建 ARM 目錄下,并執(zhí)行解壓。 在宿主機(jī)中設(shè)置環(huán)境變量使得系統(tǒng)能自動(dòng)調(diào)用已建立好的工具,具體的設(shè)置 方法為: 修改環(huán)境變量 PATH 的值 。 Linux內(nèi)核的裁剪與移植 嵌入式系統(tǒng)的硬件資源畢竟有限,不能直接將 Linux 操作系統(tǒng)作為嵌入式硬件平臺(tái)上的操作系統(tǒng),需要針對(duì)具體的應(yīng)用進(jìn)行內(nèi)核的配置和裁減,使整個(gè)系統(tǒng)能夠存放到容量較小的 Flash 中。 Linux 的動(dòng)態(tài)模塊加載方式使 Linux 的裁剪極為方便,高度模