Nghiên cứu và xây dựng cụm cảm biến sử dụng cho hệ thống cảnh báo sạt lở đất

77 627 1
Nghiên cứu và xây dựng cụm cảm biến sử dụng cho hệ thống cảnh báo sạt lở đất

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

ĐẠI HỌC QUỐC GIA HÀ NỘI TRƢỜNG ĐẠI HỌC CÔNG NGHỆ - - NGUYỄN VĂN HÙNG NGHIÊN CỨU VÀ XÂY DỰNG CỤM CẢM BIẾN SỬ DỤNG CHO HỆ THỐNG CẢNH BÁO SẠT LỞ ĐẤT LUẬN VĂN THẠC SĨ NGÀNH CÔNG NGHỆ ĐIỆN TỬ - VIỄN THÔNG Hà Nội – 2015 ĐẠI HỌC QUỐC GIA HÀ NỘI TRƢỜNG ĐẠI HỌC CÔNG NGHỆ - - NGUYỄN VĂN HÙNG NGHIÊN CỨU VÀ XÂY DỰNG CỤM CẢM BIẾN SỬ DỤNG CHO HỆ THỐNG CẢNH BÁO SẠT LỞ ĐẤT Ngành: Công Nghệ Điện Tử - Viễn Thông Chuyên ngành: Kỹ Thuật Điện Tử Mã Số: 60.52.02.03 LUẬN VĂN THẠC SĨ NGÀNH CÔNG NGHỆ ĐIỆN TỬ - VIỄN THÔNG Cán hƣớng dẫn: PGS.TS TRẦN ĐỨC TÂN Hà Nội – 2015 LỜI CẢM ƠN Sau thời gian làm nghiên cứu liên tục nghiêm túc, với hướng dẫn tận tình cán hướng dẫn khoa học, thầy cô khoa, giúp đỡ học viên lớp bạn đồng nghiệp, đến luận văn hoàn thành Qua xin gửi lời cảm ơn chân thành sâu sắc tới PGS.TS Trần Đức Tân, người thầy tận tình hướng dẫn, giúp đỡ, tạo điều kiện tốt cho suốt thời gian làm luận văn Tôi xin gửi lời cám ơn tới quý thầy cô, anh/chị khoa Điện tử viễn thông Trường Đại Học Công nghệ - Đại Học Quốc Gia Hà Nội tạo điều kiện giúp đỡ, bảo cho lời khuyên quý báu Tôi xin cảm ơn hỗ trợ đề tài cấp ĐHQGHN mã số QG.14-05 Tôi xin cảm ơn gia đình, bè bạn ủng hộ vật chất lẫn tinh thần thời gian nghiên cứu để hoàn thành tốt công trình nghiên cứu Mặc dù hướng dẫn tận tình cán hướng dẫn với nỗ lực cố gắng thân; song phần kiến thức hạn chế, phần điều kiện tiếp xúc thực tế chưa nhiều, nên luận văn không tránh khỏi thiếu sót định Vì thế, mong tiếp tục giúp đỡ, góp ý nhiệt tình quý thầy cô, bạn bè đồng nghiệp Xin chân thành cảm ơn ! Hà Nội, ngày tháng Học viên năm 2015 Nguyễn Văn Hùng LỜI CAM ĐOAN Tên là: Nguyễn Văn Hùng Sinh ngày 26 tháng 28 năm 1983 Học viên lớp Cao học khoá – Điện Tử Viễn Thông – Trường Đại học Công Nghệ – Đại học Quốc Gia Hà Nội Hiện công tác khoa Điện – Trường Cao đẳng nghề Thừa Thiên Huế Tôi xin cam đoan toàn nội dung luận văn làm theo định hướng giáo viên hướng dẫn PGS.TS Trần Đức Tân, không chép người khác Các phần trích lục tài liệu tham khảo luận văn Nếu có sai hoàn toàn chịu trách nhiệm Hà Nội, ngày tháng năm 2015 Học viên Nguyễn Văn Hùng MỤC LỤC LỜI CẢM ƠN LỜI CAM ĐOAN MỤC LỤC DANH MỤC CÁC TỪ VIẾT TẮT DANH MỤC CÁC BẢNG DANH MỤC CÁC HÌNH VẼ TÓM TẮT CHƢƠNG 1: GIỚI THIỆU VỀ HIỆN TƢỢNG SẠT LỞ ĐẤT 10 1.1 Tổng quan tượng sạt lở đất 10 1.2 Mạng cảm biến không dây phát sạt lở đất 11 1.2.1 Giới thiệu mạng WSN 11 1.2.2 Cấu trúc mạng WSN 12 1.2.3 Kiến trúc giao thức mạng WSN 12 CHƢƠNG 2: NGUYÊN TẮC HOẠT ĐỘNG THIẾT BỊ PHÁT HIỆN CẢNH BÁO SẠT LỞ ĐẤT 14 2.1 Phần cứng 14 2.1.1 Sơ đồ khối 14 2.1.2 Các khối sơ đồ 14 2.1.3 Các loại cảm biến thiết bị dùng phát sạt lở đất 16 2.1.3.1 Các loại cảm biến 16 2.1.3.2 Các thiết bị thường dùng phát hiện, cảnh báo sạt lở đất 18 2.2 Phần mềm thu thập liệu cảm biến 21 2.2.1 Chương trình Waspmote IDE 21 2.2.2 Chương trình Visual Studio 25 2.2.2.1 Ứng dụng Visual Studio 25 2.2.2.2 Chương trình Visual Studio (phụ lục) 25 2.3 Truyền thông mạng WSN 25 2.4 Mô hình dự đoán trượt lở đất 26 2.4.1 Giới thiệu 26 2.4.2 Độ dốc ổn định 29 2.4.3 Tính chất thủy văn đồi dốc 33 2.4.4 Ngưỡng lượng mưa đồi dốc không ổn định 37 2.4.5 Mô thí nghiệm 39 2.4.6 Sự phát triển quy mô đồi dốc theo thời gian 40 CHƢƠNG 3: MÔ PHỎNG VÀ THỰC NGHIỆM 44 3.1 Mô mạng WSN dùng Omnet++ 44 3.1.1 Công cụ mô OMNeT++ 44 3.1.2 Mô hình truyền gói tin 45 3.1.3 Xây dựng mô hình mô 46 3.1.4 Kịch kết thực nghiệm mô 46 3.2 Thực nghiệm kiểm chứng 49 3.2.1 Thực nghiệm phòng 49 3.2.2 Thực nghiệm trời 51 3.3 Nâng cao thời gian hoạt động hệ thống 54 3.4 Thảo luận 55 KẾT LUẬN 57 TÀI LIỆU THAM KHẢO 58 PHỤ LỤC 59 DANH MỤC CÁC TỪ VIẾT TẮT TỪ VIẾT TẮT DÃY TỪ TIẾNG ANH DÃY TỪ TIẾNG VIỆT Wireless Sensor Network Mạng cảm biến không dây GIS Geographic Information System Hệ thống thông tin địa lý GPS Global Positioning System Hệ thống định vị toàn cầu ADC Analog-to-Digital Converter Bộ chuyển đổi tương tự - số DAC Digital -to- Analog Converter Bộ chuyển đổi số - tương tự RF Radio Frequency Tần số vô tuyến API Application Interface WSN MEMS Programming Micro-electro-mechanical systems Hệ thống vi điện tử Mobile Hệ thống thông tin di động toàn cầu GSM Global System Communications GPRS General Packet Radio Service Dịch vụ vô tuyến gói tổng hợp Integrated Environment Môi trường phát triển tích hợp IDE OMNet BER IIS UART for Giao diện lập trình ứng dụng Development Objective Modular Testbed in C++ Network Ứng dụng mô hoạt động mạng Bit Error Ratio Tỉ số lỗi/bit Internet Information Server Web server hiển thị thông tin internet Universal Asynchronous Truyền nhận liệu không đồng Receiver/Transmitter DANH MỤC CÁC BẢNG Bảng 3.1: Điện áp Offset độ nhạy 48 Bảng 3.2: Kịch thực nghiệm đo lường phòng thí nghiệm 49 Bảng 3.3: Số lượng gói tin truyền - nhận trình thực nghiệm phòng 51 Bảng 3.4: Kịch thực nghiệm đo lường trời 51 Bảng 3.5: Số lượng gói tin truyền - nhận trình thực nghiệm trời 54 Bảng 3.6: Công suất tiêu thụ điện nút cảm biến 54 DANH MỤC CÁC HÌNH VẼ Hình 1.1: Hiện trường vụ sạt lở đất 10 Hình 1.2: Minh họa việc lắp đặt hộp cảm biến kết nối thành mạng 11 Hình 1.3: Cấu trúc chung mạng WSN 12 Hình 1.4: Kiến trúc giao thức mạng WSN 13 Hình 2.1: Sơ đồ khối thiết bị phát sạt lở đất 14 Hình 2.2: Pin 6600mAh 15 Hình 2.3: Thiết bị XBEE 15 Hình 2.4: Cảm biến nhiệt độ LM35 16 Hình 2.5: Sơ đồ chân cảm biến nhiệt độ 17 Hình 2.6: Sơ đồ khối sơ đồ chân cảm biến ADXL335 17 Hình 2.7: Cảm biến độ ẩm 6440 18 Hình 2.8: Cấu trúc chung nút cảm biến 19 Hình 2.9: Bộ Waspmote 20 Hình 2.10: Mô tả phương thức truyền thông 26 Hình 2.11: Mô địa hình đồi dốc 29 Hình 2.12: Cân vỏ đất để thay đổi tỷ lệ độ dốc tương đối tanθ/tanΦ' 32 Hình 2.13: Mô hình độ nhạy tỷ lệ độ rỗng e cho mức độ trạng thái đất bão hòa bên mực nước ngầm: (a) khô, (b c) trung gian, (d) bão hoà 33 Hình 2.14: Phác thảo lưu vực 33 Hình 2.15: Chiều cao mực nước ngầm so với thời gian mưa khác theo a/b điều kiện quy định 36 Hình 2.16: Dòng chảy tạo so với thời gian mưa khác theo a/b điều kiện quy định 36 Hình 2.17: Giá trị cường độ mưa so với thời gian cho giá trị khác tỷ lệ độ dốc tương đối thông số quy định đất e, Sr Gs 38 Hình 2.18: Đường biểu diễn mối quan hệ tỉ lệ lượng mưa thời gian mưa với đường cong IDF biểu diễn giai đoạn trở lại sạt lở đồi dốc 42 Hình 3.1: Các module đơn giản kết hợp 45 Hình 3.2: Truyền message 45 Hình 3.3: Độ ẩm thu 47 Hình 3.4: Giá trị thực nghiệm gia tốc trục y điều kiện tĩnh 48 Hình 3.5: Giao diện quản lý liệu trang web 49 Hình 3.6: Mô hình thực nghiệm hệ thống WSNs thí nghiệm phòng 50 Hình 3.7: Số lượng gói tin nhận trình thực nghiệm phòng 50 Hình 3.8: Số lượng gói tin gửi trình thực nghiệm phòng 51 Hình 3.9: Mô hình thực tế hệ thống WSNs thí nghiệm phòng 51 Hình 3.10: Mô hình thực nghiệm hệ thống WSNs thí nghiệm trời 52 Hình 3.11: Số lượng gói tin nhận trình thực nghiệm trời 53 Hình 3.12: Số lượng gói tin gửi trình thực nghiệm trời 53 Hình 3.13: Mô hình thực tế hệ thống WSNs thực nghiệm trời 54 Hình 3.14: Mô hình phương thức truyền liệu 55 61 int angle_z = (180 / PI) * asin(z_acc/1000); */ delay(500); // Create new frame frame.createFrame(ASCII, "G"); // Add frame fields frame.addSensor(SENSOR_TCA,temp); frame.addSensor(SENSOR_HUMI1,moisture1); // Do am frame.addSensor(SENSOR_HUMI2,moisture2); // Do am frame.addSensor(SENSOR_BAT, PWR.getBatteryLevel()); // % pin //frame.addSensor(SENSOR_ACC,angle_x,angle_y,angle_z); // Gia toc tai box frame.addSensor(SENSOR_ACC1,x_ac,y_ac,z_ac); // Gia toc tren mat dat frame.addSensor(SENSOR_STR,"D"); // set parameters to packet: packet=(packetXBee*) calloc(1,sizeof(packetXBee)); // Memory allocation packet->mode=BROADCAST; // Choose transmission mode: UNICAST or BROADCAST // 4.2 set destination XBee parameters to packet xbeeZB.setDestinationParams( packet, MAC_ADDRESS, frame.buffer, frame.length); // 4.3 send XBee packet xbeeZB.sendXBee(packet); // 4.4 check TX flag if( xbeeZB.error_TX == 0) { USB.println(F("ok")); } else { USB.println(F("error")); } // free variables free(packet); packet=NULL; frame.showFrame(); // wait for one second delay(1000); digitalWrite(DIGITAL2, LOW); delay(500); 62 } /******************************************* * * checkNetworkParams - Check operating * network parameters in the XBee module * *******************************************/ void checkNetworkParams() { // get operating 64-b PAN ID xbeeZB.getOperating64PAN(); // wait for association indication xbeeZB.getAssociationIndication(); while( xbeeZB.associationIndication != ) { delay(2000); // get operating 64-b PAN ID xbeeZB.getOperating64PAN(); USB.print(F("operating 64-b PAN ID: ")); USB.printHex(xbeeZB.operating64PAN[0]); USB.printHex(xbeeZB.operating64PAN[1]); USB.printHex(xbeeZB.operating64PAN[2]); USB.printHex(xbeeZB.operating64PAN[3]); USB.printHex(xbeeZB.operating64PAN[4]); USB.printHex(xbeeZB.operating64PAN[5]); USB.printHex(xbeeZB.operating64PAN[6]); USB.printHex(xbeeZB.operating64PAN[7]); USB.println(); xbeeZB.getAssociationIndication(); } USB.println(F("\nJoined a network!")); // get network parameters xbeeZB.getOperating16PAN(); xbeeZB.getOperating64PAN(); xbeeZB.getChannel(); USB.print(F("operating 16-b PAN ID: ")); USB.printHex(xbeeZB.operating16PAN[0]); USB.printHex(xbeeZB.operating16PAN[1]); USB.println(); 63 USB.print(F("operating 64-b PAN ID: ")); USB.printHex(xbeeZB.operating64PAN[0]); USB.printHex(xbeeZB.operating64PAN[1]); USB.printHex(xbeeZB.operating64PAN[2]); USB.printHex(xbeeZB.operating64PAN[3]); USB.printHex(xbeeZB.operating64PAN[4]); USB.printHex(xbeeZB.operating64PAN[5]); USB.printHex(xbeeZB.operating64PAN[6]); USB.printHex(xbeeZB.operating64PAN[7]); USB.println(); USB.print(F("channel: ")); USB.printHex(xbeeZB.channel); USB.println(); } 64 CODE CHẠY VISUAL STUDIO // Programmer: Nguyen Van Hung // Date: 05/05/2015 // code mieu ta phan giao dien nguoi dung using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; using System.IO.Ports; using System.Text.RegularExpressions; using System.Data.SqlClient; using DataAccess; using BusinessLogic; using System.Text; using System.IO; using System.Net; using System.Collections.Specialized; namespace WindowsFormsApplication2 { public partial class Form1 : Form { public Form1() { InitializeComponent(); serialPortGateway.Parity = System.IO.Ports.Parity.None; serialPortGateway.StopBits = StopBits.One; serialPortGateway.DataBits = 8; serialPortGateway.DataReceived += SerialDataReceivedEventHandler(serialPortGateway_DataReceived); ////////////////////////////////////////////////////////////////////// serialPortGSM.Parity = System.IO.Ports.Parity.None; serialPortGSM.StopBits = StopBits.One; serialPortGSM.DataBits = 8; new 65 serialPortGSM.DataReceived += SerialDataReceivedEventHandler(serialPortGSM_DataReceived); ///////////////////////////////////////////////////////////////////////// serialPortWS.Parity = System.IO.Ports.Parity.None; serialPortWS.StopBits = StopBits.One; serialPortWS.DataBits = 8; serialPortWS.DataReceived += SerialDataReceivedEventHandler(serialPortWS_DataReceived); } private void Form1_Load(object sender, EventArgs e) { foreach (String t in System.IO.Ports.SerialPort.GetPortNames()) { cbComGateway.Items.Add(t); cbComGSM.Items.Add(t); cbComWS.Items.Add(t); } } byte[] s = new byte[150]; // int i = 0; string frame; int index = 0, lenghtFrame; // nhan data private void serialPortGateway_DataReceived(object SerialDataReceivedEventArgs e) { try { int bn = serialPortGateway.BytesToRead; for (int j = 0; j < bn; j++) { byte temp = s[index] = (byte)serialPortGateway.ReadByte(); index++; if (temp == 0x80) { frame = Encoding.ASCII.GetString(s); this.Invoke(new EventHandler(type)); lenghtFrame = index; index = 0; new new sender, 66 } } } catch (Exception ex) { MessageBox.Show(ex.Message + "63" ); } } byte[] s1 = new byte[150]; // int i = 0; string frame1; int index1 = 0, lenghtFrame1; private void serialPortWS_DataReceived(object SerialDataReceivedEventArgs e) { try { int bn = serialPortWS.BytesToRead; for (int j = 0; j < bn; j++) { byte temp = s1[index1] = (byte)serialPortWS.ReadByte(); index1++; if (temp == 0x66) { frame1 = Encoding.ASCII.GetString(s1); this.Invoke(new EventHandler(type1)); lenghtFrame1 = index1; index1 = 0; } } } catch (Exception ex) { MessageBox.Show(ex.Message); } } // button connect to Gateway private void btnConnectGatewaye_Click(object sender, EventArgs e) { sender, 67 serialPortGateway.PortName = Convert.ToString(cbComGateway.Text); serialPortGateway.BaudRate = Convert.ToInt32(cbBaudGateway.Text); if (!serialPortGateway.IsOpen) try { serialPortGateway.Open(); MessageBox.Show("Connected"); } catch (Exception ex) { MessageBox.Show(ex.Message); } btnConnectGatewaye.Enabled = false; btnDisconnectGateway.Enabled = true; } // connect to GSM private void btnConncetGSM_Click(object sender, EventArgs e) { serialPortGSM.PortName = Convert.ToString(cbComGSM.Text); serialPortGSM.BaudRate = Convert.ToInt32(cbBaudGSM.Text); if (!serialPortGSM.IsOpen) try { serialPortGSM.Open(); } catch (Exception ex) { MessageBox.Show(ex.Message); } btnConnectGSM.Enabled = false; btnDisconnectGSM.Enabled = true; } // connect to Weather Station private void btnConnectWS_Click_1(object sender, EventArgs e) { serialPortWS.PortName = Convert.ToString(cbComWS.Text); serialPortWS.BaudRate = Convert.ToInt32(cbBaudWS.Text); if (!serialPortWS.IsOpen) try 68 { serialPortWS.Open(); } catch (Exception ex) { MessageBox.Show(ex.Message); } btnConnectWS.Enabled = false; btnDisconnectWS.Enabled = true; } private void btnDisconnectGateway_Click(object sender, EventArgs e) { serialPortGateway.Close(); btnConnectGatewaye.Enabled = true; btnDisconnectGateway.Enabled = false; } private void btnDisconnectWS_Click(object sender, EventArgs e) { serialPortWS.Close(); btnConnectWS.Enabled = true; btnDisconnectWS.Enabled = false; } /// void type1(object s, EventArgs e) { string[] field1; string fm = frame1.Trim(); tbReceive.AppendText(fm); if (lenghtFrame1 > 3) { field1 = Regex.Split(fm.Substring(0, fm.Length), "#"); txtWspeed.Text = field1[0].ToString(); txtDirect.Text = field1[2].ToString(); txtPrecip.Text = field1[1].ToString(); string url = "http://www.uetlandslide.com/upload.action"; NameValueCollection nvc = new NameValueCollection(); nvc.Add("content", "weather;" + field1[1].ToString() + field1[0].ToString() + ";" + field1[2].ToString() + ""); HttpUploadText(url, nvc); ";" + 69 } } /// /// gataway processing /// string[] field; void type(object s, EventArgs e) { string fm = frame.Trim(); tbReceive.AppendText(fm); if (lenghtFrame > 45) { field = Regex.Split(fm.Substring(0, fm.Length), "#"); //try // { // field = Regex.Split(fm.Substring(0, fm.Length), "#"); // } // catch (Exception ex) // { // MessageBox.Show(ex.Message + " split"); // } if (String.Compare(field[1].ToString(), "382553448", true) == 0) // node no.1 { Logic lg = new Logic(); string[] temp1 = Regex.Split(field[4].Substring(0, field[4].Length), ":"); tbTemp1.Text = temp1[1].ToString(); string[] mois1 = Regex.Split(field[5].Substring(0, field[5].Length), ":"); tbMoist1.Text = mois1[1].ToString(); string[] bat1 = Regex.Split(field[6].Substring(0, field[6].Length), ":"); tbBat1.Text = bat1[1].ToString(); string[] acc1 = Regex.Split(field[7].Substring(0, field[7].Length), ":"); tbAcc1.Text = acc1[1].ToString(); string[] date1 = Regex.Split(field[8].Substring(0, field[8].Length), ":"); string[] datefield1 = Regex.Split(date1[1].Substring(0, date1[1].Length), "-"); tbDate1.Text = datefield1[0].ToString() + "/" + datefield1[1].ToString() + "/" + datefield1[2].ToString(); string[] time1 = Regex.Split(field[9].Substring(0, field[9].Length), ":"); 70 string[] timefield1 = Regex.Split(time1[1].Substring(0, time1[1].Length), "-"); tbTime1.Text = timefield1[0].ToString() + ":" + timefield1[1].ToString() + ":" + timefield1[2].ToString(); lg.InsertDataNode1(temp1[1].ToString(), mois1[1].ToString(), bat1[1].ToString(), acc1[1].ToString(), tbDate1.Text, tbTime1.Text); // ghi file.txt // FileInfo myfile1 = new FileInfo("D:\\Data\\382553448_" + datefield1[0].ToString() + datefield1[1].ToString() + datefield1[2].ToString() + "_" + timefield1[0].ToString() + timefield1[1].ToString() + timefield1[2].ToString() + ".txt"); // StreamWriter tex1 = myfile1.CreateText(); // tex1.Write("382553448;" + tbTemp1.Text + ";" + tbMoist1.Text + ";" + tbBat1.Text + ";" + tbAcc1.Text + ";" + tbDate1.Text + ";" + tbTime1.Text + ""); // tex1.Close(); } else if (String.Compare(field[1].ToString(), "382545049", true) == 0) // node no.2 { Logic lg = new Logic(); string[] temp2 = Regex.Split(field[4].Substring(0, field[4].Length), ":"); tbTemp2.Text = temp2[1].ToString(); string[] mois2 = Regex.Split(field[5].Substring(0, field[5].Length), ":"); tbMoist2.Text = mois2[1].ToString(); string[] bat2 = Regex.Split(field[6].Substring(0, field[6].Length), ":"); tbBat2.Text = bat2[1].ToString(); string[] acc2 = Regex.Split(field[7].Substring(0, field[7].Length), ":"); tbAcc2.Text = acc2[1].ToString(); string[] date2 = Regex.Split(field[8].Substring(0, field[8].Length), ":"); string[] datefield2 = Regex.Split(date2[1].Substring(0, date2[1].Length), "-"); tbDate2.Text = datefield2[0].ToString() + "/" + datefield2[1].ToString() + "/" + datefield2[2].ToString(); string[] time2 = Regex.Split(field[9].Substring(0, field[9].Length), ":"); string[] timefield2 = Regex.Split(time2[1].Substring(0, time2[1].Length), "-"); tbTime2.Text = timefield2[0].ToString() + ":" + timefield2[1].ToString() + ":" + timefield2[2].ToString(); 71 lg.InsertDataNode2(temp2[1].ToString(), tbMoist2.Text, bat2[1].ToString(), acc2[1].ToString(), tbDate2.Text, tbTime2.Text); // ghi file.txt // FileInfo myfile2 = new FileInfo("D:\\Data\\382545049_" + datefield2[0].ToString() + datefield2[1].ToString() + datefield2[2].ToString() + "_" + timefield2[0].ToString() + timefield2[1].ToString() + timefield2[2].ToString() + ".txt"); // StreamWriter tex2 = myfile2.CreateText(); // tex2.Write("382545049;" + tbTemp2.Text + ";" + tbMoist2.Text + ";" + tbBat2.Text + ";" + tbAcc2.Text + ";" + tbDate2.Text + ";" + tbTime2.Text + ""); // tex2.Close(); } else if (String.Compare(field[1].ToString(), "382537687", true) == 0) // node no.3 { MessageBox.Show("OK"); Logic lg = new Logic(); string[] temp3 = Regex.Split(field[4].Substring(0, field[4].Length), ":"); tbTemp3.Text = temp3[1].ToString(); string[] mois3 = Regex.Split(field[5].Substring(0, field[5].Length), ":"); tbMoist3.Text = mois3[1].ToString(); string[] bat3 = Regex.Split(field[6].Substring(0, field[6].Length), ":"); tbBat3.Text = bat3[1].ToString(); string[] acc3 = Regex.Split(field[7].Substring(0, field[7].Length), ":"); tbAcc3.Text = acc3[1].ToString(); string[] date3 = Regex.Split(field[8].Substring(0, field[8].Length), ":"); string[] datefield3 = Regex.Split(date3[1].Substring(0, date3[1].Length), "-"); tbDate3.Text = datefield3[0].ToString() + "/" + datefield3[1].ToString() + "/" + datefield3[2].ToString(); string[] time3 = Regex.Split(field[9].Substring(0, field[9].Length), ":"); string[] timefield3 = Regex.Split(time3[1].Substring(0, time3[1].Length), "-"); tbTime3.Text = timefield3[0].ToString() + ":" + timefield3[1].ToString() + ":" + timefield3[2].ToString(); lg.InsertDataNode3(temp3[1].ToString(), mois3[1].ToString(), bat3[1].ToString(), acc3[1].ToString(), tbDate3.Text, tbTime3.Text); // ghi file.txt 72 // FileInfo myfile3 = new FileInfo("D:\\Data\\382537687_" + datefield3[0].ToString() + datefield3[1].ToString() + datefield3[2].ToString() + "_" + timefield3[0].ToString() + timefield3[1].ToString() + timefield3[2].ToString() + ".txt"); // StreamWriter tex3 = myfile3.CreateText(); // tex3.Write("382537687;" + tbTemp3.Text + ";" + tbMoist3.Text + ";" + tbBat3.Text + ";" + tbAcc3.Text + ";" + tbDate3.Text + ";" + tbTime3.Text + ""); // tex3.Close(); ///////////////////////////////////////// } else if (String.Compare(field[1].ToString(), "382551826", true) == 0) // node no.4 { Logic lg = new Logic(); string[] temp4 = Regex.Split(field[4].Substring(0, field[4].Length), ":"); tbTemp4.Text = temp4[1].ToString(); string[] mois4 = Regex.Split(field[5].Substring(0, field[5].Length), ":"); tbMoist4.Text = mois4[1].ToString(); string[] bat4 = Regex.Split(field[6].Substring(0, field[6].Length), ":"); tbBat4.Text = bat4[1].ToString(); string[] acc4 = Regex.Split(field[7].Substring(0, field[7].Length), ":"); tbAcc4.Text = acc4[1].ToString(); string[] date4 = Regex.Split(field[8].Substring(0, field[8].Length), ":"); string[] datefield4 = Regex.Split(date4[1].Substring(0, date4[1].Length), "-"); tbDate4.Text = datefield4[0].ToString() + "/" + datefield4[1].ToString() + "/" + datefield4[2].ToString(); string[] time4 = Regex.Split(field[9].Substring(0, field[9].Length), ":"); string[] timefield4 = Regex.Split(time4[1].Substring(0, time4[1].Length), "-"); tbTime4.Text = timefield4[0].ToString() + ":" + timefield4[1].ToString() + ":" + timefield4[2].ToString(); // lg.InsertDataNode4(temp4[1].ToString(), mois4[1].ToString(), bat4[1].ToString(), acc4[1].ToString(), tbDate4.Text, tbTime4.Text); // ghi file.txt // FileInfo myfile4 = new FileInfo("D:\\Data\\382551826_" + datefield4[0].ToString() + datefield4[1].ToString() + datefield4[2].ToString() + "_" + timefield4[0].ToString() + timefield4[1].ToString() + timefield4[2].ToString() + ".txt"); 73 // StreamWriter tex4 = myfile4.CreateText(); // tex4.Write("382551826;" + temp4[1].ToString() + ";" + mois4[1].ToString() + ";" + bat4[1].ToString() + ";" + acc4[1].ToString() + ";" + tbDate4.Text + ";" + tbTime4.Text + ""); // tex4.Close(); } else if (String.Compare(field[1].ToString(), "382542510", true) == 0) // node no.5 { Logic lg = new Logic(); string[] temp5 = Regex.Split(field[4].Substring(0, field[4].Length), ":"); tbTemp5.Text = temp5[1].ToString(); string[] mois5 = Regex.Split(field[5].Substring(0, field[5].Length), ":"); tbMoist5.Text = mois5[1].ToString(); string[] bat5 = Regex.Split(field[6].Substring(0, field[6].Length), ":"); tbBat5.Text = bat5[1].ToString(); string[] acc5 = Regex.Split(field[7].Substring(0, field[7].Length), ":"); tbAcc5.Text = acc5[1].ToString(); string[] date5 = Regex.Split(field[8].Substring(0, field[8].Length), ":"); string[] datefield5 = Regex.Split(date5[1].Substring(0, date5[1].Length), "-"); tbDate5.Text = datefield5[0].ToString() + "/" + datefield5[1].ToString() + "/" + datefield5[2].ToString(); string[] time5 = Regex.Split(field[9].Substring(0, field[9].Length), ":"); string[] timefield5 = Regex.Split(time5[1].Substring(0, time5[1].Length), "-"); tbTime5.Text = timefield5[0].ToString() + ":" + timefield5[1].ToString() + ":" + timefield5[2].ToString(); // lg.InsertDataNode5(temp5[1].ToString(), mois5[1].ToString(), bat5[1].ToString(), acc5[1].ToString(), tbDate5.Text, tbTime5.Text); // ghi file.txt // FileInfo myfile5 = new FileInfo("D:\\Data\\382542510_" + datefield5[0].ToString() + datefield5[1].ToString() + datefield5[2].ToString() + "_" + timefield5[0].ToString() + timefield5[1].ToString() + timefield5[2].ToString() + ".txt"); // StreamWriter tex5 = myfile5.CreateText(); // tex5.Write("382542510;" + temp5[1].ToString() + ";" + mois5[1].ToString() + ";" + bat5[1].ToString() + ";" + acc5[1].ToString() + ";" + tbDate5.Text + ";" + tbTime5.Text + ""); 74 // tex5.Close(); } else if (String.Compare(field[1].ToString(), "382548215", true) == 0) // node no.6 { Logic lg = new Logic(); string[] temp6 = Regex.Split(field[4].Substring(0, field[4].Length), ":"); tbTemp6.Text = temp6[1].ToString(); string[] mois6 = Regex.Split(field[5].Substring(0, field[5].Length), ":"); tbMoist6.Text = mois6[1].ToString(); string[] bat6 = Regex.Split(field[6].Substring(0, field[6].Length), ":"); tbBat6.Text = bat6[1].ToString(); string[] acc6 = Regex.Split(field[7].Substring(0, field[7].Length), ":"); tbAcc6.Text = acc6[1].ToString(); string[] date6 = Regex.Split(field[8].Substring(0, field[8].Length), ":"); string[] datefield6 = Regex.Split(date6[1].Substring(0, date6[1].Length), "-"); tbDate6.Text = datefield6[0].ToString() + "/" + datefield6[1].ToString() + "/" + datefield6[2].ToString(); string[] time6 = Regex.Split(field[9].Substring(0, field[9].Length), ":"); string[] timefield6 = Regex.Split(time6[1].Substring(0, time6[1].Length), "-"); tbTime6.Text = timefield6[0].ToString() + ":" + timefield6[1].ToString() + ":" + timefield6[2].ToString(); // lg.InsertDataNode6(temp6[1].ToString(), mois6[1].ToString(), bat6[1].ToString(), acc6[1].ToString(), tbDate6.Text, tbTime6.Text); // ghi file.txt // FileInfo myfile6 = new FileInfo("D:\\Data\\382548215_" + datefield6[0].ToString() + datefield6[1].ToString() + datefield6[2].ToString() + "_" + timefield6[0].ToString() + timefield6[1].ToString() + timefield6[2].ToString() + ".txt"); //StreamWriter tex6 = myfile6.CreateText(); // tex6.Write("382548215;" + temp6[1].ToString() + ";" + mois6[1].ToString() + ";" + bat6[1].ToString() + ";" + acc6[1].ToString() + ";" + tbDate6.Text + ";" + tbTime6.Text + ""); // tex6.Close(); } } 75 else { } } private void serialPortGSM_DataReceived(object SerialDataReceivedEventArgs e) { } /*private void btnDelete_Click(object sender, EventArgs e) { Logic lg = new Logic(); if (Convert.ToInt32(cbNode.Text) == 1) { MessageBox.Show("Deleted data node 1"); lg.DeleteTable1(); } else if (Convert.ToInt32(cbNode.Text) == 2) { lg.DeleteTable2(); MessageBox.Show("Deleted data node 2"); } else if (Convert.ToInt32(cbNode.Text) == 3) { lg.DeleteTable3(); MessageBox.Show("Deleted data node 3"); } } */ sender, [...]... đắc lực của mạng cảm biến không dây, hệ thống này sẽ cho phép con người nắm bắt các thông số và đưa ra được những cảnh báo sớm về sự sạt lở 1.2 Mạng cảm biến không dây phát hiện sạt lở đất (WSN): 1.2.1 Giới thiệu mạng WSN: Ngày nay, việc dự báo được thảm họa sạt lở đất là vấn đề cần thiết ở mỗi quốc gia trên thế giới Sức mạnh của việc sử dụng mạng cảm biến không dây cho phát hiện sạt lở cho phép con người... Do đó hiện tượng sạt lở đất sẽ vẫn diễn ra gây nguy hại, ảnh hưởng tới con người và đời sống sản xuất Để khắc phục được các nguyên nhân trên cũng như đưa ra cảnh báo sớm về hiện tượng sạt lở đất, có rất nhiều các nghiên cứu liên quan và các hệ thống cảnh báo được đưa ra Trong đó hiệu quả hơn cả là hệ thống cảnh báo nhờ vào các cảm biến đo độ dịch chuyển, đo độ ẩm đất, đo nhiệt độ và các thông số thời... 2.1.2 Các khối trong sơ đồ: * Khối cảm biến: Hệ thống bao gồm các cảm biến: cảm biến độ ẩm, cảm biến gia tốc và cảm biến nhiệt độ Dữ liệu thu được từ các cảm biến sẽ được gửi tới trung tâm để xử lý rồi đưa ra các cảnh báo nếu cần thiết Việc sử dụng các cảm biến được chế tạo trên cơ sở công nghệ MEMS để cho kết quả khá chính xác, cấu hình nhỏ gọn, hiệu quả hơn Các cảm biến này được bố trí gọn chung trong... các ứng dụng Sơ đồ khối và sơ đồ chân cảm biến ADXL335 Hình 2.6: Sơ đồ khối và sơ đồ chân cảm biến ADXL335 18 * Cảm biến độ ẩm 6440: Thiết bị cảm biến độ ẩm là thiết bị sử dụng phương pháp gián tiếp thông qua việc đo giá trị điện trở để đo độ ẩm của đất Cảm biến 6440 là thiết bị cảm biến loại điện trở Khi sử dụng cảm biến này giá trị điện trở từ thiết bị cảm biến sẽ được chuyển về bộ vi xử lý và được... Để cảnh báo sạt lở, người ta thường chia việc cảnh báo thành hai loại là dài hạn và tức thời Việc cảnh báo dài hạn là sử dụng bản đồ GIS, GPS có độ chính xác cao, để quan sát sạt lở theo hàng năm Việc cảnh báo tức thời là việc sử dụng các cảm biến nhận dạng dấu hiệu sạt lở ngay trước khi sự cố trượt lở xảy ra Trong cảnh báo tức thời, việc sử dụng các cảm biến quán tính, đo mưa, độ ẩm là cần thiết Ngày... trượt lở đất Hệ thống bao gồm các nút (hộp thiết bị cảm biến) , gateway và trạm cơ sở Ở mỗi hộp thiết bị cảm biến tại chỗ hệ thống triển khai bảng thu nhận dữ liệu để nối thiết bị cảm biến bên ngoài với hộp thiết bị cảm biến vô tuyến Trong công việc này, vài thiết bị cảm biến bên ngoài bao gồm cảm biến đo độ ẩm đất, thiết bị cảm biến gia tốc và cảm biến nhiệt độ đã được cài đặt để thu thập dữ liệu tương... mẽ của công nghệ vi cơ điện tử (MEMS) mà các cảm biến vừa có độ chính xác cao, giá thành rẻ và kích thước nhỏ sẽ càng thuận lợi cho việc triển khai thành một mạng các cảm biến Hình 1.2 minh họa việc lắp đặt các hộp cảm biến có thể thiết lập thành một mạng cảm biến không dây sử dụng cho hệ cảnh báo trượt lở đất giám sát theo thời gian thực Hình 1.2: Minh họa việc lắp đặt các hộp cảm biến và kết nối thành... hiện nhiệm vụ cảm biến tại cùng một thời điểm 14 CHƢƠNG 2: NGUYÊN TẮC HOẠT ĐỘNG THIẾT BỊ PHÁT HIỆN CẢNH BÁO SẠT LỞ ĐẤT 2.1 Phần cứng: 2.1.1 Sơ đồ khối: hệ thống được mô tả như hình 2.1 Cảm biến nhiệt độ Antenna Cảm biến độ ẩm Vi xử lý Atmega328 trong Waspmote Truyền nhận Xbee Cảm biến gia tốc Cảm biến Pin Libelium 6600mAh có thể nạp lại được Hình 2.1: Sơ đồ khối thiết bị phát hiện sạt lở đất 2.1.2 Các... Libelium, các cảm biến nhiệt độ LM35, cảm biến gia tốc ADXL335, cảm biến độ ẩm 6440, giao thức XBEE… 2.1.3.1 Các loại cảm biến: * Cảm biến nhiệt độ - LM35 [3]: Hình 2.4: Cảm biến nhiệt độ LM35 Cảm biến nhiệt độ LM35 là một loại cảm biến tương tự thường được ứng dụng trong các ứng dụng đo nhiệt độ thời gian thực Vì nó hoạt động khá chính xác với sai số nhỏ, đồng thời với kích thước nhỏ và giá thành rẻ... của sạt lở đất (SHALSTAB: Một mô hình địa hình kỹ thuật số để lập bản đồ tiềm năng sạt lở đất nông) Một vài ứng dụng cho thấy phương pháp này có khả năng nắm bắt sự thay đổi không gian đối với nguy cơ sạt lở đất, vì vậy vai trò của kiểm soát địa hình trong vấn đề sạt lở đất là rất quan trọng Phương pháp này cho phép dự đoán khá chính xác và đã được thử nghiệm khá thành công Các phương pháp nghiên cứu ... HÀ NỘI TRƢỜNG ĐẠI HỌC CÔNG NGHỆ - - NGUYỄN VĂN HÙNG NGHIÊN CỨU VÀ XÂY DỰNG CỤM CẢM BIẾN SỬ DỤNG CHO HỆ THỐNG CẢNH BÁO SẠT LỞ ĐẤT Ngành: Công Nghệ Điện Tử - Viễn Thông Chuyên... phát sạt lở đất 2.1.2 Các khối sơ đồ: * Khối cảm biến: Hệ thống bao gồm cảm biến: cảm biến độ ẩm, cảm biến gia tốc cảm biến nhiệt độ Dữ liệu thu từ cảm biến gửi tới trung tâm để xử lý đưa cảnh báo. .. cao, để quan sát sạt lở theo hàng năm Việc cảnh báo tức thời việc sử dụng cảm biến nhận dạng dấu hiệu sạt lở trước cố trượt lở xảy Trong cảnh báo tức thời, việc sử dụng cảm biến quán tính, đo

Ngày đăng: 30/11/2015, 19:33

Từ khóa liên quan

Tài liệu cùng người dùng

Tài liệu liên quan