(Đồ án hcmute) giám sát và điều khiển mô hình nhà thông minh

77 11 0
(Đồ án hcmute) giám sát và điều khiển mô hình nhà thông minh

Đ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

BỘ GIÁO DỤC VÀ ĐÀO TẠO TRƯỜNG ĐẠI HỌC SƯ PHẠM KỸ THUẬT TP.HCM KHOA ÐÀO TẠO CHÂT LƯỢNG CAO ĐỒ ÁN TỐT NGHIỆP NGÀNH CÔNG NGHỆ KỸ THUẬT MÁY TÍNH GIÁM SÁT VÀ ÐIỀU KHIỂN MƠ HÌNH NHÀ THƠNG MINH GVHD: ThS NGUYỄN NGÔ LÂM SVTH : HUỲNH THANH HIỂN CAO HOÀNG KHANG S KL 0 4 5 Tp Hồ Chí Minh, tháng 02/2017 an 12119062 12119075 BỘ GIÁO DỤC VÀ ĐÀO TẠO TRƯỜNG ĐẠI HỌC SƯ PHẠM KỸ THUẬT THÀNH PHỐ HỒ CHÍ MINH KHOA ĐÀ O TẠO CHẤT LƯỢNG CAO - ĐỒ ÁN TỐT NGHIỆP Đề tài: GIÁM SÁT VÀ ĐIỀU KHIỂN MÔ HÌNH NHÀ THƠNG MINH SVTH : MSSV : SVTH : MSSV : Khoá : Ngành : GVHD: HUỲNH THANH HIỂN 12119062 CAO HỒNG KHANG 12119075 2012-2016 CƠNG NGHỆ KỸ THUẬT MÁY TÍNH ThS NGUYỄN NGƠ LÂM Page i Tp Hồ Chí Minh, tháng 02 năm 2017 an CỘNG HỊA XÃ HỘI CHỦ NGHĨA VIỆT NAM Độc lập – Tự – Hạnh phúc *** -Tp Hồ Chí Minh, ngày 08 tháng 02 năm 2017 NHIỆM VỤ ĐỒ ÁN TỐT NGHIỆP Họ tên sinh viên: Huỳnh Thanh Hiển MSSV:12119062 Cao Hoàng Khang MSSV:12119075 Giảng viên hướng dẫn: Th.S Nguyễn Ngô Lâm ĐT:0908.434.763 Ngày nhâ ̣n đề tài:12/09/2016 Ngày nộp đề tài:13/2/2017 Tên đề tài : Giám sát điều khiển mơ hình nhà thơng minh Các số liệu ban đầu: - Board Arduino - Các cảm biến Gas, cảm biến mưa - Các thiết bị điện tử: Các loại khóa cửa tự động, Camera, Module RFID ,Module Blueooth Nội dung thực đề tài: - Tìm hiểu thơng số kỹ thuật, ngun lý hoạt động thiết bị sử dụng hệ thống - Làm mơ hình thực tế từ alu gỗ - Thiết kế giao diện C# EmguCV giám sát thông số hệ thống điều khiển hoạt động hệ thống qua mạng lan, điều khiển thiết bị giọng nói - Nhận xét, kết luận Sản phẩm: Mơ hình hệ thống nhà thơng minh TRƯỞNG NGÀNH GIẢNG VIÊN HƯỚNG DẪN i an CỘNG HOÀ XÃ HỘI CHỦ NGHĨA VIỆT NAM Độc lập – Tự – Hạnh Phúc ******* PHIẾU NHẬN XÉT CỦA GIÁO VIÊN HƯỚNG DẪN Họ tên Sinh viên: Huỳnh Thanh Hiển MSSV: 12119062 Cao Hoàng Khang MSSV: 12119075 Ngành: Công nghệ kỹ thuật máy tính Tên đề tài: Điều khiển giám sát mơ hình nhà thơng minh Họ tên Giáo viên hướng dẫn: Th.S Nguyễn Ngô Lâm NHẬN XÉT Về nội dung đề tài & khối lượng thực hiện: Ưu điểm: Khuyết điểm: Đề nghị cho bảo vệ hay không? Đánh giá loại: Điểm:……………….(Bằng chữ: ) Tp Hồ Chí Minh, ngày tháng 02 năm 2017 Giáo viên hướng dẫn ii an CỘNG HOÀ XÃ HỘI CHỦ NGHĨA VIỆT NAM Độc lập – Tự – Hạnh Phúc ******* PHIẾU NHẬN XÉT CỦA GIÁO VIÊN PHẢN BIỆN Họ tên Sinh viên: Huỳnh Thanh Hiển MSSV: 12119062 Cao Hoàng Khang MSSV: 12119075 Ngành: Công nghệ kỹ thuật máy tính Tên đề tài: Điều khiển giám sát mô hình nhà thơng minh Họ tên Giáo viên phản biện: NHẬN XÉT Về nội dung đề tài & khối lượng thực hiện: Ưu điểm: Khuyết điểm: Đề nghị cho bảo vệ hay không? Đánh giá loại: Điểm:……………….(Bằng chữ: ) Tp Hồ Chí Minh, ngày tháng 02 năm 2017 Giáo viên phản biện iii an LỜI CẢM ƠN Trong thời gian làm đề tài đồ án tốt nghiệp, nhóm em nhận nhiều giúp đỡ, đóng góp ý kiến bảo nhiệt tình thầy cơ, gia đình bạn bè Nhóm em xin chân thành gửi lời cảm ơn đến: Ban giám hiệu trường Đại học Sư Phạm Kỹ Thuật TP.Hồ Chí Minh tạo mơi trường làm việc, học tập nghiên cứu điều kiện tốt cho nhóm em hồn thành đề tài đồ án tốt nghiệp Khoa Điện-Điện tử, Khoa đào tạo Chất Lượng Cao cung cấp cho nhóm em giáo trình, tài liệu tham khảo, sở vật chất thiết bị hỗ trợ liên quan Thầy hướng dẫn Th.S Nguyễn Ngô Lâm thầy mơn tận tình hướng dẫn, giúp đỡ nhóm em suốt q trình qua Mặc dù cố gắng trình tìm hiểu kiến thức cịn hạn chế nên khơng tránh khỏi thiếu sót Nhóm em mong nhận góp ý, nhận xét thầy bạn để đồ án hồn thiện phát triển Một lần nhóm em xin chân thành cảm ơn! Tp Hồ Chí Minh, ngày 08 tháng 02 năm 2017 Nhóm sinh viên thực Huỳnh Thanh Hiển Cao Hồng Khang iv an LỜI TĨM TẮT Trong xã hội với trình độ khoa học kỹ thuật ngày tăng cao kèm với áp dụng ứng dụng khoa học vào đời sống thực tiễn nhu cầu thiết yếu người việc ăn uống, lại, nhà ở, y tế, giáo dục,…Một số vấn đề nhà ở, nhằm đáp ứng nhu cầu sử dụng cơng nghệ vào sống nhóm định chọn cho đề tài “Giám sát điều khiển mơ hình nhà thơng minh” Để thực đề tài “Giám sát điều khiển mơ hình nhà thơng minh” nhóm thực Board Arduino UNO hệ thứ với linh kiện thiết bị điện, điện tử nhằm mô cách tổng quát hệ thống, thiết bị thực tiễn Sau q trình tìm hiểu tính tương tác tính khả thi đề tài với hỗ trợ tận tình giáo viên hướng dẫn thầy Nguyễn Ngơ Lâm nhóm hồn thành mơ điều khiển thiết bị với chức áp dụng vào thực tiễn sống như: - Bảo mật hệ thống khóa số thơng qua nhận diện khn mặt qua thẻ từ RFID - Điều khiển thiết bị giọng nói ( app ) - Cảnh báo rị rỉ khí gas thơng qua giao diện máy tính khả thông báo thời tiết v an MỤC LỤC NHIỆM VỤ ĐỒ ÁN TỐT NGHIỆP Error! Bookmark not defined PHIẾU NHẬN XÉT CỦA GIÁO VIÊN HƯỚNG DẪN Error! Bookmark not defined PHIẾU NHẬN XÉT CỦA GIÁO VIÊN PHẢN BIỆN Error! Bookmark not defined LỜI CẢM ƠN Error! Bookmark not defined LỜI TÓM TẮT Error! Bookmark not defined MỤC LỤC… vi DANH MỤC CHỮ VIẾT TẮT iError! Bookmark not defined DANH MỤC CÁC BẢNG, BIỂU ĐỒ Error! Bookmark not defined DANH MỤC CÁC HÌNH ẢNH xError! Bookmark not defined Chương TỔNG QUAN Error! Bookmark not defined 1.1 Giới thiệu tình hình nghiên cứu Error! Bookmark not defined 1.2 Tính cấp thiết đề tài Error! Bookmark not defined 1.3 Mục tiêu nghiên cứu Error! Bookmark not defined 1.4 Nhiệm vụ nghiên cứu Error! Bookmark not defined 1.5 Đối tượng phạm vi nghiên cứu Error! Bookmark not defined 1.6 Phương pháp nghiên cứu Error! Bookmark not defined 1.7 Bố cục đồ án Error! Bookmark not defined Chương CƠ SỞ LÝ THUYẾT Error! Bookmark not defined 2.1 Giới thiệu Board Arduino UNO Error! Bookmark not defined 2.2 Giới thiệu webcam Huynhdai 2.3 Cảm biến mưa 2.4 Cảm biến gas 10 2.5 Solenoid Clock 11 2.6 Module RFID 12 2.7 Quạt 13 2.8 Thiết bị công suất 13 2.9 Module HC05 15 vi an 2.10 Phương pháp nhận diện mặt người 16 2.11 Thư viện EmguCV 17 Chương THIẾT KẾ VÀ XÂY DỰNG HỆ THỐNG 19 3.1 Sơ đồ khối hệ thống 19 3.1.1 Yêu cầu hệ thống 19 3.1.2 Hoạt động hệ thống 20 3.2 Thiết kế tính tốn hệ thống 20 3.2.1 Khối nguồn 20 3.2.2 Khối cảm biến 22 3.2.3 Khối xử lý trung tâm 22 3.3 Công cụ phần mềm 24 3.4 Ứng dụng phân tích giọng nói 28 3.4.1 MIT App Inventor 29 3.4.2 Giao diện MIT app Inventor 29 3.5 Chương trình phân tích giọng nói Điện thoại 32 Chương KẾT QUẢ THỰC HIỆN 35 4.1 Kết phần cứng 35 4.2 Kết phần mềm 35 Chương KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN 41 5.1 Kết luận 5.2 Hướng phát triển TÀI LIỆU THAM KHẢO 43 PHỤ LỤC 44 vii an DANH MỤC CHỮ VIẾT TẮT IoT PWM Internet of Things Pulse Width Modulation Internet với vạn vật Điều chế độ rộng xung SPI Serial Peripheral Bus UART Universal Asynchronous Receiver – Transmitter Giao diện Ngoại vi Nối tiếp Truyền liệu nối tiếp bất đồng IDE USB SD Integrated Development Environment Universal Serial Bus Secure Digital Chuẩn kết nối Thẻ nhớ ADC Analog-to-Digital Converter Chuyển đổi tín hiệu tương tự sang tín hiệu số GPIO General Purpose Input Output Các cổng vào/ra LED CPU Light Emitting Diode Central Processing Unit Điốt phát quang Bộ xử lý trung tâm IDLE Integrated DeveLopment Environment PIC Programmable Intelligent Computer CNTT SMM OS I/O System Management Mode Operating System Input/Output Môi trường phát triển tích hợp Thiết bị thơng minh lập trình Công Nghệ Thông Tin Quản lý hệ thống Hệ điều hành Ngõ vào/ngõ viii an Đồ Án Tốt Nghiệp //khi nhan open door opendoor se true opendoor = false; idmax = dataid[0]; for (int ax = 1; ax < 11; ax++)//lay max thang nao xuat hien nhieu nhat ket luan la nguoi dung hay unknow { if (idmax < dataid[ax]) { idmax = dataid[ax]; idopen = ax; } } if(idopen>0)//neu khac unknow(id==0) { // cho e tao label noi roi cho hien thi //lbdata0 a dung vong lap co n k hien thi //y em la anh thay khung nhan dien khuon mat khong? no phải quet có ten nguoi dung chya 50 lan moi co gia trị chu lbdata0.Text = dataname[idopen];//label de debug lb_user.Text = dataname[idopen]; if (SerialPort.IsOpen) { SerialPort.Write("D"); } } //reset so lan dem for (int ax = 0; ax < 11;ax++) { dataid[ax] = 0; } //dung de debug lbGVHD.Text = "XONG 50"; } // doi 50 lan else { //dung de debug lbGVHD.Text = "lan " + count.ToString(); for (int zc = 0; zc < 11; zc++) { //so sanh chuoi if (String.Compare(dataname[zc], name,true)==0) { lbCOM.Text = "OK"; // 50 an Đồ Án Tốt Nghiệp dataid[zc]++;//neu dung ten cong so lan xuat hien ten len unknow cong unknow vo } } } count++; } } } catch { //do nothing as parrellel loop buggy //No action as the error is useless, it is simply an error in //no data being there to process and this occurss sporadically } }); //Show the faces procesed and recognized image_PICBX.Image = currentFrame.ToBitmap(); } } //ADD Picture box and label to a panel for each face int faces_count = 0; int faces_panel_Y = 0; int faces_panel_X = 0; void Clear_Faces_Found() { this.Faces_Found_Panel.Controls.Clear(); faces_count = 0; faces_panel_Y = 0; faces_panel_X = 0; } void ADD_Face_Found(Image img_found, string name_person, int match_value) { PictureBox PI = new PictureBox(); PI.Location = new Point(faces_panel_X, faces_panel_Y); PI.Height = 80; PI.Width = 80; PI.SizeMode = PictureBoxSizeMode.StretchImage; PI.Image = img_found.ToBitmap(); Label LB = new Label(); LB.Text = name_person + " " + match_value.ToString(); 51 an Đồ Án Tốt Nghiệp LB.Location = new Point(faces_panel_X, faces_panel_Y + 80); //LB.Width = 80; LB.Height = 15; this.Faces_Found_Panel.Controls.Add(PI); this.Faces_Found_Panel.Controls.Add(LB); faces_count++; if (faces_count == 2) { faces_panel_X = 0; faces_panel_Y += 100; faces_count = 0; } else faces_panel_X += 85; if (Faces_Found_Panel.Controls.Count > 10) { Clear_Faces_Found(); } } //Menu Opeartions private void exitToolStripMenuItem_Click(object sender, EventArgs e) { this.Dispose(); } private void singleToolStripMenuItem_Click(object sender, EventArgs e) { parrellelToolStripMenuItem.Checked = false; singleToolStripMenuItem.Checked = true; Application.Idle -= new EventHandler(FrameGrabber_Parrellel); Application.Idle += new EventHandler(FrameGrabber_Standard); } private void parrellelToolStripMenuItem_Click(object sender, EventArgs e) { parrellelToolStripMenuItem.Checked = true; singleToolStripMenuItem.Checked = false; Application.Idle -= new EventHandler(FrameGrabber_Standard); Application.Idle += new EventHandler(FrameGrabber_Parrellel); } private void saveToolStripMenuItem_Click(object sender, EventArgs e) { SaveFileDialog SF = new SaveFileDialog(); 52 an Đồ Án Tốt Nghiệp //As there is no identification in files to recogniser type we will set the extension ofthe file to tell us switch (Eigen_Recog.Recognizer_Type) { case ("EMGU.CV.LBPHFaceRecognizer"): SF.Filter = "LBPHFaceRecognizer File (*.LBPH)|*.LBPH"; break; case ("EMGU.CV.FisherFaceRecognizer"): SF.Filter = "FisherFaceRecognizer File (*.FFR)|*.FFR"; break; case ("EMGU.CV.EigenFaceRecognizer"): SF.Filter = "EigenFaceRecognizer File (*.EFR)|*.EFR"; break; } if (SF.ShowDialog() == DialogResult.OK) { Eigen_Recog.Save_Eigen_Recogniser(SF.FileName); } } private void loadToolStripMenuItem_Click(object sender, EventArgs e) { OpenFileDialog OF = new OpenFileDialog(); OF.Filter = "EigenFaceRecognizer File (*.EFR)|*.EFR|LBPHFaceRecognizer File (*.LBPH)|*.LBPH|FisherFaceRecognizer File (*.FFR)|*.FFR"; if (OF.ShowDialog() == DialogResult.OK) { Eigen_Recog.Load_Eigen_Recogniser(OF.FileName); } } //Unknow Eigen face calibration private void Eigne_threshold_txtbxChanged(object sender, EventArgs e) { try { Eigen_Recog.Set_Eigen_Threshold = Math.Abs(Convert.ToInt32(Eigne_threshold_txtbx.Text)); message_bar.Text = "Eigen Threshold Set"; } catch { message_bar.Text = "Error in Threshold input please use int"; } } private void eigenToolStripMenuItem_Click(object sender, EventArgs e) 53 an Đồ Án Tốt Nghiệp { //Uncheck other menu items /*fisherToolStripMenuItem.Checked = false; lBPHToolStripMenuItem.Checked = false; Eigen_Recog.Recognizer_Type = "EMGU.CV.EigenFaceRecognizer"; Eigen_Recog.Retrain();*/ fisherToolStripMenuItem.Checked = false; eigenToolStripMenuItem.Checked = false; Eigen_Recog.Recognizer_Type = "EMGU.CV.LBPHFaceRecognizer"; Eigen_Recog.Retrain(); } private void fisherToolStripMenuItem_Click(object sender, EventArgs e) { //Uncheck other menu items /*lBPHToolStripMenuItem.Checked = false; eigenToolStripMenuItem.Checked = false; Eigen_Recog.Recognizer_Type = "EMGU.CV.FisherFaceRecognizer"; Eigen_Recog.Retrain();*/ fisherToolStripMenuItem.Checked = false; eigenToolStripMenuItem.Checked = false; Eigen_Recog.Recognizer_Type = "EMGU.CV.LBPHFaceRecognizer"; Eigen_Recog.Retrain(); } private void btAddUser_Click(object sender, EventArgs e) { //Stop Camera stop_capture(); //OpenForm Training_Form TF = new Training_Form(this); TF.Show(); } /* Nhấn nút kết nối cổng COM */ private void btConnect_Click(object sender, EventArgs e) { try { SerialPort.PortName = Convert.ToString(cbSeclectCom.Text); 54 an Đồ Án Tốt Nghiệp SerialPort.Open(); //TimerPort.Enabled = false; } catch (Exception ex) { MessageBox.Show(ex.Message, "Lỗi kết nối", MessageBoxButtons.OK, MessageBoxIcon.Error); } } //truyen nhan bat dong bo nen khong the lam truc tiep tren form Action serialPortReceiverAction; private void SerialPort_DataReceived(object sender, SerialDataReceivedEventArgs e) { serialPortReceiverAction = serialPortReceiver; try { this.BeginInvoke(serialPortReceiverAction, SerialPort.ReadExisting()); } catch { } } //ham xu ly du lieu nhan ve private void serialPortReceiver(string input) { byte az; txt_debug.Text += input; try { az = Convert.ToByte(input); lb_user.Text = dataname[az];//hien thi ten } catch(Exception ex) { } } int SumPort = 0; private void TimerPort_Tick(object sender, EventArgs e) 55 an Đồ Án Tốt Nghiệp { string[] ports = SerialPort.GetPortNames(); if (SumPort != ports.Length) { SumPort = ports.Length; cbSeclectCom.Items.Clear(); for (int i = 0; i < SumPort; i++) { cbSeclectCom.Items.Add(ports[i]); cbSeclectCom.Text = cbSeclectCom.Items[i].ToString(); } } if(SerialPort.IsOpen) { if (comport == true) { comport = false; SerialPort.WriteLine("A"); } } } private void EmguCV_Face_FormClosing(object sender, FormClosingEventArgs e) { SerialPort.Close(); } private void btOpenDoor_Click(object sender, EventArgs e) { opendoor = true; } private void btRFID_Click(object sender, EventArgs e) { if(SerialPort.IsOpen) { SerialPort.WriteLine("O"); } } private void lBPHToolStripMenuItem_Click(object sender, EventArgs e) { //Uncheck other menu items fisherToolStripMenuItem.Checked = false; eigenToolStripMenuItem.Checked = false; 56 an Đồ Án Tốt Nghiệp Eigen_Recog.Recognizer_Type = "EMGU.CV.LBPHFaceRecognizer"; Eigen_Recog.Retrain(); } } } CODE ARDUINO ĐIỀU KHIỂN CÁC THIẾT BỊ QUA BLUETOOTH String data; int den = 7; int quat = 8; void setup() { Serial.begin(9600); pinMode(den, OUTPUT); pinMode(quat, OUTPUT); digitalWrite(den, HIGH); digitalWrite(quat, LOW); //den= LOW; //digitalWrite(den, HIGH); } void loop() { while (Serial.available()){ //Kiểm tra byte để đọc delay(30); //Delay để ổn định char c = Serial.read(); // tiến hành đọc if (c == '#') {break;} //Thốt khỏi vịng lặp phát từ # data += c; // data = data + c } if (data.length() > 0) { Serial.println(data); if(data == "bật hệ thống" ||data == "1") {digitalWrite(den, LOW); //delay(200); digitalWrite(quat, HIGH);} //delay(200);} ////////////////////////////////////////////////////// else if(data == "tắt hệ thống"||data == "10") {digitalWrite(den, HIGH); 57 an Đồ Án Tốt Nghiệp //delay(200); digitalWrite(quat, LOW);} //delay(200);} else if(data == "bật quạt"||data == "10") {digitalWrite(quat, HIGH);} else if(data == "tắt quạt"||data == "10") {digitalWrite(quat, LOW);} else if(data == "bật đèn" ||data == "1") {digitalWrite(den, LOW); } ////////////////////////////////////////////////////// else if(data == "tắt đèn"||data == "Tắt Đèn"||data == "10") {digitalWrite(den, HIGH);} data="";}} //Thiết lập lại biến 58 an Đồ Án Tốt Nghiệp CODE ARDUINO SỬ DỤNG THẺ TỪ RFID ĐỌC CẢM BIẾN GAS VÀ MƯA #include #include // thu vien "RFID" #define SS_PIN 10 #define RST_PIN #define LOCK_PIN char buffer_data; unsigned long user_data[5]; byte dem_user=0; byte flag_read=0; byte flag_add_user=0; MFRC522 mfrc522(SS_PIN, RST_PIN); unsigned long uidDec, uidDecTemp; // hien thi so UID dang thap phan byte bCounter, readBit; unsigned long ticketNumber; const int gas_pin =6; const int rain_pin =7; uint8_t flag_g=0,flag_r=0; uint8_t flag_kg=0,flag_kr=0; void setup() { Serial.begin(9600); SPI.begin(); mfrc522.PCD_Init(); pinMode(LOCK_PIN, OUTPUT); digitalWrite(LOCK_PIN,HIGH); ////////////////////////////////////////// pinMode(gas_pin,INPUT); pinMode(rain_pin,INPUT); } 59 an Đồ Án Tốt Nghiệp void loop() { while (Serial.available()) { buffer_data = (char)Serial.read(); if(buffer_data=='O') { flag_read=1; // Serial.print('O'); } if(buffer_data=='A') { flag_add_user=1; // Serial.print('A'); } if(buffer_data=='D') { if(digitalRead(LOCK_PIN)==0) digitalWrite(LOCK_PIN,HIGH); else digitalWrite(LOCK_PIN,LOW); } } if(flag_read==1)//mo cua hoac dong dung rfid { // Tim the moi if ( ! mfrc522.PICC_IsNewCardPresent()) { return; } // Doc the if ( ! mfrc522.PICC_ReadCardSerial()) { return; } uidDec = 0; for (byte i = 0; i < mfrc522.uid.size; i++) { uidDecTemp = mfrc522.uid.uidByte[i]; uidDec = uidDec*256+uidDecTemp; 60 an Đồ Án Tốt Nghiệp } // Halt PICC ngung doc(ngu dong) mfrc522.PICC_HaltA(); for(byte i=0;i

Ngày đăng: 02/02/2023, 09:10

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

  • Đang cập nhật ...

Tài liệu liên quan