Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 83 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
83
Dung lượng
7,23 MB
Nội dung
BỘ CÔNG THƯƠNG TRƯỜNG ĐẠI HỌC CÔNG NGHIỆP TP HCM KHOA CÔNGNGHỆ ĐIỆN TỬ BỘ MÔN VIỄN THÔNG ĐỒ ÁN TỐT NGHIỆP GIÁMSÁTVÀĐIỀUKHIỂN SỬ DỤNGCÔNGNGHỆZIGBEE Giảng viên hướng dẫn : Th.s NGUYỄN DUY KHANH Sinh viên thực : NGUYỄN CÔNG HẬU MSSV: 12134601 NGUYỄN NGỌC LINH MSSV: 12037571 Lớp : ĐHĐTVT8A Khóa : Tp Hồ Chí Minh, tháng năm 2016 BỘ CÔNG THƯƠNG TRƯỜNG ĐẠI HỌC CÔNG NGHIỆP TP HCM KHOA CÔNGNGHỆ ĐIỆN TỬ BỘ MÔN VIỄN THÔNG ĐỒ ÁN TỐT NGHIỆP GIÁMSÁTVÀĐIỀUKHIỂN SỬ DỤNGCÔNGNGHỆZIGBEE Giảng viên hướng dẫn : Th.s NGUYỄN DUY KHANH Sinh viên thực : NGUYỄN CÔNG HẬU MSSV: 12134601 NGUYỄN NGỌC LINH MSSV: 12037571 Lớp : ĐHĐTVT8A Khóa : Tp Hồ Chí Minh, tháng năm 2016 LỜI CẢM ƠN Lời cho nhóm em gửi lời cảm ơn tới quý thầy cô trường ĐH Công nghiệpTP.HCM, quý thầy cô Khoa Điện Tử truyền đạt kiến thức quý giá, giúp nhóm em có tảng , hành trang kiến thức vững vàng chuyên ngành trường Đặc điệt chúng em chân thành cảm ơn thầy Nguyễn Duy Khanh tận tình dạy, hướng dẫn nhóm em hồn thiện đồ án Trong q trình thực đồ án,nhóm chúng em gặp khơng khó khăn thiếu sót Nhưng hướng dẫn giúp đỡ nhiệt tình quý thầy giúp chúng em khắc phục thiếu sót thầy dạy chúng em tận tình, thầy giúp chúng em có sở lý thuyết vững đề tài Trong trình thi cơng lắp đạt, thầy chỉnh sửa cho chúng em thiếu xót phần cứng lẫn phần mềm, để chúng em hồn thành thành đề tài thời hạn, giúp chúng em học tập tốt Qua chúng em xin gửi lời cảm ơn đến người bạn học lớp giúp chúng em có thật nhiều tài liệu để hoàn thành đề tài Tuy nhiên kiến thức chúng em hạn chế thời gian thực hạn hẹp nên q trình thực đồ án báo cáo nhiều thiếu sót, Rất mong ý kiến đánh giá đóng góp quý thầy cô để đồ án chúng em hoàn thiện Một lần nữa, chúng em xin chân thành cảm ơn ! NHẬN XÉT (Của giảng viên hướng dẫn) ……………………………………………………………………………………………… ……………………………………………………………………………………………… ……………………………………………………………………………………………… ……………………………………………………………………………………………… ……………………………………………………………………………………………… ……………………………………………………………………………………………… ……………………………………………………………………………………………… ……………………………………………………………………………………………… ……………………………………………………………………………………………… ……………………………………………………………………………………………… ……………………………………………………………………………………………… ……………………………………………………………………………………………… ……………………………………………………………………………………………… ……………………………………………………………………………………………… ……………………………………………………………………………………………… ……………………………………………………………………………………………… ……………………………………………………………………………………………… ……………………………………………………………………………………………… ……………………………………………………………………………………………… ……………………………………………………………………………………………… ……………………………………………………………………………………………… NHẬN XÉT (Của giảng viên phản biện) ……………………………………………………………………………………………… ……………………………………………………………………………………………… ……………………………………………………………………………………………… ……………………………………………………………………………………………… ……………………………………………………………………………………………… ……………………………………………………………………………………………… ……………………………………………………………………………………………… ……………………………………………………………………………………………… ……………………………………………………………………………………………… ……………………………………………………………………………………………… ……………………………………………………………………………………………… ……………………………………………………………………………………………… ……………………………………………………………………………………………… ……………………………………………………………………………………………… ……………………………………………………………………………………………… ……………………………………………………………………………………………… ……………………………………………………………………………………………… ……………………………………………………………………………………………… ……………………………………………………………………………………………… ……………………………………………………………………………………………… LỜI NÓI ĐẦU Ngày khoa học ngày phát triển, có nhiều ứng dụng quan trọng vào đời sống, làm cho sống thay đổi ngày Sự phát triển kĩ thuật điện tử tạo hàng loạt thiết bị với đặc điểm bật xác cao, tốc độ nhanh, gọn nhẹ yếu tố cần thiết cho hoặt động người đạt hiệu cao Không vậy, côngnghệ điện tử góp phần thúc đẩy phát triển ngành khác Với xu hướng tiên tiến cơngnghệđiềukhiển từ xa ưa chuộng ứng dụng nhiều cho sống Cùng với phát triển internet giao thức truyền khơng như: wifi, zigbee, bluetooth việc điềukhiển từ xa lại ứng dụng nhiều tiện nghi mà mang lại Trong ngành nông - lâm – ngư nghiệp việc quản lý khu vực có diện tích đất rộng lớn rừng hay nông trại lớn gặp nhiều khó khăn hạn chế Hàng năm xảy hàng loạt vụ cháy rừng, nông trại khó quản lý hết tài ngun Xuất phát từ thực tế nhóm chúng em nghiên cứu, thiết kế thi công đề tài : giámsátđiềukhiển sử dụngcôngnghệzigbee Để đo đạc truyền liệu từ cảm biến nhiệt độ độ ẩm, hiển thị lên máy tính lưu lại để giámsát Nội dung báo cáo gồm chương sau : Chương : Dẫn nhập Chương : Tổng quan phần cứng Chương : Giớ thiệu phần mềm Chương : Thiết kế, lập trình, lắp đặt mạch đo nhiệt độ độ ẩm truyền qua côngnghệ zipbee Chương : Kết luận hướng phát triển Danh mục hình ảnh CÁC TỪ VIẾT TẮT IEEE: Institute of Electrical and Electronic Engineers WPAN: Wireless Personal Area Network PAN ID : PAN identifier QoS: Quality of Service MAC: Medium Access Control PHY: Physical layer RF: Radio frequency Mục lục Hình 4.4 : chu trình hoạt động CHƯƠNG 5: KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN I Kết luận Qua đề tài này, nhóm nghiên cứu giải đề sau: • Nghiên cứu lý thuyết mạng ZigBee, cách kết nối module ZigBee DRF 1605 • Nghiên cứu ngơn ngữ lập trình Adruino • Ngơn ngữ C# để lập trình giao diện Microsoft Viual Studio • Xây dựng hồn thành mơ hình giámsát nhiệt độ, độ ẩm thị lên giao diện PC • Chương trình có khả lưu kết nhiệt độ, độ ẩm cho người dùnggiámsát tình trạng mơi trường Sau tiến hành thi công lắp đặt , chỉnh sửa chạy thử chúng em có sản phẩm hồn chỉnh 69 Hình 5.1 sản phẩm hồn thiện Hình 5.2 giao diện hiển thị visual studio 70 II Hướng phát triển Do hạn chế thời gian, kiến thức vấn đề kinh tế nên ngoại vi mơ hình đơn giản Do áp dụng vào thực thế, mơ hình cần phải nâng cấp, ngoại vi cần mở rộng để thích ứng cho ứng dụng cụ thể như: - Giao tiếp zigbee với nhiều loại thiết bị ngoại vi relay, camera, cảm biến chuyển động, loại cảm biến đo độ ẩm, nồng độ oxy… để phục vụ ứng - dụng nông nghiệp, công nghiệp điềukhiển tự động Nghiên cứu sâu mảng lập trình Adruino để phục vụ yêu cầu cao thiết kết Có thể phát triển giao diện hiển thị điện thoại di động để linh hoạt trinhfg giámsát Hy vọng với hướng phát triển với ý tưởng, góp ý thầy bạn Đề tài phát triển sớm ứng dụng tương lai 71 PHẦN MỤC LỤC CODE VISUAL STUDIO 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 ZedGraph; using System.IO.Ports; using System.IO; namespace WindowsFormsApplication2 { public partial class Form1 : Form { #region field string read,path; SerialPort com; int tickStart = 0; ColorDialog cld; bool ktra,ktra1; int dem,dem1; int tam; int checkcon; string temp, Hum; #endregion #region Constructor public Form1() { InitializeComponent(); timer1.Interval = 100; tbnColorNhiet.BackColor = Color.Red; btnColorDo.BackColor = Color.Blue; ktra=ktra1 = false; dem = dem1=0; tam = 0; } #endregion #region form Load 72 private void Form1_Load(object sender, EventArgs e) { #region Setup Zedgraph GraphPane myPane = zedGraphControl1.GraphPane; myPane.Title.Text = "Đồ Thị"; myPane.XAxis.Title.Text = " "; myPane.YAxis.Title.Text = " "; RollingPointPairList list1 = new RollingPointPairList(1200); RollingPointPairList list2 = new RollingPointPairList(1200); //LineItem curve1 = myPane.AddCurve("Nhiệt Độ", list1, Color.Red, SymbolType.None); //LineItem curve2 = myPane.AddCurve("Độ Ẩm", list2, Color.Blue, SymbolType.None); LineItem curve1 = new LineItem("Nhiệt Độ", list1, Color.Red, SymbolType.None, 1.0f); LineItem curve2 = new LineItem("Độ Ẩm", list2, Color.Blue, SymbolType.None, 1.0f); myPane.CurveList.Add(curve1); myPane.CurveList.Add(curve2); myPane.XAxis.Scale.Min = 0; myPane.XAxis.Scale.Max = 30; myPane.XAxis.Scale.MinorStep = 1; myPane.XAxis.Scale.MajorStep = 5; myPane.YAxis.Scale.Min = 0; myPane.YAxis.Scale.Max = 100; myPane.YAxis.Scale.MinorStep = 1; myPane.YAxis.Scale.MajorStep = 15; tickStart = Environment.TickCount; #endregion #region Setupcom #endregion timer2.Enabled = false; } #endregion #region xulycom public void Comport(string name,int baud) { temp = Hum = ""; 73 com = new SerialPort(name, baud); com.DataReceived += new SerialDataReceivedEventHandler(DataReceived); com.Open(); } private void DataReceived(object sender, SerialDataReceivedEventArgs e) { dem1 = dem1 + 2; dem1++; dem++; { com = (SerialPort)sender; read = com.ReadLine();// gan du lieu cong com cho read } while (!read.Contains("T")&&!read.Contains("H")); if (read.Contains("T")) { CheckConnect("T"); read = read.Remove(0, 1); temp = read; pbStaTemp.BackgroundImage = Properties.Resources.DinhBatDau; } if (read.Contains("H")) { CheckConnect("H"); read = read.Remove(0, 1); Hum = read; pbStatHum.BackgroundImage = Properties.Resources.DinhBatDau; } hienthivalue(temp, Hum); if(dem==3) { dem = 0; } dem1 = 1; } #endregion #region ham ve 74 public void draw(double setpoint1, double setpoint2) { if (zedGraphControl1.GraphPane.CurveList.Count xScale.Max - xScale.MajorStep) { if (button3.Text == "COMPACT") { xScale.Max = time + xScale.MajorStep; xScale.Min = xScale.Max - 30.0; } else { xScale.Max = time + xScale.MajorStep; xScale.Min = 0; } } // Vẽ đồ thị zedGraphControl1.AxisChange(); // Force a redraw zedGraphControl1.Invalidate(); 75 } private void timer1_Tick(object sender, EventArgs e) { try { if (ktra1) { if (dem1 > 0) { if (checkcon == 1) draw(0, double.Parse(Hum)); if (checkcon == 2) draw(double.Parse(temp), 0); if(checkcon==0) draw(double.Parse(temp), double.Parse(Hum)); } } } catch (Exception) { } } #endregion #region button Connect int check = 0; private void button1_Click(object sender, EventArgs e) { if (cbCom.Text != "" && cbBaud.Text != "") { ktra1 = true; if (btnCon.Text == "Connect") { timer2.Enabled = true; timer2.Start(); timer1.Enabled = true; btnCon.Text = "DisConn"; if (check == 0) { tickStart = Environment.TickCount; check = 1; } Comport(cbCom.Text, int.Parse(cbBaud.Text)); } 76 else { timer2.Enabled = false; com.Close(); timer1.Enabled = false; btnCon.Text = "Connect"; tmGhidata.Enabled = false; } } else { MessageBox.Show("Chưa nhập đúng"); } } #endregion private void button3_Click(object sender, EventArgs e) { if (button3.Text == "COMPACT") button3.Text = "SROLL"; else button3.Text = "COMPACT"; } private void button1_Click_1(object sender, EventArgs e) { Application.Exit(); } public void hienthivalue(string nhiet,string am) { try { if (read != String.Empty) { if (checkcon == 0) { Invoke(new Action(() => textBox1.Text = (nhiet))); Invoke(new Action(() => textBox2.Text = (am))); } if(checkcon==1) { Invoke(new Action(() => textBox1.Text = "00")); Invoke(new Action(() => textBox2.Text = (am))); } if(checkcon==2) 77 { Invoke(new Action(() => textBox1.Text = (nhiet))); Invoke(new Action(() => textBox2.Text = "00")); } } } catch (Exception) { //throw e; Application.Exit(); } } #region setColor private void tbnColorNhiet_Click(object sender, EventArgs e) { cld = new ColorDialog(); if(cld.ShowDialog()==DialogResult.OK) { tbnColorNhiet.BackColor = cld.Color; zedGraphControl1.GraphPane.CurveList[0].Color = cld.Color; } } private void btnColorDo_Click(object sender, EventArgs e) { cld = new ColorDialog(); if (cld.ShowDialog() == DialogResult.OK) { btnColorDo.BackColor = cld.Color; zedGraphControl1.GraphPane.CurveList[1].Color = cld.Color; } } #endregion #region SeriesWidth private void hScrollBar1_Scroll(object sender, ScrollEventArgs e) { 78 ((LineItem)zedGraphControl1.GraphPane.CurveList[0]).Line.Width = hScrollBar1.Value; } private void hScrollBar2_Scroll(object sender, ScrollEventArgs e) { ((LineItem)zedGraphControl1.GraphPane.CurveList[1]).Line.Width = hScrollBar2.Value; } #endregion #region Settimer private void numericUpDown1_ValueChanged(object sender, EventArgs e) { timer1.Interval = (int)numericUpDown1.Value; } #endregion #region option series private void button7_Click(object sender, EventArgs e) { zedGraphControl1.GraphPane.CurveList[0].IsVisible = true; zedGraphControl1.GraphPane.CurveList[1].IsVisible = false; } private void button8_Click(object sender, EventArgs e) { zedGraphControl1.GraphPane.CurveList[1].IsVisible = true; zedGraphControl1.GraphPane.CurveList[0].IsVisible = false; } private void button9_Click(object sender, EventArgs e) { zedGraphControl1.GraphPane.CurveList[0].IsVisible = true; zedGraphControl1.GraphPane.CurveList[1].IsVisible = true; } #endregion #region viewMode private void button6_Click(object sender, EventArgs e) { btnclear.Visible = true; button3.Enabled = false; lbHienthi.Visible = true; button7.Enabled = button8.Enabled = button9.Enabled = false; } 79 private void button5_Click(object sender, EventArgs e) { button7.Enabled = button8.Enabled = button9.Enabled = true; button3.Enabled = true; lbHienthi.Visible = false; btnclear.Visible = false; } #endregion #region xu ly ghi du lieu len listbox private void btnclear_Click(object sender, EventArgs e) { lbHienthi.Items.Clear(); } private void button12_Click(object sender, EventArgs e) { try { if (cbbDonvi.Text == "(s)") { tmGhidata.Interval = int.Parse(txtTimeset.Text) * 1000; } else { tmGhidata.Interval = int.Parse(txtTimeset.Text); } tmGhidata.Enabled = true; } catch { MessageBox.Show("!!! chưa nhập đúng"); } } private void tmGhidata_Tick(object sender, EventArgs e) { #region listbox string inthongtin = DateTime.Now.ToString() + " : " + " Nhiệt Độ : " + temp + " -" + " Độ Ẩm : " + Hum; lbHienthi.Items.Add(inthongtin); #endregion 80 #region textfile if (ktra) { try { using (StreamWriter stwr = new StreamWriter(path, true)) { string[] data1 = read.Split(':'); stwr.WriteLine(DateTime.Now.ToString()); stwr.WriteLine(); stwr.WriteLine(" Nhiệt Độ :" + data1[0] + " " + " Độ Ẩm : " + data1[1]); stwr.WriteLine(); } } catch(Exception) {} } #endregion } #endregion #region Button Save private void button11_Click(object sender, EventArgs e) { FolderBrowserDialog save = new FolderBrowserDialog(); if(save.ShowDialog()==DialogResult.OK) { path = save.SelectedPath + @"\ThongTin.txt"; } ktra = true; } #endregion private void timer2_Tick(object sender, EventArgs e) { dem1 ;//1 gia trị -1 // gia trị -2 if (dem1 == -2) dem1 = 0; if (dem1 < 0) { textBox1.Text = textBox2.Text = "00"; draw(0, 0); 81 pbStaTemp.BackgroundImage = pbStatHum.BackgroundImage = Properties.Resources.DinhDaXet; } } private void tmUpCom_Tick(object sender, EventArgs e) { string[] port = SerialPort.GetPortNames(); if(tam !=port.Length) { tam = port.Length; cbCom.Items.Clear(); for(int i=0;i