《Zigbee技術(shù)無線傳感網(wǎng)應(yīng)用》-第10章 基于Z-Stack協(xié)議棧的傳感網(wǎng)絡(luò)構(gòu)建_第1頁
《Zigbee技術(shù)無線傳感網(wǎng)應(yīng)用》-第10章 基于Z-Stack協(xié)議棧的傳感網(wǎng)絡(luò)構(gòu)建_第2頁
《Zigbee技術(shù)無線傳感網(wǎng)應(yīng)用》-第10章 基于Z-Stack協(xié)議棧的傳感網(wǎng)絡(luò)構(gòu)建_第3頁
《Zigbee技術(shù)無線傳感網(wǎng)應(yīng)用》-第10章 基于Z-Stack協(xié)議棧的傳感網(wǎng)絡(luò)構(gòu)建_第4頁
《Zigbee技術(shù)無線傳感網(wǎng)應(yīng)用》-第10章 基于Z-Stack協(xié)議棧的傳感網(wǎng)絡(luò)構(gòu)建_第5頁
已閱讀5頁,還剩19頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

目錄Zigbee技術(shù)無線傳感網(wǎng)應(yīng)用四、課程思政二、知識講解一、任務(wù)描述三、任務(wù)實施五、小結(jié)一、任務(wù)描述基于Z-Stack協(xié)議棧構(gòu)建無線傳感器數(shù)據(jù)采集系統(tǒng),分別采集開關(guān)量數(shù)據(jù)和模擬量數(shù)據(jù),采用3個ZigBee模塊,節(jié)點A作為協(xié)調(diào)器使用,負(fù)責(zé)組建網(wǎng)絡(luò)并將路由點B和末端節(jié)點C采集的數(shù)據(jù)上傳給PC機(jī),路由節(jié)點B收集開關(guān)量傳感器數(shù)據(jù),末端節(jié)點C收集模擬量傳感器數(shù)據(jù),PC機(jī)可通過串口助手軟件查看接收到的傳感器數(shù)據(jù)。本應(yīng)用可拓展為N個節(jié)點。Zigbee技術(shù)無線傳感網(wǎng)應(yīng)用二、知識講解在本例中自定了簡單的傳感器上傳數(shù)據(jù)格式,由于本案例未涉及上位機(jī)開發(fā),所以在協(xié)調(diào)器解析數(shù)據(jù),通過串口顯示相關(guān)信息。上傳數(shù)據(jù)格式:Zigbee技術(shù)無線傳感網(wǎng)應(yīng)用自定義傳感器上傳數(shù)據(jù)格式:HEADLENSTYPESDATA1字節(jié)1字節(jié)1字節(jié)1字節(jié)1字節(jié)數(shù)據(jù)頭,

