版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
項目四ZigBee無線傳感器網(wǎng)絡棧數(shù)據(jù)通信項目四ZigBee無線傳感器網(wǎng)絡棧數(shù)據(jù)通信知識目標:1.掌握zigbee無線傳感器網(wǎng)絡的信道、網(wǎng)絡號、設備類型、地址分配等知識。2.了解zigbee無線傳感器網(wǎng)絡數(shù)據(jù)包的結構和傳輸流程。3.掌握zigbee無線傳感器網(wǎng)絡收發(fā)數(shù)據(jù)的實現(xiàn)方法。項目四ZigBee無線傳感器數(shù)據(jù)通信知識目標:項目四ZigBee無線傳感器數(shù)據(jù)通信技能目標:1.掌握zigbee無線傳感器網(wǎng)絡的組成及組網(wǎng)實現(xiàn)的方法。項目四ZigBee無線傳感器網(wǎng)絡數(shù)據(jù)通信技能目標:項目四ZigBee無線傳感器網(wǎng)絡數(shù)據(jù)通信①組網(wǎng):調用Z-Stack協(xié)議棧提供的網(wǎng)絡組建函數(shù)及網(wǎng)絡加入函數(shù),從而實現(xiàn)網(wǎng)絡的建立和節(jié)點的加入。②發(fā)送:當需要進行數(shù)據(jù)發(fā)送時,調用協(xié)議棧提供的無線數(shù)據(jù)發(fā)送函數(shù),實現(xiàn)數(shù)據(jù)的發(fā)送。③接收:當有數(shù)據(jù)包到達時,通過調用協(xié)議棧提供的無線數(shù)據(jù)接收函數(shù),實現(xiàn)數(shù)據(jù)的接收。。4.1ZigBee無線數(shù)據(jù)傳輸①組網(wǎng):調用Z-Stack協(xié)議棧提供的網(wǎng)絡組建函數(shù)及網(wǎng)絡加入4.1.1開發(fā)基礎1.設備類型在zigbee無線傳感網(wǎng)絡中存在三種邏輯設備類型:協(xié)調器(Coordinator)、路由器(Router)和終端設備(End-Device)。4.1ZigBee無線數(shù)據(jù)傳輸4.1.1開發(fā)基礎4.1ZigBee無線數(shù)據(jù)傳輸4.1.1開發(fā)基礎1.設備類型①協(xié)調器協(xié)調器是一個Zigbee網(wǎng)絡的第一個開始的設備,或稱為zigbee網(wǎng)絡的啟動或網(wǎng)絡的建立設備。協(xié)調器節(jié)點選擇一個信道和網(wǎng)絡標志符,然后開始建立一個網(wǎng)絡。協(xié)調器設備在網(wǎng)絡中還可以有其他作用,比如建立安全機制、網(wǎng)絡中的綁定的建立等等。4.1ZigBee無線數(shù)據(jù)傳輸4.1.1開發(fā)基礎4.1ZigBee無線數(shù)據(jù)傳輸4.1.1開發(fā)基礎1.設備類型②路由節(jié)點允許節(jié)點加入網(wǎng)絡;負責數(shù)據(jù)的轉發(fā)功能;一個路由節(jié)點可以與若干個路由節(jié)點或終端節(jié)點通信。Zigbee星型網(wǎng)絡不支持Zigbee路由。一般來說,路由器需要一直處于工作狀態(tài),功耗較高,所以需要穩(wěn)定連續(xù)的電源供電(區(qū)別于干電池供電)。4.1ZigBee無線數(shù)據(jù)傳輸4.1.1開發(fā)基礎4.1ZigBee無線數(shù)據(jù)傳輸4.1.1開發(fā)基礎1.設備類型③終端節(jié)點只需要負責加入已建立的指定網(wǎng)絡即可,終端節(jié)點不具有網(wǎng)絡維護功能。它的存儲容量要求最少,所以它可以根據(jù)自己功能需要休眠或喚醒,因此為電池供電設備,其可以實現(xiàn)Zigbee低功耗設計。一般來說,該設備需要的內存較少(特別是內部RAM)。4.1ZigBee無線數(shù)據(jù)傳輸4.1.1開發(fā)基礎4.1ZigBee無線數(shù)據(jù)傳輸4.1.1開發(fā)基礎1.設備類型協(xié)調節(jié)點啟動時,根據(jù)定義的搜索信道(DDEFAULT_CHANLIST)和PANID(DZDAPP_CONFIG_PAN_ID)建立網(wǎng)絡;如果PANID定義為0xFFFF,則隨機產生PANID。路由節(jié)點和終端節(jié)點啟動后,搜索指定的PANID(DZDAPP_CONFIG_PAN_ID)網(wǎng)絡,并加入網(wǎng)絡。如果PANID定義為0xFFFF,則可加入其他網(wǎng)絡。4.1ZigBee無線數(shù)據(jù)傳輸4.1.1開發(fā)基礎4.1ZigBee無線數(shù)據(jù)傳輸4.1.1開發(fā)基礎1.設備類型對每個節(jié)點有兩個任務,具體如下。①執(zhí)行指定的網(wǎng)絡功能函數(shù)。②配置確定的參數(shù)到指定的值。網(wǎng)絡功能的設置確定了該節(jié)點的類型,參數(shù)配置和指定的值確定了堆棧的模式。4.1ZigBee無線數(shù)據(jù)傳輸4.1.1開發(fā)基礎4.1ZigBee無線數(shù)據(jù)傳輸4.1.1開發(fā)基礎2.堆棧模式需要被配置為指定值的堆棧參數(shù),連同這些值被稱為堆棧模式(StackProfile)。這些堆棧模式參數(shù)被Zigbee聯(lián)盟定義指定。在同一個網(wǎng)絡中的設備必須符合同一個堆棧模式(同一個網(wǎng)絡中所有設備的堆棧模式配置參數(shù)必須一致)。4.1ZigBee無線數(shù)據(jù)傳輸4.1.1開發(fā)基礎4.1ZigBee無線數(shù)據(jù)傳輸4.1.1開發(fā)基礎3.信道Chanel在zigbee標準協(xié)議中,2.4GHz的射頻頻段被分為16個獨立的信道。每一個設備都有一個-DEFAULT_CHANLIST的默認信道集(0x0B~0x1A)4.1ZigBee無線數(shù)據(jù)傳輸4.1.1開發(fā)基礎4.1ZigBee無線數(shù)據(jù)傳輸4.1.1開發(fā)基礎3.信道Chanel4.1ZigBee無線數(shù)據(jù)傳輸4.1.1開發(fā)基礎4.1ZigBee無線數(shù)據(jù)傳輸4.1.1開發(fā)基礎3.信道Chanel
f8w2530.cxl:該文件包含了CC2530單片機的鏈接控制指令,包括堆棧的大小、內存分配等,一般情況下不需要修改。
f8wConfig.cfg:該文件包含了信道選擇、網(wǎng)絡ID號等有關的鏈接命令。每一個設備都有一個DEFFAULT_CHANLIST的默認信道集。要選擇哪個信道,把前面的“//”注釋刪除,其余的保留即可。例如我們的信道默認為-DDEFAULT_CHANLIST=0x00000800//11-0x0B,只需刪除前面“//”注釋符即可。4.1ZigBee無線數(shù)據(jù)傳輸4.1.1開發(fā)基礎4.1ZigBee無線數(shù)據(jù)傳輸4.1.1開發(fā)基礎4.PANIDPANID指網(wǎng)絡編號,用于區(qū)分不同的Zigbee網(wǎng)絡。設備的PANID值由DZDAPP_CONFIG_PAN_ID來設置,如果DZDAPP_CONFIG_PAN_ID設置為0xFFFF,則協(xié)調器將產生一個隨機的PAN_ID。4.1ZigBee無線數(shù)據(jù)傳輸4.1.1開發(fā)基礎4.1ZigBee無線數(shù)據(jù)傳輸4.1.1開發(fā)基礎4.PANID設備的PANID值由DZDAPP_CONFIG_PAN_ID來設置,如果DZDAPP_CONFIG_PAN_ID設置為0xFFFF,則協(xié)調器將產生一個隨機的PAN_ID。4.1ZigBee無線數(shù)據(jù)傳輸4.1.1開發(fā)基礎4.1ZigBee無線數(shù)據(jù)傳輸4.1.1開發(fā)基礎4.PANID設備的PANID值由DZDAPP_CONFIG_PAN_ID來設置,如果DZDAPP_CONFIG_PAN_ID設置為0xFFFF,則協(xié)調器將產生一個隨機的PAN_ID。4.1ZigBee無線數(shù)據(jù)傳輸4.1.1開發(fā)基礎4.1ZigBee無線數(shù)據(jù)傳輸4.1.1開發(fā)基礎5.描述符Zigbee網(wǎng)絡中的所有設備都有一些描述符,用來描述設備類型和應用方式。描述符包含節(jié)點描述符、電源描述符和默認用戶描述符等,通過改變這些描述符可以定義自己的設備。描述符的定義和創(chuàng)建配置項在文件ZDOConfig.h和ZDOConfig.c中完成,描述符信息可以被網(wǎng)絡中的其他設備讀取。4.1ZigBee無線數(shù)據(jù)傳輸4.1.1開發(fā)基礎4.1ZigBee無線數(shù)據(jù)傳輸4.1.2工作流程①調用協(xié)議棧提供的組網(wǎng)函數(shù)、加入網(wǎng)絡函數(shù),實現(xiàn)網(wǎng)絡的建立與節(jié)點的加入。②發(fā)送設備調用協(xié)議棧提供的無線數(shù)據(jù)發(fā)送函數(shù),實現(xiàn)數(shù)據(jù)的發(fā)送。③接收設備調用協(xié)議棧提供的無線數(shù)據(jù)接收函數(shù),實現(xiàn)數(shù)據(jù)的接收。4.1ZigBee無線數(shù)據(jù)傳輸4.1.2工作流程4.1ZigBee無線數(shù)據(jù)傳輸4.1.3數(shù)據(jù)發(fā)送在Zigbee協(xié)議棧中進行數(shù)據(jù)發(fā)送可以調用AF_DataRequest函數(shù)實現(xiàn),該函數(shù)會調用協(xié)議棧里面與硬件相關的函數(shù)最終將數(shù)據(jù)通過無線發(fā)送出去。只需要掌握AF_DataRequest函數(shù)的使用方法即可。afStatus_tAF_DataRequest(afAddrType_t*dstAddr,endPointDesc_t*srcEP,uint16cID,uint16len,uint8*buf,uint8*transID,uint8options,uint8radius)4.1ZigBee無線數(shù)據(jù)傳輸4.1.3數(shù)據(jù)發(fā)送4.1ZigBee無線數(shù)據(jù)傳輸4.1.4數(shù)據(jù)接收當協(xié)調器收到數(shù)據(jù)后,操作系統(tǒng)會將數(shù)據(jù)封裝成一個消息,然后放入消息隊列中,每個消息都有自己的消息ID,標識接收到新數(shù)據(jù)的消息的ID是AF_INCOMING_MSG_CMD,其中AF_INCOMING_MSG_CMD的值是0x1A,這是在Zigbee協(xié)議棧中定義好的,用戶不可更改。Zigbee協(xié)議棧中AF_INCOMING_MSG_CMD宏的定義(在ZComDef.h文件中)4.1ZigBee無線數(shù)據(jù)傳輸4.1.4數(shù)據(jù)接收4.1ZigBee無線數(shù)據(jù)傳輸4.1.4數(shù)據(jù)接收接收方接收成功,協(xié)議棧將觸發(fā)數(shù)據(jù)包接收事件:AF_INCOMING_MSG_CMD------>處理函數(shù)SampleApp_ProcessEvent()。4.1ZigBee無線數(shù)據(jù)傳輸4.1.4數(shù)據(jù)接收4.1ZigBee無線數(shù)據(jù)傳輸4.1.4數(shù)據(jù)接收①對方傳遞上來的是什么類型的數(shù)據(jù)?數(shù)據(jù)的事件類型(簇ID)由pkt->clusterId決定。②傳遞上來的數(shù)據(jù)內容是什么?數(shù)據(jù)內容由pkt->cmd.Data決定。4.1ZigBee無線數(shù)據(jù)傳輸4.1.4數(shù)據(jù)接收4.1ZigBee無線數(shù)據(jù)傳輸4.2.1Zigbee數(shù)據(jù)包的結構4.2ZigBee數(shù)據(jù)包4.2.1Zigbee數(shù)據(jù)包的結構4.2ZigBee數(shù)4.2.2Zigbee數(shù)據(jù)傳輸流程在這里可以看出在網(wǎng)絡層管理實體一旦選擇了一個PAN標識符,就會立刻選擇一個0x0000的16位網(wǎng)絡地址,并且設置MAC層的macShortAddressPIB屬性,使其等于所選擇的網(wǎng)絡地址。網(wǎng)絡層數(shù)據(jù)包中,體現(xiàn)了在網(wǎng)絡層中的數(shù)據(jù)以及格式,網(wǎng)絡層數(shù)據(jù)包如圖4.9所示。網(wǎng)絡層中也體現(xiàn)了源地址和目的地址與APS層基本相同。它們最大的不同是數(shù)據(jù)中加入了網(wǎng)絡層包,附加了網(wǎng)絡層數(shù)據(jù)。4.2ZigBee數(shù)據(jù)包4.2.2Zigbee數(shù)據(jù)傳輸流程4.2ZigBee數(shù)4.2.3數(shù)據(jù)包格式4.2ZigBee數(shù)據(jù)包PFY幀PFY凈荷PHR凈荷SHR凈荷MAC幀MHRR凈荷MFRR凈荷MAC凈荷MHRR凈荷NWK凈荷AHRMIC凈荷APS凈荷輔助幀HDRNWK幀APS幀4.2.3數(shù)據(jù)包格式4.2ZigBee數(shù)據(jù)包PFY幀P4.3.1串口概述1.通用異步收發(fā)器UART異步串行通信接口是嵌入式系統(tǒng)最常用的接口,可用來與上位機或其他外部設備進行數(shù)據(jù)通信。UART是異步串行通信的總稱,它允許在串行鏈路上進行全雙工的通信,輸入/輸出電平為TTL電平。一般來說,全雙工UART定義了一個串行發(fā)送引腳(TxD)和一個串行接收引腳(RxD),可以在同一時刻發(fā)送和接收數(shù)據(jù)。4.3利用串口收發(fā)數(shù)據(jù)4.3.1串口概述4.3利用串口收發(fā)數(shù)據(jù)4.3.1串口概述2.同步串行口SPI和I2C①串行外設端口(SerialPeripheralInterface,SPI)是一種同步串行外設端口,它與各種外圍設備以串行方式進行通信、交換信息。SPI支持全雙工同步傳輸,可選擇以8或16位傳輸幀格式進行傳輸,支持多種模式。②I2C總線是一個多主機的總線。這就是說I2C總線可以連接多于一個能控制它的器件。4.3利用串口收發(fā)數(shù)據(jù)4.3.1串口概述4.3利用串口收發(fā)數(shù)據(jù)4.3.2收發(fā)數(shù)據(jù)的實現(xiàn)方法①初始化串口,包括設置波特率、中斷等。②向發(fā)送緩沖區(qū)發(fā)送數(shù)據(jù)或者從接收緩沖區(qū)讀取數(shù)據(jù)。4.3利用串口收發(fā)數(shù)據(jù)4.3.2收發(fā)數(shù)據(jù)的實現(xiàn)方法4.3利用串口收發(fā)數(shù)據(jù)4.3.2收發(fā)數(shù)據(jù)的實現(xiàn)方法①HalUARTOpen()函數(shù)原型:uint8HalUARTOpen(uint8port,halUARTCfg_t*config);功能描述:打開串口,對串口進行初始化。4.3利用串口收發(fā)數(shù)據(jù)4.3.2收發(fā)數(shù)據(jù)的實現(xiàn)方法4.3利用串口收發(fā)數(shù)據(jù)4.3.2收發(fā)數(shù)據(jù)的實現(xiàn)方法②HalUARTRead()函數(shù)原型:uint8HalUARTRead(uint8port,uint8*buf,uint16len);功能描述:從串口讀取數(shù)據(jù),并將其存放在buf數(shù)組中。4.3利用串口收發(fā)數(shù)據(jù)4.3.2收發(fā)數(shù)據(jù)的實現(xiàn)方法4.3利用串口收發(fā)數(shù)據(jù)4.3.2收發(fā)數(shù)據(jù)的實現(xiàn)方法③HalUARTWrite()函數(shù)原型:uint8HalUARTWrite(uint8port,uint8*buf,uintlen);功能描述:寫信息到串口。4.3利用串口收發(fā)數(shù)據(jù)4.3.2收發(fā)數(shù)據(jù)的實現(xiàn)方法4.3利用串口收發(fā)數(shù)據(jù)4.3.3協(xié)議棧中的串口操作Zigbee協(xié)議棧中的串口操作主要分為3個步驟。1.串口初始。2.登記任務。3.串口發(fā)送。4.3利用串口收發(fā)數(shù)據(jù)4.3.3協(xié)議棧中的串口操作4.3利用串口收發(fā)數(shù)據(jù)4.3.3協(xié)議棧中的串口操作Zigbee協(xié)議棧中的串口操作主要分為3個步驟。1.串口初始。我們打開APP目錄下的OSAL_SampleApp.c文件,找到SampleApp_Init()任務函數(shù)進行MT層串口初始化。添加MT_UartInit();語句。4.3利用串口收發(fā)數(shù)據(jù)4.3.3協(xié)議棧中的串口操作4.3利用串口收發(fā)數(shù)據(jù)4.3.3協(xié)議棧中的串口操作Zigbee協(xié)議棧中的串口操作主要分為3個步驟。2.登記任務。就是把串口事件通過task_id登記在SampleApp_Init()里。MT_UartRegisterTaskID(task_id);//登記任務號4.3利用串口收發(fā)數(shù)據(jù)4.3.3協(xié)議棧中的串口操作4.3利用串口收發(fā)數(shù)據(jù)4.3.3協(xié)議棧中的串口操作3.串口發(fā)送。我們在剛剛添加初始化代碼的后面加入一條上面提示HelloWorld的語句。HalUARTWrite(0,"HelloWorld\n",12);(串口0,‘字符’,字符個數(shù))。再在預編譯加入以下一些內容。ZIGBEEPROZTOOL_P1MT_TASKMT_SYS_FUNCMT_ZDO_FUNC4.3利用串口收發(fā)數(shù)據(jù)4.3.3協(xié)議棧中的串口操作4.3利用串口收發(fā)數(shù)據(jù)4.3.3協(xié)議棧中的串口操作提示:需要在SampleApp.c這個文件里加入#include"MT_UART.h"頭文件語句。如果不想要的可以在預編譯地方把MT相關內容注釋,不再顯示亂碼。ZIGBEEPROZTOOL_P1xMT_TASKxMT_SYS_FUNCxMT_ZDO_FUNC4.3利用串口收發(fā)數(shù)據(jù)4.3.3協(xié)議棧中的串口操作4.3利用串口收發(fā)數(shù)據(jù)非易失性存儲器(NonVolatile,NV):即使系統(tǒng)斷電后,存儲在存儲器中的數(shù)據(jù)也不會丟失。在Zigbee協(xié)議棧中NV存儲器主要用于保存網(wǎng)絡的配置參數(shù)(如網(wǎng)絡地址等)。非易失性存儲器是指能夠永久保存信息的存儲器,設備在意外復位或者斷電的情況下不會丟失信息。協(xié)議棧在OSAL文件夾下有OSAL_Nv.h和OSAL_Nv.c文件。4.4非易失性存儲器非易失性存儲器(NonVolatile,NV):即使系統(tǒng)斷4.4.1NV操作函數(shù)①osal_nv_item_init()函數(shù)原型:uintosal_nv_item_init(uint16id,uint16len,void*buf)功能描述:NV條目初始化函數(shù)。4.4非易失性存儲器4.4.1NV操作函數(shù)4.4非易失性存儲器4.4.1NV操作函數(shù)②osal_nv_write()函數(shù)原型:uint8osal_nv_write(uint16id,uint16ndx,uint16len,void*buf)。功能描述:NV寫入函數(shù)。uint16id表示NV條目ID號;uint16ndx距離條目開始地址的偏移量;uint16len表示要寫入的數(shù)據(jù)長度;void*buf表示指向存放寫入數(shù)據(jù)緩沖區(qū)的指針。4.4非易失性存儲器4.4.1NV操作函數(shù)4.4非易失性存儲器4.4.1NV操作函數(shù)③osal_nv_read()函數(shù)原型:uint8osal_nv_read(uint16id,uint16len,void*buf)。功能描述:NV讀取函數(shù)。uint16id表示NV條目ID號;uint16ndx距離條目開始地址的偏移量;uint16len表示要讀取的數(shù)據(jù)長度;void*buf表示存放讀取數(shù)據(jù)緩沖區(qū)的指針。4.4非易失性存儲器4.4.1NV操作函數(shù)4.4非易失性存儲器4.4.2NV基本操作1.網(wǎng)絡層非易失性存儲器Z-Stack將一些網(wǎng)絡相關的重要信息都存儲到非易失性存儲器,保證在Zigbee設備意外復位或者斷電后重新啟動時,設備能夠自動恢復到原來網(wǎng)絡中。為了啟用這個功能,需要包含NV_RESTORE 編譯選項。注意,在一個最終的Zigbee網(wǎng)絡中,這個選項必須始終啟用。關閉這個選項的功能主要是為了開發(fā)調試。4.4非易失性存儲器4.4.2NV基本操作4.4非易失性存儲器4.4.2NV基本操作2.應用層非易失性存儲器NV除了用于保存網(wǎng)絡信息,也可以用來保存應用程序的特定信息,用戶描述符就是一個很好的例子。NV中用戶描述符ID項是ZDO_NV_UserDesc(在ZComDef.h定義)。在ZDApp_Init()函數(shù)中,調用函數(shù)Osal_nv_item_init()來初始化用戶描述符所需要的NV空間。如果之前還沒有建立這個NV空間,這個初始化函數(shù)將為用戶描述符保留空間,并且將它設置為默認值ZDO_DefaultUserDescriptor。4.4非易失性存儲器4.4.2NV基本操作4.4非易失性存儲器4.4.2NV基本操作2.應用層非易失性存儲器注意:如果用戶應用程序要創(chuàng)建自己的NV項,那么必須從應用層范圍0x0201~0x0FFF中選擇ID。4.4非易失性存儲器4.4.2NV基本操作4.4非易失性存儲器4.4.3NV基礎實驗NV存儲器主要的操作有初始化NV存儲器、讀NV存儲器、寫NV存儲器。這些都在OSAL文件夾下中的OSAL_Nv.h和OSAL.h文件中定義和實現(xiàn)。4.4非易失性存儲器4.4.3NV基礎實驗4.4非易失性存儲器4.4.4NV基礎實驗效果在ZigBee協(xié)議棧中,其他需要保存的一些常量數(shù)據(jù)都是使用上述方法將其存儲到NV存儲器中,這樣就可以實現(xiàn)一些關鍵數(shù)據(jù)的保存,特別是網(wǎng)絡參數(shù)的保存。4.4非易失性存儲器4.4.4NV基礎實驗效果4.4非易失性存儲器4.5.1幀格式介紹4.5組網(wǎng)驗證4.5.1幀格式介紹4.5組網(wǎng)驗證4.5.1幀格式介紹4.5組網(wǎng)驗證4.5.1幀格式介紹4.5組網(wǎng)驗證4.5.2組網(wǎng)測試當終端傳感器節(jié)點入網(wǎng)以后,協(xié)調器會給終端傳感器節(jié)點分配16位的短地址。當協(xié)調器收到終端傳感器節(jié)點發(fā)送的數(shù)據(jù)信息后,通過串口向PC機發(fā)送。其中,串口傳輸設置為:115200b/s,1位停止位,無校驗位。4.5組網(wǎng)驗證4.5.2組網(wǎng)測試4.5組網(wǎng)驗證1.Zigbee無線傳感器網(wǎng)絡是大量的傳感器節(jié)點以自組織或者多跳的方式構成的無線網(wǎng)絡。2.Zigbee無線傳感器網(wǎng)絡是構成物聯(lián)網(wǎng)感知層和網(wǎng)絡層的一部分,是物聯(lián)網(wǎng)的重要組成部分。3.傳感器負責在傳感器網(wǎng)絡中感知和采集數(shù)據(jù),它處于zigbee無線傳感器網(wǎng)絡的感知層,是識別物體、采集信息的設備。4.Zigbee無線傳感器網(wǎng)絡由傳感器節(jié)點、匯聚節(jié)點和任務管理節(jié)點等幾部分組成。5.Zigbee無線傳感器網(wǎng)絡的協(xié)議棧主要分為物理層、數(shù)據(jù)鏈路層(MAC)、網(wǎng)絡層、傳輸層和應用層5層。小結1.Zigbee無線傳感器網(wǎng)絡是大量的傳感器節(jié)點以自組織或者Thanks物聯(lián)網(wǎng)應用的精彩未來有待你的參與Thanks物聯(lián)網(wǎng)應用的精彩未來有待你的參與項目四ZigBee無線傳感器網(wǎng)絡棧數(shù)據(jù)通信項目四ZigBee無線傳感器網(wǎng)絡棧數(shù)據(jù)通信知識目標:1.掌握zigbee無線傳感器網(wǎng)絡的信道、網(wǎng)絡號、設備類型、地址分配等知識。2.了解zigbee無線傳感器網(wǎng)絡數(shù)據(jù)包的結構和傳輸流程。3.掌握zigbee無線傳感器網(wǎng)絡收發(fā)數(shù)據(jù)的實現(xiàn)方法。項目四ZigBee無線傳感器數(shù)據(jù)通信知識目標:項目四ZigBee無線傳感器數(shù)據(jù)通信技能目標:1.掌握zigbee無線傳感器網(wǎng)絡的組成及組網(wǎng)實現(xiàn)的方法。項目四ZigBee無線傳感器網(wǎng)絡數(shù)據(jù)通信技能目標:項目四ZigBee無線傳感器網(wǎng)絡數(shù)據(jù)通信①組網(wǎng):調用Z-Stack協(xié)議棧提供的網(wǎng)絡組建函數(shù)及網(wǎng)絡加入函數(shù),從而實現(xiàn)網(wǎng)絡的建立和節(jié)點的加入。②發(fā)送:當需要進行數(shù)據(jù)發(fā)送時,調用協(xié)議棧提供的無線數(shù)據(jù)發(fā)送函數(shù),實現(xiàn)數(shù)據(jù)的發(fā)送。③接收:當有數(shù)據(jù)包到達時,通過調用協(xié)議棧提供的無線數(shù)據(jù)接收函數(shù),實現(xiàn)數(shù)據(jù)的接收。。4.1ZigBee無線數(shù)據(jù)傳輸①組網(wǎng):調用Z-Stack協(xié)議棧提供的網(wǎng)絡組建函數(shù)及網(wǎng)絡加入4.1.1開發(fā)基礎1.設備類型在zigbee無線傳感網(wǎng)絡中存在三種邏輯設備類型:協(xié)調器(Coordinator)、路由器(Router)和終端設備(End-Device)。4.1ZigBee無線數(shù)據(jù)傳輸4.1.1開發(fā)基礎4.1ZigBee無線數(shù)據(jù)傳輸4.1.1開發(fā)基礎1.設備類型①協(xié)調器協(xié)調器是一個Zigbee網(wǎng)絡的第一個開始的設備,或稱為zigbee網(wǎng)絡的啟動或網(wǎng)絡的建立設備。協(xié)調器節(jié)點選擇一個信道和網(wǎng)絡標志符,然后開始建立一個網(wǎng)絡。協(xié)調器設備在網(wǎng)絡中還可以有其他作用,比如建立安全機制、網(wǎng)絡中的綁定的建立等等。4.1ZigBee無線數(shù)據(jù)傳輸4.1.1開發(fā)基礎4.1ZigBee無線數(shù)據(jù)傳輸4.1.1開發(fā)基礎1.設備類型②路由節(jié)點允許節(jié)點加入網(wǎng)絡;負責數(shù)據(jù)的轉發(fā)功能;一個路由節(jié)點可以與若干個路由節(jié)點或終端節(jié)點通信。Zigbee星型網(wǎng)絡不支持Zigbee路由。一般來說,路由器需要一直處于工作狀態(tài),功耗較高,所以需要穩(wěn)定連續(xù)的電源供電(區(qū)別于干電池供電)。4.1ZigBee無線數(shù)據(jù)傳輸4.1.1開發(fā)基礎4.1ZigBee無線數(shù)據(jù)傳輸4.1.1開發(fā)基礎1.設備類型③終端節(jié)點只需要負責加入已建立的指定網(wǎng)絡即可,終端節(jié)點不具有網(wǎng)絡維護功能。它的存儲容量要求最少,所以它可以根據(jù)自己功能需要休眠或喚醒,因此為電池供電設備,其可以實現(xiàn)Zigbee低功耗設計。一般來說,該設備需要的內存較少(特別是內部RAM)。4.1ZigBee無線數(shù)據(jù)傳輸4.1.1開發(fā)基礎4.1ZigBee無線數(shù)據(jù)傳輸4.1.1開發(fā)基礎1.設備類型協(xié)調節(jié)點啟動時,根據(jù)定義的搜索信道(DDEFAULT_CHANLIST)和PANID(DZDAPP_CONFIG_PAN_ID)建立網(wǎng)絡;如果PANID定義為0xFFFF,則隨機產生PANID。路由節(jié)點和終端節(jié)點啟動后,搜索指定的PANID(DZDAPP_CONFIG_PAN_ID)網(wǎng)絡,并加入網(wǎng)絡。如果PANID定義為0xFFFF,則可加入其他網(wǎng)絡。4.1ZigBee無線數(shù)據(jù)傳輸4.1.1開發(fā)基礎4.1ZigBee無線數(shù)據(jù)傳輸4.1.1開發(fā)基礎1.設備類型對每個節(jié)點有兩個任務,具體如下。①執(zhí)行指定的網(wǎng)絡功能函數(shù)。②配置確定的參數(shù)到指定的值。網(wǎng)絡功能的設置確定了該節(jié)點的類型,參數(shù)配置和指定的值確定了堆棧的模式。4.1ZigBee無線數(shù)據(jù)傳輸4.1.1開發(fā)基礎4.1ZigBee無線數(shù)據(jù)傳輸4.1.1開發(fā)基礎2.堆棧模式需要被配置為指定值的堆棧參數(shù),連同這些值被稱為堆棧模式(StackProfile)。這些堆棧模式參數(shù)被Zigbee聯(lián)盟定義指定。在同一個網(wǎng)絡中的設備必須符合同一個堆棧模式(同一個網(wǎng)絡中所有設備的堆棧模式配置參數(shù)必須一致)。4.1ZigBee無線數(shù)據(jù)傳輸4.1.1開發(fā)基礎4.1ZigBee無線數(shù)據(jù)傳輸4.1.1開發(fā)基礎3.信道Chanel在zigbee標準協(xié)議中,2.4GHz的射頻頻段被分為16個獨立的信道。每一個設備都有一個-DEFAULT_CHANLIST的默認信道集(0x0B~0x1A)4.1ZigBee無線數(shù)據(jù)傳輸4.1.1開發(fā)基礎4.1ZigBee無線數(shù)據(jù)傳輸4.1.1開發(fā)基礎3.信道Chanel4.1ZigBee無線數(shù)據(jù)傳輸4.1.1開發(fā)基礎4.1ZigBee無線數(shù)據(jù)傳輸4.1.1開發(fā)基礎3.信道Chanel
f8w2530.cxl:該文件包含了CC2530單片機的鏈接控制指令,包括堆棧的大小、內存分配等,一般情況下不需要修改。
f8wConfig.cfg:該文件包含了信道選擇、網(wǎng)絡ID號等有關的鏈接命令。每一個設備都有一個DEFFAULT_CHANLIST的默認信道集。要選擇哪個信道,把前面的“//”注釋刪除,其余的保留即可。例如我們的信道默認為-DDEFAULT_CHANLIST=0x00000800//11-0x0B,只需刪除前面“//”注釋符即可。4.1ZigBee無線數(shù)據(jù)傳輸4.1.1開發(fā)基礎4.1ZigBee無線數(shù)據(jù)傳輸4.1.1開發(fā)基礎4.PANIDPANID指網(wǎng)絡編號,用于區(qū)分不同的Zigbee網(wǎng)絡。設備的PANID值由DZDAPP_CONFIG_PAN_ID來設置,如果DZDAPP_CONFIG_PAN_ID設置為0xFFFF,則協(xié)調器將產生一個隨機的PAN_ID。4.1ZigBee無線數(shù)據(jù)傳輸4.1.1開發(fā)基礎4.1ZigBee無線數(shù)據(jù)傳輸4.1.1開發(fā)基礎4.PANID設備的PANID值由DZDAPP_CONFIG_PAN_ID來設置,如果DZDAPP_CONFIG_PAN_ID設置為0xFFFF,則協(xié)調器將產生一個隨機的PAN_ID。4.1ZigBee無線數(shù)據(jù)傳輸4.1.1開發(fā)基礎4.1ZigBee無線數(shù)據(jù)傳輸4.1.1開發(fā)基礎4.PANID設備的PANID值由DZDAPP_CONFIG_PAN_ID來設置,如果DZDAPP_CONFIG_PAN_ID設置為0xFFFF,則協(xié)調器將產生一個隨機的PAN_ID。4.1ZigBee無線數(shù)據(jù)傳輸4.1.1開發(fā)基礎4.1ZigBee無線數(shù)據(jù)傳輸4.1.1開發(fā)基礎5.描述符Zigbee網(wǎng)絡中的所有設備都有一些描述符,用來描述設備類型和應用方式。描述符包含節(jié)點描述符、電源描述符和默認用戶描述符等,通過改變這些描述符可以定義自己的設備。描述符的定義和創(chuàng)建配置項在文件ZDOConfig.h和ZDOConfig.c中完成,描述符信息可以被網(wǎng)絡中的其他設備讀取。4.1ZigBee無線數(shù)據(jù)傳輸4.1.1開發(fā)基礎4.1ZigBee無線數(shù)據(jù)傳輸4.1.2工作流程①調用協(xié)議棧提供的組網(wǎng)函數(shù)、加入網(wǎng)絡函數(shù),實現(xiàn)網(wǎng)絡的建立與節(jié)點的加入。②發(fā)送設備調用協(xié)議棧提供的無線數(shù)據(jù)發(fā)送函數(shù),實現(xiàn)數(shù)據(jù)的發(fā)送。③接收設備調用協(xié)議棧提供的無線數(shù)據(jù)接收函數(shù),實現(xiàn)數(shù)據(jù)的接收。4.1ZigBee無線數(shù)據(jù)傳輸4.1.2工作流程4.1ZigBee無線數(shù)據(jù)傳輸4.1.3數(shù)據(jù)發(fā)送在Zigbee協(xié)議棧中進行數(shù)據(jù)發(fā)送可以調用AF_DataRequest函數(shù)實現(xiàn),該函數(shù)會調用協(xié)議棧里面與硬件相關的函數(shù)最終將數(shù)據(jù)通過無線發(fā)送出去。只需要掌握AF_DataRequest函數(shù)的使用方法即可。afStatus_tAF_DataRequest(afAddrType_t*dstAddr,endPointDesc_t*srcEP,uint16cID,uint16len,uint8*buf,uint8*transID,uint8options,uint8radius)4.1ZigBee無線數(shù)據(jù)傳輸4.1.3數(shù)據(jù)發(fā)送4.1ZigBee無線數(shù)據(jù)傳輸4.1.4數(shù)據(jù)接收當協(xié)調器收到數(shù)據(jù)后,操作系統(tǒng)會將數(shù)據(jù)封裝成一個消息,然后放入消息隊列中,每個消息都有自己的消息ID,標識接收到新數(shù)據(jù)的消息的ID是AF_INCOMING_MSG_CMD,其中AF_INCOMING_MSG_CMD的值是0x1A,這是在Zigbee協(xié)議棧中定義好的,用戶不可更改。Zigbee協(xié)議棧中AF_INCOMING_MSG_CMD宏的定義(在ZComDef.h文件中)4.1ZigBee無線數(shù)據(jù)傳輸4.1.4數(shù)據(jù)接收4.1ZigBee無線數(shù)據(jù)傳輸4.1.4數(shù)據(jù)接收接收方接收成功,協(xié)議棧將觸發(fā)數(shù)據(jù)包接收事件:AF_INCOMING_MSG_CMD------>處理函數(shù)SampleApp_ProcessEvent()。4.1ZigBee無線數(shù)據(jù)傳輸4.1.4數(shù)據(jù)接收4.1ZigBee無線數(shù)據(jù)傳輸4.1.4數(shù)據(jù)接收①對方傳遞上來的是什么類型的數(shù)據(jù)?數(shù)據(jù)的事件類型(簇ID)由pkt->clusterId決定。②傳遞上來的數(shù)據(jù)內容是什么?數(shù)據(jù)內容由pkt->cmd.Data決定。4.1ZigBee無線數(shù)據(jù)傳輸4.1.4數(shù)據(jù)接收4.1ZigBee無線數(shù)據(jù)傳輸4.2.1Zigbee數(shù)據(jù)包的結構4.2ZigBee數(shù)據(jù)包4.2.1Zigbee數(shù)據(jù)包的結構4.2ZigBee數(shù)4.2.2Zigbee數(shù)據(jù)傳輸流程在這里可以看出在網(wǎng)絡層管理實體一旦選擇了一個PAN標識符,就會立刻選擇一個0x0000的16位網(wǎng)絡地址,并且設置MAC層的macShortAddressPIB屬性,使其等于所選擇的網(wǎng)絡地址。網(wǎng)絡層數(shù)據(jù)包中,體現(xiàn)了在網(wǎng)絡層中的數(shù)據(jù)以及格式,網(wǎng)絡層數(shù)據(jù)包如圖4.9所示。網(wǎng)絡層中也體現(xiàn)了源地址和目的地址與APS層基本相同。它們最大的不同是數(shù)據(jù)中加入了網(wǎng)絡層包,附加了網(wǎng)絡層數(shù)據(jù)。4.2ZigBee數(shù)據(jù)包4.2.2Zigbee數(shù)據(jù)傳輸流程4.2ZigBee數(shù)4.2.3數(shù)據(jù)包格式4.2ZigBee數(shù)據(jù)包PFY幀PFY凈荷PHR凈荷SHR凈荷MAC幀MHRR凈荷MFRR凈荷MAC凈荷MHRR凈荷NWK凈荷AHRMIC凈荷APS凈荷輔助幀HDRNWK幀APS幀4.2.3數(shù)據(jù)包格式4.2ZigBee數(shù)據(jù)包PFY幀P4.3.1串口概述1.通用異步收發(fā)器UART異步串行通信接口是嵌入式系統(tǒng)最常用的接口,可用來與上位機或其他外部設備進行數(shù)據(jù)通信。UART是異步串行通信的總稱,它允許在串行鏈路上進行全雙工的通信,輸入/輸出電平為TTL電平。一般來說,全雙工UART定義了一個串行發(fā)送引腳(TxD)和一個串行接收引腳(RxD),可以在同一時刻發(fā)送和接收數(shù)據(jù)。4.3利用串口收發(fā)數(shù)據(jù)4.3.1串口概述4.3利用串口收發(fā)數(shù)據(jù)4.3.1串口概述2.同步串行口SPI和I2C①串行外設端口(SerialPeripheralInterface,SPI)是一種同步串行外設端口,它與各種外圍設備以串行方式進行通信、交換信息。SPI支持全雙工同步傳輸,可選擇以8或16位傳輸幀格式進行傳輸,支持多種模式。②I2C總線是一個多主機的總線。這就是說I2C總線可以連接多于一個能控制它的器件。4.3利用串口收發(fā)數(shù)據(jù)4.3.1串口概述4.3利用串口收發(fā)數(shù)據(jù)4.3.2收發(fā)數(shù)據(jù)的實現(xiàn)方法①初始化串口,包括設置波特率、中斷等。②向發(fā)送緩沖區(qū)發(fā)送數(shù)據(jù)或者從接收緩沖區(qū)讀取數(shù)據(jù)。4.3利用串口收發(fā)數(shù)據(jù)4.3.2收發(fā)數(shù)據(jù)的實現(xiàn)方法4.3利用串口收發(fā)數(shù)據(jù)4.3.2收發(fā)數(shù)據(jù)的實現(xiàn)方法①HalUARTOpen()函數(shù)原型:uint8HalUARTOpen(uint8port,halUARTCfg_t*config);功能描述:打開串口,對串口進行初始化。4.3利用串口收發(fā)數(shù)據(jù)4.3.2收發(fā)數(shù)據(jù)的實現(xiàn)方法4.3利用串口收發(fā)數(shù)據(jù)4.3.2收發(fā)數(shù)據(jù)的實現(xiàn)方法②HalUARTRead()函數(shù)原型:uint8HalUARTRead(uint8port,uint8*buf,uint16len);功能描述:從串口讀取數(shù)據(jù),并將其存放在buf數(shù)組中。4.3利用串口收發(fā)數(shù)據(jù)4.3.2收發(fā)數(shù)據(jù)的實現(xiàn)方法4.3利用串口收發(fā)數(shù)據(jù)4.3.2收發(fā)數(shù)據(jù)的實現(xiàn)方法③HalUARTWrite()函數(shù)原型:uint8HalUARTWrite(uint8port,uint8*buf,uintlen);功能描述:寫信息到串口。4.3利用串口收發(fā)數(shù)據(jù)4.3.2收發(fā)數(shù)據(jù)的實現(xiàn)方法4.3利用串口收發(fā)數(shù)據(jù)4.3.3協(xié)議棧中的串口操作Zigbee協(xié)議棧中的串口操作主要分為3個步驟。1.串口初始。2.登記任務。3.串口發(fā)送。4.3利用串口收發(fā)數(shù)據(jù)4.3.3協(xié)議棧中的串口操作4.3利用串口收發(fā)數(shù)據(jù)4.3.3協(xié)議棧中的串口操作Zigbee協(xié)議棧中的串口操作主要分為3個步驟。1.串口初始。我們打開APP目錄下的OSAL_SampleApp.c文件,找到SampleApp_Init()任務函數(shù)進行MT層串口初始化。添加MT_UartInit();語句。4.3利用串口收發(fā)數(shù)據(jù)4.3.3協(xié)議棧中的串口操作4.3利用串口收發(fā)數(shù)據(jù)4.3.3協(xié)議棧中的串口操作Zigbee協(xié)議棧中的串口操作主要分為3個步驟。2.登記任務。就是把串口事件通過task_id登記在SampleApp_Init()里。MT_UartRegisterTaskID(task_id);//登記任務號4.3利用串口收發(fā)數(shù)據(jù)4.3.3協(xié)議棧中的串口操作4.3利用串口收發(fā)數(shù)據(jù)4.3.3協(xié)議棧中的串口操作3.串口發(fā)送。我們在剛剛添加初始化代碼的后面加入一條上面提示HelloWorld的語句。HalUARTWrite(0,"HelloWorld\n",12);(串口0,‘字符’,字符個數(shù))。再在預編譯加入以下一些內容。ZIGBEEPROZTOOL_P1MT_TASKMT_SYS_FUNCMT_ZDO_FUNC4.3利用串口收發(fā)數(shù)據(jù)4.3.3協(xié)議棧中的串口操作4.3利用串口收發(fā)數(shù)據(jù)4.3.3協(xié)議棧中的串口操作提示:需要在SampleApp.c這個文件里加入#include"MT_UART.h"頭文件語句。如果不想要的可以在預編譯地方把MT相關內容注釋,不再顯示亂碼。ZIGBEEPROZTOOL_P1xMT_TASKxMT_SYS_FUNCxMT_ZDO_FUNC4.3利用串口收發(fā)數(shù)據(jù)4.3.3協(xié)議棧中的串口操作4.3利用串口收發(fā)數(shù)據(jù)非易失性存儲器(NonVolatile,NV):即使系統(tǒng)斷電后,存儲在存儲器中的數(shù)據(jù)也不會丟失。在Zigbee協(xié)議棧中NV存儲器主要用于保存網(wǎng)絡的配置參數(shù)(如網(wǎng)絡地址等)。非易失性存儲器是指能夠永久保存信息的存儲器,設備在意外復位或者斷電的情況下不會丟失信息。協(xié)議棧在OSAL文件夾下有OSAL_Nv.h和OSAL_Nv.c文件。4.4非易失性存儲器非易失性存儲器(NonVolatile,NV):即使系統(tǒng)斷4.4.1NV操作函數(shù)①osal_nv_item_init()函數(shù)原型:uintosal_nv_item_init(uint16id,uint16len,void*buf)功能描述:NV條目初始化函數(shù)。4.4非易失性存儲器4.4.1NV操作函數(shù)4.4非易失性存儲器4.4.1NV操作函數(shù)②osal_nv_write()函數(shù)原型:uint8osal_nv_write(uint16id,uint16ndx,uint16len,void*buf)。功能描述:NV寫入函數(shù)。uint16id表示NV條目ID號;uint16ndx距離
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 小班美術活動策劃方案(7篇)
- 污泥固化填埋應急處理工程可行性實施報告
- 年產6000噸米糠油生產線技改擴建項目可行性報告
- 高一開學典禮的講話稿范本5篇
- 骨干教師幫扶記錄匯編5篇
- 陜西空白就業(yè)協(xié)議書
- 銷售工作心得體會(6篇)
- 物業(yè)財務信息化管理
- 生產個人實習心得10篇
- 幼兒園切的教案7篇
- 2024年全新初二生物上冊期中試卷及答案(人教版)
- 走進魚類世界智慧樹知到答案2024年中國海洋大學
- 代賣商品合同協(xié)議書
- 十字相乘法解一元二次方程練習100題及答案
- 中外合作辦學規(guī)劃方案
- 廠房屋頂光伏分布式發(fā)電項目建議書
- 2024年人教版初一道德與法治上冊期中考試卷(附答案)
- 2024年第九屆“鵬程杯”六年級語文邀請賽試卷(復賽)
- 國開2024年《建筑結構#》形考作業(yè)1-4答案
- DL-T1475-2015電力安全工器具配置與存放技術要求
- 漏檢分析改善措施
評論
0/150
提交評論