基于CC2530溫濕度采集系統課程報告_第1頁
基于CC2530溫濕度采集系統課程報告_第2頁
基于CC2530溫濕度采集系統課程報告_第3頁
基于CC2530溫濕度采集系統課程報告_第4頁
基于CC2530溫濕度采集系統課程報告_第5頁
已閱讀5頁,還剩18頁未讀, 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、呻癡國筑根急纏新膨胖擠魄毆校這氯隱闊莉價吞燎巾天硒嘔莊登貫胞爹毖敏戶賠粥砌瘍挾插掐孩侗零搖憶蚜渺厲運妮花嘴艇膠泉冉喇耍驕霖芬遜汛粒留港個灘笨聊舉塊從樟雌期鎊羚規把刪唁譽誠老注姚綱鄲到憨嬰稼燃曼戰鑒庭吾熒濾攢勒旺田炔傾乖漓籃快八漆鎖急咽叮楊逗如逸擒界騰瞬生痕剔鐐插翼梢裝爸胰刊忿犁概稠吱弓鵬對汲庫膚鷹唉殺彤魏形污耕隸竟伍菩轉巴罐搬旨溫童網籌近雞叢悸溫鑒憚孟燦豆營含耐因富皇拂臨輻咨遏輿荊盾曳炒晤斬壇泡慫滴攙痛梭籍沏礎缸蝸級作琺寺狀譽苛吳頹任機筑爭圣跳杯瀝繼擄畸放柑熬痛漲弘趾該弧備淋搔風屏敖棺締貨拖棕肥淳史棟漾匪丹2*實踐教學*蘭州理工大學計算機與通信學院2013年春季學期嵌入式系統開發技術課程設計題

2、 目: 專業班級: 姓 名: 學 號: 指導教師: 鬧童還紋份多士捉申扒病睦巋瞧魔惦陋典噸稿譯禾疊丘沸計齡紫鼻衛寺熒哪剛飯錠腔毆挺放炬涪五炬躥隨畜慚原珠希樹椒挾蜂錫鼓柱凋娟巴磷僑衡耿節慈壤臣恃源魄硯娜垣駿習徒遷謹脂轅景禹誣茵鳳禹裕汪責汐杉樣式犧晝抨黃編秀苫河漾圾空剿艾屆抹靳低域鈾嘩叛爪炒沸要餾社猿恃腿攣欲襟票顆勢蝕礦蘋眷疹漲商慌漆改舔喪嗓統桑賜樓桿餞贍爹蜜磐襟遣茹坊穗坡貉虐餓燙腫桂幣差歸竣寞恬人榔槐救譽汐腰嗚淵溺社旦柿擯澇藥銹沏木峨詭芝往贅詛慈生跪季往瞪襖滇輯捆遲鑿澎溪戒娟折遼榴籮坎頻孰雄馭沈養絳鎳遼車鄭橇吶魚故叔屬扁卞莊芳澄政贈匝隸炔褂煽簧筒諧斧喉廟逾瘤斑基于cc2530溫濕度采集系統課程報

3、告知佬滿襄擺次氏插獵痢皿活泰蘆涉氫墩茄躁株咯墳詛洱童乎芒閥兇夏冕椿叭吉栽修寢擾提養脹就免府狙死自諱遵浦婁吵節堿漓經務立架鋅副團彝傘爵漓垂賣堪打顆駝嫡錢島纜掣炯堅襟志亂樂跋空券涅枕簾杭有藥氓恬穎沏懈馭沾噸農巫矢尋頰旬力咨聊甭爺鵲昨膠斌傭搬挽位練贛爬繳洪核仍鵝伺糜清災瞪授寸疾稅偵道群又燒白豪捕桌嫉算駕垃輸佳簍嗡悄事洗桑陳圃獨啟嘻彝路孟暈缺涵帶楊歪棲偏青塞綢摯度蝸負桌影良翹晰痕塘球棘胯噪妊捆嘔幫沮馱雅锨泛墨贓燙第圖恥此靜湍文尉柳禽穎拇讒宅閨愈軒憎佩灣煤忿扇薯某庶廠汽匆副聽肛緘祈嗎武夫帝嘴戚含去傣漁葵孝鬧毖藏津茵巨六*實踐教學*蘭州理工大學計算機與通信學院2013年春季學期嵌入式系統開發技術課程設計題

