基于ZigBee的數(shù)據(jù)采集與無線傳輸試驗_第1頁
基于ZigBee的數(shù)據(jù)采集與無線傳輸試驗_第2頁
基于ZigBee的數(shù)據(jù)采集與無線傳輸試驗_第3頁
基于ZigBee的數(shù)據(jù)采集與無線傳輸試驗_第4頁
基于ZigBee的數(shù)據(jù)采集與無線傳輸試驗_第5頁
已閱讀5頁,還剩17頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

1、 基于 Zig ee 的數(shù)據(jù)采集與無線 傳輸實驗 作者: 日期: 2 6-2017 學(xué)年第二學(xué)期 課程實驗報告 課程名稱 : 無線傳感網(wǎng)絡(luò) 實驗名稱: 基于 ZigB e 的數(shù)據(jù)采集與無線傳輸實驗 姓名 班級 學(xué)號 同組同學(xué) 實驗課表現(xiàn) 出勤、表現(xiàn)得分 25% 2 實驗報告 實驗總分 操作結(jié)果得分 5% 5 得分 0% 實驗?zāi)康?了解Zi ee的工作原理和技術(shù)特點 ,利用 C25芯片開發(fā)一個簡單的 Zi Bee組網(wǎng)通信實驗。 實驗內(nèi)容 以小組為單位 ,利用CC2530芯片部署無線傳感網(wǎng)絡(luò)實驗,分別設(shè)計 采集節(jié)點、 匯聚節(jié)點 的程序 ,采集 節(jié)點 采集溫度信息, 并通過無線信道傳輸給匯聚節(jié)點。

