Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 99 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
99
Dung lượng
1,95 MB
Nội dung
1 MỤC LỤC MỞ ĐẦU CHƢƠNG TỔNG QUAN VỀ MẠNG CẢM NHẬN KHÔNG DÂY 1.1 Những khái niệm mạng cảm nhận không dây 1.2 Kiến trúc giao thức hoạt động định tuyến mạng cảm nhận không dây 15 1.2.1 Kiến trúc giao thức mạng cảm nhận không dây 15 1.2.2 Các loại giao thức định tuyến mạng cảm nhận không dây 18 1.3 Các yêu cầu hệ thống mạng cảm nhận không dây 19 1.3.1 Các yêu cầu chung mạng cảm nhận không dây 20 1.3.2 Các yêu cầu nút mạng cảm nhận không dây 22 1.3.3 Kết luận 25 1.4 Mạng cảm nhận không dây sử dụng vi điều khiển CC1010 25 1.4.1 Các lý chọn vi điều khiển CC1010 25 1.4.2 Kiến trúc mạng cảm nhận đo nhiệt độ sử dụng CC1010 27 1.5 Kết luận 29 CHƢƠNG GIẢI PHÁP TIẾT KIỆM NĂNG LƢỢNG CHO MẠNG CẢM NHẬN KHÔNG DÂY SỬ DỤNG VI ĐIỀU KHIỂN CC1010 31 2.1 Mở đầu 31 2.2 Các hoạt động tiêu thụ lƣợng mạng cảm nhận không dây 33 2.2 Các giao thức MAC tiết kiệm lƣợng mạng cảm nhận không dây 36 2.2.1 Mơ hình giao thức MAC mạng không dây 36 2.2.2 Mục tiêu xây dựng giao thức MAC tiết kiệm lƣợng cho mạng cảm nhận không dây 39 2.2.3 Các giao thức MAC tiết kiệm lƣợng mạng cảm nhận không dây 41 2.2.4 Kết luận 45 2.3 Tiết kiệm lƣợng cho nút mạng lập trình thay đổi chế độ làm việc 46 2.3.1 Phân tích đặc trƣng vi điều khiển CC1010 46 2.3.2 Các giải pháp tiết kiệm lƣợng cho CC1010 55 2.4 Kết luận 58 CHƢƠNG NGHIÊN CỨU, THỬ NGHIỆM CHƢƠNG TRÌNH TIẾT KIỆM NĂNG LƢỢNG TRÊN VI ĐIỀU KHIỂN CC1010 59 3.1 Phần mềm nhúng viết cho vi điều khiển CC1010 59 3.1.1 Tổng quan phần mềm nhúng 59 3.1.2 Các cơng cụ hỗ trợ lập trình cho CC1010 60 3.1.3 Thuật toán phần mềm nhúng tiết kiệm lƣợng cho nút mạng đo nhiệt độ CC1010EM 63 3.1.4 Chi tiết phần mềm nhúng thực thuật toán 67 3.2 Thử nghiệm đánh giá kết 71 3.3 Kết luận 77 KẾT LUẬN 78 TÀI LIỆU THAM KHẢO 80 PHỤ LỤC 82 DANH MỤC CÁC TỪ VIẾT TẮT Từ viết tắt Tiếng Anh Ý nghĩa ADC Analog Digital Converter Bộ biến đổi tín hiệu tƣơng tự sang tín hiệu số CC1010EB CC1010 Evaluation Board Bản mạch ghép nối CC1010 CC1010EM CC1010 Evaluation Module CC1010 tích hợp cảm biến nhiệt độ linh kiện khác CC1010 Integrated CC1010IDE Development Environment Môi trƣờng phát triển tích hợp CC1010 CDMA Code Division Multiple Access Đa truy cập phân chia theo mã CPU Central Processing Unit Bộ xử lý trung tâm CSMA Carrier Sense Multiple Access Đa truy cập mơi trƣờng cảm nhận sóng mang CUL Chipcon Utility Library Thƣ viện tiện ích Chipcon FDMA Frequency Division Multiple Access Đa truy cập môi trƣờng phân chia theo tần số HAL Hardware Abstraction Library Thƣ viện phần cứng Chipcon HDF Hardware Difinition File File định nghĩa phần cứng MAC Media Access Control Điều khiển truy cập môi trƣờng MCU Microcontroller Vi điều khiển RF Radio Frequency Bộ thu phát vô tuyến RTC Real Time clock Đồng hồ thời gian thực TDMA Time Division Multiple Access Đa truy cập môi trƣờng phân chia theo thời gian WSN Wireless Sensor Network Mạng cảm nhận không dây DANH MỤC BẢNG Bảng 2.1 Các giá trị ghi X32CON 48 Bảng 2.2 Ý nghĩa bit ghi X32CON 49 Bảng 2.3 Các bit ghi PCON 51 Bảng 2.4 Ý nghĩa bit ghi PCON 52 Bảng 2.5 Các chế độ hoạt động CC1010 54 Bảng 3.1 Kết thử nghiệm chƣơng trình nhúng 72 Bảng 3.2 Kết thử nghiệm khơng có tiết kiệm lƣợng 73 DANH MỤC HÌNH VẼ Hình 1.1 Mơ hình khái qt mạng cảm nhận khơng dây 10 Hình 1.2 Một mơ hình triển khai mạng cảm nhận khơng dây 11 Hình 1.3 Một nút mạng cảm nhận khơng dây 11 Hình 1.4 Một mơ hình ứng dụng mạng cảm nhận khơng dây 12 Hình 1.5 Kiến trúc giao thức mạng cảm nhận khơng dây 16 Hình 1.6 Mạng WSN có topology kết hợp dạng dạng tuyến tính 28 Hình 1.7 Mơ hình triển khai WSN theo dõi nhiệt độ sử dụng CC1010 29 Hình 2.1 Vi điều khiển CC1010 47 Hình 2.2 Mối quan hệ tuyến tính dịng tiêu thụ tần số 50 Hình 3.1 Mơ hình phần mềm nhúng cho CC1010 61 Hình 3.2 Thuật tốn làm việc nút mạng cảm nhận 63 Hình 3.3 Gắn nút mạng vào mạch nối với hệ thống PC 70 Hình 3.4 Dịch chƣơng trình nhúng Keil uVision 2.0 70 Hình 3.5 Nạp chƣơng trình nhúng 71 Hình 3.6 Đo dịng điện mà nút mạng tiêu thụ chế độ nghỉ 71 Hình 3.7 Đo dịng điện mà nút mạng tiêu thụ chế độ tích cực 72 MỞ ĐẦU Mạng không dây xu phát triển hứa hẹn thay nhiều ứng dụng sử dụng mạng có dây Mạng cảm nhận không dây (Wireless Sensor Networks – WSN) đời dựa sở ứng dụng thành tựu cao công nghệ chế tạo linh kiện vi điện tử công nghệ thông tin WSN đƣợc sử dụng với nhiều mục đích khác nhau, quân sự, dân công nghiệp, với đặc điểm chung bật không cần thao tác ngƣời Các ứng dụng chủ yếu gồm: đo thông số môi trƣờng đƣa thơng báo có ích; điều khiển công nghiệp, điều khiển phản ứng hạt nhân; quan sát, giám sát khu vực quân sự,… Nhiều ứng dụng khác WSN đƣợc nghiên cứu có xu hƣớng phát triển rộng khắp Ở WSN, đặc điểm quan trọng cần phải có gọn nhẹ nút mạng thực đƣợc chức năng: chức mạng chức cảm nhận Để đảm bảo cho hoạt động nút, ngƣời ta chế tạo nguồn lƣợng đƣợc thiết kế với kích thƣớc nhỏ kèm Hoạt động nút cảm nhận đƣợc thực qua bƣớc bản: cảm nhận, đo đạc, truyền liệu Chi phí triển khai cho WSN đƣợc giảm thiểu thay cho hệ thống dây dẫn thông qua ống dẫn bảo vệ, ngƣời ta việc đặt thiết bị nhỏ gọn vào nơi cần thiết Mạng đƣợc mở rộng đơn giản cách thêm vào thiết bị, không cần thao tác phức tạp, mạng sau hoạt động khơng cần can thiệp ngƣời Hệ thống có khả hoạt động vài năm, nút mạng cần nguồn pin Một vấn đề cần quan tâm tiêu thụ lƣợng cho nút mạng, tăng tuổi thọ cho nút mạng dùng pin Đây hƣớng nghiên cứu đƣợc trọng để cải thiện chất lƣợng mạng khơng dây Khi kích thƣớc vật lý giảm, làm giảm khả tích trữ lƣợng Các ràng buộc lƣợng tạo nên giới hạn tính tốn lƣu trữ dẫn đến phải có kiến trúc Cần phải có chế thích nghi theo thay đổi mơ hình mạng mạng cần có chuyển đổi chế độ làm việc nhằm đạt mục tiêu tiết kiệm lƣợng tiêu thụ, kéo dài thời gian sống hệ thống mạng Luận văn nghiên cứu mạng cảm nhận không dây đặc biệt mạng cảm nhận không dây sử dụng CC1010 đặt vấn đề sử dụng tiết kiệm nguồn lƣợng cho nút mạng cảm nhận không dây Cụ thể: - Chƣơng 1: “Tổng quan mạng cảm nhận không dây” đƣa định nghĩa bản, ứng dụng WSN, loại giao thức định tuyến WSN Chƣơng cịn trình bày yêu cầu nút mạng cảm nhận, u cầu u cầu sử dụng lƣợng tiết kiệm quan trọng Xuất phát từ đó, tác giả định hƣớng cho đề tài nghiên cứu giải pháp tiết kiệm lƣợng cho WSN Phần cuối chƣơng xây dựng mạng WSN thực tế sử dụng vi điều khiển CC1010 làm nút mạng Vi điều khiển đối tƣợng nghiên cứu thử nghiệm tiết kiệm lƣợng chƣơng sau - Chƣơng 2: “Giải pháp tiết kiệm lượng cho mạng cảm nhận không dây sử dụng vi điều khiển CC1010” Trong phần đầu trình bày nguyên nhân gây tổn thất lƣợng nút mạng từ đƣa hƣớng hạn chế nguyên nhân Có nhiều cách khác để tiết kiệm lƣợng cho nút WSN nhƣ xây dựng giao thức MAC tiêu thụ lƣợng, lập trình cho vi điều khiển chuyển sang hoạt động chế độ lƣợng thấp không cần truyền liệu Các phần sau chƣơng đƣa giải pháp cụ thể, nhiên số đƣợc chọn để nghiên cứu sâu giải pháp lập trình cho nút mạng đƣợc chọn có tính khả thi phạm vi nghiên cứu luận văn Các đặc tính tiết kiệm lƣợng vi điều khiển CC1010 đƣợc nghiên cứu khai thác, tiền đề cho việc xây dựng thuật toán viết chƣơng trình cụ thể chƣơng - Chƣơng 3: “Nghiên cứu, thử nghiệm chương trình tiết kiệm lượng vi điều khiển CC1010” giới thiệu bƣớc để xây dựng phần mềm nhúng, đƣa tƣ tƣởng thuật toán cho chế truyền nhận có chức tiết kiệm lƣợng nút mạng Từ thuật tốn xây dựng, phần mềm hồn chỉnh đƣợc viết chạy thử nghiệm Các kết đạt đƣợc đƣợc phân tích qua chứng minh khả tiết kiệm lƣợng giải pháp - Phần Kết luận đánh giá lại toàn luận văn, khái quát nội dung chính, ƣu điểm hạn chế luận văn đồng thời đƣa hƣớng nghiên cứu sâu đề tài Các nội dung đƣợc trình bày cách rõ ràng logic, chủ đề nhỏ có đánh giá gợi mở, dẫn dắt đến nội dung phần tạo nên gắn kết đồng xuyên suốt luận văn CHƢƠNG TỔNG QUAN VỀ MẠNG CẢM NHẬN KHÔNG DÂY Chƣơng đƣa định nghĩa mạng cảm nhận không dây, đặc điểm, ý nghĩa khả ứng dụng to lớn vào thực tiễn Sau có khái niệm bản, tìm hiểu cấu trúc giao thức loại định tuyến mạng nhƣ yêu cầu hệ thống mạng cảm nhận không dây tốt Nghiên cứu kỹ yêu cầu sở để lựa chọn loại vi điều khiển thích hợp sử dụng cho ứng dụng mạng cảm nhận không dây Cụ thể đề tài lựa chọn vi điều khiển CC1010 làm đối tƣợng nghiên cứu thử nghiệm tối ƣu hóa sử dụng lƣợng mạng cảm nhận theo dõi thông tin môi trƣờng Dƣới lần lƣợt xét vấn đề nêu 1.1 Những khái niệm mạng cảm nhận không dây Ngày nay, vi điều khiển có bƣớc phát triển mạnh với mật độ tích hợp cao, khả xử lý mạnh, tiêu thụ lƣợng giá thành thấp Khi đƣợc nạp phần mềm nhúng, vi điều khiển hoạt động độc lập loại môi trƣờng vị trí địa lý khác Mỗi vi điều khiển đƣợc tích hợp với thu phát sóng vơ tuyến cảm biến tạo thành nút mạng, tập hợp nút mạng phạm vi định đƣợc gọi mạng cảm nhận không dây (WSN - Wireless Sensor Network) Nhƣ vậy, mạng cảm nhận không dây (WSN) mạng đƣợc cấu thành từ thiết bị hoạt động độc lập đặt không gian, thiết bị thu thập truyền trung tâm giám sát thông tin điều kiện môi trƣờng nhƣ nhiệt độ, âm thanh, áp suất, độ rung, chuyển động,… 10 Nút cảm nhận Trạm gốc (gateway) Hình 1.1 Mơ hình khái quát mạng cảm nhận không dây Trong hệ thống WSN cịn có trạm gốc trung tâm điều khiển Trạm gốc đóng vai trị cổng kết nối nút mạng trung tâm điều khiển, tiếp nhận thông tin nút mạng chuyển tới trung tâm điều khiển qua nhiều cách khác Các nút mạng truyền thông tin theo kiểu nhiều chặng, từ nút mạng sang nút mạng khác trạm gốc Từ trạm gốc gửi thơng tin cho ngƣời sử dụng (trung tâm điều khiển) theo nhiều cách nhƣ trực tiếp qua hệ thống máy tính, qua mạng internet, qua vệ tinh… nhờ ngƣời giám sát nhận đƣợc thông tin dù đâu Sự đời WSN xuất phát từ nhu cầu phát triển ứng dụng quân nhƣ giám sát khu vực an ninh quốc gia, biên giới Tuy vậy, WSN đƣợc sử dụng nhiều lĩnh vực khác nhƣ giám sát môi trƣờng, ứng dụng chăm sóc sức khoẻ, tự động hố thiết bị gia đình điều khiển luồng giao thơng 85 byte xdata avgcnt; bool xdata bSample; // Function prototypes void tbcWait1sec (void); void GetParameters (void); void setupTimer0(); void RFSetupTransmit (void); void SelectClockMode(char iMode); // Unit name, stored in Flash byte code flashUnitName[TBC_NODE_NAME_LENGTH]; // RAM buffer for Flash copy byte xdata ramBufNonAligned[128]; byte xdata received_byte; word xdata counter,counter2; // -// MAIN PROGRAM void main (void) { 86 byte xdata n; #ifdef FREQ868 // X-tal frequency: 14.745600 MHz // RF frequency A: 868.277200 MHz Rx // RF frequency B: 868.277200 MHz Tx // RF output power: dBm RF_RXTXPAIR_SETTINGS code RF_SETTINGS = { 0xA3, 0x2F, 0x15, // Modem 0, and 0x75, 0xA0, 0x00, // Freq A 0x58, 0x32, 0x8D, // Freq B 0x01, 0xAB, // FSEP and 0x40, // PLL_RX 0x30, // PLL_TX 0x6C, // CURRENT_RX 0xF3, // CURRENT_TX 0x32, // FREND 0xFF, // PA_POW 0x00, // MATCH 0x00, // PRESCALER 87 }; #endif #ifdef FREQ915 // X-tal frequency: 14.745600 MHz // RF frequency A: 915.027455 MHz Rx // RF frequency B: 915.027455 MHz Tx // RF output power: dBm RF_RXTXPAIR_SETTINGS code RF_SETTINGS = { 0xA3, 0x2F, 0x15, // Modem 0, and 0xAA, 0x80, 0x00, // Freq A 0x5C, 0xF4, 0x02, // Freq B 0x01, 0xAB, // FSEP and 0x58, // PLL_RX 0x30, // PLL_TX 0x6C, // CURRENT_RX 0xF3, // CURRENT_TX 0x32, // FREND 0xFF, // PA_POW 88 0x00, // MATCH 0x00, // PRESCALER }; #endif #ifdef FREQ433 // X-tal frequency: 14.745600 MHz // RF frequency A: 433.302000 MHz Rx // RF frequency B: 433.302000 MHz Tx // RF output power: dBm RF_RXTXPAIR_SETTINGS code RF_SETTINGS = { 0xA3, 0x2F, 0x0E, // Modem 0, and 0x58, 0x00, 0x00, // Freq A 0x41, 0xFC, 0x9C, // Freq B 0x02, 0x80, // FSEP and 0x60, // PLL_RX 0x48, // PLL_TX 0x44, // CURRENT_RX 0x81, // CURRENT_TX 0x0A, // FREND 89 0xFF, // PA_POW 0xC0, // MATCH 0x00, // PRESCALER }; #endif // Initialize peripherals WDT_ENABLE(FALSE); RLED_OE(TRUE); YLED_OE(TRUE); GLED_OE(TRUE); BLED_OE(TRUE); // Startup macros for speed and low power consumption MEM_NO_WAIT_STATES(); FLASH_SET_POWER_MODE(FLASH_STANDBY_BETWEEN_REA DS); // ADC setup halConfigADC(ADC_MODE_SINGLE | ADC_REFERENCE_INTERNAL_1_25, CC1010EB_CLKFREQ, 0); RFSetupTransmit(); 90 // Reset the node IDs for (n = 0; n < TBC_MAX_NODE_COUNT; n++) { nodeIDs[n] = TBC_UNUSED_NODE_ID; } // Reset our name buffer for (n = 0; n < TBC_NODE_NAME_LENGTH; n++) { nodeNames[0][n] = 0x00; } // Load name from Flash memcpy(&nodeNames[0][0],flashUnitName,TBC_NODE_NAME_LENG TH); nodeIDs[0] = TBC_MY_SPP_ADDRESS; // Prepare the id+name part of the packet txDataBuffer[0] = (nodeIDs[0] >> 8) & 0xFF; txDataBuffer[1] = nodeIDs[0] & 0xFF; 91 for (n = 0; n < TBC_NODE_NAME_LENGTH; n++) { txDataBuffer[n + TBC_NODE_ID_LENGTH] = nodeNames[0][n]; } // Configure realtime clock to support wake-up from IDLE halConfigRealTimeClock(15); // Enable realtime clock (implicit: interrupt enable) RTC_RUN(TRUE); SelectClockMode(1); // Loop forever while (TRUE) { if(bSample) { SelectClockMode(0); BLED = LED_ON; GetParameters(); halRFSetRxTxOff(RF_TX, &RF_SETTINGS, &RF_CALDATA); 92 halRFSendPacket(PREAMBLE_BYTE_COUNT, txDataBuffer, TBC_DATA_LEN); halRFSetRxTxOff(RF_OFF, &RF_SETTINGS, &RF_CALDATA); GLED = !GLED; tbcWait1sec(); halRFSetRxTxOff(RF_TX, &RF_SETTINGS, &RF_CALDATA); halRFSendPacket(PREAMBLE_BYTE_COUNT, txDataBuffer, TBC_DATA_LEN); halRFSetRxTxOff(RF_OFF, &RF_SETTINGS, &RF_CALDATA); GLED = !GLED; bSample = 0; BLED = LED_OFF; SelectClockMode(1); } } }// of main void tbcWait1sec (void) { halWait (250, CC1010EB_CLKFREQ); 93 halWait (250, CC1010EB_CLKFREQ); halWait (250, CC1010EB_CLKFREQ); halWait (250, CC1010EB_CLKFREQ); } // of „tbcWait1sec‟ void GetParameters(void) { word xdata temp, temp1, temp2, temp3, temp4, p, i; temp = 0;temp1 = 0; temp2 = 0; temp3 = 0; temp4 = 0; // Indicate transmission for(i=0;i> 8) & 0xFF; txDataBuffer[TBC_TEMP_OFFSET + 1] = temp & 0xFF; txDataBuffer[TBC_TEMP_OFFSET1] = (temp1 >> 8) & 0xFF; txDataBuffer[TBC_TEMP_OFFSET1 + 1] = temp1 & 0xFF; txDataBuffer[TBC_TEMP_OFFSET2] = (temp2 >> 8) & 0xFF; 95 txDataBuffer[TBC_TEMP_OFFSET2 + 1] = temp2 & 0xFF; txDataBuffer[TBC_TEMP_OFFSET3] = (temp3 >> 8) & 0xFF; txDataBuffer[TBC_TEMP_OFFSET3 + 1] = temp3 & 0xFF; } // GetParameters void setupTimer0() { TMajorPeriod = 0; bSample = 0; TH0 = 100; TL0 = 100; TMOD = TMOD | 0x1; //timer0 mode1-16 bit timer INT_ENABLE(INUM_TIMER0, INT_ON); INT_GLOBAL_ENABLE (INT_ON); CKCON = CKCON & 0xf7; IE = IE|0x80; TF0 = 1; } void FlashIntrHandler(void) interrupt INUM_FLASH 96 { INT_SETFLAG(INUM_FLASH, INT_CLR); return; } //timer 10ms void TIMER0_ISR() interrupt INUM_TIMER0 { TF0 = 0; TH0 = 0xd0; TL0 = 0; TR0 = 1; if(TMajorPeriod==0) { bSample = 1; TMajorPeriod = MAJOR_PERIOD+1; } TMajorPeriod ; } 97 // Setup RF for RX void RFSetupTransmit (void) { halRFCalib(&RF_SETTINGS, &RF_CALDATA); // Turn on RF for TX halRFSetRxTxOff(RF_TX, &RF_SETTINGS, &RF_CALDATA); INT_ENABLE(INUM_RF, INT_OFF); // Select RF bytemode RFCON |= 0x01; // Enable RF interrupt based on bytemode RF_SET_BYTEMODE(); // Setup preamble configuration RF_SET_PREAMBLE_COUNT(16); RF_SET_SYNC_BYTE(RF_SUITABLE_SYNC_BYTE); // Make sure avg filter is free-running + 22 baud settling time MODEM1=(MODEM1&0x03)|0x24; 98 // Reset preamble detection PDET &= ~0x80; PDET |= 0x80; } //==================================================== void SelectClockMode(char iMode) { if(iMode==0) { // Enable high speed XOSC, switch clock source, then disable 32kHz XOSC XOSC_ENABLE(TRUE); MAIN_CLOCK_SET_SOURCE(CLOCK_XOSC); X32_ENABLE(FALSE); PCON = PCON & 0xfe; //disable idle mode } else if(iMode==1) { // Enable 32kHz oscillator, wait 0.5s to stabilize, // then switch clock source, then disable high-speed XOSC X32_INPUT_SOURCE(X32_USING_CRYSTAL); 99 X32_ENABLE(TRUE); halWait(250, CC1010EB_CLKFREQ); halWait(250, CC1010EB_CLKFREQ); MAIN_CLOCK_SET_SOURCE(CLOCK_X32); XOSC_ENABLE(FALSE); PCON = PCON | 0x01; } } // ISR (interrupt service routine) for RTC, // The interrupt must be cleared by software void isr_rtc()// interrupt INUM_RTC { bSample = 1; INT_SETFLAG(INUM_RTC, INT_CLR); RLED = !RLED; } //enable idle mode