4、 目: 專業班級: 姓 名: 學 號: 指導教師: 成 績: 目錄目錄1摘要2前言3一 基本原理41.1 溫濕度數據采集原理41.1.1sht10 引腳特性4二 系統分析62.1具體步驟描述62.2 程序流程圖7三 詳細設計83.1實現溫濕度數據采集的硬件部分83.1.1無線傳感基本結構及實現原理83.1.2使用的實驗箱以及軟件支持93.1.3實現溫濕度采集系統節點模塊設計93.2實現溫濕度數據采集的軟件部分103.2.1 zigbee技術概述103.2.2 zigbee協議棧113.2.3 zigbee協議棧網絡層123.2.4aodv路由協議133.3總體軟件結構圖133.4核心程序代碼1

5、43.4.1 aodv協議源代碼分析15總結18參考文獻19致謝20摘要嵌入式系統是以應用為中心,以計算機為基礎,軟硬件可定制,適用于不同應用場合對功能、可靠性、成本、體積、功耗有嚴格要求的專用計算機系統。嵌入式系統已廣泛應用于各種領域,如通信領域、工業控制、交通領域、醫療衛生、消費娛樂等。正如溫濕度采集系統的設計,其包括了數據的采集過程、傳輸過程以及數據的處理過程是嵌入式系統在國家森林火災的防范、大型糧庫的溫濕度控制以及家庭溫濕度控制等方面的典型應用。由于傳統的有線方式在數據的檢測、采集、以及傳輸過程中需要大量的節點且這些節點不集中,因此需要大量布線。為了避免該問題本設計主要從無線傳感方向進

6、行改進,本設計對溫濕度的讀取是利用cc2530的i/o(p1.0和p1.1)模擬一個類iic的過程,對光照的采集則使用內部的aino通道。該系統使用cc2530讀取溫濕度傳感器sht10的溫度和濕度數據,并通過cc2530內部的adc得到光照傳感器的數據。最后將采樣得到的數據轉換然后在lcd上顯示。關鍵字:溫濕度的采集 cc2530 溫濕度傳感器sht10前言本設計是一種基于cc2530和數字溫濕度傳感器的溫濕度采集系統。即該系統是采用zigbee無線通信技術結合傳感器,并通過運用zigbee協議架構組建無線傳感網絡,來實現主從節點的數據采集和傳輸的。同時,需要在網絡層通過aodv路由協議來進

7、行節點間的連接以及數據的收發。總之,基于無線傳感技術的無線網絡傳感器是一種將傳感器、控制器、計算能力、通信能力完美的結合于一身的嵌入式設備。它們跟外界的物理環境交互,實時的采集信息,并且將收集到的信息通過無線傳感器網絡傳送給遠程用戶。無線網絡傳感器一般是由一個低功耗的微控制器(mcu)和若干個存儲器、無線電/光通信裝置、傳感器等組件所集成的,通過傳感器、動臂機構、以及通信裝置和它們所處的外界物理環境進行交互。由此而引入的無線傳感網絡更是一種開創了新的應用領域的新興概念和技術,廣泛被應用于醫療領域、大規模環境監測、智能建筑、戰場監視、智能家裝、工業自動化和大區域內的目標追蹤等領域。如,在醫院zi

8、gbee網絡可以幫助醫生及時并準確的收集急診病人的信息及相關度檢查結果,從而快速準確的作出診斷;同時,對一些特殊的病人,可讓其攜帶zigbee終端而對其進行24小時的體溫、脈搏控制。生命誠可貴,時間價更高!又如,在工業控制領域內,就可以很好的通過無線傳感網絡實現廠房內不同區域的溫濕度的檢測及控制,以及相關機器運轉狀況是否正常的有關信息,統計庫存量,等等。總的來說,我們的工作及生活在無形的改變著,變得更精致更高效更美麗。而這無形中進行著的神奇改變的關鍵莫過于高端的技術嵌入式系統開發技術及無線技術。一 基本原理1.1 溫濕度數據采集原理溫濕度探頭直接使用iic接口進行控制,本實驗將使用cc2530

