【正文】
集到的數(shù)據(jù)進(jìn)行編碼然后傳輸?shù)娇蛻舳藢?shí)現(xiàn)實(shí)時(shí)監(jiān)控,有效地提高了系統(tǒng)的實(shí)時(shí)性和穩(wěn)定性。過(guò)去的思路一直是將物理基礎(chǔ)設(shè)施和 IT 基礎(chǔ)設(shè)施分開:一方面是機(jī)場(chǎng)、公路、建筑物 ,而另一方面是數(shù)據(jù)中心,個(gè)人電腦、寬帶等。感知層包括二維碼標(biāo)簽和識(shí)讀 器、RFID 標(biāo)簽和讀寫器、攝像頭、 GPS、傳感器、終端、傳感器網(wǎng)絡(luò) [7]等,主要是識(shí)別物體,采集信息,與人體結(jié)構(gòu)中皮膚和五官的作用相似。 應(yīng)用層是物聯(lián)網(wǎng)的“社會(huì)分工”與行業(yè)需求結(jié)合,實(shí)現(xiàn)廣泛智能化?!吨袊?guó)企業(yè)報(bào)》在調(diào)查中還發(fā)現(xiàn),隨著物聯(lián)網(wǎng)技術(shù)涉及范圍漸廣,家電產(chǎn)品也搭上了這班“順風(fēng)車”,物聯(lián)網(wǎng)冰箱、洗衣機(jī)、空調(diào)、微波爐、熱水器等紛紛登場(chǎng)亮相,為人們展示了未 來(lái) 智能生活的美好圖景 。 本系統(tǒng)是基于嵌入式技術(shù)的智能監(jiān)控系統(tǒng)傳感模塊驅(qū)動(dòng)應(yīng)用開發(fā) [8],主要的目標(biāo)是: ( 1) 實(shí)現(xiàn) mini2440 的最小系統(tǒng)的移植,使其最少擁有網(wǎng)絡(luò)功能, USB 功能; ( 2) 實(shí)現(xiàn)單板對(duì)環(huán)境數(shù)據(jù)的采集, 同時(shí)打包,并通過(guò)串口傳送; ( 3) 實(shí)現(xiàn)單板能接收來(lái)自串口的命令,并實(shí)時(shí)反映; ( 4) 實(shí)現(xiàn)一個(gè)家電服務(wù)器應(yīng)用程序,使其可以對(duì)單板發(fā)送命令,并接收來(lái)自單板 的 數(shù)據(jù)包,同時(shí)刷新網(wǎng)頁(yè)數(shù)據(jù); ( 5) 實(shí)現(xiàn) boa 服務(wù)器, 遠(yuǎn)程端可以通過(guò)網(wǎng)頁(yè)查看實(shí)時(shí)數(shù)據(jù),同時(shí) 解釋 網(wǎng)頁(yè)的命令。 信息科學(xué)與技術(shù)學(xué)院學(xué)士學(xué)位論文 2 系統(tǒng)需求分析 在進(jìn)行可行性研究和項(xiàng)目開發(fā)計(jì)劃以后,如果確認(rèn)開發(fā)一個(gè)新的軟件系統(tǒng)是必要的而且是可行的,那么就可進(jìn)入需求分析階段。而構(gòu)成感知層的重要組成部分就是各類傳感器。 ( 2) 實(shí)現(xiàn)單板與服務(wù)器數(shù)據(jù)的互傳 ( 3) 實(shí)現(xiàn)服務(wù)器與外界網(wǎng)絡(luò)的連接 ( 4) 實(shí)現(xiàn)單板之間的 zigbee 組網(wǎng) 系統(tǒng)硬件需求 分析 嵌入式系統(tǒng)開發(fā)與硬件平臺(tái)緊密相連,沒有硬件支持的嵌入式平臺(tái)是不完整的。 根據(jù)此系統(tǒng)的需求分析,選擇的硬件平臺(tái)是 ARM920T 核 [10]的 S3C2440A 處理器、 RAM控制器、 NAND Flash 控制器。經(jīng)過(guò)分析, 本系統(tǒng) 選擇 zigbee 無(wú)線傳輸技術(shù)。通過(guò)這段小程序,可以初始化硬件設(shè)備、建立內(nèi)存空間的映射圖,從而將系統(tǒng)的軟硬件環(huán)境帶到一個(gè)合適的狀態(tài),以便為最終調(diào)用操作系統(tǒng)內(nèi)核準(zhǔn)備好正確的環(huán)境。 嵌入式操作系統(tǒng)的選擇主要考慮其可移植性、可利用資源、系統(tǒng)定制能力和成本。 ( 3) Linux 具備一整套工具鏈,容易自行建立嵌入式系統(tǒng)的開發(fā)環(huán)境和交叉運(yùn)行環(huán)境,可以跨越嵌入式系統(tǒng)開發(fā)中仿真工具的障礙。 ( 6) Linux 移植到新的微處理器體系非??旖荩话闶菍⑵湟浦驳揭环N新型的目標(biāo)板,其中包含有獨(dú)特的外設(shè)。綜合考慮了各種文件系統(tǒng)的特點(diǎn),本文選擇了 cramfs 和 yaffs 作為本系統(tǒng)的文件系統(tǒng),其有如下特點(diǎn): ( 1) CRAMFS 文件以其只可讀的性質(zhì)非常適合用于作為根文件系統(tǒng)的可讀分區(qū),使其有更高的安全性。與 JFFS 相比,它減少了一些功能,因此速度更快,占用內(nèi)存更少。 本系統(tǒng)選用 BOA 服務(wù)器的主要原因是 BOA 服務(wù)器是 一種非常小巧的 Web 服務(wù)器,其可執(zhí)行代碼只有大約 60KB 左右。 本章小結(jié) 在這一章,主要做的工作就是進(jìn)行系統(tǒng)需求分析, 這一章在整個(gè)系統(tǒng)開發(fā)上起到了至關(guān)重要的作用,可以說(shuō)是一個(gè)關(guān)鍵環(huán)節(jié),這一章的分析調(diào)查結(jié)果直接指導(dǎo)以后的系統(tǒng)開發(fā)的工作,也直接關(guān)系著整個(gè)系統(tǒng)完成后的功能情況。要將需求分析階段生成后的文件將進(jìn)一步的 分析和精化。 軟件的運(yùn)行環(huán)境 為了保證系統(tǒng)運(yùn)行的可靠性,對(duì)于軟件的運(yùn)行環(huán)境具有一定的要求。 系統(tǒng)功能說(shuō)明 根據(jù)系統(tǒng)的需求分析,系統(tǒng)運(yùn)行在前后臺(tái)的不同有不同的功能模塊。 綜上所述,本系統(tǒng)有以下功能: ( 1)用戶通過(guò)網(wǎng)頁(yè)實(shí)時(shí)查看被控區(qū) 的溫濕度、光亮強(qiáng)度以及 LED 燈和風(fēng)扇 狀態(tài)。 遠(yuǎn) 程 客 戶 端服 務(wù) 器 端數(shù) 據(jù) 源 端 圖 31 系統(tǒng)總體功能圖 由 圖 31 可知,本 系統(tǒng)結(jié)構(gòu)主要分為三個(gè)大的層次。 在數(shù)據(jù)源端,主要是由 各類模塊傳感器實(shí)現(xiàn),模塊傳感器顧名思義就相當(dāng)于生物對(duì)外界環(huán)境的相關(guān)反映一樣。 在服務(wù)器端,主要是由開發(fā)板 s3c2440 實(shí)現(xiàn),其主要的功能是根據(jù)要求不斷的從數(shù)據(jù)源端獲得外界數(shù)據(jù),然后對(duì)數(shù)據(jù)進(jìn)行處理, 并根據(jù)數(shù)據(jù)對(duì)相應(yīng)的家電設(shè)備發(fā)出相關(guān)命令,同時(shí)服務(wù)器端還要 響應(yīng)來(lái)自網(wǎng)絡(luò)上的連接,當(dāng)網(wǎng)絡(luò)上有請(qǐng)求連接時(shí),服務(wù)器就要響應(yīng)連接,并實(shí)時(shí)的更新網(wǎng)頁(yè)的數(shù)據(jù),同時(shí)接收來(lái)自網(wǎng)絡(luò)的命令,最后做出相應(yīng)的處理。 在圖 31 中,遠(yuǎn)程客戶端與服務(wù)器端是通過(guò)互聯(lián)網(wǎng)連接,因此客戶端可以在世界的任何 信息科學(xué)與技術(shù)學(xué)院學(xué)士學(xué)位論文 角落都能通過(guò)互聯(lián)網(wǎng)來(lái)監(jiān)控特定的區(qū)域,這就使得我們的監(jiān)控非常具有靈活性。各個(gè)單板在收集到 命令進(jìn)行解析,如果是自己的命令就執(zhí)行,否則丟棄。 在 zigbee 組網(wǎng)過(guò)程中,難點(diǎn)是對(duì)數(shù)據(jù)包的定義,同時(shí)要解決數(shù)據(jù)在傳輸過(guò)程中失真或丟失的問(wèn)題,還有就是如何給每個(gè)單板節(jié)點(diǎn)數(shù)據(jù) 加上各自獨(dú)一的標(biāo)簽。從何圖中我們可以更直觀的看到數(shù)據(jù)源不斷的采集數(shù)據(jù)并接收來(lái)自服務(wù)器端的命令,服務(wù)器端則響應(yīng)來(lái)自網(wǎng)絡(luò)的請(qǐng)求與下層進(jìn)行交流。 系統(tǒng)詳細(xì)設(shè)計(jì) 在系統(tǒng)的概要設(shè)計(jì)中,已將系統(tǒng)劃分為多個(gè)模塊,并將它們按照一定的原則進(jìn)行組裝,同時(shí)確定了每個(gè)模塊的功能。 數(shù)據(jù)源端節(jié)點(diǎn)數(shù)據(jù)的采集是通過(guò) zigbee 無(wú)線傳輸方式,路由節(jié)點(diǎn)的流程圖如圖 33所示。 即該模塊除具備普通節(jié)點(diǎn)的采集數(shù)據(jù)的功能外,還具備了路由的功能,所以可以稱為路由節(jié)點(diǎn)。 (1) 采集各類傳感器數(shù)據(jù),并按照相應(yīng)的格式打包。 信息科學(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)的加入如圖 36 所示。這樣,系統(tǒng)的適用能力更強(qiáng),可以自動(dòng)識(shí)別新節(jié)點(diǎn)和舊節(jié)點(diǎn),這一設(shè)計(jì)使得系統(tǒng)可以在節(jié)點(diǎn)流動(dòng)性大的區(qū)域可靠的使用。 信息科學(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 , 1 1 )w r i t e ( f d _ t t y , amp。 信息科學(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)試工具。 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) 。 根據(jù)系統(tǒng)結(jié)構(gòu)的設(shè)計(jì),將分以下三個(gè)步驟實(shí)現(xiàn),這一章只實(shí)現(xiàn)其中的前兩步,其它的部分的實(shí)現(xiàn)在后續(xù)章節(jié)展開。 ( 4)外界環(huán)境數(shù)據(jù)的采集,傳輸 。 建立過(guò)程如下: 以超級(jí)用戶的身份登錄 Linux 操作系統(tǒng),然后 在 /opt 目錄下新建 arm目錄。 Linux 的動(dòng)態(tài)模塊加載方式使 Linux 的裁剪極為方便,高度模塊化使得添加和刪減非常容易。將會(huì)出現(xiàn)如下界面 。 如圖 4圖 4圖 45 所示 為最小文件系統(tǒng)的簡(jiǎn)單制作過(guò)程。 信息科學(xué)與技術(shù)學(xué)院學(xué)士學(xué)位論文 圖 45 busybox 配置圖 3 配置完成后直接編譯根文件系統(tǒng) ,最后在根文件 系統(tǒng)上增加系統(tǒng)啟動(dòng)的 shell文件。具體做法是 創(chuàng)建 boa 服務(wù)器存放目錄 mkdir /opt/rootfs/var/boa ,并將 boa 源碼目錄下的 拷貝到 /opt/rootfs/etc/boa 目錄下 ,然后把 虛擬機(jī)下的 etc/也拷貝到該目錄下。 FS2410 tftp 30800000 uImage FS2410 nand erase 60000 202100 FS2410 nand write 30800000 60000 202100 FS2410 setenv bootcmd nand read 30800000 60000 202100 \。最后介紹了如何將 uboot、內(nèi)核以及文件系統(tǒng)燒寫到目標(biāo)平臺(tái)上。這樣才能確保項(xiàng)目能更加順利的完成。 char hum[4]。 } ( 2) 溫濕度的采集,程序主要代碼如下 : uint32_t Read_Temp_Hum(uint8_t *temp, uint8_t *hum) { GPIOSetDir(PORT3, 2, 1)。 // 輸出高電平,釋放總線 GPIOSetDir(PORT3, 2, 0)。 i3。 t_last = p3_2_counter。 while(p3_2_counter == t_last)。 while(p3_2_counter == t_last)。 } if(i 8){ temp10 = 1。 } else if(i 24){ hum10 = 1。 } else { chksum = 1。 *temp = temp10。 chk = temp10。 if(chk == chksum) return 1。 endif LPC_SYSCONSYSAHBCLKCTRL |= (15)。 /* I2C SCL */ LPC_IOCONPIO0_5 amp。 /* Reset registers */ if FAST_MODE_PLUS LPC_IOCONPIO0_4 |= (0x19)。 else LPC_I2CSCLL = I2SCLL_SCLL。 LPC_I2CCONSET = I2CONSET_I2EN。 { uint8_t buf[2]。 range = RANGE_K1。 uint8_t buf[1]。 data = buf[0]。 data = (buf[0] 8 | data)。 return data。 if(UART_op = UART0_RBUF_SIZE) UART_op = 0。data, 36)。 else /* Below flag is set inside the interrupt handler when THRE occurs. */ while ( !(UARTTxEmpty amp。 /* not empty in the THR until it shifts out */ endif BufferPtr++。而在本項(xiàng)目中對(duì)于我們需要研究的就是家電服務(wù)器。 // 加寫鎖 cmd = 1。 read(fd,data_buf,20)。){ p=amp。 printf(hum : %d\n,(int)data_buf[4])。 fflush(fp1)。 信息科學(xué)與技術(shù)學(xué)院學(xué)士學(xué)位論文 6 系統(tǒng)測(cè)試及維護(hù) 軟件開發(fā)總伴隨著軟件質(zhì)量保證的活動(dòng),而軟件測(cè)試是主要活動(dòng)之一。所有開發(fā)工作完成后需做系統(tǒng)測(cè)試。 圖 61 系統(tǒng)啟動(dòng) 運(yùn)行 boa 服務(wù)器 如圖 62 所示。所以 測(cè)試結(jié)果為, 系統(tǒng)在功能上基本都已實(shí)現(xiàn)。 圖 65 吹氣前溫濕度 對(duì)溫濕度傳感器吹起后的測(cè)試值如圖 66 所示。 遮住光感傳感器前的測(cè)試值如圖 67 所示。想要真正投入使用,還有很多地方需要改正,完善。由于 初學(xué)嵌入式系統(tǒng),構(gòu)建的系統(tǒng)還不夠完善。 ( 4)應(yīng)用程序部分,對(duì)數(shù)據(jù)采集、編碼以及傳輸?shù)冗M(jìn)行了深入的研究。 信息科學(xué)與技術(shù)學(xué)院學(xué)士學(xué)位論文 致 謝 在論文完成之際,感謝九江學(xué)院給我這次機(jī)會(huì)和完成畢業(yè)設(shè)計(jì)的條件和環(huán)境。在作畢業(yè)設(shè)計(jì)期間,指導(dǎo)老師對(duì)我的疑難問(wèn)題耐心解答,細(xì)