基于無線傳感網(wǎng)的溫度監(jiān)控系統(tǒng)的設(shè)計與實現(xiàn)教材_第1頁
基于無線傳感網(wǎng)的溫度監(jiān)控系統(tǒng)的設(shè)計與實現(xiàn)教材_第2頁
基于無線傳感網(wǎng)的溫度監(jiān)控系統(tǒng)的設(shè)計與實現(xiàn)教材_第3頁
基于無線傳感網(wǎng)的溫度監(jiān)控系統(tǒng)的設(shè)計與實現(xiàn)教材_第4頁
基于無線傳感網(wǎng)的溫度監(jiān)控系統(tǒng)的設(shè)計與實現(xiàn)教材_第5頁
已閱讀5頁,還剩45頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

基于無線傳感網(wǎng)的溫度監(jiān)控系統(tǒng)的設(shè)計與實現(xiàn)摘要無線傳感網(wǎng)是由眾多部署在復(fù)雜環(huán)境中的節(jié)點組成的,利用節(jié)點收集數(shù)據(jù),分析后做出決策,ZigBee技術(shù)作為一種新興的近距離、低功耗的無線傳感網(wǎng)技術(shù),獲得了廣泛支持,成為當(dāng)前研究的熱點和重點之一.本文介紹了在對無線傳感網(wǎng)以及ZigBee協(xié)議棧學(xué)習(xí)的基礎(chǔ)上,設(shè)計節(jié)點采集溫度等數(shù)據(jù)的程序,以及開發(fā)上位機的監(jiān)控軟件,通過實驗平臺進(jìn)行組網(wǎng),將節(jié)點上采集的數(shù)據(jù)發(fā)送給協(xié)調(diào)器,再通過以太網(wǎng)將數(shù)據(jù)發(fā)送給上位機軟件,利用監(jiān)控軟件監(jiān)控數(shù)據(jù)的變化,實現(xiàn)對溫度等數(shù)據(jù)的監(jiān)控功能。該系統(tǒng)的目標(biāo)是實時監(jiān)控環(huán)境溫度變化,并在溫度異常時發(fā)出警報。利用無線傳感網(wǎng),本系統(tǒng)可部署在各種需要溫度監(jiān)控的環(huán)境中。關(guān)鍵詞:無線傳感網(wǎng)ZIGBEECC2430Z-STACK信息采集DesignandrealizationoftemperaturemonitoringsystembasedonwirelesssensornetworkABSTRACTWirelesssensornetworkiscomposedofnumerousofnodesdeployedinacomplexenvironment,usingnodegatherdataandanalysisingtomakeadecision,ZigBeetechnologyasanewneardistanceandlowpowerwirelesssensornetworktechnology,receivesbroadsupport,andhasbecomeoneofresearchhotspotandfocusonthecurrent.Inthispaper,basedonStudyingonwirelesssensornetwork,andZigBeeprotocolstack,idesignedtheprogramofnodetemperaturedataacquisitionaswellasthedevelopmentofPCmonitoringsoftware,throughtheexperimentplatformfornetwork,thedatacollectedonnodesissenttothecoordinator,thenthecoordinatorsentthedatatoPCviaEthernetsoftware.wecanusemonitoringsoftwaretomonitorthechangeofthedata,andthenrealizethetemperaturedataofmonitoringandotherfunctions.Thegoalofthesystemisreal-timemonitoringtheenvironmenttemperaturechanges,andsoundanalarmwhenthetemperatureisabnormal.Usingwirelesssensornetwork,thissystemcanbedeployedinavarietyofenvironmentneedingtemperaturemonitoring.Keywords:Zigbee,wirelesssensornetwork,TemperatureAcquisition,Z-Stack