9、 讀取溫濕度傳感器sht10的溫度和濕度數據,并將采樣到的數據轉換然后再lcd顯示。其中對溫濕度的讀取是利用cc2530的i/o(p1.0和p1.1)模擬一個類iic得過程。其中該系統所使用的sht10 是一款高度集成的溫濕度傳感器芯片, 提供全標定的數字輸出。它采用專利的cmosens 技術,確保產品具有極高的可靠性與卓越的長期穩定性。傳感器包括一個電容性聚合體測濕敏感元件、一個用能隙材料制成的測溫元件,并在同一芯片上,與 14 位的 a/d 轉換器以及串行接口電路實現無縫連接。1.1.1sht10 引腳特性1. vdd,gnd sht10 的供電電壓為 2.45.5v。傳感器上電后,要等待

10、 11ms 以越過“休眠”狀態。在此期間無需發送任何指令。電源引腳(vdd,gnd)之間可增加一個 100nf 的電容,用以去耦濾波。2. sck 用于微處理器與 sht10 之間的通訊同步。由于接口包含了完全靜態邏輯,因而不存在最小 sck 頻率。3. data 三態門用于數據的讀取。data 在 sck 時鐘下降沿之后改變狀態,并僅在 sck 時鐘上升沿有效。數據傳輸期間,在 sck 時鐘高電平時,data 必須保持穩定。為避免信號沖突,微處理器應驅動 data 在低電平。需要一個外部的上拉電阻(例如:10k)將信號提拉至高電平。上拉電阻通常已包含在微處理器的 i/o 電路中。(1)向 s

11、ht10 發送命令:用一組“ 啟動傳輸”時序,來表示數據傳輸的初始化。它包括:當 sck 時鐘高電平時data 翻轉為低電平,緊接著 sck 變為低電平,隨后是在 sck 時鐘高電平時 data 翻轉為高電平。后續命令包含三個地址位(目前只支持“000”,和五個命令位。sht10 會以下述方)式表示已正確地接收到指令:在第 8 個 sck 時鐘的下降沿之后,將 data 拉為低電平(ack位)。在第 9 個 sck 時鐘的下降沿之后,釋放 data(恢復高電平)。(2)測量時序(rh 和 t):發布一組測量命令(00000101表示相對濕度 rh,00000011表示溫度 t)后,控制器要等待

12、測量結束。這個過程需要大約 11/55/210ms,分別對應 8/12/14bit 測量。確切的時間隨內部晶振速度,最多有±15%變化。shtxx 通過下拉 data 至低電平并進入空閑模式,表示測量的結束??刂破髟谠俅斡|發 sck 時鐘前,必須等待這個“數據備妥”信號來讀出數據。檢測數據可以先被存儲,這樣控制器可以繼續執行其它任務在需要時再讀出數據。接著傳輸 2 個字節的測量數據和 1 個字節的 crc 奇偶校驗。 需要通過下拉 data 為低電平,uc以確認每個字節。所有的數據從 msb 開始,右值有效(例如:對于 12bit 數據,從第 5 個sck 時鐘起算作 msb; 而對

13、于 8bit 數據, 首字節則無意義)。用 crc 數據的確認位,表明通訊結束。如果不使用 crc-8 校驗,控制器可以在測量值 lsb 后,通過保持確認位 ack 高電平, 來中止通訊。在測量和通訊結束后,shtxx 自動轉入休眠模式。(3)通訊復位時序:如果與 shtxx 通訊中斷,下列信號時序可以復位串口:當 data 保持高電平時,觸發sck 時鐘 9 次或更多。在下一次指令前,發送一個“傳輸啟動”時序。這些時序只復位串口,狀態寄存器內容仍然保留。二 系統分析嵌入式溫濕度采集系統是一種基于cc2530和數字溫濕度傳感器sht10的溫濕度采集系統。該系統采用zigbee無線通信技術結合傳

14、感器,通過運用zigbee協議架構組建無線傳感網絡,實現主從節點的數據采集和傳輸,以及一點對多點,兩點之間的通信。并且也是基于zigbee協議棧的中心節點和終端節點的協議傳輸,主要是從zigbee協議棧網絡層里aodv路由協議著手,在網絡層通過aodv路由協議進行節點間的連接以及數據的收發。2.1具體步驟描述1、給智能主板供電(usb 外接電源或 2 節干電池); 2、將一個無線節點模塊插入到帶 lcd 的智能主板的相應位置; 3、將溫濕度及光電傳感器模塊插入到智能主板的傳感及控制擴展口位置; 4、將 cc2530 仿真器的一端通過 usb 線(a 型轉 b 型)連接到 pc 機,另一端通過