固定為0xFE數(shù)據(jù)包長度:從HEAD到SDATA傳感器類型:0x01代表開關(guān)量;0x02代表模擬量傳感器數(shù)據(jù)低8位傳感器數(shù)據(jù)高8位二、知識講解1、開關(guān)量傳感器數(shù)據(jù)采集在單片機(jī)CC2530開發(fā)中,通過I/O口采集傳感器的數(shù)據(jù),如傳感器沒有采集到數(shù)據(jù)時,引腳狀態(tài)為高電平,傳感器有采集到數(shù)據(jù)時,引腳為低電平。根據(jù)此原理,我們在本任務(wù)中通過按鍵模擬開關(guān)量傳感器的數(shù)據(jù)采集,只不過傳感器是自動采集數(shù)據(jù),此任務(wù)是手動模擬,原理是一致的。Zigbee技術(shù)無線傳感網(wǎng)應(yīng)用開關(guān)量傳感器數(shù)據(jù)采集模塊:二、知識講解在具體的工作中需要根據(jù)自己使用設(shè)備進(jìn)行相應(yīng)配置,可自行編寫初始化函數(shù),根據(jù)掌握的CC2530單片機(jī)知識可直接配置寄存器,完成按鍵引腳初始化,以及通過掃描引腳或通過外部中斷方式查看引腳輸入狀態(tài)。例如我們可編寫如下函數(shù):uint8get_swsensor(void) {P0SEL&=~(1<<1);//設(shè)置P0.1為普通I/O口 P0DIR&=~(1<<1);//設(shè)置P0.1為輸入方向 returnP0_1;//返回P0.1電平 }Zigbee技術(shù)無線傳感網(wǎng)應(yīng)用開關(guān)量傳感器數(shù)據(jù)采集模塊:二、知識講解2、編寫開關(guān)量傳感器模塊新任務(wù)的事件處理函數(shù)通過函數(shù)osal_start_timerEx()將SAMPLEAPP_SEND_PERIODIC_MSG_EVT事件定時5秒后設(shè)置。根據(jù)自定義指令格式,第一個字節(jié)為數(shù)據(jù)頭:固定為0xFE;第二個字節(jié)為發(fā)送數(shù)據(jù)長度0x05;第三個字節(jié)為開關(guān)量傳感器值0x01;第四個字節(jié)為傳感器數(shù)據(jù),若按下按鍵傳輸0x00,否則傳輸0xEE,第五個字節(jié)自定義為0xEE。代碼如下所示:Zigbee技術(shù)無線傳感網(wǎng)應(yīng)用開關(guān)量傳感器數(shù)據(jù)采集模塊:二、知識講解Zigbee技術(shù)無線傳感網(wǎng)應(yīng)用開關(guān)量傳感器數(shù)據(jù)采集模塊:voidSampleApp_SendPeriodicMessage(void){uint8Switch_Data[5]={0xFE,0x05,0x01,0xEE,0xEE};if(get_swsensor()==0){Switch_Data[3]=0x00;//00代表采集到數(shù)據(jù)}if(AF_DataRequest(&SampleApp_Periodic_DstAddr,&SampleApp_epDesc,SAMPLEAPP_PERIODIC_CLUSTERID,5,Switch_Data,&SampleApp_TransID,AF_DISCV_ROUTE,AF_DEFAULT_RADIUS)==afStatus_SUCCESS){HalLedBlink(HAL_LED_2,0,50,500);}else{//Erroroccurredinrequesttosend.}}二、知識講解1、模擬量傳感器數(shù)據(jù)采集在本任務(wù)中,我們通過CC2530芯片的ADC模塊獲取片內(nèi)溫度,將節(jié)點的片內(nèi)溫度傳輸給協(xié)調(diào)器。在實際的工作中可根據(jù)具體電路配置ADC的相關(guān)寄存器。本例獲取片內(nèi)溫度代碼如下:Zigbee技術(shù)無線傳感網(wǎng)應(yīng)用模擬量傳感器采集模塊:二、知識講解uint16get_adc(void){uint32value;ADCIF=0;//清ADC中斷標(biāo)志//采用內(nèi)部參考電壓,128抽取率,獲取片內(nèi)溫度,啟動AD轉(zhuǎn)化ADCCON3=(0x00|0x10|0x0E);while(!ADCIF){;//等待AD轉(zhuǎn)化結(jié)束}Zigbee技術(shù)無線傳感網(wǎng)應(yīng)用模擬量傳感器采集模塊:value=ADCL; //ADC轉(zhuǎn)換結(jié)果的低位部分存入value中value|=(((uint16)ADCH)<<8); //取得最終轉(zhuǎn)換結(jié)果存入value中value=value*330;value=value>>15; //根據(jù)計算公式算出結(jié)果值

return(uint16)value;二、知識講解2、編寫模擬量傳感器模塊新任務(wù)的事件處理函數(shù)通過函數(shù)osal_start_timerEx()將SAMPLEAPP_SEND_PERIODIC_MSG_EVT事件定時5秒后設(shè)置。根據(jù)自定義指令格式,第一個字節(jié)為數(shù)據(jù)頭:固定為0xFE;第二個字節(jié)為發(fā)送數(shù)據(jù)長度0x05;第三個字節(jié)為模擬量傳感器值0x02;第四個字節(jié)為傳感器數(shù)據(jù)低8位;第五個字節(jié)為傳感器數(shù)據(jù)高8位。代碼如下所示:Zigbee技術(shù)無線傳感網(wǎng)應(yīng)用模擬量傳感器采集模塊:二、知識講解voidSampleApp_SendPeriodicMessage(void){uint16sensor_val;uint8Analog_Data[5]={0xFE,0x05,0x02,0x00,0x00};sensor_val=get_adc();Analog_Data[3]=sensor_val&0x00ff;Analog_Data[4]=sensor_val>>8&0x00ff;

Zigbee技術(shù)無線傳感網(wǎng)應(yīng)用模擬量傳感器采集模塊:if(AF_DataRequest(&SampleApp_Periodic_DstAddr,&SampleApp_epDesc,SAMPLEAPP_PERIODIC_CLUSTERID,5,Analog_Data,&SampleApp_TransID,AF_DISCV_ROUTE,AF_DEFAULT_RADIUS)==afStatus_SUCCESS){HalLedBlink(HAL_LED_2,0,50,500);}else{//Erroroccurredinrequesttosend.}}二、知識講解1、任務(wù)初始化函數(shù)由于協(xié)調(diào)器需要通過串口將數(shù)據(jù)傳輸給PC機(jī),所以需要進(jìn)行串口初始化以及串口注冊,其余代碼配置按工程模板編寫即可,代碼如下所示:MT_UartInit();MT_UartRegisterTaskID(task_id);//任務(wù)注冊

HalUARTWrite(0,"WSN_SYSTEM\n",11);//系統(tǒng)提示信息Zigbee技術(shù)無線傳感網(wǎng)應(yīng)用協(xié)調(diào)器模塊:二、知識講解2、編寫協(xié)調(diào)器模塊新任務(wù)的事件處理函數(shù)

當(dāng)協(xié)調(diào)器檢查到一個新的無線數(shù)據(jù)事件時,調(diào)用SampleApp_MessageMSGCB(MSGpkt)函數(shù)。接收處理數(shù)據(jù),本模塊收到路由節(jié)點和末端節(jié)點傳來的數(shù)據(jù),在協(xié)調(diào)器端對數(shù)據(jù)進(jìn)行處理,以便PC機(jī)串口查看,由于代碼較長,具體見書或工程文件。Zigbee技術(shù)無線傳感網(wǎng)應(yīng)用協(xié)調(diào)器模塊:三、任務(wù)實施拷貝已安裝好的的協(xié)議棧文件夾ZStack-CC2530-2.5.1a。1、用IAR打開Projects\zstack\Samples\SampleApp\CC2530DB文件夾下SampleApp.eww文件。2、在ZStack-CC2530-2.5.1a\Projects\zstack\Samples\SampleApp\Source文件夾內(nèi)創(chuàng)建Coordinator.c,Analog_sensor.c,Switch_sensor.c,get_adc.c,get_adc.h六個文件,并添加到工程APP組下,如圖所示。

Zigbee技術(shù)無線傳感網(wǎng)應(yīng)用工程創(chuàng)建:三、任務(wù)實施3、拷貝文件SampleApp.c內(nèi)所有代碼,分別粘貼到Coordinator.c,Analog_sensor.c,Switch_sensor.c文件內(nèi)。4、編寫get_adc.h文件代碼#ifndefSIMPLE_adc_H#defineSIMPLE_adc_Hexternuint16get_adc(void);externuint8get_swsensor(void);#endif

Zigbee技術(shù)無線傳感網(wǎng)應(yīng)用工程創(chuàng)建:三、任務(wù)實施5、編寫get_adc.c文件代碼A/D轉(zhuǎn)換請根據(jù)工程實際使用設(shè)備的的傳感器連接電路設(shè)置,本例獲取的是片內(nèi)溫度;開關(guān)量傳感器也請根據(jù)使用設(shè)備的具體情況配置,本例根據(jù)官方模板設(shè)置。由于代碼較長,具體見書或工程文件。

Zigbee技術(shù)無線傳感網(wǎng)應(yīng)用工程創(chuàng)建:三、任務(wù)實施6、Coordinator.c文件的修改協(xié)調(diào)器需要用到串口,所以請?zhí)砑宇^文件#include"MT_UART.h"。在voidSampleApp_Init(uint8task_id)函數(shù)中輸入MT_UartInit()、MT_UartRegisterTaskID(task_id)和HalUARTWrite(0,"WSN_SYSTEM\n",11);代碼(參照上文)。進(jìn)入MT_UartInit()函數(shù),進(jìn)行相應(yīng)的串口配置。找到串口的流控配置變量uartConfig.flowControl,可以在mt_uart.h文件中看到:MT_UART_DEFAULT_OVERFLOW,默認(rèn)是采用流控,本例不采用流控,所以將TRUE修改為FALSE。同時查看串口波特率,本例設(shè)置為38400。事件處理函數(shù)的編寫見上文。

Zigbee技術(shù)無線傳感網(wǎng)應(yīng)用工程創(chuàng)建:三、任務(wù)實施7、Analog_sensor.c和Switch_sensor.c文件的修改因兩個文件都用到了get_adc.c文件中的函數(shù),所以要添加頭文件#include"get_adc.h",事件處理函數(shù)的編寫見上文,任務(wù)初始化函數(shù)都不用修改。

Zigbee技術(shù)無線傳感網(wǎng)應(yīng)用工程創(chuàng)建:三、任務(wù)實施8、文件編譯設(shè)置在Workspace下面的下拉列表框中選擇CoordinatorEB,通過設(shè)置使Analog_sensor.c,Switch_sensor.c文件不參與編譯。在Workspace下面的下拉列表框中選擇RouterEB,通過設(shè)置使Analog_sensor.c,Coordinator.c文件不參與編譯。在Workspace下面的下拉列表框中選擇EndDeviceEB,通過設(shè)置使Switch_sensor.c,Coordinator.c文件不參與編譯。

Zigbee技術(shù)無線傳感網(wǎng)應(yīng)用工程創(chuàng)建:三、任務(wù)實施1、下載(1)在Workspace下面的下拉列表框中選擇CoordinatorEB,編譯程序無誤后,模塊上電,下載程序到協(xié)調(diào)器模塊中。(2)在Workspace下面的下拉列表框中選擇RouterEB,編譯程序無誤后,模塊上電,下載程序到開關(guān)量的路由節(jié)點模塊中。(3)在Workspace下面的下拉列表框中選擇EndDeviceEB,編譯程序無誤后,模塊上電,下載程序到模擬量量的末端節(jié)點模塊中。

Zigbee技術(shù)無線傳感網(wǎng)應(yīng)用下載與操作:三、任務(wù)實施2、操作將協(xié)調(diào)模塊上電并通過串口與PC機(jī)連接,在PC機(jī)上打開串口助手軟件,設(shè)

溫馨提示

  • 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論