mạng cảm biến khụng dõy khi tiến hành thực nghiệm tại cụng viờn được thể
hiện ở bảng số liệu trong phần phụ lục của đề tài.
Cỏc kết quả được minh họa ở cỏc hỡnh vẽ dưới dõy:
- Thụng số cường độ tớn hiệu đo được tại điểm thu (cụng suất nhận) đo được tại cỏc khoảng cỏch khỏc nhau giữa hai nỳt mạng thể hiện ở hỡnh vẽ dưới đõy:
- 78 - 0 20 40 60 80 100 120 140 160 -100 -90 -80 -70 -60 -50 -40 T rung bỡ nh c ụng su ấ t n h ậ n (dB m ) Khoảng cỏch nỳt phỏt - nỳt thu (m)
Hỡnh 3.24: Mối liờn hệ giữa cụng suất nhận so với khoảng cỏch khi tiến hành thực nghiệm trong cụng viờn
Trong đú:
+ cỏc chấm hỡnh vuụng giỏ trị trung bỡnh của cụng suất nhận trong 10 lần
đo việc truyền tớn hiệu giữa hai nỳt mạng.
+ cỏc thanh thẳng đứng qua giỏ trị trung bỡnh cụng suất nhận được thể hiện giới hạn sai số so với giỏ trị trung bỡnh của cụng suất nhận
+ đường nối giữa cỏc chấm hỡnh vuụng thể hiện xu hướng biến đổi của cụng suất nhận so với khoảng cỏch giữa nỳt phỏt và nỳt thu
- Thụng số tỷ lệ nhận được gúi tin thay đổi so với khoảng cỏch giữa hai nỳt mạng cảm biến khụng dõy được thể hiện ở hỡnh vẽ dưới đõy:
- 79 - 0 20 40 60 80 100 120 140 160 -0.2 0.0 0.2 0.4 0.6 0.8 1.0 1.2 T rung bì nh t ỉ lệ nhận đ − ợ c gói ti n Khoảng cỏch nỳt phỏt - nỳt thu (m)
Hỡnh 3.25: Mối liờn hệ giữa tỉ lệ gúi tin nhận được so với khoảng cỏch truyền tin khi tiến hành thực nghiệm trong cụng viờn
Trong đú:
+ cỏc chấm hỡnh vuụng giỏ trị trung bỡnh tỉ lệ nhận được gúi tin trong 10 lần đo việc truyền tớn hiệu giữa hai nỳt mạng.
+ cỏc thanh thẳng đứng qua giỏ trị trung bỡnh tỉ lệ nhận được gúi tin thể
hiện giới hạn sai số
+ đường nối giữa cỏc chấm hỡnh vuụng thể hiện xu hướng biến đổi của tỉ lệ
nhận được gúi tin so với khoảng cỏch giữa nỳt phỏt và nỳt thu
Nhận xột: Khi tiến hành truyền tớn hiệu ở mụi trường này, ở cỏc khoảng cỏch nhỏ hơn 70m, việc truyền nhận tớn hiệu rất ổn định. Ở khoảng cỏch từ 70m
đến 140m, tớn hiệu truyền nhận khụng ổn định. Và ở khoảng cỏch lớn hơn 140m thỡ nỳt thu khụng thu được tớn hiệu từ nỳt phỏt. Vựng kết nối ở thớ nghiệm này nằm trong khoảng từ 0 - 70m, vựng chuyển tiếp nằm trong khoảng từ 70m - 140m và vựng khụng kết nối nằm ngoài khoảng 140m.
- 80 -
Nhỡn vào kết quả thu được khi tiến hành thực nghiệm tại hai mụi trương cú thể rỳt ra một số nhận xột sau:
- Cỏc kết quả nhận được khi tiến hành đo kiểm ở hai mụi trường này tương tự nhau do đều là mụi trường ngoài trời. Khoảng cỏch càng tăng thỡ cụng suất nhận được và tỉ lệ nhận được gúi tin càng giảm và ngược lại. Trong vựng khoảng cỏch ngắn, hiệu suất truyền nhận của mạng là cao và ở khoảng cỏch lớn, hiệu suất truyền nhận của mạng đạt thấp hơn
- Ở sõn trường cho kết quả truyền nhận tớn hiệu tốt hơn ở trong cụng viờn do cú địa hỡnh bằng phẳng, khụng bị cõy cối chắn, sự suy hao do hấp thụ và tỏn xạ
ớt hơn.
- Tuy nhiờn sự khỏc biệt của việc truyền tớn hiệu ở hai mụi trường này khụng lớn do trong cụng viờn cõy cối phõn bố thưa thớt và cú kớch thước nhỏ
nờn vẫn cú được một đường truyền vụ tuyến tốt. Do đú, chất lượng đường truyền khụng bịảnh hưởng nhiều khi so sỏnh với trường hợp khụng cú vật cản ở
sõn trường.
Kết luận:
- Từ cỏc kết quả thu được khi đo thụng số cụng suất tớn hiệu nhận được và tỉ
lệ nhận được gúi tin trong cỏc mụi trường khỏc nhau, chỳng ta cú thể cú thể rỳt ra một số kết luận như sau:
Trong cựng một mụi trường, cụng suất nhận được tớn hiệu và tỉ lệ nhận
được gúi tin tại cỏc khoảng cỏch khỏc nhau là khỏc nhau. Cụng suất nhận và tỉ lệ nhận được gúi tin bị suy giảm theo khoảng cỏch giữa cỏc nỳt mạng. Ở cỏc khoảng cỏch ngắn (nhỏ hơn 80m đối với thớ nghiệm 1 và nhỏ hơn 70m đối với thớ nghiệm 2), việc truyền nhận tớn hiệu giữa cỏc nỳt mạng rất ổn định, hiệu suất truyền nhận của mạng cảm biến khụng dõy là cao. Hiệu suất truyền nhận càng giảm khi tăng khoảng cỏch truyền nhận giữa cỏc nỳt mạng.
Trong cựng một mụi trường, kết quả thu được thụng số cụng suất nhận và tỉ lệ nhận gúi tin cũng cú sự khỏc nhau giữa cỏc lần đo.
Cụng suất nhận được và tỉ lệ nhận được gúi tin tại cỏc mụi trường khỏc nhau cũng cú sự khỏc nhau.
- Từ cỏc kết quả này, cú thể xõy dựng được kho dữ liệu đỏng tin cậy rất cú ớch cho việc triển khai cỏc ứng dụng của mạng cảm biến khụng dõy.
- 81 -
- Qua thực nghiệm đo kiểm cỏc thụng số truyền nhận tớn hiệu, chỳng ta thấy phương phỏp đỏnh giỏ bằng thực nghiệm hiệu quả truyền nhận của mạng cảm biến khụng dõy cú ý nghĩa thực tiễn, thể hiện ở những điểm sau:
Khi triển khai mạng cảm biến khụng dõy tại cỏc mụi trường khỏc nhau, chỳng ta phải tớnh toỏn được hiệu quả truyền nhận vụ tuyến giữa cỏc nỳt mạng. Do đú, phương phỏp này giỳp cho việc xỏc định khoảng cỏch đặt cỏc nỳt mạng trong hệ thống một cỏch hiệu quả.
Phương phỏp này cú thể xỏc định được khoảng cỏch vựng kết nối, vựng chuyển tiếp và vựng khụng kết nối. Do đú tuỳ thuộc vào từng loại ứng dụng cụ thể trong từng mụi trường mà cú thể chọn vị trớ đặt nỳt mạng
để đảm bảo hiệu quả truyền nhận của hệ thống mạng. Đối với những
ứng dụng đũi hỏi cho kết quả chớnh xỏc và kịp thời, vớ dụ như những
ứng dụng cho cảnh bỏo thỡ khoảng cỏch giữa cỏc nỳt mạng phải bộ hơn khoảng cỏch vựng kết nối. Những ứng dụng thu thập dữ liệu mụi trường khỏc khụng đũi hỏi yờu cầu khắt khe lắm, thỡ khoảng cỏch giữa cỏc nỳt mạng cú thểđặt xa hơn.
- 82 -
KẾT LUẬN
Đề tài luận văn “Xõy dựng phương phỏp đỏnh giỏ bằng thực nghiệm hiệu quả truyền nhận của mạng cảm biến khụng dõy” đó đạt được những kết quả như sau:
- Giới thiệu tổng quan về mạng cảm biến khụng dõy
- Nghiờn cứu cỏc đặc tớnh vụ tuyến và cỏc mụ hỡnh vụ tuyến của mạng
- Xõy dựng phương phỏp thực nghiệm đo cụng suất tớn hiệu nhận được theo khoảng cỏch và đo tỉ lệ truyền nhận gúi tin trong cỏc mụi trường
- Tiến hành cỏc thớ nghiệm kiểm chứng để kiểm tra độ tin cậy của cỏc nỳt mạng cảm biến khụng dõy
- Thực nghiệm đo kiểm vụ tuyến giữa hai nỳt mạng ở cỏc khoảng cỏch khỏc nhau và ở cỏc mụi trường khỏc nhau. Từ kết quả thu được, xõy dựng được cỏc số
liệu thực nghiệm tin cậy cho việc triển khai cỏc ứng dụng của mạng cảm biến khụng dõy.
Kết quả thực nghiệm đo thụng số cường độ tớn hiệu nhận được theo khoảng cỏch tại cỏc mụi trường khỏc nhau cho ta thấy độ suy hao tại cỏc mụi trường này là khỏc nhau. Mụi trường cú địa hỡnh khụng bằng phẳng, cú vật cản che chắn cú suy hao nhiều hơn so với mụi trường bằng phẳng, khụng bị che chắn do bị tỏn xạ, hấp thụ năng lượng nhiều hơn.
Kết quả thực nghiệm đụ thụng số hiệu quả nhận được gúi tin tại cỏc mụi trường cú thể chia ra làm ba vựng: vựng kết nối, vựng chuyển tiếp và vựng khụng kết nối. Độ rộng của cỏc vựng vựng kết nối và vựng chuyển tiếp tại cỏc mụi trường khỏc nhau cũng khỏc nhau.
Trong khuụn khổ của đề tài này, tỏc giả chỉ tiến hành thực nghiệm tại hai mụi trường khỏc nhau ở ngoài trời. Định hướng phỏt triển tiếp theo của đề tài, tỏc giả sẽ tiến hành thực nghiệm ở cỏc mụi trường khỏc với cỏc cụng suất phỏt khỏc nhau. Vớ dụ ở cỏc mụi trường trong nhà, mụi trường sỏt mặt nước trờn sụng, hồ. Nếu tiến hành được cỏc thực nghiệm tại càng nhiều mụi trường, càng giỳp cho việc xõy dựng kho số liệu đầy đủđể khuyến cỏo cho việc triển khai cỏc
- 83 -
TÀI LIỆU THAM KHẢO
Tài liệu tiếng Việt:
[1]. Phạm Bảo Sơn, Mạng cảm biến vụ tuyến và đỏnh giỏ chỉ tiờu của giao thức chọn đường LEACH
[2]. Vương Đạo Vy, Mạng truyền dữ liệu, Nhà xuất bản Đại học Quốc gia Hà Nội
[3]. Vương Đạo Vy, Trần Thanh Hải, Phạm Đỡnh Tuõn, Trần Anh Tuấn, Hà Quang Dự, Phựng Cụng Phi Khanh, “Mạng cảm nhận khụng dõy thu thập dữ liệu mụi trường sử dụng vi điều khiển Chipcon CC1010”
Tài liệu tiếng Anh:
[4]. Bhaskar Krishnamachari, Networking wireless sensors
[5]. Chipcon, CC1010 Datasheet, www.chipcon.com [6]. Chipcon, CC1010 IDE Manual, www.chipcon.com
[7]. G. L. Stuber, Principles of Mobile Communication, Kluwer, 1996
[8]. H. Nikookar and H. Hashemi, “Statistical Modeling of Signal Amplitude Fading of Indoor Radio Propagation Channels,” Proceedings of Second International Conference on Universal Personal Communications, October 1993 [9]. M. Zuniga and B. Krishnamachari, “Analyzing the Transitional Region in Low-Power Wireless Links,” Proceedings of IEEE SECON, October 2004
[10]. T. S. Rappaport, Wireless Communications: Principles and Practice, Prentice Hall, 2002
- 84 -
PHỤ LỤC
Một số hàm xử lý:
- Hàm đọc RSSI
- Chương trỡnh phần mềm viết cho nỳt truyền
- Chương trỡnh phần mềm viết cho nỳt nhận
- Hàm nhận gúi tin
- Hàm truyền gúi tin
- Thư viờn mụ tả kết nối phần cứng cho module CC1010EB
Hàm đọc RSSI:
char halRFReadRSSIlevel(byte rssi_mode) { byte val = 0;
// If RSSI mode = run/continuous if(rssi_mode == RSSI_MODE_RUN){ // Configure ADC for RSSI reading
halConfigADC(ADC_MODE_SINGLE | ADC_REFERENCE_INTERNAL_1_25, CC1010EB_CLKFREQ, 0);
// Turn on ADC
ADC_POWER(TRUE); // Wait until ADC stabilized
halWait(1, CC1010EB_CLKFREQ); // Select RSSI input and read sample
ADC_SELECT_INPUT(ADC_INPUT_AD2); ADC_SAMPLE_SINGLE();
val=ADC_GET_SAMPLE_8BIT(); // Get 8 MSB of sample // Convert value into dBm
val = -50-((val*55)>>8);
// Else (RSSI mode = initialisation) } else {
// Activate RSSI output FREND|=0x02;
// Configure ADC for RSSI reading
halConfigADC(ADC_MODE_SINGLE | ADC_REFERENCE_INTERNAL_1_25, CC1010EB_CLKFREQ, 0);
// Turn on ADC
- 85 - // Wait until ADC stabilized
halWait(200, CC1010EB_CLKFREQ); }
return val; }
Chương trỡnh viết cho nỳt truyền:
#include <chipcon/reg1010.h> #include "CC1010ND.H" #include <chipcon/hal.h> #include <stdio.h> // Protocol constants #define PREAMBLE_BYTE_COUNT 7 #define PREAMBLE_BITS_SENSE 16 #define SLEEP_TIME // Test packet #define TEST_STRING_LENGTH 10 #define ACK_LENGTH 1 #define ACK_BYTE 0x42 #define start_button P0_0 byte testString[TEST_STRING_LENGTH]; byte ackString[ACK_LENGTH]; byte receivedString[TEST_STRING_LENGTH];
extern byte halRFReceivePacket2(byte timeOut, byte* packetData, byte maxLength, char* rssiByte, word clkFreq);
/*************************************************************************** ** MAIN PROGRAM *************************************************************************** **/ void main(void) { byte result;
unsigned int i,N;
// X-tal frequency: 14.745600 MHz // RF frequency A: 868.277200 MHz Rx // RF frequency B: 868.277200 MHz Tx // RX Mode: Low side LO
- 86 - // Data rate: 2.4 kBaud
// Data Format: Manchester // RF output power: 4 dBm // IF/RSSI: RSSI Enabled
RF_RXTXPAIR_SETTINGS code RF_SETTINGS = { 0x4B, 0x2F, 0x15, // Modem 0, 1 and 2: Manchester, 2.4 kBaud 0x75, 0xA0, 0x00, // Freq A
0x58, 0x32, 0x8D, // Freq B 0x01, 0xAB, // FSEP 1 and 0 0x40, // PLL_RX 0x30, // PLL_TX 0x6C, // CURRENT_RX 0xF3, // CURRENT_TX 0x32, // FREND 0xFF, // PA_POW 0x00, // MATCH 0x00, // PRESCALER }; // Calibration data
RF_RXTXPAIR_CALDATA xdata RF_CALDATA; // Initialize peripherals
WDT_ENABLE(FALSE); BLED_OE(TRUE);
BLED = LED_OFF;
// Set optimum settings for speed and low power consumption MEM_NO_WAIT_STATES();
FLASH_SET_POWER_MODE(FLASH_STANDBY_BETWEEN_READS); // Ready for acknowledge
ackString[0] = ACK_BYTE; // Calibration
halRFCalib(&RF_SETTINGS, &RF_CALDATA); // Turn on RF for RX
halRFSetRxTxOff(RF_RX, &RF_SETTINGS, &RF_CALDATA); //Build packet for(i=0;i<TEST_STRING_LENGTH;i++) testString[i] = i; do( if(start_button == 1) { N = 0; while (N++<100) {
// Turn on RF, receive test string packet, turn off RF
- 87 -
halRFSetRxTxOff(RF_TX, &RF_SETTINGS, &RF_CALDATA); halRFSendPacket(PREAMBLE_BYTE_COUNT, &testString[0], TEST_STRING_LENGTH); BLED = LED_OFF; halWait(14746,100); // delay 100ms } } }while(1); } // end of main() Chương trỡnh viết cho nỳt nhận: #include <chipcon/reg1010.h> #include "CC1010MB.h" #include <chipcon/hal.h> #include <stdio.h> #include <stdlib.h> //LCD define #define LCDPORT P2 sbit _RS=LCDPORT^0; sbit _RW=LCDPORT^1; sbit _E =LCDPORT^2; #include "lcd.h" // Protocol constants #define PREAMBLE_BYTE_COUNT 7 #define PREAMBLE_BITS_SENSE 16 // Test packet #define TEST_STRING_LENGTH 10 #define ACK_LENGTH 1 #define ACK_BYTE 0x42 byte receivedString[TEST_STRING_LENGTH];
extern byte halRFReceivePacket2(byte timeOut, byte* packetData, byte maxLength, char *rssiByte, word clkFreq);
// Define ASCII codes / terminal commands #define ASCII_LF 0x0A
#define ASCII_CR 0x0D #define ASCII_NUL 0x00 #define ASCII_ESC 0x1B // Define RSSI limit for response #define RSSI_LIM -75
- 88 - /*************************************************************************** ** MAIN PROGRAM *************************************************************************** **/ void main(void) { int n; byte result; char *rssi_val; int transmitted_count = 0; int recieved_ok_count = 0; char so[5]; // X-tal frequency: 14.745600 MHz // RF frequency A: 868.277200 MHz Rx // RF frequency B: 868.277200 MHz Tx // RX Mode: Low side LO
// Frequency separation: 64 kHz // Data rate: 2.4 kBaud
// Data Format: Manchester // RF output power: 4 dBm // IF/RSSI: RSSI Enabled
RF_RXTXPAIR_SETTINGS code RF_SETTINGS = {
0x4B, 0x2F, 0x15, // Modem 0, 1 and 2: Manchester, 2.4 kBaud 0x75, 0xA0, 0x00, // Freq A
0x58, 0x32, 0x8D, // Freq B 0x01, 0xAB, // FSEP 1 and 0 0x40, // PLL_RX 0x30, // PLL_TX 0x6C, // CURRENT_RX 0xF3, // CURRENT_TX 0x32, // FREND 0xFF, // PA_POW 0x00, // MATCH 0x00, // PRESCALER }; // Calibration data
RF_RXTXPAIR_CALDATA xdata RF_CALDATA; // Setup+initialise RSSI (including ADC config+powerup) halRFReadRSSIlevel(RSSI_MODE_INIT); // Initialize peripherals WDT_ENABLE(FALSE); RLED_OE(TRUE); YLED_OE(TRUE); GLED_OE(TRUE);
- 89 - BLED_OE(TRUE); BLED = LED_OFF; RLED = LED_OFF; GLED = LED_OFF; YLED = LED_OFF;
// Set optimum settings for speed and low power consumption MEM_NO_WAIT_STATES();
FLASH_SET_POWER_MODE(FLASH_STANDBY_BETWEEN_READS); // Calibration
halRFCalib(&RF_SETTINGS, &RF_CALDATA); P2DIR=0x00; // LCD port is output lcd_init(); lcd_com(15); lcd_goto(1,1); lcd_puts("Recieved : "); lcd_goto(2,1); lcd_puts("RSSI level : "); rssi_val = malloc (2); recieved_ok_count = 0; while (1) { YLED = LED_ON;
// Turn on RF, receive ACK, turn off RF
halRFSetRxTxOff(RF_RX, &RF_SETTINGS, &RF_CALDATA); result = halRFReceivePacket2(800/10, &receivedString[0],
TEST_STRING_LENGTH, rssi_val, CC1010EB_CLKFREQ); YLED = LED_OFF; // Success/failure indicators if (result == TEST_STRING_LENGTH) { recieved_ok_count++; GLED = LED_ON; lcd_goto(3,1); lcd_puts(" "); } else { RLED = LED_ON; lcd_goto(3,1); if(result != ACK_LENGTH) lcd_puts("No Res");
- 90 - else lcd_puts("ACK Fail!"); } } lcd_goto(1,14); sprintf(so,"%d",recieved_ok_count); lcd_puts(so); lcd_goto(2,14); sprintf(so,"%d",(int)*rssi_val); lcd_puts(so); lcd_goto(2,18); lcd_puts("dBm"); while(1); } // end of main() Hàm nhận gúi tin:
byte halRFReceivePacket2(byte timeOut, byte* packetData, byte maxLength, char *rssiByte, word clkFreq) {
byte receivedBytes, pkgLen, crcData, i; word crcReg; halConfigTimer23(TIMER3|TIMER23_NO_INT_TIMER, 10000, clkFreq); INT_SETFLAG(INUM_TIMER3, INT_CLR); TIMER3_RUN(TRUE); RF_SET_PREAMBLE_COUNT(16); RF_SET_SYNC_BYTE(RF_SUITABLE_SYNC_BYTE);
MODEM1=(MODEM1&0x03)|0x24; // Make sure avg filter is free-running + 22 baud settling time INT_ENABLE(INUM_RF, INT_OFF); INT_SETFLAG(INUM_RF, INT_CLR); RF_START_RX(); while (1) {
// Check if 10 ms have passed
if (INT_GETFLAG(INUM_TIMER3)) {
// Clear interrupt flag and decrement timeout value INT_SETFLAG(INUM_TIMER3, INT_CLR);
if (timeOut && !--timeOut) { timeOut=255; break; // Timeout
} }
// Check if sync byte received if (INT_GETFLAG(INUM_RF)) { EXIF &= ~0x10; // Clear the flag break;
- 91 - }
receivedBytes=0;
// Timeout or sync byte received? if (timeOut!=255) {
// Lock average filter and perform RSSI reading if desired RF_LOCK_AVERAGE_FILTER(TRUE);
// Get length of package
RF_WAIT_AND_RECEIVE_BYTE( pkgLen ); pkgLen+=2; // Add the two CRC bytes