Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 137 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
137
Dung lượng
1,35 MB
Nội dung
ĐẠI HỌC QUỐC GIA HÀ NỘI TRƯỜNG ĐẠI HỌC CÔNG NGHỆ Nguyễn Thế Sơn THIẾT KẾ CHẾ TẠO, VẬN HÀNH VÀ ĐO THỬ NGHIỆM MẠNG CẢM NHẬN KHÔNG DÂY LUẬN VĂN THẠC SĨ Hà Nội - 2006 TIEU LUAN MOI download : skknchat@gmail.com ĐẠI HỌC QUỐC GIA HÀ NỘI TRƯỜNG ĐẠI HỌC CÔNG NGHỆ Nguyễn Thế Sơn THIẾT KẾ CHẾ TẠO, VẬN HÀNH VÀ ĐO THỬ NGHIỆM MẠNG CẢM NHẬN KHƠNG DÂY Ngành: Mã số: Cơng Nghệ Thơng tin 1.01.10 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 - 2006 TIEU LUAN MOI download : skknchat@gmail.com Mục lục MỞ ĐẦU .1 CHƢƠNG GIỚI THIỆU MẠNG CẢM NHẬN KHÔNG DÂY 1.1 Mạng cảm nhận không dây 1.1.1 Các dạng ứng dụng mạng cảm nhận 1.1.1.1 Thu thập liệu môi trƣờng 1.1.1.2 Giám sát an ninh 1.1.1.3 Theo dõi đối tƣợng 1.1.2 Các tiêu hệ thống 1.1.2.1.Thời gian sống .8 1.1.2.2 Độ bao phủ 1.1.2.3 Chi phí tính dễ triển khai .9 1.1.2.4 Thời gian đáp ứng .10 1.1.2.5 Độ xác thời gian 11 1.1.2.6 Bảo mật .11 1.1.2.7 Tốc độ thu thập thông tin hiệu 12 1.1.3 Các tiêu nút mạng 12 1.1.3.1 Năng lƣợng 13 1.1.3.2 Tính mềm dẻo 13 1.1.3.3 Sức mạnh .13 1.1.3.4 Bảo mật 14 1.1.3.5 Truyền thông 14 1.1.3.6 Tính tốn 15 1.1.3.7 Đồng thời gian 15 1.1.3.8 Kích thƣớc chi phí 15 1.2 Một số hƣớng phát triển lĩnh vực WSN 16 TIEU LUAN MOI download : skknchat@gmail.com 1.2.1 Hệ điều hành nhỏ TinyOS 16 1.2.2 Zigbee 18 1.2.2.1 Ngăn xếp Zigbee 18 1.2.2.2 Các mơ hình mạng Zigbee 19 1.3 Kết luận 21 CHƢƠNG NÚT MẠNG 22 2.1 Giới thiệu số VĐK làm nút mạng cảm nhận 22 2.2 Giới thiệu vi điều khiển CC1010 .23 2.2.1 Các đặc điểm 23 2.2.2 Cổng 23 2.2.3 Ngắt 23 2.2.3.1 Mặt nạ ngắt .25 2.2.3.2 Xử lý ngắt 25 2.2.3.3 Thứ tự ƣu tiên 25 2.2.4 Biến đổi ADC 26 2.2.5 Bộ định thời 26 2.2.5.1 Timer0/Timer1 26 2.2.5.2 Timer2/Timer3 27 2.2.6 Bộ thu phát không dây 27 2.2.6.1 Miêu tả chung 27 2.2.6.2 Mạch ứng dụng RF 29 2.2.6.3 Điều khiển thu phát RF quản lý lƣợng 31 2.2.6.4 Điều chế liệu chế độ liệu .32 2.2.6.5 Tốc độ Baud 34 2.2.6.6 Truyền nhận liệu .35 2.2.7 Module CC1010EM 37 2.3 Kết luận 38 TIEU LUAN MOI download : skknchat@gmail.com CHƢƠNG CÁC PHƢƠNG PHÁP GHÉP NỐI CC1010 VỚI CÁC LOẠI ĐẦU ĐO VÀ CHƢƠNG TRÌNH THỰC HIỆN CHỨC NĂNG THU THẬP DỮ LIỆU 39 3.1 Giới thiệu cảm biến 39 3.1.1 Khái niệm .39 3.1.2 Phân loại cảm biến .40 3.1.2.1 Theo nguyên lý chuyển đổi đáp ứng kích thích 40 3.1.2.2 Theo dạng kích thích 41 3.1.2.3 Theo tính 42 3.1.2.4 Theo phạm vi sử dụng 43 3.1.2.5 Theo thơng số mơ hình mạch thay 43 3.1.2.6 Theo dạng tín hiệu đầu 43 3.1.3 Các đặc trƣng cảm biến 43 3.1.3.1 Hàm truyền .43 3.1.3.2 Độ lớn tín hiệu vào .44 3.1.3.3 Sai số độ xác 44 3.1.4 Cảm biến số nối tiếp cách ghép nối 45 3.2 Ghép nối CC1010 với loại cảm biến 48 3.2.1 Ghép nối với cảm biến áp suất MS5535 48 3.2.2 Ghép nối với cảm biến nhiệt độ dạng tƣơng tự .51 3.3 Kết luận 52 CHƢƠNG PHẦN MỀM NHÚNG .53 4.1 Phần mềm nhúng 53 4.1.1 Tổng quan phần mềm nhúng 53 4.1.2 Các bƣớc xây dựng phần mềm nhúng 54 4.1.3 Phần mềm nhúng viết cho CC1010 55 4.1.4 Gỡ lỗi 60 4.1.4.1 Giới thiệu 60 TIEU LUAN MOI download : skknchat@gmail.com 4.1.4.2 Các dạng gỡ lỗi 62 4.1.4.2.1 Giám sát ROM 62 4.1.4.2.2 Mô mạch 62 4.1.4.2.3 Gỡ lỗi On-Chip 63 4.1.4.3 Tóm tắt gỡ lỗi 65 4.1.4.4 Gỡ lỗi cho CC1010 66 4.2 Kết luận 68 CHƢƠNG TRIỂN KHAI CHỨC NĂNG MẠNG VÀ CÁC THỬ NGHIỆM .69 5.1 Thử nghiệm mạng gồm hai nút mạng 69 5.1.1 Khảo sát quan hệ độ cao cột nƣớc-áp suất 70 5.1.2 Khảo sát độ ổn định phép đo áp suất thay đổi nhiệt độ 73 5.1.3 Kiểm tra làm việc dài ngày mức tiêu thụ điện hệ thống 74 5.1.4 Khảo sát số liệu khí áp Hà nội 76 5.2 Thử nghiệm mạng gồm nhiều nút mạng 78 5.1.2 Biểu diễn nhớ .79 5.1.3 Định dạng liệu truyền 84 5.3 Kết luận 85 KẾT LUẬN .86 TÀI LIỆU THAM KHẢO 88 PHỤ LỤC 90 Phụ lục 90 Phụ lục 107 Phụ lục 113 TIEU LUAN MOI download : skknchat@gmail.com Danh sách hình vẽ Hình 1.1 - Kiến trúc thành phần TinyOS 16 Hình 1.2 - Kiến trúc phần mềm nhúng sử dụng TinyOS VĐK CC1010 .17 Hình 1.3 – Mơ hình mạng hình sử dụng TinyOS 18 Hình 2.1 - Sơ đồ khối thu phát RF 28 Hình 2.2 - Một mạch ứng dụng CC1010 điển hình 30 Hình 2.3 - Tuần tự bật thu phát RF 32 Hình 2.4 - Mã hố Manchester 33 Hình 2.5 - Đệm liệu RF 35 Hình 3.1 - Hệ thống tự động điều khiển qúa trình 40 Hình 3.2 - Cảm biến tích hợp 45 Hình 3.3 - Sơ đồ giao tiếp điển hình vi điều khiển cảm biến số nối tiếp .46 Hình 3.4 - Quan hệ xung đồng SCK xung liệu DATA 47 Hình 3.5 - Sơ đồ giao tiếp MS-5535 CC1010 48 Hình 3.6 - Giản đồ chu kỳ xung PWM .50 Hình 3.7 - Sơ đồ ghép nối VĐK cảm biến tương tự .51 Hình 4.1 - Gỡ lỗi dạng Giám sát ROM .62 Hình 4.2 - Gỡ lỗi dạng Mô mạch 63 Hình 4.3 - Gỡ lỗi On-Chip 64 Hình 4.4 – Module CC1010EB 66 Hình 4.5 – Giao diện gỡ lỗi Keil μVision 68 Hình 5.1 - Sơ đồ tổng quát mạng có nút mạng .69 Hình 5.2 - Sơ đồ khảo sát thực nghiệm .70 Hình 5.3 - Giải thuật phần mềm nhúng CC1010 nút Master 71 Hình 5.4 - Sự phụ thuộc áp suất vào độ cao cột nước .73 Hình 5.5 - Độ ổn định áp suất theo nhiệt độ 74 Hình 5.6 - Thuật toán làm việc khối Slave 75 Hình 5.7 - Thuật tốn làm việc khối Master 76 Hình 5.8 - Sự thay đổi khí áp Hà nội từ 08 đến 18/06/2005 78 Hình 5.9 - Mơ hình mạng dạng 78 Hình 5.10 - Cấu trúc liệu biểu diễn nhớ 80 Danh sách bảng biểu Bảng 1: Ngắt tham số 24 Bảng 2: Tốc độ baud theo tần số thạch anh 34 TIEU LUAN MOI download : skknchat@gmail.com Bảng 3: Số liệu đo áp suất theo độ cao cột nước 72 Bảng 4: Số liệu khí áp Hà nội từ 08 đến 18/06/2005 76 Bảng từ viết tắt Từ cụm từ Mạng cảm nhận không dây Đa truy cập mạng cảm nhận Từ viết tắt WSN Từ tiếng Anh Wireless sensor network S-MAC Sensor-Medium Access Control Truyền nhận không dây RF Radio Frequency Nhận RX Receive Truyền TX Transmit Vector cấp phát mạng Nhận biết pha NAV PD Network Allocation Vector Phase Detector Điều chế độ rộng xung PWM Pulse Width Modulation Biến đổi tƣơng tự - số ADC Analog to Digital Converter Khuếch đại công suất PA Power Amplifier Khoá chuyển dịch tần số FSK Frequency Shift Keyed Mã quay khơng NRZ Non-return to Zero Khố lặp pha PLL Phase Lock Loop Dao động điều khiển điện áp VCO Voltage Controlled Oscillators Khuếch đại ồn thấp LNA Low Noise Amplifier Truyền nhận không đồng UART Universal Asynchronous Receiver Transmitter Hệ vi điện tử MEMS Micro-Electro-Mechanical System Vi điều khiển VĐK TIEU LUAN MOI download : skknchat@gmail.com - - MỞ ĐẦU Một lĩnh vực bật mạng cảm nhận không dây (Wireless Sensor Network- WSN) kết hợp việc cảm nhận, tính tốn truyền thơng vào thiết bị nhỏ Thơng qua mạng hình lƣới (mesh networking protocols), thiết bị tạo kết nối rộng lớn giới vật lý Trong khả thiết bị nhỏ, kết hợp hàng trăm thiết bị nhƣ yêu cầu phải có công nghệ Sức mạnh WSN nằm chỗ khả triển khai số lƣợng lớn thiết bị nhỏ tự thiết lập cẩu hình hệ thống Sử dụng thiết bị để theo dõi theo thời gian thực, để giám sát điều kiện môi trƣờng, để theo dõi cấu trúc tình trạng thiết bị Hầu hết ứng dụng WSN giám sát môi trƣờng từ xa với tần số lấy liệu thấp Ví dụ, dễ dàng đƣợc giám sát rị rỉ nhà máy hố học hàng trăm cảm biến tự động kết nối thành hệ thống mạng không dây để phát báo cáo rị rỉ Khơng giống hệ thống có dây truyền thống, chi phí triển khai cho WSN đƣợc giảm thiểu Thay hàng ngàn mét dây dẫn thông qua ống dẫn bảo vệ, ngƣời lắp đặt việc đơn giản đặt thiết bị nhỏ gọn vào nơi cần thiết Mạng đƣợc mở rộng cách đơn giản thêm thiết bị, không cần thao tác phức tạp Hệ thống có khả hoạt động vài năm với nguồn pin Để giảm thiểu chi phí lắp đặt, WSN cần phải có khả thay đổi linh hoạt theo mơi trƣờng Cơ chế thích nghi theo thay đổi mơ hình mạng hay mạng có thay đổi chế độ làm việc Ví dụ hệ thống mạng giám sát rị rỉ nhà máy hố chất đƣợc cấu hình lại thành mạng đƣợc thiết kế từ trƣớc để khoanh vùng nguồn rò rỉ tìm chỗ Mạng hƣớng dẫn cơng nhân đƣờng an tồn có cố khẩn cấp Nhìn chung, ngƣời nghĩ đến mạng không dây họ nghĩ đến thiết bị di động, PDA hay laptop Những thiết bị có giá thành cao theo mục đích cho trƣớc dựa sở hạ tầng có trƣớc Ngƣợc lại, WSN sử dụng TIEU LUAN MOI download : skknchat@gmail.com - - thiết bị nhúng nhỏ, giá thành thấp cho ứng dụng đa dạng không dựa sở hạ tầng có từ trƣớc Khơng giống thiết bị khơng dây truyền thống, nút mạng WSN không cần truyền trực tiếp tới trạm gốc, mà cần truyền tới trạm gần nó, lần lƣợt truyền trạm gốc theo dạng truyền thơng multihop Một ví dụ mạng đƣợc đƣa hình Nó minh hoạ ứng dụng nông nghiệp Hàng trăm nút nằm rải rác cánh đồng liên kết với nhau, thiết lập mơ hình định tuyến, truyền liệu cho trung tâm Ứng dụng đòi hỏi phải thiết thực, uyển chuyển, chi phí thấp dễ triển khai thành mạng WSN Nếu nút lỗi, mơ hình mạng đƣợc lựa chọn toàn mạng tiếp tục truyền liệu Nếu có thêm nút mạng, chúng tạo nên nhiều hội định tuyến Hình Một ví dụ ứng dụng WSN nông nghiệp Một thách thức WSN đƣa ràng buộc khắt khe vào thiết bị đơn lẻ Các hệ xử lý nhúng với nhớ cỡ kilobytes phải thực giao thức mạng phức tạp theo dạng adhoc Rất nhiều ràng buộc thiết bị đƣợc triển khai với số lƣợng lớn cần có kích thƣớc nhỏ giá thành thấp Kích thƣớc giảm điều chủ yếu dẫn đến giảm giá thành, nhƣ khả cho phép thiết bị đƣợc sử dụng dải rộng ứng dụng TIEU LUAN MOI download : skknchat@gmail.com - 115 - // IF/RSSI: RSSI Enabled RF_RXTXPAIR_SETTINGS code RF_SETTINGS = { 0x4B, 0x2F, 0x15, // Modem 0, and 2: Manchester, 2.4 kBaud //0x43, 0x2F, 0x15, // Modem 0, and 2: NRZ, 2.4 kBaud //0xA1, 0x2F, 0x29, // Modem 0, and 2: NRZ, 38.4 kBaud //0xA0, 0x2F, 0x52, // Modem 0, and 2: NRZ, 76.8 kBaud 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 }; RF_RXTXPAIR_CALDATA xdata RF_CALDATA; // -// MAIN PROGRAM // -void main (void) { byte xdata n; BuildTree(); // Initialize peripherals WDT_ENABLE(FALSE); RLED_OE(TRUE); YLED_OE(TRUE); GLED_OE(TRUE); BLED_OE(TRUE); RLED = LED_OFF; // Startup macros for speed and low power consumption MEM_NO_WAIT_STATES(); FLASH_SET_POWER_MODE(FLASH_STANDBY_BETWEEN_READS); // Setup UART0 for polled I/O UART0_SETUP(57600, CLKFREQ, UART_NO_PARITY | UART_RX_TX | UART_POLLED); nodeIDs = MY_ADDRESS; setupTimer0(); RFSetup(); // Calibration halRFCalib(&RF_SETTINGS, &RF_CALDATA); // Turn on RF for RX halRFSetRxTxOff(RF_TX, &RF_SETTINGS, &RF_CALDATA); RF_START_TX(); halRFReadRSSIlevel(RSSI_MODE_INIT); n=2; // Loop forever while (TRUE) { if(bPolled) { InitRF(); TIEU LUAN MOI download : skknchat@gmail.com - 116 - CmdGetParams(n); PrepareRX(&RF_SETTINGS); n++; if(n>N_NODES) n=2; bPolled = 0; } Receive(); } } // main void Receive (void) { byte xdata i; word xdata nodeID,crc,crc1; if(!bRF_RXdone) return; crc = culFastCRC16Block(&rxDataBuffer[1], DATA_LEN, CRC16_INIT); crc1 = rxDataBuffer[DATA_LEN]; crc1 = (crc1> 8) & 0xFF; txDataBuffer[13] = temp4 & 0xFF; txDataBuffer[14] = 0;//(temp5 >> 8) & 0xFF; txDataBuffer[15] = 0;//temp5 & 0xFF; } // tbcTransmit // Flash interrupt handler (do nothing) // We need to handle the interrupt even though we not anything // If not, the program will not run correctly except under the debugger, // which has its own Flash interrupt handler void FlashIntrHandler(void) interrupt INUM_FLASH { 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 ; } void RF_ISR (void) interrupt INUM_RF { INT_ENABLE(INUM_RF, INT_OFF); INT_SETFLAG (INUM_RF, INT_CLR); if(!bRF_RXdone) { // Get RF receive data rf_rx_buf[rf_rx_index] = RF_RECEIVE_BYTE(); if(rf_rx_index==0){ RF_LOCK_AVERAGE_FILTER(TRUE); if(rf_rx_buf[rf_rx_index] != RF_SUITABLE_SYNC_BYTE) RLED = LED_ON; } rf_rx_index++; TIEU LUAN MOI download : skknchat@gmail.com - 124 - if(rf_rx_index>rf_rx_buf[1] + 3){ bRF_RXdone = 1; PDET &= ~0x80; PDET |= 0x80; INT_ENABLE(INUM_RF, INT_OFF); YLED = !YLED; return; } } INT_ENABLE(INUM_RF, INT_ON); YLED = !YLED; return; } void RFProc() { byte xdata SourceAddr,NextHop,EndpointAddr; word xdata crc,crc1; if(!bRF_RXdone) return; if(rf_rx_index==0) return; crc = culFastCRC16Block(&rf_rx_buf[1], DATA_LEN-2, CRC16_INIT); crc1 = rf_rx_buf[DATA_LEN-2]; crc1 = (crc1next; } i++; } return -1; //khơng tìm thay cha } //tim em lien ke cua nut co id = k int NextSibling(int k) { struct node xdata *p; unsigned char xdata i; i = 1; while(i id == k) { p = p->next; if(p) return p->id; else return -1; //khơng có em lien ke TIEU LUAN MOI download : skknchat@gmail.com - 128 - } else p = p->next; } i++; } return -1; } //tim duong di tu Master toi nut k void FindHops(int k) { unsigned char xdata par,i,j; for(i=0; i