1 6 實驗5 無線溫度檢測實驗

2021-06-18 18:30:57 字數 3229 閱讀 1609

無線溫度檢測實驗

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...