目錄MACROBUTTONInsertCrossReference第一章緒論 PAGE1緒論論文研究的背景和意義伴隨著著無線網(wǎng)絡(luò)通信、大規(guī)模集成電路、傳感器等技術(shù)的快速發(fā)展和逐漸成熟,無線傳感器網(wǎng)絡(luò)(WirelessSensorNetwork,WSN)應(yīng)運而生。無線傳感網(wǎng)絡(luò)是由部署在一定區(qū)域內(nèi)的數(shù)量巨大的傳感器節(jié)點,通過自組織形成多跳網(wǎng)絡(luò),進(jìn)行協(xié)作的感知、采集區(qū)域內(nèi)的信息,經(jīng)過處理并最終發(fā)送給觀察者。無線傳感網(wǎng)中的節(jié)點具有體積小,數(shù)量多,能耗低,集成無線通信以及數(shù)據(jù)采集和處理功能,它們通過無線信道通信,自組織的構(gòu)成網(wǎng)絡(luò)。傳感器中包括了多種傳感器,可以測量周圍環(huán)境的溫度,濕度,光強,RSSI值等眾多對人類有價值的信息和現(xiàn)象。在采集數(shù)據(jù)后,還可以通過網(wǎng)關(guān)連接到網(wǎng)絡(luò)基礎(chǔ)設(shè)施中,比如將數(shù)據(jù)發(fā)送給較近的基站,達(dá)到講采集的數(shù)據(jù)和信息傳送給遠(yuǎn)程的終端的目的。所以,傳感器節(jié)點在無線傳感網(wǎng)中起著基礎(chǔ)作用,其設(shè)計的好壞將影響整個系統(tǒng)和網(wǎng)絡(luò)的質(zhì)量CC2430是一種低功耗,高效率的片上系統(tǒng),可以很好的解決無線傳感網(wǎng)絡(luò)中能量消耗較大的問題。CC2430芯片是由Chipon公司開發(fā)的全球首款集成了ZigBee協(xié)議的片上系統(tǒng)解決方案,外置元件需要較少,成本低廉,可以很廉價、快速的構(gòu)建Zigbee節(jié)點。CC2430芯片延用了以往CC2420芯片的架構(gòu),在單個芯片上整合了ZigBee射頻(RF)前端、內(nèi)存和微控制器。它使用1個8位MCU(8051),具有128KB可編程閃存和8KB的RAM,還包含數(shù)字模擬轉(zhuǎn)換器、定時器、AES128協(xié)同處理器、看門狗定時器、32kHz晶振的休眠模式定時器、上電復(fù)位電路以及21個可編程I/O引腳。CC2430芯片采用0.18μmCMOS工藝生產(chǎn),在接收和發(fā)射模式下電流損耗分別低于27mA或25mA。CC2430的休眠模式和轉(zhuǎn)換到主動模式的超短時間的特性,特別適合那些要求電池壽命非常長的應(yīng)用。1.2研究現(xiàn)狀及發(fā)展趨勢無線傳感器網(wǎng)絡(luò)將邏輯中的信息世界與客觀的物理世界連接、融合在一起,極大改變了人類與自然界的交互方式。人們通過傳感器網(wǎng)絡(luò)可以直接感知客觀的世界,從而極大地擴展現(xiàn)有網(wǎng)絡(luò)的功能和人類認(rèn)識世界的能力以及范圍。美國商業(yè)周刊和MI技術(shù)評論曾經(jīng)在預(yù)測未來技術(shù)發(fā)展的報告中,分別將無線傳感器網(wǎng)絡(luò)列為改變世界的10大技術(shù)之一以及21世紀(jì)最有影響的21項技術(shù)。同時,無線傳感器網(wǎng)絡(luò)、塑料電子學(xué)和仿生人體器官也被稱為全球未來三大高科技產(chǎn)業(yè)。最近幾年,隨著成本的降低,無線傳感器網(wǎng)絡(luò)已經(jīng)在如下幾個領(lǐng)域中有了大規(guī)模應(yīng)用:1)環(huán)境監(jiān)測由于環(huán)境污染問題越來越突出,人們對與環(huán)境的保護愈發(fā)關(guān)注,于是對于環(huán)境的監(jiān)測需求相應(yīng)增加。無線傳感器網(wǎng)絡(luò)為在環(huán)境監(jiān)測中采集數(shù)據(jù)提供很大便利,同時還可以減少對環(huán)境的破壞。無線傳感器網(wǎng)絡(luò)可以環(huán)境變化對農(nóng)作物的影響,跟蹤候鳥和昆蟲的遷移,監(jiān)測大氣、海洋和土壤的成分等。2)醫(yī)療護理無線傳感器網(wǎng)絡(luò)也可以應(yīng)用在醫(yī)療和護理領(lǐng)域。英特爾公司推出的基于無線傳感器網(wǎng)絡(luò)的家庭護理技術(shù)即為其中之一,該系統(tǒng)利用在鞋、家具以家用電器等家用設(shè)備中嵌入傳感器,對老齡人士、阿爾茨海默氏病患者以及殘障人士的家庭生活有很大幫助。3)軍事領(lǐng)域由于無線傳感器網(wǎng)絡(luò)節(jié)點造價低廉,可以密集隨機的分布在各種惡劣的戰(zhàn)場環(huán)境中,包括偵察敵情、監(jiān)控兵力、裝備和物資,判斷生物化學(xué)攻擊等多方面用途。目前無線傳感器網(wǎng)絡(luò)還存在著如下問題:1)網(wǎng)絡(luò)內(nèi)節(jié)點的通信問題。傳感器節(jié)點在正常通信過程中,信號可能被一些障礙物阻擋而受到影響,怎樣提高傳感器節(jié)點的穿透性是亟待解決的問題。2)延長傳感器網(wǎng)絡(luò)的使用壽命?,F(xiàn)在一般使用高能電池、降低傳感節(jié)點的功耗兩種方式來解決這個問題。此外還有傳感器網(wǎng)絡(luò)的自我能量收集技術(shù)和電池?zé)o線充電技術(shù),但這兩項技術(shù)尚在研究中,還不成熟。無線傳感器網(wǎng)絡(luò)有著十分廣泛的應(yīng)用前景以及較好的發(fā)展趨勢,除了在工業(yè)、農(nóng)業(yè)、軍事、環(huán)境、醫(yī)療等領(lǐng)域有具有巨大的運用價值,在未來還將在許多新興領(lǐng)域體現(xiàn)其優(yōu)越性,如家用、保健、交通等領(lǐng)域。將來微型傳感器可以將家用電器等其他日常用品同互聯(lián)網(wǎng)相連,對這些設(shè)備進(jìn)行遠(yuǎn)距離控制,這樣有利于家庭的安全調(diào)控、節(jié)電。1.3本文主要結(jié)構(gòu)第一章緒論首先簡要介紹了無線傳感網(wǎng),接著介紹了無線傳感網(wǎng)的研究背景、現(xiàn)狀和發(fā)展趨勢,最后對本題的提出和本文的工作內(nèi)容做了說明。第二章首先介紹了Zigbee技術(shù)的體系結(jié)構(gòu)。對Z-Stack協(xié)議棧的功能及其實現(xiàn)進(jìn)行了概述,包括地址分配、尋址、節(jié)點綁定、路由選擇機制,配置PANID等功能,以及選擇網(wǎng)絡(luò)加入等幾個方面。第三章對系統(tǒng)整體方案進(jìn)行了論述,包括硬件介紹和軟件設(shè)計。硬件主要介紹數(shù)據(jù)匯聚模塊,溫度傳感器模塊;軟件設(shè)計包括上位機界面設(shè)計、數(shù)據(jù)匯聚模塊、溫度傳感器模塊的軟件設(shè)計。第三章對整個系統(tǒng)的開發(fā)平臺進(jìn)了論述,硬件方面主要包括無線龍的無線傳感網(wǎng)實驗箱,包括主板,協(xié)調(diào)器,節(jié)點,以及相應(yīng)的硬件模塊介紹,在軟件方面有嵌入式開發(fā)平臺IAR,上位機的監(jiān)控軟件,zigbee協(xié)議棧等。ZigBee協(xié)議棧2.1zigbee協(xié)議棧簡介Zigbee協(xié)議棧由一系列子層組成,每層為其上層提供特定的服務(wù):數(shù)據(jù)實體提供數(shù)據(jù)傳輸?shù)姆?wù),管理實體則提供其他的全部服務(wù)。服務(wù)接入點(SAP)為每一層的服務(wù)實體為其上一層提供服務(wù)的結(jié)構(gòu),SAP中也提供了完成服務(wù)所需要的服務(wù)指令。Zigbee協(xié)議棧的結(jié)構(gòu)自上而下包括zigbee應(yīng)用層,IEEE802.15.3MAC層和IIEEE802.15.4PHY層。IEEE802.15.4定義了最下面的兩層:物理層和介質(zhì)接入控制層。而Zigbee聯(lián)盟則提供了應(yīng)用層和網(wǎng)絡(luò)層的框架設(shè)計,應(yīng)用層的框架包括了zigbee設(shè)備對象(ZDO)、應(yīng)用支持子(APS)以及由制造商制定的應(yīng)用對象。圖2-1zigbee協(xié)議棧 對比于其他無線通信標(biāo)準(zhǔn),zigbee協(xié)議有著明顯的優(yōu)勢和特定,需要的套件緊湊且簡單,具體實現(xiàn)要求較低,zigbee協(xié)議套件的大概最低需求為:8位處理器,比如80C51;32kb的ROM,最小軟件只需4KB的ROM,例如CC2530芯片,具有8051單片機增強型內(nèi)核,內(nèi)存為32位128kb。網(wǎng)絡(luò)主節(jié)點,即協(xié)調(diào)器節(jié)點需要更多的sdram,用來容納網(wǎng)絡(luò)中所有節(jié)點的設(shè)備信息,設(shè)備關(guān)聯(lián)表以及與安全有關(guān)的密匙存儲等等。 Zigbee聯(lián)盟希望可以建立一種可連接每個電子設(shè)備的無線網(wǎng)。并預(yù)言zigbee將成為全球最高端的無線技術(shù)之一,,同時IPV6與IEEE802.15.4結(jié)合是傳感器網(wǎng)絡(luò)的發(fā)展趨勢,因為IPV6采用128位地址,可以幾乎不受限制的提供地址。在IAR中打開zigbee協(xié)議棧,其結(jié)構(gòu)如圖:圖2.1zigbee協(xié)議棧 App:應(yīng)用層目錄,用戶在這里創(chuàng)建不同的工程,本目錄包含了協(xié)議棧的應(yīng)用層內(nèi)容和創(chuàng)建項目的內(nèi)容,一般是以操作系統(tǒng)的任務(wù)的形式實現(xiàn)的。 HAL:硬件抽象層,包含了與硬件相關(guān)的配置信息、驅(qū)動及操作函數(shù)。 MAC:MAC層目錄,包含了mac層的參數(shù)配置文件及其LIB庫的函數(shù)接口文件。 MT:實現(xiàn)了通過串口對各層控制,以及與各層進(jìn)行直接交付。 NWK:網(wǎng)絡(luò)層目錄,包含網(wǎng)絡(luò)層配置參數(shù)相關(guān)文件和aps層庫的函數(shù)接口以及網(wǎng)絡(luò)層庫函數(shù)接口文件及 OSAL:協(xié)議棧的操作系統(tǒng)。 PROFILE:AF層的目錄。 Security:安全層目錄,包含安全層的處理函數(shù),如加密函數(shù)等。 Tools:工程配置目錄,包含空間劃分、z-stack相關(guān)配置的信息。 Zdo:zdo目錄。 Zmac:mac目錄,包括mac層參數(shù)的配置以及mac層lib庫函數(shù)回調(diào)處理函數(shù)。 Zmain:主函數(shù)的目錄,包含入口函數(shù)main以及硬件配置的文件。 Output:輸出文件目錄,這是由開發(fā)環(huán)境IARew_8051自動生成的。由此可以看出,整個zigbee協(xié)議棧已經(jīng)體現(xiàn)了zigbee的全部功能,建立一個zigbee項目的方法主要就是對應(yīng)用層的添加和修改。2.2設(shè)備類型在ZigBee網(wǎng)絡(luò)中,一共有三種不同的邏輯設(shè)備類型:Coordinator(協(xié)調(diào)器節(jié)點),Router(路由器節(jié)點)和End-Device(終端設(shè)備節(jié)點)。ZigBee網(wǎng)絡(luò)是由一個Coordinator節(jié)點、多個Router節(jié)點、多個End_Device節(jié)點組成,zigbee網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)如下:圖2.2zigbee網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)2.2.1協(xié)調(diào)器協(xié)調(diào)器節(jié)點負(fù)責(zé)整個網(wǎng)絡(luò)的啟動,同時也是網(wǎng)絡(luò)中的第一個設(shè)備。它選擇一個可用信道和網(wǎng)絡(luò)ID,即PANID(PersonalAreaNetworkID),隨后啟動整個網(wǎng)絡(luò)。協(xié)調(diào)器也可以協(xié)助建立協(xié)議棧中的應(yīng)用層和安全層的綁定.需要注意的是,協(xié)調(diào)器的功能主要涉及網(wǎng)絡(luò)的啟動和配置,當(dāng)完成這些任務(wù)后,協(xié)調(diào)器的功能就類似一個路由器,而接下來整個網(wǎng)絡(luò)的操作,由于ZigBee網(wǎng)絡(luò)本身的特性,并不依賴協(xié)調(diào)器的存在。2.2.2路由器路由器的主要功能是:允許其他設(shè)備加入網(wǎng)絡(luò),負(fù)責(zé)多跳路由和協(xié)助它的子設(shè)備終端之間的通訊,這些子設(shè)備通常是由電池供電。通常情況,路由器希望一直處于活動狀態(tài),因此它一般必須使用主電源供電。但是當(dāng)使用樹群這種網(wǎng)絡(luò)模式時,路由允許間隔一定的周期操作一次,即可以使用電池給其供電。2.2.3終端設(shè)備終端設(shè)備不負(fù)責(zé)維持網(wǎng)絡(luò)結(jié)構(gòu),一般是一個電池供電的設(shè)備,它可以處于睡眠模式或者喚醒模式。通常,終端設(shè)備對存儲空間(特別是RAM需要)較小。注意:不同的設(shè)備類型在IAR中編譯時要選擇不用的編譯選項,不同的設(shè)備類型的項目文件是相互獨立的。2.2.4設(shè)備的棧配置ZigBee棧參數(shù)的集合需要被配置為一定的值,和這些值在一起被稱之為棧配置。ZigBee聯(lián)盟已經(jīng)定義了這些由棧配置組成的棧參數(shù)。網(wǎng)絡(luò)中的所有設(shè)備一定要遵循同樣的棧配置。為了促進(jìn)互用性這個目標(biāo),ZigBee聯(lián)盟為ZigBee2006規(guī)范定義了棧配置。所有遵循此棧配置的設(shè)備可以用在其他開發(fā)商開發(fā)的遵循同樣棧配置的網(wǎng)絡(luò)中。2.3尋址2.3.1地址類型ZigBee設(shè)備有兩種類型的地址。一種是16位網(wǎng)絡(luò)地址,另一種是64位IEEE地址,即MAC地址。16位網(wǎng)絡(luò)地址是設(shè)備加入網(wǎng)絡(luò)后分配的。它在網(wǎng)絡(luò)中是唯一的,用來在網(wǎng)絡(luò)中鑒別設(shè)備和發(fā)送數(shù)據(jù)。64位地址是由IEEE來維護和分配全球唯一的地址,它通常由制造商或者被安裝時設(shè)置,設(shè)備將在它的生命周期中一直擁有它。2.3.2網(wǎng)絡(luò)地址分配ZigBee使用的是分布式尋址方案來為設(shè)備分配網(wǎng)絡(luò)地址。此方案能保證在整個網(wǎng)絡(luò)中所有分配的地址是唯一的。這是必須的,只有這樣才能保證一個特定的數(shù)據(jù)包能夠發(fā)給它指定的設(shè)備,而不出現(xiàn)混亂。同時,這個尋址算法的分布特性保證設(shè)備只能與他的父設(shè)備通訊來接受一個網(wǎng)絡(luò)地址,并不需要整個網(wǎng)絡(luò)范圍內(nèi)通訊的地址分配,這有助于提高網(wǎng)絡(luò)的可測量性。 在每個路由加入網(wǎng)絡(luò)之前,尋址方案需要知道和配置一些參數(shù)。這些參數(shù)分別是MAX_DEPTH,MAX_ROUTERS和MAX_CHILDREN。這些參數(shù)也是棧配置的一部分。ZigBee2006協(xié)議棧已經(jīng)規(guī)定了這些參數(shù)的值:MAX_DEPTH=5,MAX_ROUTERS=6和MAX_CHILDREN=20。 MAX_DEPTH決定網(wǎng)絡(luò)的最大深度。協(xié)調(diào)器(Coordinator)的深度規(guī)定為0,其兒子位于深度1,它的兒子的兒子位于深度2,以此類推。MAX_DEPTH參數(shù)限制了網(wǎng)絡(luò)在物理上的長度。MAX_ROUTER決定一個路由(Router)或者一個協(xié)調(diào)器(Coordinator)節(jié)點可以處理的具有路由功能的兒子節(jié)點的最大個數(shù)。MAX_CHILDREN決定一個路由(Router)或者一個協(xié)調(diào)器節(jié)點可以處理的兒子節(jié)點的最大個數(shù)。 2.3.3Z-Stack尋址在zigbee網(wǎng)絡(luò)中向設(shè)備發(fā)送數(shù)據(jù)時,應(yīng)用程序通常使用AF_DataRequest()函數(shù),此函數(shù)將數(shù)據(jù)包發(fā)送給一個afAddrType類型的目標(biāo)設(shè)備。其數(shù)據(jù)結(jié)構(gòu)定義如下:typedefstruct{union{uint16shortAddr;}addr;afAddrMode_taddrMode;byteendPoint;}afAddrType_t;目的地址模式可以設(shè)置為以下幾個值:typedefenum{afAddrNotPresent=AddrNotPresent,afAddr16Bit=Addr16Bit,afAddrGroup=AddrGroup,afAddrBroadcast=AddrBroadcast}afAddrMode_t;在Zigbee中,數(shù)據(jù)包可以有單點傳送(unicast)、多點傳送(multicast)或者廣播傳送三種方式,所以必須有地址模式參數(shù)來標(biāo)明哪種方式。單點傳送中數(shù)據(jù)包只發(fā)送給一個設(shè)備,多點傳送中數(shù)據(jù)包則要傳送給一組設(shè)備,廣播中數(shù)據(jù)包則要發(fā)送給整個網(wǎng)絡(luò)的所有節(jié)點。2.3.4重要設(shè)備地址應(yīng)用程序如果需要知道它的父親地址和它的設(shè)備地址。使用下面的函數(shù)獲取該設(shè)備的父設(shè)備的地址(在ZStackAPI中定義):NLME_GetCoordShortAddr()——返回本設(shè)備的父設(shè)備的16位網(wǎng)絡(luò)地址NLME_GetCoordExtAddr()——返回本設(shè)備的父設(shè)備的64位擴展地址使用下面的函數(shù)獲取設(shè)備地址:NLME_GetShortAddr()——返回本設(shè)備的16位網(wǎng)絡(luò)地址NLME_GetExtAddr()——返回本設(shè)備的64位擴展地址2.4本章小結(jié)本章節(jié)主要介紹了zigbee協(xié)議棧,其實TI公司的Zigbee協(xié)議總體而言并不復(fù)雜,只需開發(fā)者用心的專注于應(yīng)用層與驅(qū)動測層的開發(fā),并且協(xié)議棧有很多現(xiàn)成的模板可以用。本章重點講述的zigbee協(xié)議中設(shè)計的一些重要屬于,如設(shè)備類型,尋址等,詳細(xì)了解這些內(nèi)容對開發(fā)者更深入的了解zigbee協(xié)議標(biāo)準(zhǔn)有很大的意義。其實作為zigbee無線通信網(wǎng)絡(luò)的一名開發(fā)者,僅僅需了解zigbee中一些關(guān)鍵的問題,不需要了解太多協(xié)議的具體實現(xiàn)細(xì)節(jié),就可以完成開發(fā)工作。第三章開發(fā)平臺與環(huán)境分析3.1開發(fā)平臺整體介紹3.1.1實驗設(shè)備簡介:本選題采用無線龍公司的理想系列ZigBee無線傳感器網(wǎng)絡(luò)平臺DREAMRF-CC2430,該平臺支持國際802.15.4標(biāo)準(zhǔn)和ZigBee2006標(biāo)準(zhǔn)。DREAMRF-CC2430配套提供ZigBee模塊提供了93dB的鏈路質(zhì)量,優(yōu)秀的接收器靈敏度和健壯的抗干擾性,多種供電模式,以及一套廣泛的外設(shè)集——包括2個UART、14位ADC和21個通用GPIO,4個定時器,AES加密處理器,DMA控制器等等。DREAMRF-CC2430功能特點:1、具有USB高速下載、支持IAR集成開發(fā)環(huán)境;2、具有在線下載、調(diào)試、仿真功能;3、提供ZigBee2006協(xié)議棧;4、基礎(chǔ)例子程序以源代碼方式提供;5、靈活配置。根據(jù)需求可選配多種無線模塊及擴展傳感器板;6、開發(fā)方便、快捷、簡單;7、C51編程。熟悉、順手、入手快;8、具有液晶顯示。直觀、明了;9、采用最新ARM9微控制器為核心,配置大型彩色TFT液晶顯示屏和高級觸摸屏,支持UCOS-II實時操作系統(tǒng)和GUI圖形軟件,文件系統(tǒng)等,將ARM32位微控制器和多種無線網(wǎng)絡(luò)模塊有機結(jié)合,為使用32位ARM微控制器開發(fā)各種無線網(wǎng)絡(luò),提供了方便途徑。10、板上模塊接口包括最新的溫度、濕度,光線,壓力,3軸加速度等傳感器,LED,鍵盤,串口,直流、步進(jìn)電機等;也可以通過模塊置換增加更多類型傳感器模塊;大量軟件代碼,實現(xiàn)了和這些傳感器的控制接口,是ARM微控制器可以和各種無線有線網(wǎng)絡(luò)進(jìn)行實時連接,實時數(shù)據(jù)采集和分析,自動控制管理。DREAMRF-CC2430系統(tǒng)結(jié)構(gòu):理想系列ZigBee無線傳感器網(wǎng)絡(luò)平臺DREAMRF-CC2430由1.PC機部分、2.網(wǎng)關(guān)部分、3.路由節(jié)點部分、4.傳感器節(jié)點部分四部分組成,用戶可以很方便的實現(xiàn)傳感器網(wǎng)絡(luò)無線化,網(wǎng)絡(luò)化,規(guī)?;难菔?,教學(xué),觀測和再次開發(fā)。整體開發(fā)概念示意圖如圖1所示。1.PC機:完成接收網(wǎng)關(guān)數(shù)據(jù)和發(fā)送指令,實現(xiàn)可視化,形象化人機界面,方便用戶操作,觀察;2.網(wǎng)關(guān):完成通過計算機發(fā)送的指令發(fā)送或接收路由節(jié)點或者傳感器節(jié)點數(shù)據(jù),并將接收到的數(shù)據(jù)發(fā)送給計算機;3.路由節(jié)點:在網(wǎng)關(guān)不能和所有的傳感器節(jié)點通信時,路由節(jié)點作為一種中介使網(wǎng)關(guān)和傳感器節(jié)點通信,實現(xiàn)路由通信功能;4.傳感器節(jié)點:完成對設(shè)備的控制和數(shù)據(jù)的采集,包括燈的控制溫度、光照度、加速度數(shù)據(jù)等等。ZigBee無線傳感器網(wǎng)絡(luò)根據(jù)不同的情況可以由一個網(wǎng)關(guān),一個或多個路由器,一個或多個傳感器節(jié)點組成。系統(tǒng)大小只受PC軟件觀測數(shù)量,路由深度,網(wǎng)絡(luò)最大負(fù)載量限制。ZigBee2006無線傳感器網(wǎng)絡(luò)在沒有進(jìn)行網(wǎng)絡(luò)拓補修改之前支持5級路由,31101個網(wǎng)絡(luò)節(jié)點。傳感器網(wǎng)絡(luò)系統(tǒng)結(jié)構(gòu)圖如圖所示。圖3_1傳感器網(wǎng)絡(luò)系統(tǒng)結(jié)構(gòu)3.1.2仿真器C51RF無線ZigBee開發(fā)技術(shù)核心C51RF-3仿真器C51RF-3仿真器具有在線下載、調(diào)試、仿真等功能,具有一個USB接口,一個復(fù)位按鍵以及一根仿真線。C51RF-3仿真器通過USB接口與計算機進(jìn)行通信,要在CC2430的ZigBee模塊的開發(fā)上實現(xiàn)下載、調(diào)試(DEBUG)、仿真等的通信都由此接口來實現(xiàn)。仿真器上的復(fù)位鍵用來實現(xiàn)C51RF-3仿真器的復(fù)位,仿真線是一根10芯的下載、調(diào)試(DEBUG)、仿真線,通過它與CC2430的ZigBee模塊進(jìn)行連接。3.1.3網(wǎng)關(guān)主板理想系列ZigBee無線傳感器網(wǎng)絡(luò)平臺DREAMRF-CC2430網(wǎng)關(guān)主板包括32位ARM高性能微控制器。網(wǎng)關(guān)硬件包括彩色OLED觸摸圖形顯示器,觸摸按鍵,支持UCOS-II操作系統(tǒng),GUI圖形軟件。集成了802.15.4/ZigBee網(wǎng)絡(luò)路由器、網(wǎng)絡(luò)節(jié)點和軟件協(xié)議棧等完整軟件硬件。還包括UHFEPCGen2大功率RFID讀卡器及HF的RFID讀卡器接口。提供光敏、溫度、壓力(選配)、蜂鳴器、濕度等感知傳感器。圖3_2網(wǎng)關(guān)主板3.1.4有源感知節(jié)點理想系列ZigBee無線傳感器網(wǎng)絡(luò)平臺DREAMRF-CC2430提供有源網(wǎng)絡(luò)感知節(jié)點,節(jié)點提供三種傳感器(光敏、溫度、加速度)來進(jìn)行數(shù)據(jù)采集,并提供ZigBee無線模塊進(jìn)行數(shù)據(jù)傳輸,提供2種電源供電方式進(jìn)行能源供應(yīng)。此外有源感知網(wǎng)絡(luò)節(jié)點提供仿真器接口進(jìn)行程序下載。圖3_3有源感知節(jié)點3.1.5zigbee模塊有源網(wǎng)絡(luò)感知節(jié)點配套ZigBee無線模塊采用無線龍標(biāo)準(zhǔn)雙排20針功能引腳ZigBee圖3_4zigbee模塊無線模塊采用的是TI的ZigBee片上系統(tǒng)CC2430作為微控制器。CC2430是一顆真正的系統(tǒng)芯片(SoC)CMOS解決方案。這種解決方案能夠提高性能并滿足以ZigBee為基礎(chǔ)的2.4GHzISM波段應(yīng)用對低成本,低功耗的要求。它使用1個8位MCU(8051),具有32/64/128KB可編程閃存和8KB的RAM,還包含模擬數(shù)字轉(zhuǎn)換器(ADC)、幾個定時器(Timer)、AES128協(xié)同處理器、看門狗定時器(WatchdogTimer)、32kHz晶振的休眠模式定時器、上電復(fù)位電路(PowerOnReset)、掉電檢測電路(BrownOutDetection)以及21個可編程I/O引腳。3.2軟件開發(fā)環(huán)境本題目的開發(fā)環(huán)境是IARIAREmbeddedWorkbench(簡稱EW)的C/C++交叉編譯器和調(diào)試器是今天世界最完整的和最容易使用專業(yè)嵌入式應(yīng)用開發(fā)工具。EW對不同的微處理器提供一樣直觀用戶界面。EW今天已經(jīng)支持35種以上的8位/16位32位ARM的微處理器結(jié)構(gòu)。圖3_5IAR界面環(huán)境配置為了開發(fā)cc2430程序,需要對IAR進(jìn)行一系列的配置。設(shè)置工程選項參數(shù)選擇Project菜單下的Options配置與CC2430相關(guān)的選項。Target標(biāo)簽圖3_6IAR參數(shù)配置配置Target,選擇Codemodel和Datamodel,以及其它參數(shù)。DataPointer標(biāo)簽圖3_7IAR參數(shù)配置選擇數(shù)據(jù)指針數(shù)1個,16位。Stack/Heap標(biāo)簽圖3_8IAR參數(shù)配置改變XDATA棧大小到0x1FF。單擊Options中右邊框架內(nèi)的Linker選項,配置相關(guān)的選項。Output標(biāo)簽選中Overridedefault可以在下面的文本框中更改輸出文件名。如果要用C-SPY進(jìn)行調(diào)試,選中format下面的DebuginformationforC-SPY,圖3_9IAR參數(shù)配置Config標(biāo)簽單擊Linkercommandfile欄文本框右邊的按鈕,選擇正確的連接命令文件圖3_10IAR參數(shù)配置CodeModel關(guān)系表:CodeModelFileNearlnk51ew_cc2430.xclBankedlnk51ew_cc2430b.xclDebugger單擊Options中右邊框架內(nèi)的Debugger選項,配置相關(guān)的選項。在Setup標(biāo)簽在DeviceDescriptionfile選擇CC2430.ddf文件,其位置在程序安裝文件夾下如C:\ProgramFiles\IARSystems\EmbeddedWorkbench4.05Evaluationversion\8051\Config\derivatives\chipcon。。圖3_11IAR參數(shù)配置最后按下“ok”保存設(shè)置。成功編譯工程,并且沒有錯誤信息提示后,按照下圖連接硬件系統(tǒng)圖3_12系統(tǒng)連接示意圖編譯、連接、下載選擇Project\Make或按F7鍵編譯和連接工程,之后project\debuge就可以進(jìn)入調(diào)試界面,同時程序?qū)⒈幌螺d到節(jié)點中。圖3_13debug界面第四章系統(tǒng)設(shè)計與實現(xiàn)4.1系統(tǒng)總體設(shè)計基于無線傳感網(wǎng)的監(jiān)控系統(tǒng)主要分為兩部分:zigbee模塊程序開發(fā),上位機監(jiān)控軟件開發(fā)。Zigbee模塊的開發(fā)是建立在ZigBee協(xié)議棧的基礎(chǔ)上,添加自己的項目,實現(xiàn)cc2430節(jié)點的啟動,傳感器收集數(shù)據(jù),發(fā)送數(shù)據(jù),接受命令等功能。數(shù)據(jù)匯聚模塊(主板)負(fù)責(zé)組建Zigbee網(wǎng)絡(luò),完成傳感器模塊與上位機(PC)數(shù)據(jù)的透明傳輸;數(shù)據(jù)匯聚模塊(主板)通過RS-232串口與上位機相連。上位機有監(jiān)控界面可以測環(huán)境溫度,光強,RSSI值,多個傳感器節(jié)點置于不同的監(jiān)測區(qū)域,每個傳感器節(jié)點把數(shù)據(jù)傳給匯聚節(jié)點,在匯聚節(jié)點完成數(shù)據(jù)融合,然后匯聚節(jié)點把數(shù)據(jù)通過串口傳給上位機做進(jìn)一步處理并顯示給用戶。上位機監(jiān)控界面需要顯示所有溫度,光強,RSSI值數(shù)據(jù)的大小及變化趨勢。圖4_1系統(tǒng)整體框圖4.2模塊的軟件設(shè)計4.2.1模塊軟件整體設(shè)計Zigbee網(wǎng)絡(luò)節(jié)點軟件系統(tǒng)是建立在TI的協(xié)議棧ZStack-1.4.3-1.2.1。通過更改協(xié)議棧的配置,可以把協(xié)議棧配置為協(xié)調(diào)器(Coordinator)、終端(Enddevice)。此協(xié)議棧支持CC2430芯片,有較高的可靠性。在各功能節(jié)點的協(xié)議棧程序設(shè)計時,該協(xié)議棧采用統(tǒng)一的編寫方式,用宏定義語句:#def、#ifdef、#else等語句區(qū)別各功能節(jié)點在各協(xié)議層中的操作,這樣的編寫方式將協(xié)議??闯梢粋€整體,提高了協(xié)議棧的移植性。根據(jù)ZigBee2006標(biāo)準(zhǔn)的規(guī)范,ZStack-1.4.3-1.2.1協(xié)議棧文件結(jié)構(gòu)如下:App:應(yīng)用層,包含有具體應(yīng)用需要的功能函數(shù),可供用戶自行修改設(shè)計。HAL:硬件抽象層,包含具體芯片的功能函數(shù)以及硬件構(gòu)架的接口參數(shù)。MAC:硬件物理層,包含針對具體芯片的物理層封裝(主要為TIMAC-CC2430.lib中的頭文件),ZMac為在其上的ZigBee的MAC層封裝。MT:調(diào)試跟蹤與監(jiān)控測試,通過定義MT_TASK使能該功能,使設(shè)備能與PC端的Z-TOOL應(yīng)用程序通信。NWK:網(wǎng)絡(luò)層,包含有網(wǎng)絡(luò)層函數(shù)封裝(主要為協(xié)調(diào)器與路由器需要的庫函數(shù)Router.lib的頭文件,或者終端設(shè)備所需庫文件EndDevice.lib中的頭文件)。OSAL:操作系統(tǒng)抽象層,嵌入簡易操作系統(tǒng)的函數(shù)封裝,每個應(yīng)用都以操作系統(tǒng)的一個任務(wù)形式執(zhí)行。Profile:通用操作框架,包含有設(shè)備描述幫助函數(shù),主要對相關(guān)設(shè)備的通用功能進(jìn)行封裝。Security:安全層,包含Security.lib庫函數(shù)的頭文件。Tools:包含應(yīng)用的配置文件。ZDO:ZigBee設(shè)備對象的相關(guān)操作封裝。ZMac:ZigBeeMAC層的封裝。ZMain:包含main函數(shù)定義、起始代碼以及硬件功能配置函數(shù)OnBoard.h等。整個協(xié)議棧采用中斷事件調(diào)用機制,任務(wù)添加函數(shù)osalTaskAdd()將各層初始化函數(shù)指針、各層事件處理函數(shù)指針以及各層任務(wù)優(yōu)先級添加到任務(wù)表,然后通過中斷添加響應(yīng)事件(events)。整個函數(shù)構(gòu)成消息處理機制,每個層次互不干擾互不影響。本設(shè)計中,終端節(jié)點負(fù)責(zé)采集當(dāng)前的溫度數(shù)據(jù)在現(xiàn)場實時的顯示,并最終發(fā)送給協(xié)調(diào)器,在向協(xié)調(diào)器發(fā)送數(shù)據(jù)的同時還要實時的接收協(xié)調(diào)器發(fā)送過來的溫度報警數(shù)據(jù),并能夠超限報警。路由器只負(fù)責(zé)在終端節(jié)點和協(xié)調(diào)器之間的距離超過接收不到的情況下轉(zhuǎn)發(fā)協(xié)調(diào)器與終端節(jié)點所發(fā)送的數(shù)據(jù),起到一個中繼器的作用。協(xié)調(diào)器在接收到終端節(jié)點發(fā)送過來的溫度數(shù)據(jù)后進(jìn)行相應(yīng)的處理,然后通過RS232發(fā)送到上位機顯示,對上位機發(fā)送來的報警溫度進(jìn)行處理,然后分節(jié)點的發(fā)送給相應(yīng)的節(jié)點報警。下圖為整個系統(tǒng)的流程圖圖4_2系統(tǒng)整體流程4.2.2添加任務(wù)過程分析在Zstack(TI的Zigbee協(xié)議棧)中,對于每個用戶自己新建立的任務(wù)通常需要兩個相關(guān)的處理函數(shù),包括:(1).用于初始化的函數(shù),如:SampleApp_Init(),這個函數(shù)是在osalInitTasks()這個osal中去調(diào)用的,其目的就是把一些用戶自己寫的任務(wù)中的一些變量,網(wǎng)絡(luò)模式,網(wǎng)絡(luò)終端類型等進(jìn)行初始化;在osalInitTasks()中實現(xiàn)了多個任務(wù)初始化的設(shè)置,其中macTaskInit(taskID++)到ZDApp_Init(taskID++)的幾行代碼表示對于幾個系統(tǒng)運行初始化任務(wù)的調(diào)用,而用戶自己實現(xiàn)的SampleApp_Init()在最后,這里taskID隨著任務(wù)的增加也隨之遞增.所以用戶自己實現(xiàn)的任務(wù)的初始化操作應(yīng)該在osalInitTasks()中增加.voidosalInitTasks(void){uint8taskID=0;//這里很重要,調(diào)用osal_mem_alloc()為當(dāng)前OSAL中的各任務(wù)分配存儲空間(實際上是一個任//務(wù)數(shù)組),并用tasksEvents指向該任務(wù)數(shù)組(任務(wù)隊列).tasksEvents=(uint16*)osal_mem_alloc(sizeof(uint16)*tasksCnt);osal_memset(tasksEvents,0,(sizeof(uint16)*tasksCnt));//將taskSEvents所指向的空間清零macTaskInit(taskID++);nwk_init(taskID++);Hal_Init(taskID++);#ifdefined(MT_TASK)MT_TaskInit(taskID++);#endifAPS_Init(taskID++);ZDApp_Init(taskID++);SampleApp_Init(taskID);//用戶自己需要添加的任務(wù)}(2).用于引起該任務(wù)狀態(tài)變化的事件發(fā)生后所需要執(zhí)行的事件處理函數(shù),如:SampleApp_ProcessEvent(),這個函數(shù)是首先在constpTaskEventHandlerFntasksArr[]中進(jìn)行設(shè)置(綁定),然后在osalInitTasks()中如果發(fā)生事件進(jìn)行調(diào)用綁定的事件處理函數(shù).4.2.3具體功能實現(xiàn)Master節(jié)點設(shè)計Master節(jié)點的主要處理函數(shù)在uint16SampleApp_ProcessEvent(uint8task_id,uint16events)函數(shù)中實現(xiàn),此函數(shù)主要負(fù)責(zé)處任務(wù)的所有events,包括計時器,數(shù)據(jù)傳送,以及用戶自定義的時間。在本設(shè)計中,master節(jié)點還要負(fù)責(zé)網(wǎng)絡(luò)的建立,網(wǎng)絡(luò)節(jié)點的加入以及網(wǎng)絡(luò)號的分配等等。master節(jié)點的流程圖如下:圖4_3master節(jié)點流程圖sampleApp_ProcessEvent函數(shù)代碼如下:caseSPI_INCOMING_ZTOOL_PORT:// //P1_1=!P1_1;HalUARTRead(SPI_MGR_DEFAULT_PORT,UartRxBuf.RxBuf,32);memcpy(LastRecLaddr,UartRxBuf.RXDATA.Laddr,8);HalLedBlink(HAL_LED_1,2,50,1000);ReadFlag=0; if('&'==UartRxBuf.RxBuf[0]){ if(1)//(CheckUartData(&UartRxBuf.RxBuf[1],29)==UartRxBuf.RxBuf[30])//如果校驗通過{ switch(UartRxBuf.RXDATA.HeadCom[0])//串口命令頭 { case'R': if((UartRxBuf.RXDATA.HeadCom[1]=='N')&&(UartRxBuf.RXDATA.HeadCom[2]=='D'))//網(wǎng)絡(luò)發(fā)現(xiàn) { ReadFlag=1;//讀自己 } else { ReadFlag=0;//讀網(wǎng)絡(luò) } break; case'S': case'T': case'C': ReadFlag=0; break; } if(ReadFlag) { UartOutNetDis();//串口輸出網(wǎng)絡(luò)結(jié)構(gòu) } else { memcpy(&RfTx.TxBuf[0],&UartRxBuf.RxBuf[1],29);//裝入數(shù)據(jù) SrcSaddr=0; flag=0; for(j=0;j<JoinNode.RouterCount;j++)//叛斷有無重復(fù)加入的節(jié)點 { findflag=1; for(i=0;i<8;i++) { if(RfTx.TXDATA.Laddr[i]!=JoinNode.RouterAddr[j][i]) { findflag=0; break;//不是 } } if(findflag==0)continue; SrcSaddr=JoinNode.RouterAddr[j][8]; SrcSaddr<<=8; SrcSaddr+=JoinNode.RouterAddr[j][9]; //查找到網(wǎng)絡(luò)地址 flag=1; break; } if(flag==0) { for(j=0;j<JoinNode.RfdCount;j++)//叛斷有無重復(fù)加入的節(jié)點 { findflag=1; for(i=0;i<8;i++) { if(RfTx.TXDATA.Laddr[i]!=JoinNode.RfdAddr[j][i]) { findflag=0; break;//不是 } } if(findflag==0)continue; SrcSaddr=JoinNode.RfdAddr[j][8]; SrcSaddr<<=8; SrcSaddr+=JoinNode.RfdAddr[j][9]; //查找到網(wǎng)絡(luò)地址 flag=1; break;SlaveSlave節(jié)點,即傳感器節(jié)點,主要負(fù)責(zé)的是數(shù)據(jù)的采集和消息的發(fā)送。在uint16SampleApp_ProcessEvent(uint8task_id,uint16events)函數(shù)中不斷循環(huán)等待MSGpkt,該變量是指向afIncomingMSGPacket類型變量的指針,通過判斷MSGpkt->hdr.event的內(nèi)容,決定要進(jìn)行什么處理。caseAF_INCOMING_MSG_CMD:接受到master節(jié)點的命令,需要對接受的命令進(jìn)行處理,之后調(diào)用SampleApp_MessageMSGCB(MSGpkt)函數(shù)進(jìn)行處理,主要包括的是讀取傳感器,包括溫度、光感、RSSI值,將數(shù)據(jù)發(fā)送給master節(jié)點。switch(RfRece.RXDATA.HeadCom[0]){case'R'://讀f((RfRece.RXDATA.HeadCom[1]=='A')&&(RfRece.RXDATA.HeadCom[2]=='S'))//讀傳感器 {if((RfRece.RXDATA.DataBuf[0]=='G')&&(RfRece.RXDATA.DataBuf[1]=='M'))//讀光敏{ memset(RfTx.TxBuf,'x',32); RfTx.TXDATA.HeadCom[0]='R'; RfTx.TXDATA.HeadCom[1]='A'; RfTx.TXDATA.HeadCom[2]='S';memcpy(RfTx.TXDATA.Laddr,ieeeAddr,8); //RfTx.TXDATA.Saddr=NLME_GetShortAddr(); RfTx.TXDATA.DataBuf[0]='G'; RfTx.TXDATA.DataBuf[1]='M';#ifdefPOWER_SAVINGSensor_Delay(3000);#endif temp=ReadSensorAdc(0); RfTx.TXDATA.DataBuf[2]=temp/100+0x30; temp=temp%100; RfTx.TXDATA.DataBuf[3]=temp/10+0x30; RfTx.TXDATA.DataBuf[4]=temp%10+0x30; RfHaveTxDara=1;; }elseif((RfRece.RXDATA.DataBuf[0]=='W')&&(RfRece.RXDATA.DataBuf[1]=='D'))//讀溫度{memset(RfTx.TxBuf,'x',32);SPIReadTC77Data();//注:第一次轉(zhuǎn)換溫度數(shù)據(jù),會出現(xiàn)不準(zhǔn)確現(xiàn)像Sensor_Delay(50);SPIReadTC77Data(); Sensor_Delay(50);temp1=SPIReadTC77Data(); temp=temp1/100; Slave節(jié)點的程序流程圖如下:圖4_4slave節(jié)點流程圖Slave節(jié)點的部分主要代碼:SampleApp_ProcessEvent(uint8task_id,uint16events){unsignedchar*ieeeAddr;uint16SrcSaddr; afIncomingMSGPacket_t*MSGpkt; if(events&SYS_EVENT_MSG) { MSGpkt=(afIncomingMSGPacket_t*)osal_msg_receive(SampleApp_TaskID);//檢索收到任務(wù)信息while(MSGpkt) { switch(MSGpkt->hdr.event) { caseAF_INCOMING_MSG_CMD: SampleApp_MessageMSGCB(MSGpkt); break;//改變網(wǎng)絡(luò)狀態(tài)caseZDO_STATE_CHANGE: SampleApp_NwkState=(devStates_t)(MSGpkt->hdr.status);//網(wǎng)絡(luò)狀態(tài)=協(xié)調(diào)器,路由,設(shè)備 if(SampleApp_NwkState==DEV_END_DEVICE) {#ifdef WXL_RFDSampleApp_RDPSensorDevice();//初使化設(shè)備 memset(RfTx.TxBuf,'x',32); RfTx.TXDATA.Head='&'; RfTx.TXDATA.HeadCom[0]='J'; RfTx.TXDATA.HeadCom[1]='O'; RfTx.TXDATA.HeadCom[2]='N'; ieeeAddr=NLME_GetExtAddr(); memcpy(RfTx.TXDATA.Laddr,ieeeAddr,8); SrcSaddr=NLME_GetShortAddr(); RfTx.TXDATA.Saddr[0]=SrcSaddr; RfTx.TXDATA.Saddr[1]=SrcSaddr>>8; RfTx.TXDATA.DataBuf[0]='R'; RfTx.TXDATA.DataBuf[1]='F'; RfTx.TXDATA.DataBuf[2]='D'; RfTx.TXDATA.LastByte='*'; SendData(RfTx.TxBuf,0x0000,32);//發(fā)送自己的節(jié)點信息到主機#endifosal_start_timerEx(SampleApp_TaskID, SAMPLEAPP_SEND_PERIODIC_MSG_EVT, SAMPLEAPP_SEND_PERIODIC_MSG_TIMEOUT);}elseif(SampleApp_NwkState==DEV_ROUTER){#ifdef WXL_ROUTER SampleApp_RDPSensorDevice();//初使化設(shè)備 memset(RfTx.TxBuf,'x',32); RfTx.TXDATA.Head='&'; RfTx.TXDATA.HeadCom[0]='J'; RfTx.TXDATA.HeadCom[1]='O'; RfTx.TXDATA.HeadCom[2]='N'; ieeeAddr=NLME_GetExtAddr(); memcpy(RfTx.TXDATA.Laddr,ieeeAddr,8); SrcSaddr=NLME_GetShortAddr(); RfTx.TXDATA.Saddr[0]=SrcSaddr; RfTx.TXDATA.Saddr[1]=SrcSaddr>>8; RfTx.TXDATA.DataBuf[0]='R'; RfTx.TXDATA.DataBuf[1]='O'; RfTx.TXDATA.DataBuf[2]='U'; RfTx.TXDATA.LastByte='*'; SendData(RfTx.TxBuf,0x0000,32);//發(fā)送自己的節(jié)點信息到主機#endif }elseif(SampleApp_NwkState==DEV_ZB_COORD){;} break; default: break; } osal_msg_deallocate((uint8*)MSGpkt); //下一個如果可能利用 MSGpkt=(afIncomingMSGPacket_t*)osal_msg_receive(SampleApp_TaskID); } //返回未處理事件 return(events^SYS_EVENT_MSG); } //發(fā)送外部消息-這個事件產(chǎn)生一個時間 if(events&SAMPLEAPP_SEND_PERIODIC_MSG_EVT) { //返回未處理事件 return(events^SAMPLEAPP_SEND_PERIODIC_MSG_EVT); } //放棄未知事件 return0;}4.2.4上位機監(jiān)控軟件的開發(fā)監(jiān)控界面如圖3.8所示,用MFC軟件制作,它接收協(xié)調(diào)器節(jié)點傳來的數(shù)據(jù),可以進(jìn)行端口號和節(jié)點設(shè)置,以及設(shè)置IP地址,可以顯示歷史溫度曲線,光感曲線,RSSI值的曲線,可以進(jìn)行節(jié)點的選擇,報警值的設(shè)置等等,監(jiān)控軟件將收到的信息寫入文件,并可以對文件進(jìn)行保存??梢詽M足整個系統(tǒng)的監(jiān)控需求。圖4_5監(jiān)控軟件監(jiān)控軟件的項目界面如下:圖4_6監(jiān)控軟件項目簡介4.3本章小結(jié)本章主要論述了基于ZigBee的溫度監(jiān)控系統(tǒng)軟件設(shè)計與實現(xiàn)。論述了網(wǎng)絡(luò)中的溫度傳感器模塊,協(xié)調(diào)器節(jié)點模塊,上位機監(jiān)控軟件設(shè)計,包括通信方式定制,溫度數(shù)據(jù)采集,數(shù)據(jù)存儲方式,節(jié)點加入網(wǎng)絡(luò)的控制,各類事件響應(yīng)等等。系統(tǒng)運行與演示5.1系統(tǒng)連接與配置(1),把ZigBee協(xié)調(diào)器正確安排至網(wǎng)關(guān)主板ZigBee接口上,通過網(wǎng)線把計算機與網(wǎng)關(guān)主板連接起來,對網(wǎng)關(guān)主板供電,在網(wǎng)關(guān)主板把J11-J14開關(guān)拔向MCU方向,打開電源開關(guān),并把網(wǎng)關(guān)主板ZigBee接口右邊的開關(guān)拔向“ON”,其它模塊開關(guān)拔向“OFF”。設(shè)置信道及網(wǎng)絡(luò)號,啟動ZigBee網(wǎng)絡(luò)。對網(wǎng)關(guān)主板供電,打開網(wǎng)關(guān)主板電源開關(guān),選擇ZigBee實驗圖標(biāo),進(jìn)入ZigBee實驗,菜單選擇界面,如下圖所示。圖5_1菜單選擇點擊“PC軟件控制”,顯示如下。圖5_2啟動zigbee網(wǎng)絡(luò)(4)開始以太網(wǎng)設(shè)置。以太網(wǎng)設(shè)置:打開計劃運行監(jiān)控/演示軟件的計算機的網(wǎng)絡(luò)連接屬性(右鍵點擊桌面->屬性->右鍵點擊本地連接->屬性),如下圖所示。