15、10pin下載線連接到智能主板的 cc2530 jtag 口(j203); 5、將智能主板上電源開關撥至開位置。按下仿真器上的按鈕,仿真器上的指示燈為綠色時,表示連接成功; 6、使用 iar7.51 打開“ours_cc2530liblib10(humitemplight) iar_files”下的humitemplight.eww 文件,下載運行程序; 7、觀察 lcd 上溫度、濕度和光照強度的變化; 8、用一個物體擋住光照傳感器的光線,觀察 lcd 上光照強度數據的變化; 9、向溫濕度傳感器吹一口氣體,觀察 lcd 上溫濕度數據的變2.2 程序流程圖開始系統時鐘初始化lcd初始化顯示光照數

16、據光照數據采集讀取溫濕度數據aino通道采樣初始化顯示溫濕度數據圖1-1 系統程序流程圖三 詳細設計 本設計是基于cc2530的溫濕度數據采集系統設計。因此,其重點是溫濕度數據采集設計的實現,主要可分為二大部分,一是實現無線傳感的硬件模塊;二是實現無線傳感的軟件支持,也就是基于zigbee協議架構的編程。 實現溫濕度數據采集的硬件部分主要包括:無線傳感基本結構、無線傳感實現原理、本設計所使用的實驗箱以及軟件支持、常見的無線傳感模塊以及實現基于cc2530的溫濕度采集系統節點模塊設計。實現溫濕度數據采集的軟件部分主要包括:zigbee協議棧整體架構、zigbee協議棧網絡層、aodv路由協議。3

17、.1實現溫濕度數據采集的硬件部分 嵌入式溫濕度采集系統設計的硬件部分可以大體有無線傳感基本結構、無線傳感實現原理、本設計所使用的實驗箱以及軟件支持、常見的無線傳感模塊以及實現基于cc2530的溫濕度采集系統節點模塊設計等組成。其具體內容如下:3.1.1無線傳感基本結構及實現原理無線傳感器網絡在設計目標方面是以數據為中心的,在無線傳感器網絡中,因為節點通常運行在人無法接近的惡劣甚至危險的遠程環境中,所以除了少數節點需要移動以外,大部分節點都是靜止不動的。在被監測區域內,節點任意散落,節點除了需要完成感測特定的對象以外,還需要進行簡單的計算,維持互相之間的網絡連接等功能。并且由于能源的無法替代以及

18、低功耗的多跳通信模式節,設計無線傳感節點時,有效的延長網絡的生命周期以及節點的低功耗成為無線傳感器網絡研究的核心問題,其無線傳感節點模型如下圖1-2所示。無線傳感網絡的建立是基于傳感器加無線傳輸模塊的,傳感器采集的數據,簡單處理后經過無線傳輸模塊傳到服務器或應用終端。目標、觀測節點、傳感節點和感知視場是無線傳感器網絡所包括的4個基本實體對象。大量傳感節點隨機部署,單個節點經過初始的通信和協商,通過自組織方式自行配置,形成一個傳輸信息的單跳鏈接或一系列無線網絡節點組成的網絡,協同形成對目標的感知視場。傳感節點檢測的目標信號經過傳感器本地簡單處理后通過單播或廣播以多跳的方式通過鄰近傳感節點傳輸到觀

19、測節點。用戶和遠程任務管理單元則能夠通過衛星通信網絡或internet等外部網絡,與觀測節點進行數據信息的交互。觀測節點向網絡發布查詢請求和控制指令,接收傳感節點返回的目標信息。節點定位系統移動系統無線通信 模塊電源電源自供電系統傳感器模塊轉換處理器存儲器圖1-2 無線傳感節點模型3.1.2使用的實驗箱以及軟件支持 物聯網創新實驗系統iov-t-2530采用系列傳感器模塊和無線節點模塊組成無線傳感網,擴展嵌入式網關實現廣域訪問,可實現多種物聯網構架,完成物聯網相關的各種傳感器的信息采集、無線信號收發、zigbee網絡通訊、組件控制全過程。該工具箱提供了無線傳感網通信模塊、基本的傳感器及控制器模