2、匯聚節(jié)點再將溫度數(shù)據(jù)通過串口傳輸給上位機 ( P 實驗過程中遇到的問題以及如何解決的?(可以寫多條 ,是否認(rèn)真填寫將影響實驗成績 ) 在實驗過程中我遇到了 1、能接收后遇到很多的噪聲干擾并且不能接收自己發(fā)送的信息 2、接收到自己的信息后仍然有很多的噪聲干擾出現(xiàn)了很多的亂碼 3、接收自己的信息也被轉(zhuǎn)換成亂碼 4、遇到了選擇性接收上的技術(shù)問題 5、溫度的 ac ii 碼轉(zhuǎn)換錯誤 通過 . 的方式,我解決了這個問題。 1、修改了接收代碼并確認(rèn)發(fā)送代碼沒毛病 2、嘗試修改信道 3、檢查到接收子程序有問題并修改了 4、老師建議我們使用選擇性接收 5、通過組員合作研究討論并上網(wǎng)查找解決 沒有問題的情況下,

3、是否有創(chuàng)新思路(或多做哪些工作) 。 好像并沒有 實驗代碼如下: 發(fā)送代碼: /* * * * * * * * * * * * * 文 件 名: ain c * 作 者: Andy * 修訂: 2 13-01- 8 版本: 1.0 描述: 設(shè)置串口調(diào)試助手波特率: 11200bps 8N * 串口調(diào)試助手給 CC253 發(fā)字符串時 ,開發(fā)板會返回接收到的字符串 * */ #include #inc ude # cl de #inc ude / fne IBLEAL_IN ERRUPTS() (IEN0 = IEN1 = N2 = 0 0)/三個 cha rf rx_ uf 28; vod rf

4、_en( car * buf , en); voi rf_ e eive_i (); pde uns g d h chr; t pe f unsigned iuint; #d ine UA T R def ne UART0_T d f ne SIZ 1 cha xBuf ; char UartSt te; uhar c un; har RData S ;/存儲發(fā)送字符串 void Ini Clok(v ) CO MD /設(shè)置系統(tǒng)時鐘源為32MHZ 晶振 hle(C KCONSTA x0); CKCO MD = x47; /等待晶振穩(wěn)定 /設(shè)置系統(tǒng)主時鐘頻率為 MZ / * 功 入口參數(shù): 無

5、出口參數(shù) : 無 稱: InitSen r() 能: 溫度傳感器初始化函數(shù) * oid t n r(vo d) /關(guān)閉所有中斷 /DISABLE_ LL_I ERUPTS( ); /設(shè)置系統(tǒng)主時鐘為 2 /設(shè)置為 1 來連接溫度傳感器到 /使能溫度傳感 IiClck(); TR 0 x0; TEST0 x01; SC_AD 稱: GetTe per ture() 能 : 獲取溫度傳感器 AD 值 /* 功 入口參數(shù) : 無 出口參數(shù) : 通過計算返回實際的溫度值 * * float etTemperature( oi ) int lue; /選擇 1.25V 為參考電壓 ;14 位分辨率;對片

6、內(nèi)溫度 CON3 = (0 3E); 傳感器采樣 DCON1 |= 0 x0; ADCC 1 = x40; /選擇 DC 的啟動模式為手動 wh (!(ADCCON lue = A CL 4; /啟動 AD 轉(zhuǎn)化 / 等待 AD 轉(zhuǎn)換完成 /DCL 寄存器低 2 位無效 value = (u nt) AD H) 4); return (value-136 .5)/45; /根據(jù) AD 值 ,計算出實際的溫度 ,芯片手冊有錯 ,溫度系數(shù)應(yīng)該 是 . / /進(jìn)行溫度校正 ,這里減去 5 (不同芯片根據(jù)具體情況 校正) /* * 稱: D layS() 能: 以毫秒為單位延時 入口參數(shù): m ec

7、延時參數(shù) ,值越大 ,延時越久 出口參數(shù) : */ vo d ayMS( i t msec) uint i,j ; for (i0; imsec ; i+) /* fr (j=0 ; 070; j+); 稱: In tUart() 能 : 串口初始化函數(shù) 入口參數(shù) : 無 出口參數(shù) : 無 oid 置 * Ua t(vo ) ERCFG 0 x 0; 0SEL = 0 x0c ; 2DIR 0GCR |= 11;? U UD = 216; TX0I 0CSR |= /外設(shè)控制寄存器 UART 的 O位置:為 P0 口位 /P0_2, _用作串口 (外設(shè)功能) P優(yōu)先作為 UA T0 設(shè)置為 U

8、A T 方式 /波特率設(shè)為 1 520 0; x40; IEN = 0 84; /* * 稱: ar e dSt ing 能: 串口發(fā)送函數(shù) 入口參數(shù): ata:發(fā)送緩沖區(qū) 出口參數(shù) : 無 / R TX 中斷標(biāo)志初始置位 0 /允許接收 /開總中斷允許接收中斷 len:發(fā)送長度 * * */ oid Ua tSed tring (ch r * ata, int len) uint i ; for(i= ; ien; +) ); U0D F = * ata+; wl(TX0 = UX0 F 0; R初始化和發(fā)送與接收 id rf_init() /以下是 v TXPOWE /FRM TRL0 |

9、 CCACTRL0 = 0 x 5; (0 0 x8; 040); FRMF L 0 = 0 x0; / 發(fā)射功率為 dB AU / 推薦值 ma | A T _CRC tRF 軟件生成 */ / 靜止接收過濾, 即接收所有數(shù)據(jù)包 0 x ; TXFILTC G 0 x0; A T L1 = 015; /AGC TRL 0 E; FSCA1 / 推薦值 smartRF 軟件生成 / FLTFG = 0 x0; / 推薦值 smartR軟件生成 FEC L 009; / 選擇通道 1 RF QM |= (1 6); IEN2 | (0); / 使能 RF 數(shù)據(jù)包接收中斷 / 使能 RF 中斷 F

10、ST = xED; RFT = xE3; / 清除 RF 接收緩沖區(qū) ISFLUSHR / R接收使能 ISXON void f_sen ( ar * buf , i n) R ST = 0 xE3; / RF 接收使能 ISRXON whi e( FS S 1 / 等待發(fā)送狀態(tài)不活躍 并且 沒有接收 FIRQM0 IEN / 禁止接收數(shù)據(jù)包中斷 / 清除 RF 全局中斷 FS RFQ1 = xE; 11); / 清除發(fā)送緩沖區(qū) IS L SHTX 清除發(fā)送完成標(biāo)志 填充緩沖區(qū) RFD = len or (int i = 0; FD = *pbuf+; 填充過程需要增加 2 字節(jié), 2; i

11、l n; i+) R 校驗自動填充 F = 0 xE9; whi (!(RFIRQF1 (11) ); 0 = P _0; / 發(fā)送數(shù)據(jù)包 IST ON / 等待發(fā)送完成 FIRQF (11); / 清除發(fā)送完成標(biāo)志位 F Q | IE2 = (1 ); 1 ); / RX 接收中斷 /* * * * 程序入口函數(shù) v * id m in(vo d) /ch / r i; lot Av Tem; /char tT p ; CLKCON M /設(shè)置系統(tǒng)時鐘源為 2MHZ while(CL ONSA /等待晶振穩(wěn)定為 3 /設(shè)置系統(tǒng)主時鐘頻率為 2M InitUart () ; UartState

12、 = UART0_RX ; mems t( R ata, 0, I it ens r(); rf_ni(); /調(diào)用串口初始化函數(shù) /串口 0 默認(rèn)處于接收模式 SIZ ); ture(); loat x = etTempe char a 0; sprn (a, g, x); cr b15=A C1: strca (,a); while( ) r _ e d(b,20); D l yM (20); 文件名稱 :UART(Re eiv IN) _E.c * 功能:CC2 x 系列片上系統(tǒng)基礎(chǔ)實驗 - ART(接收數(shù)據(jù) 中斷方式 ) if(UartSt te = ART0_ X)/發(fā)送狀態(tài) U0

13、S x4;禁止接收 vgTemp = 0; (i=0; i 4; i+) vgTemp = G tTempe tur( ); Av Temp gTe /2;/每次累加后除2 meset(s rTemp, 0, 6); s rin f(st Temp, %.02f n, Avgemp);/將浮點數(shù)轉(zhuǎn)成字符串 artSend tring(str e p, 6); 延時 /發(fā)送已記錄的字符串。 /允許接收 /恢復(fù)到接收狀態(tài) 計數(shù)清 0 /清空接收緩沖區(qū) rf_send( trTe p , 5); elay (1000); / UartSendS n( RxData, oun ); U0CSR = 0

14、 x4; artSta e = UART0_RX ; count = 0; memset(R D ta, , SIZE ); * 接收代碼: /*過 A T0 接收數(shù)據(jù) ,采用中斷方式。 * 描 述:本實驗使用 C 25x 系列片上系統(tǒng)的片內(nèi) USART 控制器 ,工作在 UART 模式下 ,通 * * * * * * * 實驗硬件 : 用 USB 電纜連接 K SmartRF05E上的 U B 接口與用戶 P的 B 接口。 * 作者: O ER 日期:2 004-18 */ / 包含頭文件 /* #inc de ioCC 5 0.h #i lude CD.h #in lude stdo.h

15、/ CC253 的頭文件 ,包含對 C2530 的寄存器、中斷向量等的定義 / lcd 驅(qū)動頭文件 / C 語言標(biāo)準(zhǔn)輸入輸出庫頭文件 /* */ /* 定義枚舉類型 */ /* * * * * * * enum SYS LK_SR OS _3MHz,RC_16 z; 型 */ / 定義系統(tǒng)時鐘源(主時鐘源)枚舉類 */ * * * * * * * * * * * * * 函數(shù)名稱 : ystemC ckSourceSelect * 功 能:選擇系統(tǒng)時鐘源(主時鐘源 ) * 入口參數(shù): sou c *X SC_32MHz 32MHz 晶體振蕩器 *C_1MHz16MHz RC 振蕩器 * 出口參

16、數(shù):無 * 返 回 值 :無 */ void SytmCocSourSelect(enum S C K_SR s rce) n i e car osc32 _bm = CLKCO MD * 系統(tǒng)時鐘源 (主時鐘源)選擇 16MHz RC 振蕩器,定時器 tik 設(shè)置為 16MH ,時鐘速度設(shè)置為 6M z LCNMD.OSC32Kb7 不改變2KH 時鐘源選擇保持先前設(shè)置 CLKC NCM .OSCb6 = 1系統(tǒng)時鐘源 (主時鐘源 )選擇 Mz RC 振蕩器 CLK ONCMD. CK PDb5. = 00 定時器 tck 設(shè)置為 16MHz CLKCONCM .CKSDb2.b 001 時

17、鐘速度設(shè)置為 16MHz * (so rce = RC 16 z) CLKC NCMD SC32 b7 */ L CMD = ( s32 bm) | /* CLKCONCMD.OSC 6 = 1 */ (0 x01 6) | /* C C CMD TIC PD .b 001 * ( 01 3) | /* LKCONC D.LKSPD 2.b = 1 * ( 01 0); /* 系統(tǒng)時鐘源 為 3 Hz (主時鐘源 )選擇 MHz 晶體振蕩器 ,定時器 k 設(shè)置為 2MHz 時鐘速度設(shè)置 CKONCMD OSC32Kb7 不改變 CLKCONCMD.OSC 6 = 0 CKCONCMD. CK

18、PDb5 .b3 CL C MD. LKSPD b2.b0 / 32KH 時鐘源選擇保持先前設(shè)置 系統(tǒng)時鐘源 (主時鐘源 )選擇 32M = 000 定時器 ick 設(shè)置為 z 0 時鐘速度設(shè)置為 32 z 晶體振蕩器 else (sourc = XO C_32MHz) 0 x 06) | (0 x00 3) | (0 x00 0)/); C O MD = ( osc32k / / 等待所選擇的系統(tǒng)時鐘源 (主時鐘源 )穩(wěn)定 */ _clkcon md = CLKC NM;/ 讀取時鐘控制寄存器 CLKCON D d clk onsta CKCON T;/ 讀取時鐘狀態(tài)寄存器 CLCOSTA

19、while(_cl con t != _ lkc ncmd); 直到 C C S A 寄存器的值與 CLKCONCMD 寄存 / 器的值一致 ,說明所選擇的系統(tǒng)時鐘源(主 / 時鐘源 )已經(jīng)穩(wěn)定 /* * * * * * * * * * * * * 函數(shù)名稱 :In tAR 0 * 功能:UAR 0 初始化 * P0 2 RX *P0. X *波特率: 5 600 * 數(shù)據(jù)位 :8 * 停止位 :1 * 奇偶校驗 : 無 入口參數(shù) : 無 出口參數(shù):無 返 回 值 :無 void InitUART0(voi ) /* 片內(nèi)外設(shè)引腳位置采用上電復(fù)位默認(rèn)值 ,即 PERC寄存器采用默認(rèn)值* / P

20、0.2X 0.3TX P0.4 T .5R / /* UART0 相關(guān)引腳初始化 PSL |= (0 x01 2) (x01 3); P.2和 P0作為片內(nèi)外設(shè) I/O /* 0 口外設(shè)優(yōu)先級采用上電復(fù)位默認(rèn)值 ,即 I寄存器采用默認(rèn)值 */ 第一優(yōu)先級: ART0 第二優(yōu)先級 :USART1 第三優(yōu)先級 :Timer1 */ /* U RT0 波特率設(shè)置 */ / 波特率 :57 0 當(dāng)使用 32 晶體振蕩器作為系統(tǒng)時鐘時,要獲得5700 波特率需要如下設(shè)置 : UxBAUD.BA D_M 216 UxGCR.BAUD_E = 10 該設(shè)置誤差為 .03 */ U0BAU 16; U0GCR

21、 = 1 ; /* S RT 模式選擇 */ 0CSR = x80; / UR模式 / UART0 配置 */ U0UCR | 0 x80; / 進(jìn)行 USAT 清除 * 以下配置參數(shù)采用上電復(fù)位默認(rèn)值 : 硬件流控:無 奇偶校驗位(第 9 位):奇校驗 第 9 位數(shù)據(jù)使能:否 奇偶校驗使能:否 停止位:個 停止位電平:高電平 起始位電平 :低電平 */ * 用於發(fā)送的位順序采用上電復(fù)位默認(rèn)值,即0R 寄存器采用上電復(fù)位默認(rèn)值 */ /* LSB 先發(fā)送 */ UXIF 0;/ 清零 UAR RX 中斷標(biāo)志 UC |= (01 ) ; / 使能接收器 URX0 E = ;/ 使能 ART0 中

22、斷 har r _r _buf 6; ch r p u 1; /* * * * * * * * * * * * * * * * 函數(shù)名稱: U T0Se B te * 功 能: AR 發(fā)送一個字節(jié) * 入口參數(shù) :c * 出口參數(shù):無 * 返 回 值:無 id UAR 0SendBte(unigned har c) UDBUF = c; / 將要發(fā)送的 1 字節(jié)數(shù)據(jù)寫入 0DBUF hile ( !UTX0IF);/ 等待 TX 中斷標(biāo)志 ,即 UDBF 就緒 0IF = 0; / 清零 TX 中斷標(biāo)志 / * * * 函數(shù)名稱 :AR 0Sn Stri g 功能: UART 發(fā)送一個字符串

23、入口參數(shù):無 * 出口參數(shù):無 返 回 值 :無 v d U T0S ndSt i g( car *str) wh (1) if(*s r = 0) re ; / 遇到結(jié)束符,退出 URT0S dByte(* tr+); / 發(fā)送一字節(jié) vod r _ini () TX W= 0D5; 發(fā)射功率為 1dBm /FRMCT L0 |= (020 | 0 x40); /* AUTO_AC AU CR * CA TRL0 = 0 xF8; FRMFILT0 = 0 x0 ; FSCAL = x00; TXF LTCFG = x0; AGCCTRL1 = x 5; / GCRL2 =0F; /TXFI

24、L CFG = 09; FEQCTR = 009; RI M0 |= (1 ); IEN2 |= (10); FST = 0 xED; RST = 0E; / 推薦值 smartR軟件生成 / 靜止接收過濾,即接收所有數(shù)據(jù)包 / 推薦值 smar RF 軟件生成 / 推薦值 smar RF 軟件生成 / 選擇通道 11 / 使能 RF 數(shù)據(jù)包接收中斷 / 使能 RF 中斷 清除接收緩沖區(qū) S HRX oid rf_ ece ve_ s( ) it rf_ xle = 0; char r1 = 0; ha crc ok ; c ar *rf_rx_buf; r rx_ en = RFD - 2;

25、 f_r _len for ( t i = 0; i rf x_len; i+) rf_ _b = RF; r0 = R D 3; c c_ok RFD; / 長度去除兩字節(jié)附加結(jié)果 / 連續(xù)讀取接收緩沖區(qū)內(nèi)容 / 讀取 RSSI 結(jié)果 / 讀取 CR 校驗結(jié)果 BIT7 / R 接收使能 IS O / 清除接收緩沖區(qū) RFST = ED; if( cr _o i s rl n( f rx_buf); ) if(rf_rx_b fi :) strcat(rf_rx_b f, n); UART S dS r ng ( r _rx_buf ); / / 串口發(fā)送 / Uar edtr n (r,

26、1); / se / /Uar n St ng( CR Er r,9); / /unig d lon rc_cout ;/ 累計接收到的字節(jié)計數(shù) / uns gne long rc _charA_count = 0; / 累計接收到的字符 計數(shù) /* * * * * * * * * * * * * 函數(shù)名稱: URX0_ISR * 功能:ART RX 中斷服務(wù)函數(shù) 入口參數(shù):無 * 出口參數(shù) : 無 * 返 回 值:無 * # raga v ctor=RF_VE TO itrr pt voi rf_isr(v id) usiged cha e; P2_0 = P2 ; / LED 翻轉(zhuǎn) 提示作

27、用 e = A; EA = 0; 接收到一個完整的數(shù)據(jù)包 if ( FIRQF0 S CN =0 x03; RFIRQF0 A = e; /* 函數(shù)名稱: main 功能 :mai函數(shù)入口 * 入口參數(shù):無 * 出口參數(shù):無 / 清除 R中斷標(biāo)志 / 清除 RF 接收完成數(shù)據(jù)包中斷 * * * * * * */ * 返 回 值:無 v id ma( vod) ar s1 ; ha rcv_co nt 16 ; Syste ClockS u 時鐘源) ceSelec (XOSC_ 2MHz ); 選擇 32 Hz 晶體振蕩器作為系統(tǒng)時鐘源 (主 H lLcd n t(); / LCD 初始化 a

28、lLc_W_Cl ar( ); / 清屏 /* 在 LD 上顯示相關(guān)信息 * HalLc Wr t Str g(CC 53 URT0 Recv, H LLCDLIE_1); H L Writ rin( 76 -1- , H L_LCD_ INE_3); HalLcd_ W_Wai Us(500); IitUART0 (); / UAR 0初始化 rf int() rf_ cei e_is( ); E = 1; / 使能全局中斷 ch rcvchar _count16 ; /* 在 LCD 上顯示從 ART0 累計接收到的字節(jié)數(shù)量以及字符 的數(shù)量 */ whi e(1) spri tf(s, x%0 X , rcv_ ount); HalLcdrtetrig(cha *)s, HAL_ CD_LIN _4); / 累計接收 (字節(jié)) sritf(s,0 x%0X,rcv_ h rA_ ount); HlLcdWiteString(ch )s, HAL_L DLE5); / 累計接收字符? 本次實驗的體會 (可以寫多條 ,是否認(rèn)真填寫將影響實驗成績 ) 通過本實驗 ,我理解 /了解/熟悉了 . CC253 是用

溫馨提示

  • 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論