欧美色欧美亚洲高清在线观看,国产特黄特色a级在线视频,国产一区视频一区欧美,亚洲成a 人在线观看中文

  1. <ul id="fwlom"></ul>

    <object id="fwlom"></object>

    <span id="fwlom"></span><dfn id="fwlom"></dfn>

      <object id="fwlom"></object>

      Zigbee心得體會

      時間:2019-05-12 14:25:22下載本文作者:會員上傳
      簡介:寫寫幫文庫小編為你整理了多篇相關(guān)的《Zigbee心得體會》,但愿對你工作學(xué)習(xí)有幫助,當然你在寫寫幫文庫還可以找到更多《Zigbee心得體會》。

      第一篇:Zigbee心得體會

      心得體會

      本次實訓(xùn)之前,我就上網(wǎng)搜索了Zigbee的概念和相關(guān)信息。通過這次為期五周的無線通信技術(shù)綜合訓(xùn)練,我對Zigbee無線通信技術(shù),以及單片機CC2530開發(fā)板的硬件結(jié)構(gòu)和功能有了初步的了解和認識。

      實訓(xùn)的第一周,我們學(xué)習(xí)利用IAR Embedded Wordbench軟件,建立工程,編寫、調(diào)試和下載程序,通過CC2530開發(fā)板的現(xiàn)象來分析程序的功能。親眼目睹了軟件驅(qū)動硬件工作之后,我開始對這次實訓(xùn)產(chǎn)生了濃厚興趣。在熟悉了軟件和硬件的基本操作后,我們開始編寫和調(diào)試相對復(fù)雜的程序。這個編寫和調(diào)試的過程對我來說是個很大的挑戰(zhàn),因為我的C51基礎(chǔ)很薄弱,所以很多看似簡單的程序,我都要去查資料或者請教老師同學(xué)。最后一周的綜合實驗,是小組合作共同完成的。我體會到了Zigbee技術(shù)的功能強大,也體會到了團隊合作的快樂和價值。

      現(xiàn)實和理想總是有差距的,或多或少都會出現(xiàn)一些問題。對于通信方面的實訓(xùn)來說更是如此。在這次實訓(xùn)過程中,我遇到了各種問題:某句程序不理解,程序調(diào)試不成功,節(jié)點指示燈不閃爍,液晶屏顯示亂碼,實驗現(xiàn)象和預(yù)期要求不符等。通過查閱相關(guān)資料、小組成員探討和請教老師等途徑,這些問題得到了及時有效的解決。解決問題的過程不是一帆風(fēng)順的,是要付出汗水和努力的,但這個過程很值得。

      通過這次實訓(xùn),我認識和了解了熱門的Zigbee技術(shù),提高了C51的程序編寫和調(diào)試能力。更重要的是,這次實訓(xùn)提高了我們通信專業(yè)所必需的實踐能力和職場所需的團隊合作能力,培養(yǎng)了我們認真嚴謹?shù)目茖W(xué)態(tài)度。這些東西將讓我們終身受益!

      第二篇:zigbee學(xué)習(xí)自我總結(jié)!!!!!

      1.Zigbee網(wǎng)絡(luò)節(jié)點類型

      Zigbee網(wǎng)絡(luò)有三類節(jié)點類型:即協(xié)調(diào)器Coordinator、路由器Router和終端設(shè)備EndDevice,其中協(xié)調(diào)器和路由器均為全功能設(shè)備,而終端設(shè)備選用精簡功能設(shè)備。

      2.Zigbee協(xié)議棧各層主要功能模塊

      3.Zigbee網(wǎng)絡(luò)節(jié)點地址

      Zigbee網(wǎng)絡(luò)協(xié)議的每一個節(jié)點皆有兩個地址:64位的IEEE MAC地址及16位網(wǎng)絡(luò)地址.EUI-64(64-bit extended unique identifier)

      1)64-bit地址,又稱為MAC地址或IEEE地址。

      每個ZigBee節(jié)點都應(yīng)該有全球唯一的64位IEEE地址。這個地址需要向IEEE組織申請才能使用。通信時,將待發(fā)送的數(shù)據(jù)包的目的地址設(shè)為此64位IEEE地址,從而實現(xiàn)數(shù)據(jù)包的正確投遞。

      2)16-bit地址,即網(wǎng)絡(luò)地址,或稱為短地址。當一個ZigBee網(wǎng)絡(luò)形成后,ZigBee網(wǎng)絡(luò)內(nèi)的每個節(jié)點,都會分配到一個16位的網(wǎng)絡(luò)地址。通信時,將待發(fā)送的數(shù)據(jù)包的目的地址設(shè)為此16位網(wǎng)絡(luò)地址。

      4.Zigbee協(xié)議術(shù)語

      配置文件(profile):Zigbee協(xié)議的配置文件是對邏輯組件及其相關(guān)接口的描述,是面向某個應(yīng)用類別的公約、準則.通常沒有程序代碼與配置文件相關(guān)聯(lián).

      屬性(attribute):設(shè)備之間通信的每一種數(shù)據(jù)像開關(guān)的狀態(tài)或溫度計值等皆可稱為屬性.每個屬性可得到唯一的ID值.

      簇(cluster):多個屬性的匯集形成了簇,每個簇也擁有一個唯一的ID。雖然個體之間傳輸?shù)耐ǔJ菍傩孕畔?,但所謂的邏輯組件的接口指的卻是簇一級的操作,而非屬性一級.

      終端(endpoint):每個支持一個或多個簇的代碼功能塊稱為終端。不同的設(shè)備通過它們的終端及所支持的簇來進行通信。

      PAN IDs:PAN IDs是用來在邏輯上分離在同一領(lǐng)域內(nèi)的多個節(jié)點組。這樣不同組之間節(jié)點通信就不會干擾,且可以在同一通道channel上(zigbee2007不行,因為它通信時可以改變頻率的)Pan id是16位,范圍是0x0000~03fff。當建立或加入網(wǎng)絡(luò)時沒有指定PAN ID的話,就會根據(jù)default PAN ID確定。它是個常量。

      Extended PAN ID:zigbee 增加了一個8字節(jié)的擴展PAN ID,便于提供服務(wù)和PAN ID沖突檢測。5.Zigbee協(xié)議結(jié)構(gòu)

      ●物理層(PHY)物理層定義了物理無線信道和MAC子層之間的接口,提供物理層數(shù)據(jù)服務(wù)和 物理層管理服務(wù)。物理層內(nèi)容: 1)ZigBee的激活;2)當前信道的能量檢測;3)接收鏈路服務(wù)質(zhì)量信息;4)ZigBee信道接入方式;5)信道頻率選擇;6)數(shù)據(jù)傳輸和接收。●介質(zhì)接入控制子層(MAC)MAC層負責(zé)處理所有的物理無線信道訪問,并產(chǎn)生網(wǎng)絡(luò)信號、同步信號;支持PAN連接和分離,提供兩個對等MAC實體之間可靠的鏈路。

      MAC層功能:

      1)網(wǎng)絡(luò)協(xié)調(diào)器產(chǎn)生信標; 2)與信標同步;

      3)支持PAN(個域網(wǎng))鏈路的建立和斷開; 4)為設(shè)備的安全性提供支持;

      5)信道接入方式采用免沖突載波檢測多址接入(CSMA-CA)機制; 6)處理和維護保護時隙(GTS)機制;

      7)在兩個對等的M AC實體之間提供一個可靠的通信鏈路?!窬W(wǎng)絡(luò)層(NWK)

      ZigBee協(xié)議棧的核心部分在網(wǎng)絡(luò)層。網(wǎng)絡(luò)層主要實現(xiàn)節(jié)點加入或離開網(wǎng)絡(luò)、接收或拋棄其他節(jié)點、路由查找及傳送數(shù)據(jù)等功能。網(wǎng)絡(luò)層功能: 1)網(wǎng)絡(luò)發(fā)現(xiàn);2)網(wǎng)絡(luò)形成;3)允許設(shè)備連接;4)路由器初始化;5)設(shè)備同網(wǎng)絡(luò) 連接;6)直接將設(shè)備同網(wǎng)絡(luò)連接;7)斷開網(wǎng)絡(luò)連接;8)重新復(fù)位設(shè)備;9)接收機 同步;10)信息庫維護。●應(yīng)用層(APL)

      ZigBee應(yīng)用層框架包括應(yīng)用支持層(APS)、ZigBee設(shè)備對象(ZDO)和制造商所定義的應(yīng)用對象。應(yīng)用支持層的功能包括:維持綁定表、在綁定的設(shè)備之間傳送消息。

      ZigBee設(shè)備對象的功能包括:定義設(shè)備在網(wǎng)絡(luò)中的角色(如ZigBee協(xié)調(diào)器和終端設(shè)備),發(fā)起和響應(yīng)綁定請求,在網(wǎng)絡(luò)設(shè)備之間建立安全機制。ZigBee 設(shè)備對象還負責(zé)發(fā)現(xiàn)網(wǎng)絡(luò)中的設(shè)備,并且決定向他們提供何種應(yīng)用服務(wù)。ZigBee應(yīng)用層除了提供一些必要函數(shù)以及為網(wǎng)絡(luò)層提供合適的服務(wù)接口外,一個重要的功能是應(yīng)用者可在這層定義自己的應(yīng)用對象?!駪?yīng)用程序框架(AF)

      運行在ZigBee協(xié)議棧上的應(yīng)用程序?qū)嶋H上就是廠商自定義的應(yīng)用對象,并且遵循規(guī)范(profile)運行在端點1---240上。在ZigBee應(yīng)用中,提供2種標準服務(wù)類型:鍵值對(KVP)或報文(MSG)?!馴igbee設(shè)備對象(ZDO)

      遠程設(shè)備通過ZDO請求描述符信息,接收到這些請求時,ZDO會調(diào)用配置對象獲取相應(yīng)描述符值。另外,ZDO提供綁定服務(wù)。

      6.Z-Stack軟件構(gòu)架

      Z-Stack由main()函數(shù)開始執(zhí)行,main()函數(shù)共做了2件事:一是系統(tǒng)初始化,另外一件是開始執(zhí)行輪轉(zhuǎn)查詢式操作系統(tǒng),如下圖所示:

      7.Z-Stack 系統(tǒng)運行流程圖

      8.Z-Stack在項目中的目錄結(jié)構(gòu)

      (1)App:應(yīng)用層目錄,這個目錄下的文件就是創(chuàng)建一個新項目時自己要添加的文件,(2)HAL:硬件層目錄,Common目錄下的文件是公用文件,基本上與硬件無關(guān),其中hal_assert.c是斷言文件,用于調(diào)用,hal_drivers.c是驅(qū)動文件,抽象出與硬件無關(guān)的驅(qū)動函數(shù),包含有與硬件相關(guān)的配置和驅(qū)動及操作函數(shù)。Include目錄下主要包含各個硬件模塊的頭文件,而Target目錄下的文件是跟硬件平臺相關(guān)的,可能看到有兩個平臺,分別是Cc2430DB平臺和一個CC2430EB平臺。后面的DB和EB表示的是TI公司開發(fā)板的型號,其實還有一種類型是BB的,BB: Battery Board DB: Development Board EB: Evaluation Board 分別對應(yīng)TI公司開發(fā)的三種板型,其功能按上順序依次變強??梢詤⒖础癦-Stack User's Guide for CC2430”的圖片,可以獲得更直觀的認識。

      (3)MAC:MAC層目錄,High Level和Low Level兩個目錄表示MAC層分為了高層和底層兩層,Include目錄下則包含了MAC層的參數(shù)配置文件及基MAC的LIB庫函數(shù)接口文件,這里的MAC層的協(xié)議是不開源的,以庫的形式給出

      (4)MT:監(jiān)制調(diào)試層目錄,該目錄下的文件主要用于調(diào)試目的,即實現(xiàn)通過串口調(diào)試各層,與各層進行直接交互。

      (5)NWK:網(wǎng)絡(luò)層目錄,含有網(wǎng)絡(luò)層配置參數(shù)文件及網(wǎng)絡(luò)層庫的函數(shù)接口文件,及APS層庫的函數(shù)接口

      (6)OSAL:協(xié)議棧的操作系統(tǒng)抽象層目錄

      (7)Profile:AF層目錄,Application Farmework 應(yīng)用框架,包含AF層處理函數(shù)接口文件。

      (8)Security:安全層目錄,包含安全層處理函數(shù)接口文件

      (9)Services:ZigBee和802.15.4設(shè)備地址處理函數(shù)目錄,包括地址模式的定義及地址處理函數(shù)

      (10)Tools:工作配置目錄,包括空間劃分及Z-Stack相關(guān)配置信息

      (11)ZDO:指ZigBee設(shè)備對象,可認為是一種公共的功能集,文件用戶用自定義的對象調(diào)用APS子層的服務(wù)和NWK層的服務(wù)

      (12)ZMAC:其中Zmac.c是Z-StackMAC導(dǎo)出層接口文件,zmac_cb.c是ZMAC需要調(diào)用的網(wǎng)絡(luò)層函數(shù)

      (13)Zmain:Zmain.c主要包含了整個項目的入口函數(shù)main(),在OnBoard.c包含硬件開始平臺類外設(shè)進行控制的接口函數(shù)

      (14)Output:輸出文件目錄,這個是EW8051 IDE自動生成的

      9.Z-stack 中實現(xiàn)自己的任務(wù)

      在Zstack(TI的Zigbee協(xié)議棧)中,對于每個用戶自己新建立的任務(wù)通常需要兩個相關(guān)的處理函數(shù),包括: ①用于初始化的函數(shù)

      如:SampleApp_Init(),這個函數(shù)是在osalInitTasks()這個osal(Zstack中自帶的小操作系統(tǒng))中去調(diào)用的,其目的就是把一些用戶自己寫的任務(wù)中的一些變量,網(wǎng)絡(luò)模式,網(wǎng)絡(luò)終端類型等進行初始化;②用于引起該任務(wù)狀態(tài)變化的事件發(fā)生后所需要執(zhí)行的事件處理函數(shù)

      如:SampleApp_ProcessEvent(),這個函數(shù)是首先const pTaskEventHandlerFn tasksArr[ ]中進行設(shè)置(綁定),然后在osalInitTasks()中如果發(fā)生事件進行調(diào)用綁定的事件處理函數(shù)。

      1)用戶自己設(shè)計的任務(wù)代碼在Zstack中的調(diào)用過程

      main()執(zhí)行(在Zmain目錄中ZMain.c)-?osal_init_system()(在OSAL目錄中的OSAL.c 中)-?調(diào)用osalInitTasks()(在APP目錄中的OSAL_SerialApp.c)-?調(diào)用SerialApp_Init(),(在APP目錄中的SerialApp.c中)。

      在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()中增加。(在APP目錄中的OSAL_SerialApp.c中增加)。2)任務(wù)處理調(diào)用的重要數(shù)據(jù)結(jié)構(gòu)

      在Zstack里,對于同一個任務(wù)可能有多種事件發(fā)生,那么需要執(zhí)行不同的事件處理,為了方便,對于每個任務(wù)的事件處理函數(shù)都統(tǒng)一在一個事件處理函數(shù)中實現(xiàn),然后根據(jù)任務(wù)的ID號(task_id)和該任務(wù)的具體事件(events)調(diào)用某個任務(wù)的事件處理函數(shù),進入了該任務(wù)的事件處理函數(shù)之后,再根據(jù) events 再來判別是該任務(wù)的哪一種事件發(fā)生,進而執(zhí)行相應(yīng)的事件處理。

      pTaskEventHandlerFn 是一個指向函數(shù)(事件處理函數(shù))的指針,這里實現(xiàn)的每一個數(shù)組元素各對應(yīng)于一個任務(wù)的事件處理函數(shù),比如SampleApp_ProcessEvent對于用戶自行實現(xiàn)的事件處理函數(shù) uint16 SampleApp_ProcessEvent(uint8 task_id,uint16 events),所以這里如果我們實現(xiàn)了一個任務(wù),還需要把實現(xiàn)的該任務(wù)的事件處理函數(shù)在這里添加。

      注意,tasksEvents(在APP目錄中的OSAL_SerialApp.c的osalInitTasks(void)函數(shù)中)和tasksArr[](在APP中的OSAL_SerialApp.c中)里的順序是一一對應(yīng)的,tasksArr[]中的第i個事件處理函數(shù)對應(yīng)于tasksEvents中的第i個任務(wù)的事件。

      3)對于不同事件發(fā)生后的任務(wù)處理函數(shù)的調(diào)用

      osal_start_system()很重要,決定了當某個任務(wù)的事件發(fā)生后調(diào)用對應(yīng)的事件處理函數(shù)(在Zmain目錄中ZMain.c)。

      10.Z-stack 添加一個新的任務(wù)

      在osalInitTasks()和tasksArr[]添加相應(yīng)的項就可以了。osalInitTasks()為初始化系統(tǒng)的任務(wù),tasksArr[ ]為任務(wù)處理事件矩陣。在 osalInitTasks()和 tasksArr[]添加相應(yīng)的項就可以。

      1)修改 osalInitTasks()void osalInitTasks(void){ ……

      OuhsApp_Init(taskID++);PhotoApp_Init(taskID);} 2)修改 tasksArr[] const pTaskEventHandlerFn tasksArr[] = { ……

      OuhsApp_ProcessEvent PhotoApp_ProcessEvent };3)添加_Init()和_ProcessEvent()void PhotoApp_Init(uint8 task_id){ PhotoApp_TaskID=task_id;PhotoInit();RegisterForPhoto(PhotoApp_TaskID);} uint16 PhotoApp_ProcessEvent(uint8 task_id uint16 events){ afIncomingMSGPacket_t *MSGpkt;if(events &SYS_EVENT_MSG){ MSGpkt =(afIncomingMSGPacket_t *)osal_msg_receive(PhotoApp_TaskID);while(MSGpkt){ switch(MSGpkt->hdr.event){ case PHOTO_CHANGE: HalLedblink(HAL_LED_1 3 30 300);//P0IE=1;break;} // Release the memory osal_msg_deallocate((uint8 *)MSGpkt);// Next0 if not set */

      uint16 clusterId;

      /* Message's cluster ID */

      afAddrType_t srcAddr;

      /* Source Address, if endpoint is STUBAPS_INTER_PAN_EP,it's an InterPAN message */

      uint16 macDestAddr;

      /* MAC header destination short address */

      uint8 endPoint;

      /* destination endpoint */

      uint8 wasBroadcast;

      /* TRUE if network destination was a broadcast address */

      uint8 LinkQuality;

      /* The link quality of the received data frame */

      uint8 correlation;

      /* The raw correlation value of the received data frame */

      int8 rssi;

      /* The received RF power in units dBm */

      uint8 SecurityUse;

      /* deprecated */

      uint32 timestamp;

      /* receipt timestamp from MAC */

      afMSGCommandFormat_t cmd;/* Application Data */ } afIncomingMSGPacket_t;typedef struct {uint8 event;

      uint8 status;} osal_event_hdr_t;typedef struct {

      byte

      TransSeqNumber;

      uint16 DataLength;

      // Number of bytes in TransData

      byte *Data;} afMSGCommandFormat_t;

      第三篇:Zigbee讀書日記(七)

      原文鏈接:

      Zigbee讀書日記

      (七)--基于Contiki的開源Zigbee-freakz研究(前言)

      此系列筆記已經(jīng)很長時間沒更新了,主要是在忙著2530開發(fā)板的事情,項目規(guī)劃、例程、文檔甚至元件采購,實在有太多事情要忙了。還好,不是一個人在戰(zhàn)斗~~這兩天因為有些工作要等手樣出來才能繼續(xù),所以就空出一點時間,想把開源Zigbee的項目先啟動起來。

      本來是沒時間寫這個貼的,但是想把自己最近做的事情跟大家做個交代,同時也希望能尋找些有共同愛好的朋友能一起來做這個事情。廢話不說了,先說說我的想法,我想論壇會按照開源操作系統(tǒng)+開源Zigbee,然后擴展到TCP/IP這個方向去走。之前選擇的平臺是msstatePAN,但是最近一段時間的了解,雖然msstatePAN可以直接支持CC2430,用起來相對會容易些。但畢竟這個協(xié)議還很初級,很多功能沒有完成。程序?qū)懙靡膊皇翘?guī)范,而且作者最近幾年都沒有更新了。而freakz這個協(xié)議,用的是開源的contiki操作系統(tǒng),其擴展性會好很多,因為在contiki基礎(chǔ)上,已經(jīng)有很多不錯的應(yīng)用了,甚至是開源的IPV6。而且針對Zigbee來說,其協(xié)議雖然離產(chǎn)品化還有距離,但是要完整很多,唯一的缺點就是硬件還不支持TI系列。

      我們能不能自己去做這部分工作呢?我相信有TI詳細的技術(shù)資料支持跟幾個開源的MAC層代碼,應(yīng)該是可以的。這就是我接下來一段時間準備要做的事情,希望能在2530開發(fā)板的手樣出來(大概到下個周末)前,能做出個大概,如果有網(wǎng)友有興趣,非??释募尤?!

      第四篇:zigbee入網(wǎng)退網(wǎng)機制分析

      Zstack入網(wǎng)退網(wǎng)代碼分析

      網(wǎng)絡(luò)初始化和路由:

      網(wǎng)絡(luò)初始化:

      協(xié)調(diào)器(Coordinator)首先在某個頻段發(fā)起一個網(wǎng)絡(luò),網(wǎng)絡(luò)頻段的定義放在DEFAULT_CHANLIST配置文件里。如果ZDAPP_CONFIG_PANID定義的PAN ID是0xFFFF(代表所有的PAN ID),則協(xié)調(diào)器根據(jù)它的IEEE地址隨機確定一個PAN ID。否則,根據(jù)ZDAPP_CONFIG_PANID的定義建立PAN ID。當節(jié)點為Router或者End Device時,設(shè)備將會試圖加入DEFAULT_ CHANLIST所指定的工作頻段。如果ZDAPP_CONFIG_PANID沒有設(shè)為0xFFFF,則Router或者End Device會加入ZDAPP_CONFIG_PANID所定義的PAN ID。設(shè)備上電之后會自動的形成或加入網(wǎng)絡(luò),如果想設(shè)備上電之后不馬上加入網(wǎng)絡(luò)或者在加入網(wǎng)絡(luò)之前先處理其他事件,可以通過定義HOLD_AUTO_START來實現(xiàn)。通過調(diào)用ZDOInitDevice(int startdelay)來手動定義多久時間(startdelay)之后開始加入網(wǎng)絡(luò)。

      設(shè)備如果成功的加入網(wǎng)絡(luò),會將網(wǎng)絡(luò)信息存儲在非易失性存儲器(NV Flash)里,掉電后仍然保存,這樣當再次上電后,設(shè)備會自動讀取網(wǎng)絡(luò)信息,這樣設(shè)備對網(wǎng)絡(luò)就有一定的記憶功能。

      如果需要使用NV Flash的設(shè)置,可以通過定義NV_RESTORE宏和關(guān)閉SW_BYPASS_NV來使用。

      有關(guān)網(wǎng)絡(luò)參數(shù)的設(shè)置大多保存在協(xié)議棧Tools文件夾的f8wConfig.cfg里。路由:

      Z-Stack采用無線自組網(wǎng)按需平面距離矢量路由協(xié)議AODV,建立一個Hoc網(wǎng)絡(luò),支持移動節(jié)點,鏈接失敗和數(shù)據(jù)丟失,能夠自組織和自修復(fù)。當一個Router接受到一個信息包之后,NMK層將會進行以下的工作:首先確認目的地,如果目的地就是這個Router的鄰居,信息包將會直接傳輸給目的設(shè)備;否則,Router將會確認和目的地址相應(yīng)的路由表條目,如果對于目的地址能找到有效的路由表條目,信息包將會被傳遞到該條目中所存儲的下一個hop地址;如果找不到有效的路由表條目,路由探測功能將會被啟動,信息包將會被緩存直到發(fā)現(xiàn)一個新的路由信息。

      ZigBee End Device不會執(zhí)行任何路由函數(shù),它只是簡單的將信息傳送給前面的可以執(zhí)行路由功能的父設(shè)備。因此,如果End Device想發(fā)送信息給另外一個End Device,在發(fā)送信息之間將會啟動路由探測功能,找到相應(yīng)的父路由節(jié)點。初始化流程圖:

      ZStack代碼中的設(shè)備初始化流程圖如下:

      其中根據(jù)宏的設(shè)置可以達到擴展panID的效果,并且所有設(shè)備類型都集中處理。

      退網(wǎng): 協(xié)調(diào)器和路由器上層使用ZDP_MgmtLeaveReq()進行設(shè)備退網(wǎng)申請,會通過ZDO的Mgmt消息處理函數(shù)ZDO_ProcessMgmtLeaveReq()來調(diào)用NLME_LeaveReq()函數(shù),實現(xiàn)退網(wǎng)申請,主要用來申請給其他設(shè)備退網(wǎng)。

      當前設(shè)備直接使用NLME_LeaveReq()來進行退網(wǎng)申請,并且注意LeaveReq的addr必須為NULL!當前設(shè)備申請后,會在網(wǎng)絡(luò)層發(fā)送一個LeaveInd給協(xié)調(diào)器(路由器),協(xié)調(diào)器根據(jù)LeaveInd執(zhí)行結(jié)果返回LeaveRsp。

      因此協(xié)調(diào)器可以通過ZDO_RegisterZDOCB的函數(shù)來注冊LeaveInd后處理,比如刪除自制表項等等。

      尋址:

      為了在網(wǎng)絡(luò)中發(fā)送數(shù)據(jù)到一個設(shè)備,應(yīng)用層一般用AF_DataRequest()函數(shù)。typedef enum { afAddrNotPresent = AddrNotPresent, afAddr16Bit = Addr16Bit, afAddr64Bit = Addr64Bit, afAddrGroup = AddrGroup, afAddrBroadcast = AddrBroadcast } afAddrMode_t;

      地址模式參數(shù)是需要的,因為在ZB中,數(shù)據(jù)包能被點傳輸、多點傳輸或者廣播傳輸。點傳輸被發(fā)送到單個設(shè)備,多點傳輸一定發(fā)送到一組設(shè)備,廣播傳輸一般被發(fā)送到網(wǎng)絡(luò)中的所有設(shè)備。如下是更詳細的說明。

      點到傳輸(Unicast):這是標準地址模式,被用于發(fā)送一個數(shù)據(jù)包到網(wǎng)絡(luò)中單個已知地址的設(shè)備。這個addrMode參數(shù)被設(shè)置為Addr16Bit或者Addr64Bit,目的網(wǎng)絡(luò)地址在數(shù)據(jù)包中一同被發(fā)送。其中一個是64位IEEE地址(也可以叫MAC地址或擴展地址),一個是16位網(wǎng)絡(luò)地址(也可以叫邏輯地址或短地址)。64位地址是全球唯一的,作為設(shè)備(產(chǎn)品)的終生地址被分配。它通常被開發(fā)商或安裝的時候被指定。該地址由IEEE分配指定。16位地址在設(shè)備加入網(wǎng)絡(luò)的時候被分配,由這個網(wǎng)絡(luò)自動分配。該地址只能用與本網(wǎng)絡(luò)中,標志不同的設(shè)備間傳遞信息。

      間接尋址:數(shù)據(jù)包中的最終目的地址不識別的時候使用。該模式被AddrNotPresent設(shè)置,而且目的地址沒有被指定。代替目的地址的是:一個存儲在發(fā)送設(shè)備協(xié)議棧的“綁定表格”,該表格中有被綁定設(shè)備的地址。這個特性被調(diào)用是源于綁定。當被發(fā)送的信息包下載到協(xié)議棧時,從這個綁定表格中尋找使用的目的地址。然后該信息包被有規(guī)則的處理為點對點數(shù)據(jù)包。如果有多個(大于1)目的地址在綁定表格中被發(fā)現(xiàn),那么該數(shù)據(jù)包將被拷貝成對應(yīng)的份數(shù)分別發(fā)送給他們。

      廣播傳輸:該模式在應(yīng)用層想發(fā)送一個數(shù)據(jù)包到所有網(wǎng)絡(luò)中的所有設(shè)備時被使用。該地址模式被AddrBroadcast被設(shè)置,目的地址被設(shè)置為下列值之一: NWK_BROADCAST_SHORTADDR_DEVALL(0xFFFF)-信息將被發(fā)送到網(wǎng)絡(luò)中的所有設(shè)備(包括休眠的設(shè)備)。對于休眠的設(shè)備,這個信息將被保持在它的父節(jié)點,直到該休眠設(shè)備獲得該信息或者該信息時間溢出(在f8wConfig.cfg 中的NWK_INDIRECT_MSG_TIMEOUT選項)。

      NWK_BROADCAST_SHORTADDR_DEVRXON(0xFFFD)–該信息將被發(fā)送到網(wǎng)絡(luò)中有接收器并處于IDLE(RXONWHENIDLE)狀態(tài)下的所有設(shè)備。也就是說,除了休眠模式設(shè)備的所有設(shè)備。NWK_BROADCAST_SHORTADDR_DEVZCZR(0xFFFC)–該信息被發(fā)送到所有路由器(包括協(xié)調(diào)器)。

      組地址:該模式用于應(yīng)用層想發(fā)送一個數(shù)據(jù)包到一個設(shè)備組的時候。該地址模式被afAddrGroup設(shè)置這個組標志符。用該特性之前,在網(wǎng)絡(luò)中,組不得不被定義[看ZStack API文檔中的] aps_AddGroup()注意:組能與間接尋址一起結(jié)合使用。該目的地址在綁定表格中發(fā)現(xiàn),可以作為點對點或一個組地址。也要注意廣播地址可以當作是組被提前設(shè)置,一個簡單的組尋址的特例。例子代碼對于一個設(shè)備添加它自己到一個組標志符1: aps_Group_t group;// Assign yourself to group 1 group.ID = 0x0001;group.name[0] = 0;// This could be a human readable string aps_AddGroup(SAMPLEAPP_ENDPOINT, &group);

      一個應(yīng)用可以能想知道它自身和父節(jié)點的地址,用下面的函數(shù)可以得到設(shè)備的地址(被定義在ZStack API文檔中):

      NLME_GetShortAddr()– 返回該設(shè)備的 16 位網(wǎng)絡(luò)地址 NLME_GetExtAddr()–返回該設(shè)備的64 位擴展地址.用下面的函數(shù)可以得到該設(shè)備的父節(jié)點的地址(被定義在ZStack API文檔中)。注意該函數(shù)在協(xié)調(diào)器中不被涉及到,但是被設(shè)備父節(jié)點代替(MAC協(xié)調(diào)器): NLME_GetCoordShortAddr()– returns this device’s parent’s 16 bit short address.NLME_GetCoordExtAddr()– returns this device’s parent’s 64 bit extended address.

      第五篇:Zigbee基礎(chǔ)實驗(6)—簡單通信編程

      Zigbee基礎(chǔ)實驗(6)—簡單通信編程

      2011-07-25 20:06:19|分類: |字號 訂閱

      實驗中兩節(jié)點分別充當開關(guān)和電燈,通過在開關(guān)節(jié)點上的操作來控制電燈節(jié)點。

      源代碼: #include #include #include #include #include #include #include “hal_mcu.h” #include “hal_button.h” #include “hal_rf.h” #include “util_lcd.h”

      #include “basic_rf.h”

      #define RF_CHANNEL25// 信道選擇。

      // 定義各個參數(shù)的值

      #define PAN_ID0x2007//網(wǎng)絡(luò)ID

      #define SWITCH_ADDR0x2520//開關(guān)節(jié)點的地址

      #define LIGHT_ADDR0xBEEF//電燈節(jié)點的地址

      #define APP_PAYLOAD_LENGTH1//負載字節(jié)的長度,信息的長度。#define LIGHT_TOGGLE_CMD0//被傳送的開關(guān)命令。

      //節(jié)點狀態(tài)。0為空閑

      #define IDLE0

      #define SEND_CMD1

      // 定義該節(jié)點所承擔的任務(wù)(開關(guān)或電燈)

      #define NONE0

      #define SWITCH1

      #define LIGHT2

      #define APP_MODES2

      static uint8 pTxData[APP_PAYLOAD_LENGTH];//發(fā)送數(shù)組

      static uint8 pRxData[APP_PAYLOAD_LENGTH];//接收數(shù)組

      static basicRfCfg_t basicRfConfig;

      // 模式選擇菜單 static menuItem_t pMenuItems[] = {

      “Switch”,SWITCH,“Light”,LIGHT

      };static menu_t pMenu = {

      pMenuItems,N_ITEMS(pMenuItems)

      };

      static void appLight();//實現(xiàn)電燈功能

      static void appSwitch();//實現(xiàn)遠程開關(guān)功能

      static uint8 appSelectMode(void);//功能選擇

      static void appLight()//實現(xiàn)電燈功能 {

      halLcdWriteLine(HAL_LCD_LINE_1, “Light”);

      halLcdWriteLine(HAL_LCD_LINE_2, “Ready”);

      // 初始化射頻模塊

      basicRfConfig.myAddr = LIGHT_ADDR;//網(wǎng)絡(luò)地址

      if(basicRfInit(&basicRfConfig)==FAILED){

      HAL_ASSERT(FALSE);//初始化錯誤處理

      }

      basicRfReceiveOn();//打開接收功能。

      //死循環(huán)

      while(TRUE){

      while(!basicRfPacketIsReady());

      if(basicRfReceive(pRxData, APP_PAYLOAD_LENGTH, NULL)>0){//如果接收到數(shù)據(jù)

      if(pRxData[0] == LIGHT_TOGGLE_CMD){

      halLedToggle(1);//開關(guān)改變狀態(tài)

      }

      }

      }

      }

      static void appSwitch()//實現(xiàn)遠程開關(guān) {

      halLcdWriteLine(HAL_LCD_LINE_1, “Switch”);//屏幕輸出

      halLcdWriteLine(HAL_LCD_LINE_2, “Joystick Push”);

      halLcdWriteLine(HAL_LCD_LINE_3, “Send Command”);

      pTxData[0] = LIGHT_TOGGLE_CMD;//需要發(fā)送的數(shù)據(jù)

      // 初始化

      basicRfConfig.myAddr = SWITCH_ADDR;

      if(basicRfInit(&basicRfConfig)==FAILED){

      HAL_ASSERT(FALSE);//出錯處理

      }

      basicRfReceiveOff();//關(guān)閉接收機

      // 死循環(huán)

      while(TRUE){

      if(halJoystickPushed()){//當按鍵按下時觸發(fā)

      basicRfSendPacket(LIGHT_ADDR, pTxData, APP_PAYLOAD_LENGTH);//發(fā)送命令

      }

      }

      }void main(void)

      {

      uint8 appMode = NONE;//模式變量

      // 設(shè)置網(wǎng)絡(luò)ID和信道

      basicRfConfig.panId = PAN_ID;

      basicRfConfig.channel = RF_CHANNEL;

      basicRfConfig.ackRequest = TRUE;

      //初始化其他設(shè)備

      halBoardInit();

      halJoystickInit();

      // 初始化射頻模塊

      if(halRfInit()==FAILED){

      HAL_ASSERT(FALSE);

      }

      halLedSet(1);//LED1燈亮,提示節(jié)點已上電

      utilPrintLogo(“Light Switch”);

      // 等待用戶按下S1進入菜單

      while(halButtonPushed()!=HAL_BUTTON_1);

      halMcuWaitMs(350);//延時

      halLcdClear();//清屏

      // 設(shè)置該節(jié)點是開關(guān)還是電燈

      appMode = appSelectMode();

      halLcdClear();

      // 模塊開始工作

      if(appMode == SWITCH){

      appSwitch();

      }

      else if(appMode == LIGHT){

      appLight();

      }

      //如果沒有定義該節(jié)點的功能,則LED燈不斷閃爍

      HAL_ASSERT(FALSE);

      }

      static uint8 appSelectMode(void)//模式選擇 {

      halLcdWriteLine(1, “Device Mode: ”);

      return utilMenuSelect(&pMenu);//通過調(diào)用頭文件實現(xiàn)功能選擇

      }

      實驗總結(jié):

      這個實驗雖然功能非常簡單,只是通過按下開關(guān)節(jié)點的按鍵來控制電燈節(jié)點LED的亮或滅,但是通過這個實驗可以了解節(jié)點間通信的基本思路。

      原代碼中有許多可有可無的冗余代碼,上面的代碼經(jīng)過代碼中很多都是調(diào)用頭文件,在這里就不在一一羅列,只在代碼注釋中注明該調(diào)用的功能。這些調(diào)用都是一些非常簡單的操作,寫入頭文件調(diào)用是為了增加代碼可讀性。

      baseRF通信基本流程

      1.初始化網(wǎng)絡(luò)地址,打開接收機或關(guān)閉接收機。

      2.初始化basicRfConfig,確定網(wǎng)絡(luò)ID、信道、是否需要應(yīng)答、是否采用加密機制等。

      3.初始化周邊設(shè)備,如時鐘、各個I/O口等。

      4.事件的處理,如發(fā)送報文或接受報文后的數(shù)據(jù)處理等。

      下載Zigbee心得體會word格式文檔
      下載Zigbee心得體會.doc
      將本文檔下載到自己電腦,方便修改和收藏,請勿使用迅雷等下載。
      點此處下載文檔

      文檔為doc格式


      聲明:本文內(nèi)容由互聯(lián)網(wǎng)用戶自發(fā)貢獻自行上傳,本網(wǎng)站不擁有所有權(quán),未作人工編輯處理,也不承擔相關(guān)法律責(zé)任。如果您發(fā)現(xiàn)有涉嫌版權(quán)的內(nèi)容,歡迎發(fā)送郵件至:645879355@qq.com 進行舉報,并提供相關(guān)證據(jù),工作人員會在5個工作日內(nèi)聯(lián)系你,一經(jīng)查實,本站將立刻刪除涉嫌侵權(quán)內(nèi)容。

      相關(guān)范文推薦

        zigbee專業(yè)認識實習(xí)調(diào)研報告

        專業(yè)認識實習(xí)調(diào)研報告 1 ZigBee的含義 ZigBee技術(shù)是一種新興的介于無線標記技術(shù)與藍牙技術(shù)間的短距離、低復(fù)雜度、低功耗、低數(shù)據(jù)速率、低成本的無線網(wǎng)絡(luò)技術(shù),通過無線電波以......

        Zigbee網(wǎng)絡(luò)原理與應(yīng)用教案[精選]

        計算機與信息技術(shù)學(xué)院 課程教案 專業(yè)物聯(lián)網(wǎng)工程 課程Zigbee網(wǎng)絡(luò)原理與應(yīng)用 講授人姚建峰 2015 年 9月10日 (一)課程名稱: Zigbee網(wǎng)絡(luò)原理與應(yīng)用 (二)學(xué)時學(xué)分:周4學(xué)時,3學(xué)分 (......

        基于ZigBee的精密儀器實驗室溫濕度測控系統(tǒng)

        龍源期刊網(wǎng) http://.cn 基于ZigBee的精密儀器實驗室溫濕度測控系統(tǒng) 作者:袁金正 石奮蘇 來源:《現(xiàn)代電子技術(shù)》2013年第04期 摘 要: 針對精密儀器實驗室對溫濕度的嚴格要求,和在......

        ZigBee芯片廠商及應(yīng)用前景分析5篇范文

        解析ZigBee上游芯片廠商 ZigBee技術(shù)是一種近距離、低復(fù)雜度、低功耗、低速率、低成本的雙向無線通訊技術(shù)。主要用于距離短、功耗低且傳輸速率不高的各種電子設(shè)備之間進行數(shù)......

        資深移動通信工程師學(xué)習(xí)zigbee心得

        2010-11-12物理層的PIB是什么概念?有什么用?2010-11-18物理層的CCA. 物理層是怎么知道信道的被占用情況.AODV+ENY是什么概念?AODVjr協(xié)議在考慮了無線節(jié)點的有限移動性之......

        基于ZigBee的火災(zāi)報警系統(tǒng)設(shè)計-開題報告

        本科畢業(yè)設(shè)計(論文)開題報告 課題名稱:基于ZigBee的災(zāi)報警系統(tǒng)設(shè)計 學(xué)院(系): 年級專業(yè): 學(xué)生姓名: 指導(dǎo)教師: 完成日期: 一、綜述本課題國內(nèi)外研究動態(tài),說明選題的依據(jù)和意義 隨著經(jīng)濟......

        ZigBee無線網(wǎng)絡(luò)技術(shù)的自動控制系統(tǒng)研究論文[全文5篇]

        前言隨著自動控制系統(tǒng)的發(fā)展,其在越來越多的行業(yè)中發(fā)揮了重要的作用。當前系統(tǒng)中的設(shè)備通過電纜來連接,從而形成了很大的限制性,為了拓寬系統(tǒng)控制的范圍,在系統(tǒng)中應(yīng)用了ZigBee無......

        物聯(lián)網(wǎng)簡介及基于ZigBee的無線傳感器網(wǎng)絡(luò)

        物聯(lián)網(wǎng)簡介及基于ZigBee的無線傳感器網(wǎng)絡(luò) 摘 要 物聯(lián)網(wǎng),是繼計算機、互聯(lián)網(wǎng)與移動通信網(wǎng)之后的又一次信息產(chǎn)業(yè)浪潮,是一個全新的技術(shù)領(lǐng)域,給IT和通信帶來了廣闊的新市場。積......