版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
1、基于zigbee的溫度采集實驗作者:姚志強一般而言,無線傳感網(wǎng)絡(luò)具有采集點眾多,分布面積廣;網(wǎng)絡(luò)節(jié)點間的位置關(guān)系不定,節(jié)點動態(tài)加入或脫離網(wǎng)絡(luò)等特性。Z-Stack2007協(xié)議棧具有這些實驗功能特性。5.3.1 實驗?zāi)康呐c器材1)實驗?zāi)康谋緦嶒瀸⒗肸-Stack2007協(xié)議棧構(gòu)建一個具有實際意義的無線傳感器網(wǎng)絡(luò)。該網(wǎng)絡(luò)中具有采集節(jié)點和傳感節(jié)點。傳感節(jié)點連接各種傳感器,利用傳感器獲取環(huán)境溫度、光照等外界信息。采集節(jié)點負(fù)責(zé)接收該zigbee網(wǎng)絡(luò)里傳感節(jié)點的信息,并通過串口上傳至PC端的串口助手進行顯示。采集節(jié)點,上電啟動后負(fù)責(zé)建立網(wǎng)絡(luò),并開啟允許綁定功能;傳感節(jié)點,上電啟動后加入網(wǎng)絡(luò),并自動發(fā)起綁
2、定請求,待采集節(jié)點建立綁定后,將傳感器節(jié)點的外界溫度信息和光照信息發(fā)送到采集節(jié)點上。為了實驗簡單,只有一個采集節(jié)點收集這些信息,處理后通過串口上傳到計算機,可以在串口調(diào)試工具上看到,為了提高網(wǎng)絡(luò)的負(fù)載能力,可以增加中心收集節(jié)點。所以我們可以建立星形拓?fù)渚W(wǎng)絡(luò),協(xié)調(diào)器是采集節(jié)點,終端節(jié)點是傳感節(jié)點。為了實現(xiàn)上述實驗?zāi)康?,?yīng)該做到: u 自動形成一個網(wǎng)絡(luò);u 傳感器設(shè)備必須能自動加入網(wǎng)絡(luò),并自動完成綁定;u 如果傳感器設(shè)備沒有從中心節(jié)點收到應(yīng)答,它將自動移除到該中心節(jié)點的綁定。然后它將自動的去發(fā)現(xiàn)新的中心節(jié)點綁定。 本實驗中傳感節(jié)點具有獲取節(jié)點內(nèi)部溫度信息、外界溫度信息、外界光照信息等功能。2)實驗
3、器材u 4個CC2530開發(fā)模塊(1個采集器節(jié)點,1個路由器,2個傳感器節(jié)點);u 2個DS18B20溫度傳感器;u 2個光敏電阻;5.3.2 實驗原理與步驟1)硬件介紹1 溫度傳感器DS18b20DS18B20是美國DALLAS半導(dǎo)體公司繼DS1820之后最新推出的一種數(shù)字化單總線器件。屬于新一代適配微處理器的改進型智能溫度傳感器。它能夠直接讀出被測溫度,并且可根據(jù)實際要求通過簡單的編程實現(xiàn)912位的數(shù)字值讀數(shù)方式??梢苑謩e在93.75ms和750ms內(nèi)完成9位和12位的數(shù)字量,并且從DS18B20讀出的信息或?qū)懭隓S18B20的信息僅需要一根口線(單線接口)讀寫。其測量溫度范圍為-55+1
4、25?,F(xiàn)場溫度直接以“一線總線”的數(shù)字方式傳輸,用符號擴展的16位數(shù)字方式串行輸出,大大提高了系統(tǒng)的抗干擾性。廣泛用于工業(yè)、民用、軍事等領(lǐng)域的溫度測量及控制儀器、測控系統(tǒng)和大型設(shè)備中。DS18B20的性能特點如下:l 采用DALLAS公司獨特的單線接口方式:DS18B20與微處理器連接時僅需要一條口線即可實現(xiàn)微處理器與DS18B20的雙向通訊; l 在使用中不需要任何外圍元件;l 可用數(shù)據(jù)線供電,供電電壓范圍:+3.0V+5.5V;l 測溫范圍:-55+125。固有測溫分辨率為0.5。當(dāng)在-10+85范圍內(nèi),可確保測量誤差不超過0.5,在-55+125范圍內(nèi),測量誤差也不超過2;l 通過編程可
5、實現(xiàn)912位的數(shù)字讀數(shù)方式;l 用戶可自設(shè)定非易失性的報警上下限值;l 支持多點的組網(wǎng)功能,多個DS18B20可以并聯(lián)在唯一的三線上,實現(xiàn)多點測溫l 負(fù)壓特性,即具有電源反接保護電路。當(dāng)電源電壓的極性反接時,能保護DS18B20不會因發(fā)熱而燒毀,但此時芯片無法正常工作;l DS18B20的轉(zhuǎn)換速率比較高,進行9位的溫度值轉(zhuǎn)換只需93.75ms;l 適配各種單片機或系統(tǒng);l 內(nèi)含64位激光修正的只讀存儲ROM,扣除8位產(chǎn)品系列號和8位循環(huán)冗余校驗碼(CRC)之后,產(chǎn)品序號占48位。出廠前產(chǎn)品序號存入其ROM中。在構(gòu)成大型溫控系統(tǒng)時,允許在單線總線上掛接多片DS18B20。 DS18b20溫度傳感
6、器實物如圖 所示。圖 DS18b20溫度傳感器實物圖Zigbee實驗板與溫度傳感器18b20的連接如圖 所示圖 Zigbee實驗板與溫度傳感器18b20的連接ZigBee芯片通過P6_2管腳讀取DS18b20所產(chǎn)生的溫度數(shù)據(jù)。2 光敏電阻器光敏電阻器是利用半導(dǎo)體的光電效應(yīng)制成的一種電阻值隨入射光的強弱而改變的電阻器;入射光強,電阻減小,入射光弱,電阻增大。光敏電阻器一般用于光的測量、光的控制和光電轉(zhuǎn)換(將光的變化轉(zhuǎn)換為電的變化)。常用的光敏電阻器硫化鎘光敏電阻器,它是由半導(dǎo)體材料制成的。光敏電阻器的阻值隨入射光線(可見光)的強弱變化而變化,在黑暗條件下,它的阻值(暗阻)可達110M歐,在強光條
7、件(100LX)下,它阻值(亮阻)僅有幾百至數(shù)千歐姆。光敏電阻器對光的敏感性(即光譜特性)與人眼對可見光(0.40.76)m的響應(yīng)很接近,只要人眼可感受的光,都會引起它的阻值變化。光敏電阻的主要參數(shù):光敏電阻的主要參數(shù)是: 光敏電阻的實驗圖l 光電流、亮電阻。光敏電阻器在一定的外加電壓下,當(dāng)有光照射時,流過的電流稱為光電流,外加電壓與光電流之比稱為亮電阻,常用“100LX”表示。 l 暗電流、暗電阻。光敏電阻在一定的外加電壓下,當(dāng)沒有光照射的時候,流過的電流稱為暗電流。外加電壓與暗電流之比稱為暗電阻,常用“0LX”表示。 l 靈敏度。靈敏度是指光敏電阻不受光照射時的電阻值(暗電阻)與受光照射時
8、的電阻值(亮電阻)的相對變化值。 l 光譜響應(yīng)。光譜響應(yīng)又稱光譜靈敏度,是指光敏電阻在不同波長的單色光照射下的靈敏度。若將不同波長下的靈敏度畫成曲線,就可以得到光譜響應(yīng)的曲線。 l 光照特性。光照特性指光敏電阻輸出的電信號隨光照度而變化的特性。從光敏電阻的光照特性曲線可以看出,隨著的光照強度的增加,光敏電阻的阻值開始迅速下降。若進一步增大光照強度,則電阻值變化減小,然后逐漸趨向平緩。在大多數(shù)情況下,該特性為非線性。 l 伏安特性曲線。伏安特性曲線用來描述光敏電阻的外加電壓與光電流的關(guān)系,對于光敏器件來說,其光電流隨外加電壓的增大而增大。 l 溫度系數(shù)。光敏電阻的光電效應(yīng)受溫度影響較大,部分光敏
9、電阻在低溫下的光電靈敏較高,而在高溫下的靈敏度則較低。 l 額定功率。額定功率是指光敏電阻用于某種線路中所允許消耗的功率,當(dāng)溫度升高時,其消耗的功率就降低。光照傳感器實物如圖 所示圖 光照傳感器實物圖Zigbee實驗板與光敏電阻的連接如圖 所示圖 Zigbee實驗板與光敏電阻的連接 將ZigBee芯片的P04引腳設(shè)置為AD采樣的模擬輸入引腳,這樣由光敏電阻阻值變換所引起的電壓的變化量就會反映在芯片的模擬輸入引腳上,芯片根據(jù)電壓的變化量可以判斷出當(dāng)前的光照強度。2)程序流程1 傳感節(jié)點發(fā)送數(shù)據(jù)流程在節(jié)點成功加入網(wǎng)絡(luò)并且同協(xié)調(diào)器綁定成功后,通過SimpleSensor.c文件中的zb_BindCo
10、nfirm()函數(shù)來調(diào)用myApp_StartReporting()函數(shù)1.void zb_BindConfirm( uint16 commandId, uint8 status ) (void)commandId; if ( ( status = ZB_SUCCESS ) && ( myAppState = APP_START ) ) myAppState = APP_BOUND; myApp_StartReporting(); else osal_start_timerEx( sapi_TaskID, MY_FIND_COLLECTOR_EVT, myBindRetryDe
11、lay ); 2.在myApp_StartReporting()函數(shù)中觸發(fā)測量溫度事件。void myApp_StartReporting( void ) osal_start_timerEx( sapi_TaskID, MY_REPORT_TEMP_EVT, myTempReportPeriod ); osal_start_timerEx( sapi_TaskID, MY_REPORT_BATT_EVT, myBatteryCheckPeriod );3.在函數(shù)zb_HandleOsalEvent()中對該事件進行響應(yīng)。void zb_HandleOsalEvent( uint16 even
12、t ) uint8 pData2; if ( event & MY_REPORT_EXTEMP_EVT ) pExTemp0 = EXTEMP_REPORT; myApp_ReadExTemperature(); osal_memcpy( pExTemp+1, ch, 8 ); zb_SendDataRequest( 0xFFFF, SENSOR_REPORT_CMD_ID, 9, pExTemp, 0, AF_ACK_REQUEST, 0 ); 4.事件響應(yīng)函數(shù)通過調(diào)用myApp_ReadExTemperature()函數(shù)讀取當(dāng)前溫度值。void myApp_ReadExTemper
13、ature( void ) UINT8 temh,teml; UINT16 num; UINT8 i; uint8 Temp_channel; P0DIR=0x00; P1DIR |= 0x0d; / 設(shè)置P1.0,P1.2,P1.3為輸出方式 P2DIR |= 0x01; / 同上 read_data();/ 讀取溫度 Temp_channel=0x31; teml=sensor_data_value0; temh=sensor_data_value1; i=(Temp_channel-0x31)*2; ch0=Temp_channel;/當(dāng)前顯示的傳感器的編號 ch1=' '
14、; num=teml*625; /小數(shù)部分的取值每位代表0.0625(精度) if(flag=1) /判斷正負(fù)溫度 ch2='-' /+0x2d 為變"-"ASCII碼 else ch2='+' if(temh/100=0) ch3=' ' else ch3=temh/100+0x30; /+0x30 為變 09 ASCII碼 if(temh/10%10=0)&&(temh/100=0) ch4=' ' else ch4=temh/10%10+0x30; ch5=temh%10+0x30; ch
15、6='.' ch7=num/1000+0x30;/忽略小數(shù)點后1位的數(shù) read_data()是負(fù)責(zé)從DS18b20中讀取當(dāng)前溫度的函數(shù),其中涉及到對DS18b20器件單總線結(jié)構(gòu)的操作函數(shù),該函數(shù)位于DS18B20.c文件中,詳細(xì)操作流程請結(jié)合DS18b20相關(guān)數(shù)據(jù)手冊參看附錄中的程序清單,在此就不詳細(xì)列出。5.事件響應(yīng)函數(shù)通過調(diào)用zb_SendDataRequest()函數(shù)將得到的溫度值發(fā)送至協(xié)調(diào)器節(jié)點。2 匯聚節(jié)點接收數(shù)據(jù)流程程序接收數(shù)據(jù)函數(shù)void zb_ReceiveDataIndication( uint16 source, uint16 command, uint1
16、6 len, uint8 *pData ) . uint8 sensorReading; uint8 tmpBuf32; uint8 *outputBuf; if (command = SENSOR_REPORT_CMD_ID) sensorReading = pData1; outputBuf =tmpBuf; switch( pData0 ) case EXTEMP_REPORT: tmpBuf1='7' tmpBuf6 = '*' while(i<len) tmpBuf7+i = pData1+i;/接收到的數(shù)據(jù) i+; i=0; tmpBuflen
17、+6 ='#' HalUARTWrite ( Urtport, tmpBuf, len+7);/寫串口 向上位機報告 osal_mem_free( tmpBuf ); break; default: . HalUARTWrite ( HAL_UART_PORT_0, buf, 32 ); osal_set_event(sapi_TaskID, LED_TOGGLE_EVT); 接收到數(shù)據(jù)后,通過串口匯報給上位機程序。程序的流程圖如圖 所示。圖 數(shù)據(jù)報告程序流程圖通過以上流程,由溫度傳感器DS18b20獲得的溫度數(shù)據(jù)就可以通過ZigBee網(wǎng)絡(luò)發(fā)送至與ZigBee匯聚節(jié)點通信的上位
18、機軟件中。完成對遠程溫度數(shù)據(jù)的采集工作。3)實驗步驟第一步:開發(fā)模塊加電,并連接好仿真器。利用IAR開發(fā)工具設(shè)置成debug,2個模塊下載collector.c文件,2個模塊下載sensor.c文件。其中下載collector.c程序的模塊是采集器,下載sensor.c程序的模塊是傳感器。第二步:下載成功后,先啟動一個采集器,按順序按下模塊的上鍵->右鍵->下鍵,此時四個燈都一直亮,表明該采集器建立了網(wǎng)絡(luò),并可以讓其他模塊加入到該網(wǎng)絡(luò)中。第三步:啟動另一個采集器,按鍵上鍵即可,此時四個燈都一直亮。第四步:分別啟動兩個傳感器,按下模塊的下鍵,此時傳感器模塊的綠燈、紅燈、黃燈一起快速閃
19、爍,采集器的紅燈在慢速閃爍,表明傳感器的數(shù)據(jù)在不停的向采集器發(fā)送數(shù)據(jù)。第五步:采集數(shù)據(jù),分析數(shù)據(jù)。傳感器每隔2秒一次上傳至采集器。4)程序清單清單5.1 讀取傳感器測出的外界溫度信息/* * 函數(shù)名 myApp_ReadExTemperature * 描述 讀取傳感器測出的外界溫度信息 AD采樣使用P07管腳 * 參數(shù) 無 * 返回值 返回環(huán)境的溫度信息,只保留了整數(shù)部分 */static uint8 myApp_ReadExTemperature( void ) UINT8 temh,teml; read_data(); / 讀取溫度 teml=sensor_data_value0;/小數(shù)部
20、分 temh=sensor_data_value1;/整數(shù)部分 return temh;清單5.2 把讀取的溫度數(shù)據(jù)轉(zhuǎn)換為真實的溫度信息/* * 函數(shù)名 read_data * 描述 利用read_1820函數(shù)讀取溫度數(shù)據(jù)之后,把溫度數(shù)據(jù)轉(zhuǎn)換為溫度信息 * 參數(shù) 無 * 返回值 無 */void read_data(void) UINT8 temh,teml; UINT8 a,b,c; init_1820(); /復(fù)位18b20 write_1820(0xcc); / 發(fā)出轉(zhuǎn)換命令 搜索器件 write_1820(0x44); /啟動 Delay_nus(50000); init_1820()
21、; write_1820(0xcc); write_1820(0xbe); teml=read_1820(); /讀數(shù)據(jù) temh=read_1820(); if(temh&0x80)/判斷正負(fù) flag=1; c=0; c=c|temh; c=c&0x00ff; c=c<<8; a=c; a=c|teml; a=(a0xffff);/異或 a=a+1; /取反加1 teml=a&0x0f; temh=a>>4; else flag=0; /為正 a=temh<<4; a+=(teml&0xf0)>>4; /得到高
22、位的值 b=teml&0x0f; temh=a; teml=b&0x00ff; sensor_data_value0=teml; sensor_data_value1=temh;清單5.3 利用DS18B20讀取溫度數(shù)據(jù)函數(shù)/* * 函數(shù)名 read_1820 * 描述 利用DS18B20讀取溫度數(shù)據(jù)的底層函數(shù) * 參數(shù) 無 * 返回值 返回讀取的溫度數(shù)據(jù) */UINT8 read_1820(void) UINT8 temp,k,n; temp=0; for(n=0;n<8;n+) CL_DQ; SET_DQ; SET_IN; k=IN_DQ; /讀數(shù)據(jù),從低位開始 if
23、(k) temp|=(1<<n); else temp&=(1<<n); Delay_nus(70); /60120us SET_OUT; return (temp); 清單5.4 傳感器讀取外部光照強度的函數(shù)/* * 函數(shù)名 myApp_ReadLight* 描述 讀取傳感器測出的外界光度強度信息 AD采樣使用P04管腳 * 參數(shù) 無 * 返回值 返回環(huán)境的光照強度信息,范圍在0100之間,100最亮 */static uint8 myApp_ReadLight( void ) INT8 adc_value; P0DIR &= (0x01<<4); /設(shè)置P04為輸入模式,采集P04的電壓 ADCCFG |= (0x01<<0x04); /設(shè)置P04使能/設(shè)置A
溫馨提示
- 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五年度民辦學(xué)校校車服務(wù)合同2篇
- 2025版新能源汽車銷售與服務(wù)合同模板下載4篇
- 2025年度農(nóng)業(yè)科技項目知識產(chǎn)權(quán)保護合同8篇
- 2025版綠色建筑節(jié)能技術(shù)實施合同4篇
- 2025年度高端培訓(xùn)學(xué)校副校長職務(wù)聘任合同4篇
- 二零二五年度農(nóng)家樂土地流轉(zhuǎn)與鄉(xiāng)村旅游發(fā)展合同
- 二零二五年度農(nóng)家樂房屋出租與鄉(xiāng)村旅游開發(fā)合同
- 2025年度汽車租賃合同車輛違章處理范本3篇
- 案外人另案確權(quán)訴訟與執(zhí)行異議之訴的關(guān)系處理
- 二零二五年度民間借款擔(dān)保與資產(chǎn)保全服務(wù)合同樣本3篇
- 盤式制動器中英文對照外文翻譯文獻
- 社會系統(tǒng)研究方法的重要原則
- 重癥醫(yī)學(xué)科健康宣教手冊
- 2022版《義務(wù)教育英語課程標(biāo)準(zhǔn)》解讀培訓(xùn)課件
- 科技進步類現(xiàn)代軌道交通綜合體設(shè)計理論與關(guān)鍵技術(shù)公
- 五個帶頭方面談心談話范文三篇
- 互聯(lián)網(wǎng)的發(fā)展歷程
- 部編人教版五年級道德與法治下冊全冊課件(完整版)
- 廣西貴港市2023年中考物理試題(原卷版)
- 外觀質(zhì)量評定報告
- 窒息的急救解讀課件
評論
0/150
提交評論