freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

基于zigbee協(xié)議的無(wú)線測(cè)溫系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)-資料下載頁(yè)

2025-08-19 18:16本頁(yè)面

【導(dǎo)讀】2020第九屆“博創(chuàng)杯”全國(guó)大學(xué)生嵌入式設(shè)計(jì)大賽。基于zigbee協(xié)議的無(wú)線測(cè)溫系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)。是否恩智浦單項(xiàng):是否√

  

【正文】 I/O 端口 P1_4 6 數(shù)字 I/O 端口 P1_5 5 數(shù)字 I/O 端口 P1_6 38 數(shù)字 I/O 端口 P1_7 37 數(shù)字 I/O 端口 P2_0 36 數(shù)字 I/O 端口 P2_1 35 數(shù)字 I/O 端口 P2_2 34 數(shù)字 I/O 端口 P2_3 33 數(shù)字 I/O 模擬端口 P2_4 32 數(shù)字 I/O 模擬端口 RBIAS 30 模擬 I/O 參考電流的外部精密偏置電阻 博 創(chuàng) 杯 全 國(guó) 大 學(xué) 生 嵌 入 式 設(shè) 計(jì) 大 賽 25 RESET_N 20 數(shù)字輸入 復(fù)位,活動(dòng)到低電平 RF_N 26 RF I/O RX 期間負(fù) RF 輸入信號(hào)到 LNA RF_P 25 RF I/O RX 期間正 RF 輸入信號(hào)到 LNA XOSC_Q1 22 模擬 I/O 32MHz 晶振引腳 1 或外部時(shí)鐘輸入 XOSC_Q2 23 模擬 I/O 32MHz 晶振引腳 2 CC2530 芯片的結(jié)構(gòu)如圖 57 所示 博 創(chuàng) 杯 全 國(guó) 大 學(xué) 生 嵌 入 式 設(shè) 計(jì) 大 賽 26 圖 57 CC2530 芯片結(jié)構(gòu)圖 CC2530 硬件系統(tǒng)的設(shè)計(jì)較為簡(jiǎn)單,電路如圖 58 所示。 圖 58 CC2530 電路圖 終端 PC機(jī)及手機(jī) 本系統(tǒng)對(duì)于終端模塊的要求不高, PC 終端目前主流的配置即可滿足需求,手機(jī)終端要求為 andriod 平臺(tái),版本 以上即可。 博 創(chuàng) 杯 全 國(guó) 大 學(xué) 生 嵌 入 式 設(shè) 計(jì) 大 賽 27 第 6章 軟件設(shè)計(jì) 總體設(shè)計(jì) 軟件設(shè)計(jì)是在硬件設(shè)計(jì)的基礎(chǔ)上構(gòu)建的,是對(duì)確定硬件的系統(tǒng)操作面向應(yīng)用的開發(fā)。軟件設(shè)計(jì)主要是實(shí)現(xiàn)各個(gè)模塊的數(shù)據(jù)通信,以及各個(gè)操作的實(shí)時(shí)對(duì)應(yīng)?;?zigbee 無(wú)線測(cè)溫系統(tǒng)的軟件部分主要有三個(gè)模塊: DS18B20 的數(shù)據(jù)采集模塊、 CC2530 無(wú)線通信 模塊、終端顯示模塊 —— PC 機(jī)和客戶手機(jī)端。總體框架圖如圖 61 所示: 圖 61 系統(tǒng)總體框架 DS18B20數(shù)據(jù)采集模塊 數(shù)據(jù)采集模塊程序流程如圖 62 所示。 圖 62 數(shù)據(jù)采集模塊流程圖 采集數(shù)據(jù) 處理數(shù)據(jù) 服務(wù)器 手機(jī)監(jiān)控界面 上位機(jī)監(jiān)控界面 18B20 初始劃化 數(shù)據(jù)寫入 18B20 數(shù)據(jù)處理 讀出數(shù)據(jù) 博 創(chuàng) 杯 全 國(guó) 大 學(xué) 生 嵌 入 式 設(shè) 計(jì) 大 賽 28 數(shù)據(jù)采集模塊關(guān)鍵函數(shù)設(shè)計(jì)如下: void init_1820(void) //初始化 DS18B20 void write_1820(UINT8 x) //寫入相應(yīng)的數(shù)據(jù) UINT8 read_1820(void) //從 18B20 讀數(shù)據(jù) { return (temp)。 } void read_data(UINT8 * pSensorValue)// 讀取溫度 void DataChange(UINT8 * pSensorValue,UINT8 * pChBuf) //數(shù)據(jù)處理 void ds18b20_main() { while(1) { read_data(sensor_data_value)。// 讀取溫度 DataChange(sensor_data_value,ch)。 //數(shù)據(jù)處理 Delay_nus(10000)。 } } CC2530無(wú)線通信模塊 CC2530 初始化后,傳感器節(jié)點(diǎn)會(huì)依據(jù) ZigBee 協(xié)議搜尋網(wǎng)絡(luò),并請(qǐng)求加入節(jié)點(diǎn)。請(qǐng)求得到確定后,傳感器節(jié)點(diǎn)會(huì)將自身的地址發(fā)送給協(xié)調(diào)器,并自動(dòng)與協(xié)調(diào)器建立綁定。在接受到數(shù)據(jù)傳送請(qǐng)求之后,傳感器節(jié)點(diǎn)就會(huì)將溫度值按時(shí)傳給協(xié)調(diào)器。程序流程如圖 63 所示。 博 創(chuàng) 杯 全 國(guó) 大 學(xué) 生 嵌 入 式 設(shè) 計(jì) 大 賽 29 圖 63 傳感器節(jié)點(diǎn)的程序流程 設(shè)備初始化完畢后,協(xié)調(diào)器新建無(wú)線網(wǎng)絡(luò)。如果新建網(wǎng)絡(luò)成功,允許協(xié)調(diào)器設(shè)定為綁定。此時(shí),協(xié)調(diào)器檢測(cè)是否有 節(jié)點(diǎn)要求加入網(wǎng)絡(luò),如果接收到節(jié)點(diǎn)的加入請(qǐng)求,協(xié)調(diào)器會(huì)記錄下節(jié)點(diǎn)的地址,并建立綁定,同時(shí)向節(jié)點(diǎn)發(fā)出傳送數(shù)據(jù)請(qǐng)求,得到節(jié)點(diǎn)的確認(rèn)后,協(xié)調(diào)器開始接收數(shù)據(jù),最后通過(guò)無(wú)線發(fā)送給上位機(jī)。協(xié)調(diào)器的程序流程如圖 64 所示。 博 創(chuàng) 杯 全 國(guó) 大 學(xué) 生 嵌 入 式 設(shè) 計(jì) 大 賽 30 圖 64 圖協(xié)調(diào)器的流程圖 關(guān)鍵函數(shù)及數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì)如下: ( 1) 設(shè)備的描述 程序中,兩種設(shè)備被配置:傳感器和中心收集設(shè)備。 中心收集設(shè)備作為協(xié)調(diào)器或路由器啟動(dòng),描述為: const SimpleDescriptionFormat_t zb_SimpleDesc = { MY_ENDPOINT_ID, // 端點(diǎn) MY_PROFILE_ID, // Profile ID DEV_ID_COLLECTOR, // 設(shè)備 ID DEVICE_VERSION_COLLECTOR, // 設(shè)備版本 0, // 保留 NUM_IN_CMD_COLLECTOR, // 輸入命令數(shù)量 (cId_t *) zb_InCmdList, // 輸入 命令列表 NUM_OUT_CMD_COLLECTOR, // 輸出命令數(shù)量 (cId_t *) NULL // 輸出命令列表 }。 傳感器設(shè)備的描述為: 博 創(chuàng) 杯 全 國(guó) 大 學(xué) 生 嵌 入 式 設(shè) 計(jì) 大 賽 31 const SimpleDescriptionFormat_t zb_SimpleDesc = { MY_ENDPOINT_ID, // 端點(diǎn) MY_PROFILE_ID, // Profile ID DEV_ID_SENSOR, // 設(shè)備 ID DEVICE_VERSION_SENSOR, // 設(shè)備版本 0, // 保留 NUM_IN_CMD_ SENSOR, // 輸入命令數(shù)量 (cId_t *) zb_InCmdList, // 輸入命令列表 NUM_OUT_CMD_ SENSOR, // 輸出命令數(shù)量 (cId_t *) zb_OutCmdList // 輸出命令列表 }。 ( 2) 節(jié)點(diǎn)類型的確定 if ( keys amp。 HAL_KEY_SW_1 ) { …… logicalType = ZG_DEVICETYPE_COORDINATOR。 …… } if ( keys amp。 HAL_KEY_SW_2 ) { …… logicalType = ZG_DEVICETYPE_ROUTER。 …… } ( 3) 發(fā)現(xiàn)和綁定 傳感器設(shè)備加入網(wǎng)絡(luò)后將試圖發(fā)現(xiàn)和綁定它自己到一個(gè)中心收集設(shè)備。如果發(fā)現(xiàn)個(gè)收集設(shè)備,它將選擇第一個(gè)響應(yīng)的中心收集設(shè)備建立綁定;如果沒有發(fā)現(xiàn)收集節(jié)點(diǎn),那么它將不斷進(jìn)行搜索。 用 osal_start_timer(MY_START_EVT,myStartRetryDelay)函數(shù)設(shè)置一個(gè)時(shí)間事件,該事件處理如下: If(event amp。 MY_FIND_COLLECTER_EVT) 博 創(chuàng) 杯 全 國(guó) 大 學(xué) 生 嵌 入 式 設(shè) 計(jì) 大 賽 32 { //繼續(xù)發(fā)送綁定 Zb_BindDevice(TRUE,SENSOR_REPORT_CMD_ID,(uint8 *)NULL)。 } zb_HandleOsalEvent()函數(shù)是專門為用戶留下的事件處理函數(shù)??梢钥闯?,如果沒有建立綁定,則傳感器設(shè)備將周期性的發(fā)送綁定請(qǐng)求。 void zb_HandleOsalEvent( uint16 event ) {uint8 pData[2]。 if ( event amp。 MY_START_EVT ) { zb_StartRequest()。 } 網(wǎng)絡(luò)啟動(dòng)建立成功后,中心收集設(shè)備必須進(jìn)入允許綁定模式,才能對(duì)傳感器發(fā)送的綁定請(qǐng)求做出響應(yīng)。本設(shè)計(jì)中,確定中心設(shè)備的啟動(dòng)模式之后,按下按鍵總開關(guān)以使設(shè)備進(jìn)入綁定模式。 ( 4)數(shù)據(jù)包的發(fā)送和接收 綁定建立成功后,傳感器設(shè)備將根據(jù)定義的時(shí)間間隔周期地采集溫度傳感器通過(guò)報(bào)告命令發(fā)送給收集設(shè)備。該報(bào)告命令要求收集設(shè)備應(yīng)答,通過(guò)函數(shù)zb_SendDataConfirm()可以指示應(yīng)答。如果傳感器設(shè)備有一個(gè)應(yīng)答沒有接收到,則傳感器設(shè)備將移除與它的綁定,重新發(fā)現(xiàn)和綁定。 通過(guò)函數(shù) zb_HandleOsalEvent()完成用戶定義的事件。 if ( event amp。 MY_REPORT_TEMP_EVT ) {// 讀取溫度值 pData[0] = TEMP_REPORT。 pData[1] = myApp_ReadTemperature()。 zb_SendDataRequest( 0xFFFE, SENSOR_REPORT_CMD_ID, 2, pData, 0, AF_ACK_REQUEST, 0 )。 osal_start_timerEx( sapi_TaskID, MY_REPORT_TEMP_EVT, myTempReportPeriod )。 } if ( event amp。 MY_FIND_COLLECTOR_EVT ) {// Find and bind to a collector device 博 創(chuàng) 杯 全 國(guó) 大 學(xué) 生 嵌 入 式 設(shè) 計(jì) 大 賽 33 zb_BindDevice( TRUE, SENSOR_REPORT_CMD_ID, (uint8 *)NULL )。 } 收集節(jié)點(diǎn)接收到傳感器設(shè)備發(fā)送的 數(shù)據(jù)包后,通過(guò)串口傳輸?shù)?PC 機(jī)。該過(guò)程通過(guò)接收數(shù)據(jù)指示函數(shù) zb_ReceiveDataIndication( )完成。 CONST uint8 strDevice[] = 0x。 void zb_ReceiveDataIndication( uint16 source, uint16 mand, uint16 len, uint8 *pData ) { uint8 buf[32]。 uint8 *pBuf。 uint8 tmpLen。 uint8 sensorReading。 if (mand == SENSOR_REPORT_CMD_ID) { //讀取傳感器數(shù)據(jù) sensorReading = pData[1]。 //寫信息到串口 } } 手機(jī) 終端顯示模塊 本模塊主要實(shí)現(xiàn) PC 機(jī)與客戶端手機(jī)的數(shù)據(jù)通信,程序流程如圖 65 所示。 圖 65 終端模塊流程圖 手機(jī)客戶端程序主要部分如下: 博 創(chuàng) 杯 全 國(guó) 大 學(xué) 生 嵌 入 式 設(shè) 計(jì) 大 賽 34 //溫度監(jiān)控對(duì)話框 private dialogTemp。 private EditText mTemp1。 private EditText mTemp2。 private EditText mTemp3。 private EditText mTemp4。 Socket socket = null。 private String TempStr[]。//用于存放溫度數(shù)值 private String AlarmFlag[]。//用于報(bào)警標(biāo)識(shí) private String LedFlag[]。//用于燈狀態(tài)標(biāo)識(shí) …… dialogTemp = new (this)。 public static String bytes2HexString(byte[] b) { ………………………………………………… } Message message = new Message()。
點(diǎn)擊復(fù)制文檔內(nèi)容
環(huán)評(píng)公示相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1