圖5_3網(wǎng)絡(luò)連接屬性由于在網(wǎng)關(guān)主板上設(shè)置了IP地址為00,因此把計算機IP地址設(shè)置為:192.168.3.X(2<=X<=99,101<=X<=254)。5.2編譯和下載項目文件根據(jù)第四章介紹,將sampleapp項目編譯鏈接后,進(jìn)行debuge,此時便將程序下載至RFID有源節(jié)點內(nèi).注意修改各節(jié)點物理地址使其各不相同。圖5-4下載程序同時IAR進(jìn)入調(diào)試界面,可以動態(tài)跟蹤程序的執(zhí)行和調(diào)試。圖5_5debuge界面5.3運行監(jiān)控系統(tǒng)在由于顯示的網(wǎng)關(guān)主板的IP為00,端口號為3000,因此在連篇的IP輸入00,監(jiān)聽端口處輸入3000,點擊“”開始監(jiān)聽無線傳感器網(wǎng)絡(luò)。圖5_6監(jiān)控設(shè)置點擊“開始”按鈕,就可開始顯示光敏感度的曲線了(注:這時“開始”按鈕將變?yōu)椤瓣P(guān)閉”按鈕)。圖5_7監(jiān)控界面結(jié)束語本文主要研究的是基于無線傳感網(wǎng)的溫度采集系統(tǒng)的具體應(yīng)用。本系統(tǒng)以CC2430作為主控芯片,以TI公司的Z-Stack協(xié)議棧為基礎(chǔ),實現(xiàn)了溫度、光強、RSSI值的采集,以及在上位機上進(jìn)行觀測和監(jiān)控功能。在學(xué)習(xí)zigbee開發(fā)的過程中,遇到的困難比想象的要多很多。很多相關(guān)的技術(shù),如單片機知識、無線通信相關(guān)內(nèi)容,ZIGBEE協(xié)議棧的分析、IAR的使用,實驗箱的操作以及上位機監(jiān)控軟件的開發(fā)等,每一項都需要花一定的時間去掌握和熟悉。ZIGBEE為一種剛出現(xiàn)僅幾年的新技術(shù),參考資料還不算太多,這也在畢設(shè)過程中造成了很大困難。通過對本課題的研究與實現(xiàn),增強了我的理論分析和動手能力,使我對作為物聯(lián)網(wǎng)核心技術(shù)之一的無線傳感網(wǎng)技術(shù)有了一定的了解,同時,在完成了系統(tǒng)的整個開發(fā)過程。使我對片上系統(tǒng)開發(fā),軟件共存,嵌入式開發(fā)方面都有了很大提高和進(jìn)步。參考文獻(xiàn)[1]高守瑋,吳燦陽,等.ZigBee技術(shù)實踐教程——基于CC2430/31的無線傳感網(wǎng)絡(luò)解決方案[M].北京:北京航空航天大學(xué)出版社,2009.[2]崔莉,鞠海玲,等.無線傳感器網(wǎng)絡(luò)研究進(jìn)展[J].計算機研究與發(fā)展,2005.[3]夏少波,許娥.基于ZigBee的無線傳感器網(wǎng)絡(luò)研究[J].山東通信技術(shù),2009,9(4):9-12.[4]陳偉歌,閻有運,陳朝軍.基于ZigBee技術(shù)的倉庫溫度監(jiān)測系統(tǒng)[J].現(xiàn)代電子技術(shù),2008,12(275):47.[5]金海紅.基于Zigbee的無線傳感器網(wǎng)絡(luò)節(jié)點的設(shè)計及其通信的研究[D].合肥工業(yè)大學(xué).2007:30-32.[6]孟慶斌,潘勇.基于CC2430的分布式無線溫度測量系統(tǒng)設(shè)計[J].電子測量技術(shù),2009(5):128-130.[7]李文仲,段朝玉,等.ZigBee無線網(wǎng)絡(luò)技術(shù)入門與實戰(zhàn)[M].北京:北京航空航天大學(xué)出版社,2007.[8]夏恒星,馬維華.基于CC2430的無線傳感器網(wǎng)絡(luò)節(jié)點設(shè)計[J].電子技術(shù)應(yīng)用,2007(5):45-47,54.[9]王漢中.基于Zigbee收發(fā)器CC2430的分布式溫度測量系統(tǒng)設(shè)計計[D].華中師范大學(xué).2008:12-13.[10]李磊.一類無線傳感網(wǎng)絡(luò)節(jié)點設(shè)計及其在設(shè)備監(jiān)控中的應(yīng)用研究[D].國防科學(xué)技術(shù)大學(xué).2007:23-24.[11]孫利民,李建中,陳渝.無線傳感器網(wǎng)絡(luò)[M].北京:清華大學(xué)出版社,2005.[12]蔣挺,趙成.紫蜂技術(shù)及其應(yīng)用[M].北京:北京郵電大學(xué)出版社,2008.[13]劉瓊,周之光,朱志偉.基于CC2430的低功耗ZigBee無線傳感器網(wǎng)絡(luò)節(jié)點的設(shè)計[J].湖南工業(yè)職業(yè)技術(shù)學(xué)院學(xué)報,2009,9(5):15-16.[14]CC2430ATrueSystem-on-Chipsolutionfor2.4GHzIEEE802.15.4/ZigBee[OL].http://.[15]CC2430DataSheet[OL].http:///cc2430.[16]IEEEStd802.15.4-2003[OL].http://.[17]ZigBeeSpecification2005[OL].http://.附錄:Slave節(jié)點的消息處理函數(shù)部分代碼:voidSampleApp_MessageMSGCB(afIncomingMSGPacket_t*pkt){ UINT8temp; UINT16temp1; uint8*ieeeAddr;//SampleApp_RDPSensorDevice();//初使化設(shè)備//Sensor_Delay(50); memcpy(RfRece.RxBuf,pkt->cmd.Data,32);//共同體ieeeAddr=NLME_GetExtAddr();//獲取物理地址 switch(RfRece.RXDATA.HeadCom[0]){ case'R'://讀 if((RfRece.RXDATA.HeadCom[1]=='A')&&(RfRece.RXDATA.HeadCom[2]=='S'))//讀傳感器 { if((RfRece.RXDATA.DataBuf[0]=='G')&&(RfRece.RXDATA.DataBuf[1]=='M'))//讀光敏 { memset(RfTx.TxBuf,'x',32); RfTx.TXDATA.HeadCom[0]='R'; RfTx.TXDATA.HeadCom[1]='A'; RfTx.TXDATA.HeadCom[2]='S';memcpy(RfTx.TXDATA.Laddr,ieeeAddr,8); //RfTx.TXDATA.Saddr=NLME_GetShortAddr(); RfTx.TXDATA.DataBuf[0]='G'; RfTx.TXDATA.DataBuf[1]='M';#ifdefPOWER_SAVINGSensor_Delay(3000);#endif temp=ReadSensorAdc(0); RfTx.TXDATA.DataBuf[2]=temp/100+0x30; temp=temp%100; RfTx.TXDATA.DataBuf[3]=temp/10+0x30; RfTx.TXDATA.DataBuf[4]=temp%10+0x30; RfHaveTxDara=1;; } elseif((RfRece.RXDATA.DataBuf[0]=='W')&&(RfRece.RXDATA.DataBuf[1]=='D'))//讀溫度 { memset(RfTx.TxBuf,'x',32);SPIReadTC77Data();//注:第一次轉(zhuǎn)換溫度數(shù)據(jù),會出現(xiàn)不準(zhǔn)確現(xiàn)像Sensor_Delay(50);SPIReadTC77Data();//注:第一次轉(zhuǎn)換溫度數(shù)據(jù),會出現(xiàn)不準(zhǔn)確現(xiàn)像Sensor_Delay(50);temp1=SPIReadTC77Data();//注:第一次轉(zhuǎn)換溫度數(shù)據(jù),會出現(xiàn)不準(zhǔn)確現(xiàn)像temp=temp1/100;RfTx.TXDATA.HeadCom[0]='R'; RfTx.TXDATA.HeadCom[1]='A'; RfTx.TXDATA.HeadCom[2]='S'; memcpy(RfTx.TXDATA.Laddr,ieeeAddr,8); //RfTx.TXDATA.Saddr=NLME_GetShortAddr(); RfTx.TXDATA.DataBuf[0]='W'; RfTx.TXDATA.DataBuf[1]='D'; RfTx.TXDATA.DataBuf[2]=temp/10+0x30;//HEXcode[(temp>>4)];// RfTx.TXDATA.DataBuf[3]=temp%10+0x30;//HEXcode[(temp&0x0f)];// RfHaveTxDara=1; } }elseif((RfRece.RXDATA.HeadCom[1]=='A')&&(RfRece.RXDATA.HeadCom[2]=='C'))//控制加速度傳感器{JVCCON();P1_4=1;Sensor_Delay(5);memset(RfTx.TxBuf,'x',32);if(RfRece.RXDATA.DataBuf[0]=='X'){RfTx.TXDATA.DataBuf[0]='X';#ifdefPOWER_SAVINGSensor_Delay(3000);#endiftemp=ReadSensorAdc(1);}elseif(RfRece.RXDATA.DataBuf[0]=='Y'){RfTx.TXDATA.DataBuf[0]='Y';#ifdefPOWER_SAVINGSensor_Delay(3000);#endiftemp=ReadSensorAdc(6);}elseif(RfRece.RXDATA.DataBu

溫馨提示

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

最新文檔

評論

0/150

提交評論