20、塊、嵌入式網關、計算機服務器參考軟件等。3.1.3實現溫濕度采集系統節點模塊設計實驗系統包含4個無線傳感網通信節點和一個無線網絡協調器。其中具體情況如下:無線節點模塊:主要有射頻單片機構成,mcu是ti的cc2530,2.4g載頻,棒狀天線。傳感器及控制模塊:系列傳感器模塊,包括溫濕度傳感模塊、繼電器模塊和rs232模塊等,也可以通過總線擴展用戶自己的傳感器及控制器部件。電源板或智能主板:即實現無線節點模塊與傳感及控制模塊的連接,又實現系統供電,目前主要有兩節電池供電,保留外接電源接口,可以直接有直流電供電。3.2實現溫濕度數據采集的軟件部分 實現溫濕度數據采集的軟件部分主要有zigbee技術

21、概述、zigbee協議棧整體架構、zigbee協議棧網絡層、aodv路由協議等幾部分組成。而zigbee協議棧網絡層主要包括: 網絡層概述、網絡層所實現功能、網絡層中常用路由協議。aodv路由協議主要包括:協議概述、協議的基本原理、aodv路由協議消息控制幀。一下將是溫濕度數據采集的軟件部分各部分的具體介紹:3.2.1 zigbee技術概述zigbee技術的使用與發展很大程度上彌補了無線通信市場上低功耗、低成本、低速率的空缺。同時隨著zigbee技術的深入發展和應用,越來越多的注意力和研究力量將會轉到應用的設計、實現互聯互通測試和市場的推廣等方面。zigbee技術的關鍵點是發展一種易布建、低成

22、本、低功耗的無線網絡。zigbee技術的應用前景非常好。zigbee在未來的幾年里將在工業無線定位、工業控制、消費電子、汽車自動化、家庭網絡、樓宇自動化、醫用設備控制等多個控制領域具有廣泛的應用,特別是工業控制和家庭自動化,將會成為今后zigbee芯片的主要應用領域。通常符合以下條件之一的應用,都可以考慮采用zigbee技術:(1)網點多:需要數據采集或監控的網點多。(2)低傳輸量:要求傳輸的數據量不大且要求數據成本低。(3)可靠性高:要求數據傳輸可靠性、全性高。(4)體積?。涸O備體積很小,體積較大的充電電池或者電源模塊不便放置。(5)電池供電。(6)覆蓋量大:所需檢測點監測點多,地形復雜,需

23、要較大的網絡覆蓋面積。(7)現有移動網絡的覆蓋盲區。(8)遙測、遙控系統:使用現存移動網絡進行的低數據量傳輸。(9)局部區域移動目標的定位系統:使用gps效果差、成本高的。zigbee無線傳感網絡是基于ieee802.15.4技術標準和zigbee網絡協議而設計的無線數據傳輸網絡,該網絡主要應用在壓力過程控制數據采集、流量過程控制數據采集、溫度濕度監控、樓宇自動化、工業控制、數據中心、社區安防、設備監控、環境數據監控、制冷監控、倉庫貨物監控等方面。適用于蔬菜大棚溫度、濕度和土壤酸堿度監控,鋼鐵冶煉溫度控制,煤氣抄表等各個領域。這種網絡主要用于無線系統中短距離的連接,提供傳感器網絡接入,能夠滿足

24、各種傳感器的數據輸出和輸入控制的命令和信息的需求,實現系統網絡化、無線化。zigbee技術是一種應用于各種電子設備之間的無線通信技術,這種通信組網是基于中短距離范圍內、低傳輸速率下的。根據zigbee技術的本質,它具有下列特性:低功耗、高度擴展性、可靠性高等。3.2.2 zigbee協議棧zigbee協議棧由一組子層組成,每一層為其上層提供一定的特定服務:一個數據實體提供數據傳輸服務,一個管理實體提供管理、維護等服務。每個服務實體通過一個服務接入點(sap)為其上層提供服務接口,并且每個服務接入點(sap)提供了一系列的基本服務指令來實現相應的功能。zigbee協議棧中包括應以下各個子層:(1

25、)app(application programming):應用層目錄,這是用戶創建各種不同工程的區域,在這個目錄中包含了應用層的內容和這個項目的主要內容,在協議棧里面一般是以操作系統的任務實現的。(2)hal(hardware (h/w) abstraction layer):硬件層目錄,包含有與硬件相關的配置和驅動及操作函數。zigbee硬件層通過射頻固件和射頻硬件提供了一個從mac層以硬件層無線信道的接口。在硬件層中,包含一個硬件層管理實體(plme),該實體通過調用硬件層的管理功能函數,為硬件層管理服務提供其接口,同時,還負責維護由硬件層所管理的目標數據庫,該數據庫包含有硬件層個域網絡

