版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
無線點多盞燈一、實驗原理二、重點代碼解析二、數(shù)據(jù)發(fā)送標(biāo)題三、數(shù)據(jù)接收一、實驗原理
實驗效果:通過協(xié)調(diào)器的按鍵S1控制廣播發(fā)送數(shù)據(jù)給路由器或終端節(jié)點。節(jié)點接收到數(shù)據(jù)后執(zhí)行控制燈操作。整個過程在協(xié)議棧Z-STACK的SampleApp.eww上完成。實驗?zāi)康模号惆榇蠹易哌^了ZigBee基礎(chǔ)實驗、組網(wǎng)演練。我們對基于ZigBee協(xié)議棧的APP層的編程越來越胸有成竹。本項目將綜合前面所做的廣播與單播以及組播,還有點對點數(shù)據(jù)傳輸?shù)幕A(chǔ)之上來批量的控制一組燈。一、實驗原理主要步驟:1.在網(wǎng)蜂公司“無線點臺燈”實驗的基礎(chǔ)上,建立我們習(xí)慣的協(xié)調(diào)器工程和終端節(jié)點(或路由器工程);2.正確地配置工程;3.按鍵的初始化等,我們買的網(wǎng)蜂公司的節(jié)點S1接的P0-1;4.修改協(xié)調(diào)器的工作流程;5.修改終端節(jié)點的工作流程;6.驗證實驗效果。二、數(shù)據(jù)發(fā)送——協(xié)調(diào)器工作流程1.
系統(tǒng)檢測到按鍵S1事件后,串口打印“KEY”做提示;
2.繼續(xù)判斷是否S1按下,執(zhí)行數(shù)據(jù)發(fā)送函數(shù),往網(wǎng)絡(luò)中廣播發(fā)送數(shù)據(jù);3.
我們可以往網(wǎng)絡(luò)中發(fā)送一個“1”;協(xié)調(diào)器流程圖一、實驗原理——協(xié)調(diào)器工作流程一、實驗原理——協(xié)調(diào)器工作流程一、實驗原理——協(xié)調(diào)器工作流程三、數(shù)據(jù)接收——路由器或終端節(jié)點工作流程如果收到“1”
,則執(zhí)行LED燈狀態(tài)翻轉(zhuǎn)的操作。路由器或終端節(jié)點流程圖ZigBee協(xié)議棧實驗:無線溫度檢測實驗一、實驗原理二、重點代碼解析三、實驗結(jié)果驗證標(biāo)題四、數(shù)據(jù)接收一、實驗原理——實驗效果及原理圖該實驗的基本原理:協(xié)調(diào)器建立ZigBoe無線網(wǎng)絡(luò),終端節(jié)點自動加入該網(wǎng)絡(luò)中,然后終端節(jié)點周期性地采集溫度數(shù)據(jù)并將其發(fā)送給協(xié)調(diào)器,協(xié)調(diào)器收到溫度數(shù)據(jù)后,通過串口將其輸出到用戶PC機。一、實驗原理——工作流程圖無線溫度檢測實驗協(xié)調(diào)器流程圖
圖無線溫度檢測實驗終端節(jié)點流程圖對于協(xié)調(diào)器而言,只需要將接收到的溫度數(shù)據(jù)通過串口發(fā)送到PC機即可。對于終端節(jié)點而言,需要周期性地采集溫度數(shù)據(jù),采集溫度數(shù)據(jù)可以通過讀取溫度傳感器的函數(shù)得到。一、實驗原理—數(shù)據(jù)包的定義
一般在具體項目開發(fā)過程中,通信雙方需要提前定義好數(shù)據(jù)通信的格式,一般需要包含數(shù)據(jù)頭、數(shù)據(jù)、校驗位、數(shù)據(jù)尾等信息。
在項目開發(fā)過程中,使用到數(shù)據(jù)包時,一般會使用結(jié)構(gòu)體來將整個數(shù)據(jù)包所需要的數(shù)據(jù)包含起來,這樣編程效率較高,需要添加在AF.h文件里。
使用一個共用體來表示整個數(shù)據(jù)包,里面有兩個成員變量,一個是數(shù)組TEMP,該數(shù)組有4個元素:另一個是結(jié)構(gòu)體,該結(jié)構(gòu)體具體實現(xiàn)了數(shù)據(jù)包的數(shù)據(jù)頭、溫度數(shù)據(jù)、數(shù)據(jù)尾。很容易發(fā)現(xiàn),結(jié)構(gòu)體所占的存儲空間也是4個字節(jié)。在本實驗中使用的結(jié)構(gòu)體定義如下:typedefunionh{uint8TEMP[4];structRFRXBUF{unsignedcharHead;//命令頭unsignedcharvalue[2];//溫度數(shù)據(jù)unsignedcharTail;//命令尾}BUF;}TEMPERATURE;一、實驗原理—數(shù)據(jù)包的定義二、重點代碼解析--協(xié)調(diào)器程序設(shè)計//以下是消息處理函數(shù)voidGenericApp_MessageMSGCB(afIncomingMSGPacket_t*pkt){unsignedcharbuffer[2]={0x0A,0x0D};//回車換行符的ASCII碼TEMPERATUREtemperature;switch(pkt->clusterId){caseGENERICAPP_CLUSTERID:osal_memcpy(&temperature,pkt->cmd.Data,sizeof(temperature));HalUARTWrite(0,(uint8*)&temperature,sizeof(temperature));HalUARTWrite(0,buffer,2);break;}}二、重點代碼解析---傳感器編程(1)
終端節(jié)點編程時,需要解決兩個問題,將溫度檢測函數(shù)放在什么地方?如何發(fā)送溫度數(shù)據(jù)?使用ZigBee協(xié)議棧進(jìn)行無線傳感器網(wǎng)絡(luò)開發(fā)時,將傳感器操作有關(guān)的函數(shù)(如讀取傳感器數(shù)據(jù)的函數(shù))放在協(xié)議棧的App目錄下
。將傳感器操作有關(guān)的函數(shù)放在協(xié)議棧的App目錄下二、重點代碼解析---傳感器編程(2)Sensor.h文件內(nèi)容如下:#ifndefSENSOR_H#defineSENSOR_H#include<hal_types.h>externint8readTemp(void);#endif二、重點代碼解析---傳感器編程(3)Sensor.c文件內(nèi)容如下:#include"Sensor.h"#include<ioCC2530.h>#defineHAL_ADC_REF_115V0x00#defineHAL_ADC_DEC_2560x20#defineHAL_ADC_CHN_TEMP0x0e
二、重點代碼解析---傳感器編程(4)Sensor.c文件內(nèi)容如下:
int8readTemp(void){staticuint16reference_voltage;staticuint8bCalibrate=TRUE;uint16value;int8temp;ATEST=0x01;//使能溫度傳感器TR0|=0x01;//連接溫度傳感器ADCIF=0;ADCCON3=(HAL_ADC_REF_115V|HAL_ADC_DEC_256|HAL_ADC_CHN_TEMP);while(!ADCIF);ADCIF=0;value=ADCL;value|=((uint16)ADCH)<<8;value>>=4;if(bCalibrate)//記錄第一次讀取的溫度值,用于校正溫度數(shù)據(jù){reference_voltage=value;bCalibrate=FALSE;}temp=22+((value-reference_voltage)/4);//溫度校正函數(shù)returntemp;}二、重點代碼解析---傳感器編程(5)CC2530單片機內(nèi)部有溫度傳感器,使用該溫度傳感器的步驟:①使能溫度傳感器;②連接溫度傳感器到ADC。然后,就可以初始化ADC,確定參考電壓、分辨率等,最后啟動ADC讀取溫度數(shù)據(jù)即可。上述函數(shù)中有個溫度數(shù)據(jù)的校正,不是很準(zhǔn)確,CC2530自帶的溫度傳感器校正比較麻煩,讀者可以暫不考慮溫度的校正,只需要掌握傳感器和ZigBee協(xié)議棧的接口方式。此時,溫度讀取函數(shù)就寫好了,只需要在Enddevice.c函數(shù)中調(diào)用該函數(shù)讀取溫度數(shù)據(jù),然后發(fā)送即可。
二、重點代碼解析---終端節(jié)點編程UINT16GenericApp_ProcessEvent(bytetask_id,UINT16events){afIncomingMSGPacket_t*MSGpkt;if(events&SYS_EVENT_MSG){。。。}
if(events&SEND_DATA_EVENT){GenericApp_SendTheMessage();osal_start_timerEx(GenericApp_TaskID,SEND_DATA_EVENT,1000);return(events^SEND_DATA_EVENT);}return0;}二、重點代碼解析---終端節(jié)點編程voidGenericApp_SendTheMessage(void){uint8tvalue;TEMPERATUREtemperature;temperature.BUF.Head='&';tvalue=readTemp();temperature.BUF.value[0]=tvalue/10+'0';temperature.BUF.value[1]=tvalue%10+'0';temperature.BUF.Tail='C';afAddrType_tmy_DstAddr;my_DstAddr.addrMode=(afAddrMode_t)Addr16Bit;my_DstAddr.endPoint=GENERICAPP_ENDPOINT;my_DstAddr.addr.shortAddr=0x0000;AF_DataRequest(&my_DstAddr,&GenericApp_epDesc,GENERICAPP_CLUSTERID,sizeof(temperature),(uint8*)&temperature,&GenericApp_Trans
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五年度幕墻施工工程保修合同4篇
- 個人運輸服務(wù)一年合同模板2024年
- 2025年木制裝飾條項目投資可行性研究分析報告
- 2025年塑料包裝編織品行業(yè)深度研究分析報告
- 2025年熱熔膠產(chǎn)品項目投資分析及可行性報告
- 2025年閱覽室設(shè)備行業(yè)深度研究分析報告
- 2025年食用菌產(chǎn)品冷鏈物流配送服務(wù)合同3篇
- 2025年度新型生物藥品全球獨家代理銷售合同模板4篇
- 2025年流量計項目調(diào)研報告
- 二零二五年度環(huán)保型生產(chǎn)線車間承包加工服務(wù)協(xié)議3篇
- 三角形與全等三角形復(fù)習(xí)教案 人教版
- 2024年1月高考適應(yīng)性測試“九省聯(lián)考”英語 試題(學(xué)生版+解析版)
- 《朝天子·詠喇叭-王磐》核心素養(yǎng)目標(biāo)教學(xué)設(shè)計、教材分析與教學(xué)反思-2023-2024學(xué)年初中語文統(tǒng)編版
- 成長小說智慧樹知到期末考試答案2024年
- 紅色革命故事《王二小的故事》
- 海洋工程用高性能建筑鋼材的研發(fā)
- 英語48個國際音標(biāo)課件(單詞帶聲、附有聲國際音標(biāo)圖)
- GB/T 6892-2023一般工業(yè)用鋁及鋁合金擠壓型材
- 冷庫安全管理制度
- 2023同等學(xué)力申碩統(tǒng)考英語考試真題
- 家具安裝工培訓(xùn)教案優(yōu)質(zhì)資料
評論
0/150
提交評論