無線溫度檢測實驗
1、實驗內容:協調器建立zigbee無線網路,終端節點自動加入網路,然後終端節點周期性地採集溫度並將資料傳送到協調器.協調器接受資料並通過串列埠把接受到的資料傳給pc端的串列埠除錯助手。
2、流程:協調器:開始-》建立網路-》迴圈接受來自終端節點的資料-》傳送給串列埠
終端節點:開始-》加入網路-》週期性採集資料並傳送資料到協調器
3、**:
協調器節點**:在實驗4的基礎上新增並修改。**如下:
在coordinator.h中新增temperature資料結構
typedef union h
buf;
}temperature;
coordinator.c檔案實現**如下:
#include "osal.h"
#include "af.h"
#include "zdobject.h"
#include "zdprofile.h"
#include #include "coordinator.h"
#include "debugtrace.h"
#if !defined(win32)
#include "onboard.h"
#endif
#include "hal_lcd.h"
#include "hal_led.h"
#include "hal_key.h"
#include "hal_uart.h"
;//簡單裝置描述符(描述乙個zigbee裝置節點)
;//訊息處理函式
osal_msg_deallocate((uint8 *)msgpkt);//接收到的訊息處理完後,釋放訊息所佔的儲存空間
//處理完乙個訊息後,再從訊息佇列裡接受訊息,然後對其進行相應處理,直到所有訊息處理完
}return (events ^ sys_event_msg);
} return 0;
};//回車換行符的ascii碼
//上面兩種都是賦值為回車和換行符,它們的結果都是一樣的。在串列埠中顯示的是ascii碼值:0x0a,0x0d,而不是真正的換行。這個應該跟串列埠的這個軟體設計編寫時有關。
temperature temperature;
switch(pkt->clusterid)
}
上面要注意的是:temperature temperature;//temperature內是聯合結構體,這樣就為(uint8*)&temperature提供了便利。
osal_memcpy(&temperature,pkt->cmd.data,sizeof(temperature));//把pkt->cmd.data的資料複製到buffer
haluartwrite(0,(uint8*)&temperature,sizeof(temperature));//要注意這個(uint8*)&temperature,我是這樣寫的(uint8)temperature,是不對的
終端節點**:在實驗4 串列埠通訊2的基礎上新增修改**。**如下:
新增senor.h標頭檔案,**如下:
#ifndef sensor_h
#define sensor_h
#include extern int8 readtemp(void);
#endif
新增senor.c實現檔案,**如下:
#include "sensor.h"
#include #define hal_adc_ref_115v 0x00
#define hal_adc_dec_256 0x20
#define hal_adc_chn_temp 0x0e
int8 readtemp(void)
temp=22+((value-reference_voltage)/4);//溫度校正函式
return temp;
}
上面**分析:cc2530內部自帶有溫度感測器。使用溫度感測器的步驟:1、使能溫度感測器;2、連線溫度感測器;3、初始化adc,確定參考電壓、解析度、啟動adc讀取溫度資料等。4、校正溫度資料。
修改enddevice.c檔案,**如下:
#include "osal.h"
#include "af.h"
#include "zdobject.h"
#include "zdprofile.h"
#include #include "coordinator.h"
#include "debugtrace.h"
#if !defined(win32)
#include "onboard.h"
#endif
#include "hal_lcd.h"
#include "hal_led.h"
#include "hal_key.h"
#include "hal_uart.h"
#include "sensor.h"
#define send_data_event 0x01 //傳送事件id
;//初始化埠描述符
;//任務初始化函式
//訊息處理函式
break;
default:
break;
}osal_msg_deallocate((uint8*)msgpkt);
}return (events^sys_event_msg);
} if(events&send_data_event)//這個函式為什麼放在這裡,好好想想才行????
return 0;}
上面**分析:主要是
tvalue=readtemp(); //讀取溫度
就行啦,實現溫度資料的封裝,就可以傳送出去啦。
4、實驗結果(串列埠除錯助手顯示的接收到並顯示的是:26 32 36 43 0d 0a 這個些都是ascii碼值,表示的字元為& 2 6 c /r (回車) /n(換行),且使用十六進製制表示的)
16 實驗分析
本篇總結實驗部分要做哪些分析 哪些對比。主要目的是幫助寫好 的實驗章節。首先,寫清楚實驗的資料 資料規模 資料屬性。其次,實驗中的各種引數,網路用了幾層,什麼啟用函式,什麼特徵,還有實驗環境,機器的效能,cpu 記憶體 磁碟 顯示卡 作業系統 程式語言 ide版本 分析的時候要分析時間複雜度 空間複...
實驗5 動態規劃實驗一
oj練習 1.multiplication puzzle 2.該題可以轉化為矩陣連乘問題 3.common subsequence 4.該題只需要輸出最長公共子串行的長度 3 human gene functions human gene functions 變形 4 compromise 問題 5...
實驗練習5
實驗任務5 自定義模組及模組匯入程式設計 一 把類studentdoc儲存到模組student.py中 student.py class studentdoc 學生檔案管理 def init self,students number,studens name,major,python score s...