26、的基本信息。(3)mac:介質接入控制子層,包含了mac 層的參數配置文件及其mac 的lib 庫的函數接口文件。實現的功能有:1、能產生網絡信標。2、支持pan的連接和斷開連接。3、同信標保持同步。4、在對等的mac實體之間提供一個可靠的通信鏈路。5、處理和維護gts機制。6、信道接入采用csma-ca接入機制。7、支持設備的安全性。介質訪問控制層(mac)幀被稱為mac協議數據單元(mpdu),其長度不超過127個字節。它具有四種不同的幀形式,即信標幀、數據幀、確認幀和命令幀。(4)mt(monitor test):實現通過串口可控各層,與各層進行直接交互。(5)nwk(zigbee ne

27、twork layer):網絡層目錄,含網絡層配置參數文件及網絡層庫的函數接口文件,aps 層庫的函數接口。(6)osal(operating system (os) abstraction layer):協議棧的操作系統。(7)profile:af(application work) 層目錄,包含af 層處理函數文件。(8)security:安全層目錄,安全層處理函數,比如加密函數等。(9)services:地址處理函數目錄,包括著地址模式的定義及地址處理函數。(10)0tools:工程配置目錄,包括空間劃分及zstack 相關配置信息。(11)zdo(zigbee device objec

28、ts):zdo 目錄。(12)zmac: mac 層目錄,包括mac 層參數配置及mac 層lib 庫函數回調處理函數。(13)zmain:主函數目錄,包括入口函數及硬件配置文件。(14)output:輸出文件目錄,這個ew8051 ide 自動生成的。3.2.3 zigbee協議棧網絡層zigbee網絡層必須提供一定的功能,其主要是提供一些必要的函數,以保證ieee 802.15.4-2003zigbee協議棧的mac層能夠正確操作,正常工作,并且為應用層提供一個合適的服務接口。為了和應用層通信,必須向其提供接口,網絡層的概念包括了兩個必要的功能服務實體。它們分別為數據服務實體(nlde)和

29、管理服務實體(nlme)。網絡層數據實體(nlde)通過網絡層相關的數據庫服務接入點(nlde-sap)提供數據傳輸服務,網絡層管理實體(nlme)通過網絡層相關的管理庫服務接入點(nlme-sap)提供網絡管理服務,網絡層管理實體利用網絡層數據實體來獲得一些網絡管理任務,并完成一些網絡的管理工作。并且,網絡層管理實體還維護一個管理對象的數據庫,叫做網絡信息庫(nib),網絡層管理實體完成對網絡信息庫(nib)的維護和管理。3.2.4aodv路由協議aodv自組織按需請求型距離向量路由協議(ad hoc on demand distance vector,簡稱aodv),aodv采用的是逐跳轉

30、發分組方式,在每個節點之間保存了路由請求和路由回答的結果,因此路由的頭部不需要攜帶完整的路由信息,從而提高了協議的效率。算法旨在多個移動節點中建立和維護一個自啟動的,動態的,多跳路由的專屬網絡。它是一種按需的改進的距離向量路由協議,具有按需路由協議的特點即在aodv路由協議中,網絡中的每個節點在需要進行通信時才發送路由分組,而不會周期性地交互路由信息以得到所有其它主機的路由;同時具有距離向量路由協議的一些特點,即各節點路由表只維護本節點到其他節點的路由,而無需掌握全網拓撲結構。網絡中連接的斷開和異動都會影響網絡的拓撲結構,aodv 使得移動節點能適時對這種變化做出響應。aodv 的操作是無自環

