Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 105 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
105
Dung lượng
1,1 MB
Nội dung
ĐẠI HỌC QUỐC GIA HÀ NỘI TRƯỜNG ĐẠI HỌC CÔNG NGHỆ Điêu Tiến Thọ GIẢI PHÁP TIẾT KIỆM NĂNG LƯỢNG CHO MẠNG CẢM NHẬN KHÔNG DÂY VÀ THỬ NGHIỆM VỚI VI ĐIỀU KHIỂN CC1010 Ngành: Công nghệ Điện tử - Viễn thông Chuyên ngành: Kỹ thuật vô tuyến điện tử thông tin liên lạc Mã số: 2.07.00 LUẬN VĂN THẠC SĨ NGƯỜI HƯỚNG DẪN KHOA HỌC: PGS TS VƯƠNG ĐẠO VY Hà Nội - 2007 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 .9 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 2.2.4 Kết luận 2.3 Tiết kiệm lƣợng cho nút mạng lập trình thay đổi chế độ làm việc 2.3.1 Phân tích đặc trƣng vi điều khiển CC1010 2.3.2 Các giải pháp tiết kiệm lƣợng cho CC1010 2.4 Kết luận 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 3.1 Phần mềm nhúng viết cho vi điều khiể 3.1.1 Tổng quan phần mềm nhúng 3.1.2 Các cơng cụ hỗ trợ lập trình cho CC1010 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 3.1.4 Chi tiết phần mềm nhúng thực thuật toán 3.2 Thử nghiệm đánh giá kết 3.3 Kết luận KẾT LUẬN TÀI LIỆU THAM KHẢO PHỤ LỤC Từ viết tắt 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 Development Environment Mơi trƣờng phát triển tích hợp CC1010 Code Division Multiple Access Đa truy cập phân chia theo mã Central Processing Unit Bộ xử lý trung tâm Carrier Sense Multiple Access Đa truy cập môi trƣờng cảm nhận sóng mang Chipcon Utility Library Thƣ viện tiện ích Chipcon Frequency Division Multiple Access Đa truy cập môi trƣờng phân chia theo tần số Hardware Abstraction Library Thƣ viện phần cứng Chipcon Hardware Difinition File định nghĩa phần cứng HDF File Media Access Điều khiển truy cập môi trƣờng MAC Control Microcontroller Vi điều khiển MCU Radio Frequency Bộ thu phát vô tuyến RF Real Time clock Đồng hồ thời gian thực RTC Time Division Multiple Access Đa truy cập môi trƣờng phân chia theo thời gian Wireless Sensor Network Mạng cảm nhận không dây CC1010ID E CDMA CPU CSMA CUL FDMA HAL TDMA WSN DANH MỤC BẢNG Bảng 2.1 Các giá trị ghi X32CON Bảng 2.2 Ý nghĩa bit ghi X32CON Bảng 2.3 Các bit ghi PCON Bảng 2.4 Ý nghĩa bit ghi PCON Bảng 2.5 Các chế độ hoạt động CC1010 Bảng 3.1 Kết thử nghiệm chƣơng trình nhúng Bảng 3.2 Kết thử nghiệm khơng có tiết kiệm lƣợng 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 Hình 1.2 Một mơ hình triển khai mạng cảm nhận khơng dây Hình 1.3 Một nút mạng cảm nhận khơng dây Hình 1.4 Một mơ hình ứng dụng mạng cảm nhận khơng dây Hình 1.5 Kiến trúc giao thức mạng cảm nhận khơng dây Hình 1.6 Mạng WSN có topology kết hợp dạng dạng tuyến tính Hình 1.7 Mơ hình triển khai WSN theo dõi nhiệt độ sử dụng CC1010 Hình 2.1 Vi điều khiển CC1010 Hình 2.2 Mối quan hệ tuyến tính dịng tiêu thụ tần số Hình 3.1 Mơ hình phần mềm nhúng cho CC1010 Hình 3.2 Thuật tốn làm việc nút mạng cảm nhận Hình 3.3 Gắn nút mạng vào mạch nối với hệ thống PC Hình 3.4 Dịch chƣơng trình nhúng Keil uVision 2.0 Hình 3.5 Nạp chƣơng trình nhúng Hình 3.6 Đo dòng điện mà nút mạng tiêu thụ chế độ nghỉ Hình 3.7 Đo dịng điện mà nút mạng tiêu thụ chế độ tích cực 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, qn 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 u cầu nút mạng cảm nhận, yê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 tố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 tốn cho chế truyền nhận có chức tiết kiệm lƣợng nút mạng Từ thuật toán xây dựng, phần mềm hoà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 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, 0x75, 0xA0, 0x00, 0x58, 0x32, 0x8D, 0x01, 0xAB, 0x40, 0x30, 0x6C, 0xF3, 0x32, 0xFF, 0x00, 0x00, 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, 0xAA, 0x80, 0x00, 0x5C, 0xF4, 0x02, 0x01, 0xAB, 0x58, 0x30, 0x6C, 0xF3, 0x32, 0xFF, 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, 0x58, 0x00, 0x00, 0x41, 0xFC, 0x9C, 0x02, 0x80, 0x60, 0x48, 0x44, 0x81, 0x0A, 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; //enable idle mode } } / 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; } ... 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. .. 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. .. 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 2. 2.4 Kết luận 2. 3 Tiết kiệm lƣợng cho nút mạng