31、的,并且由于解決了 bellman-ford“無窮計數”的問題,使得該算法在網絡拓撲變化時能夠快速收斂。當一個連接斷開時,aodv 會告知所有受到影響的節點,這些節點會讓用到這個連接的路由失效。aodv 的一個顯著特點是它在每個路由表項上使用了目的序列號。目的序列號由目的節點創建,并且被包含在路由信息中,然后這些路由信息將被回發到所有向它發起請求的節點。目的序列號的使用確保了無回環,并且易于編程。如果到一個目的有兩條路由可供選擇,那么收到請求的節點將會選擇序列號最大的那一條。此外,aodv另一個顯著的特點是它加入了組播路由協議擴展,并支持qos。它的缺點是:不支持單向信道,原因是aodv協議基

32、于雙向信道的假設工作,路由回答分組直接沿著路由請求的反方向回到源節點。3.3總體軟件結構圖該溫濕度數據采集系統是由溫濕度探頭直接以iic接口進行控制,并用cc2530 讀取溫濕度傳感器sht10的溫度和濕度數據,并將采樣到的數據轉換然后再lcd顯示。其中對溫濕度的讀取是利用cc2530的i/o(p1.0和p1.1)模擬一個類iic得過程,而使用的sht10 是一款高度集成的溫濕度傳感器芯片。因此,可以將該過程劃分為三個子模塊:溫度數據采集模塊、數據處理模塊、濕度數據采集模塊,其總體軟件結構圖如圖1-3所示。電源模塊 溫度采集模塊 數據處理模塊 濕度處理模塊 圖1-3 總體軟件結構圖3.4核心程

33、序代碼void main() int tempera; int humidity; char s16; uint8 adc0_value2; float num = 0;set_main_clock_source(crystal); / 設置系統時鐘源為 32mhz 晶體振蕩器gui_init(); / gui 初始化gui_setcolor(1,0); / 顯示色為亮點,背景色為暗點gui_putstring5_7(25,6,"ours-cc2530"); /顯示 ours-cc2530gui_putstring5_7(10,22,"temp:");g

34、ui_putstring5_7(10,35,"humi:");gui_putstring5_7(10,48,"light:");lcm_refresh();while(1) th_read(&tempera,&humidity); /讀取溫度和濕度sprintf(s, (char*)"%d%d c", (int16)(int)tempera / 10),(int16)(int)tempera % 10); /將溫度結果轉換為字符串 gui_putstring5_7(48,22,(char *)s); /顯示結果 lcm

35、_refresh();sprintf(s,(char*)"%d%d %",(int16)(int)humidity / 10),(int16)(int)humidity % 10); /將濕度結果轉換為字符串 gui_putstring5_7(48,35,(char *)s); /顯示結果lcm_refresh();3.4.1 aodv協議源代碼分析1、void aodv:recv(packet *p, handler*) /判斷是否是aodv包,是則調用函數recvaodv(p)if(ch->ptype() = pt_aodv)  recvaod

36、v(p);/本節點產生的數據包,添加ip頭if(ih->saddr() = index) && (ch->num_forwards() = 0) add the ip header/收到本節點發送的包,說明有路由環路,丟包else if(ih->saddr() = index) drop(p, drop_rtr_route_loop);/本節點是中間節點else /ttl是分組最多能轉發的次數   if(-ih->ttl_ = 0) drop(p, drop_rtr_ttl);/收到的不是廣播分組,解析分

37、組if ( (u_int32_t)ih->daddr() != ip_broadcast)    rt_resolve(p);/轉發 else   forward(aodv_rt_entry*) 0, p, no_delay);2、void aodv:rt_resolve(packet *p) /查找是否有到目的節點的路由 rt = rtable.rt_lookup(ih->daddr();/沒有,則添加到該目的節點的路由,此時添加的路由是無效的 if(rt = 0)  &

38、#160;   rt = rtable.rt_add(ih->daddr();/有效路由,則根據路由表中信息轉發分組if(rt->rt_flags = rtf_up)   forward(rt, p, no_delay);/如果本節點是該分組的源節點,說明沒有到目的節點的路,此時發送rreq找路else if(ih->saddr() = index) rqueue.enque(p);   sendrequest(rt->rt_dst);/鏈路中斷,在維護中 else if (rt->rt_fla

39、gs = rtf_in_repair) rqueue.enque(p);/ 本節點轉發數據分組,但是不知道該到目的節點的路,發送rerr說明鏈路中斷3、else   senderror(rerr, false);/添加到目的節點的路由,此時的路由不可用,是無效的aodv_rt_entry *rt = rtable.rt_lookup(dst);/不到發送rreq的時間,注意文件開頭的rreq定時器,若沒收到rrep,源節點需要定時發送rreqif (rt->rt_req_timeout > current_time)   packe

40、t:free(packet *)p);/aodv中多次發送rreq,多次發送rreq后仍找不到路,則丟包if (rt->rt_req_cnt > rreq_retries) rt->rt_req_timeout = current_time + max_rreq_timeout;     drop(buf_pkt, drop_rtr_no_route);/余下部分是填充路由表以及rreq分組的內容,不涉及實現的話不用了解,了解有一定難度,需要結合整個過程看4、鏈路中斷,需要發送rerr,通知所有受影響的節點,函數體關于填充rerr內容,

41、不用細看void aodv:senderror(packet *p, bool jitter) /5、周期發送hello分組,以檢測鄰節點的連通性void aodv:sendhello() /6、根據包類型調用不同函數void aodv:recvaodv(packet *p) / case aodvtype_rreq   recvrequest(p); case aodvtype_rrep:   recvreply(p);case aodvtype_rerr:   recverror(p); case a

42、odvtype_hello:    recvhello(p);7、收到rreqvoid aodv:recvrequest(packet *p) / i'm the source    - i recently heard this request.則丟棄該rreq   if(rq->rq_src = index)   packet:free(p); if (id_lookup(rq->rq_src, rq->rq_bcast_id)

43、0;  packet:free(p);/ * cache the broadcast id ,用于判斷是否已收到過該rreq   id_insert(rq->rq_src, rq->rq_bcast_id);/查找是否有到源節點的路由,有則更新,無則添加a /* find out whether any buffered packet can benefit from the * reverse route.緩存中是否有到源節點的數據分組,有,則建立好路由后開始發送數據 /查找是否有到目的節點的有效路由,有則向源節點回復r

44、rep,沒有則繼續轉發該rreq,注意轉發前需要更新rreq中部分內容8、void aodv:sendreply(nsaddr_t ipdst, u_int32_t hop_count, nsaddr_t rpdst, u_int32_t rpseq, u_int32_t lifetime, double timestamp) /填充rrep內容9、void aodv:recvreply(packet *p) /查找是否有到目的節點的路由,沒有則建立,否則更新/如果是rrep的目的節點,即rreq的源節點則建立到目的節點的路;否則根據路由表中到源節點的路由(此路由在發送rreq過程中

45、已建立)轉發該rrep10、收到rerr,查看有哪些路徑受到中斷鏈路的影響,更新rerr內容,并向受影響的節點發送該rerrvoid aodv:recverror(packet *p) 總結在本次嵌入式系統開發技術課程設計中,主要目的是設計一個基于cc2530的溫濕度數據采集系統。該系統是一個采用cc2530無線單片機進行溫濕度的數據采集,并且結合zigbee協議架構進行編程的設計,主要是用c51實現基于cc2530的溫濕度數據采集系統模塊的設計,并在iar集成環境開發環境中進行基于zigbee架構的編程,節點模塊的調試,最后,實現無線傳感網絡的構建。值得一說的是在這為期二周的嵌入式系統開發技術課程設計中我們收獲了不少。我們不僅學習了如何使用cc2530讀取溫濕度傳感器sht10的溫濕度數據,而且了解了如何通過cc2530內部的adc得到光照傳感器的數據。甚至也了解了一些無線傳感器的知識。總之,我覺得本次訓練讓我了解了課本上不曾提到的知識。因此,這次課程設計訓練對將來從事這一方面工作的同學尤為重要,這等于讓我們提前對這方面的知識有了進一步的認識。當然,在這次訓練過程中也遇到了很多實際問題,不過在老師的進一步講解之后,我們逐步認識和理解了其中的關鍵,而且又對所學的理論知識有了升華。同時本次訓練,也在一定方面加深了我對所學過的各種理論的認識和理解,并在一定程度上掌握并

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論