Hcmute thiết kế hệ thống an ninh nhà ở

79 2 0
Hcmute thiết kế hệ thống an ninh nhà ở

Đ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 THÀNH PHỐ HỒ CHÍ MINH CƠNG TRÌNH NGHIÊN CỨU KHOA HỌC CỦA SINH VIÊN THIẾT KẾ HỆ THỐNG AN NINH NHÀ Ở S K C 0 9 MÃ SỐ: SV2020-135 S KC 0 Tp Hồ Chí Minh, tháng 07/2020 Luan van BỘ GIÁO DỤC VÀ ĐÀO TẠO TRƯỜNG ĐH SƯ PHẠM KỸ THUẬT TPHCM BÁO CÁO TỔNG KẾT ĐỀ TÀI NGHIÊN CỨU KHOA HỌC CỦA SINH VIÊN THIẾT KẾ HỆ THỐNG AN NINH NHÀ Ở SV2020 - 135 Chủ nhiệm đề tài: Đào Ngọc Giang TP Hồ Chí Minh, 07/2020 Luan van 16119015 BỘ GIÁO DỤC VÀ ĐÀO TẠO TRƯỜNG ĐH SƯ PHẠM KỸ THUẬT TPHCM BÁO CÁO TỔNG KẾT ĐỀ TÀI NGHIÊN CỨU KHOA HỌC CỦA SINH VIÊN THIẾT KẾ HỆ THỐNG AN NINH NHÀ Ở SV2020 - 135 Thuộc nhóm ngành khoa học: Kỹ thuật SV thực hiện: Đào Ngọc Giang Nam, Nữ: Nam Dân tộc: Kinh Lớp, khoa: 16119CLC - Đào tạo Chất Lượng Cao Năm thứ: 4/Số năm đào tạo: Ngành học: Công nghệ kỹ thuật máy tính Người hướng dẫn: ThS Trương Quang Phúc TP Hồ Chí Minh, 07/2020 Luan van MỤC LỤC DANH MỤC HÌNH ẢNH DANH MỤC BẢNG BIỂU DANH MỤC NHỮNG TỪ VIẾT TẮT THÔNG TIN KẾT QUẢ NGHIÊN CỨU CỦA ĐỀ TÀI PHẦN MỞ ĐẦU 1 Đặt vấn đề Lý chọn đề tài Mục tiêu đề tài Phương pháp nghiên cứu Đối tượng phạm vi nghiên cứu PHẦN NỘI DUNG CHƯƠNG 1: CƠ SỞ LÝ THUYẾT .3 1.1 Giới thiệu IOT .3 1.1.1 Khái niệm 1.1.2 Cấu phần hệ thống IOT .3 1.1.3 Ứng dụng 1.2 Các chuẩn giao tiếp 1.2.1 SPI .4 1.2.2 UART 1.2.3 I2C 1.3 Các linh kiện sử dụng 1.3.1 Kit phát triển ESP8266 NodeMCU 1.3.2 Màn hình LCD 12 1.3.3 Module I2C LCD .13 1.3.4 Bàn phím keypad 4x4 14 1.3.5 Module Sim800L .15 1.3.6 Module RFID RC522 17 1.3.7 Cảm biến chuyển động PIR HC-SR501 18 1.3.8 Cảm biến lửa 19 1.3.9 Module chuyển nguồn .20 Luan van 1.3.10 Module hạ áp 21 1.3.11 Động RC servo 9G 22 1.3.12 Buzzer 23 1.4 Phần mềm lập trình Arduino IDE 23 1.4.1 Giới thiệu 23 1.4.2 Các lệnh, hàm Arduino IDE .26 1.5 Giới thiệu ngôn ngữ lập trinh web 28 1.6 Giới thiệu Google Firebase 28 1.6.1 Khái niệm 28 1.6.2 Realtime Database System .29 1.6.3 Tại chọn Google Firebase 29 1.6.4 Tạo sở liệu Google Firebase 30 CHƯƠNG 2: THIẾT KẾ HỆ THỐNG .34 2.1 Phân tích hệ thống 34 2.1.1 Yêu cầu thiết kế .34 2.1.2 Đặc tả hệ thống 34 2.2 Thiết kế sơ lược 34 2.2.1 Sơ đồ khối hệ thống chức khối 34 2.2.2 Mô tả hệ thống 36 2.3 Thiết kế chi tiết khối .37 2.3.1 Khối hiển thị 37 2.3.2 Khối nhập liệu đóng/mở cửa 37 2.3.3 Khối đóng/mở cửa 38 2.3.4 Khối cảm biến 38 2.3.5 Khối thực sms/gọi 39 2.3.6 Khối báo động 39 2.3.7 Khối xử lý trung tâm .39 2.3.8 Khối nguồn .41 2.3.9 Sơ đồ mạch nguyên lý .42 2.4 Thiết kế phần mềm 43 2.4.1 Giải thuật phần mềm cho phần cứng 43 2.4.2 Giao diện website firebase 45 CHƯƠNG 3: KẾT QUẢ NGHIÊN CỨU VÀ ĐÁNH GIÁ 47 Luan van 3.1 Kết thực 47 3.1.1 Phần cứng .47 3.1.2 Phần mềm 48 3.2 Đánh giá hệ thống 49 3.2.1 Nhận xét 49 3.2.2 Hướng phát triển .50 PHẦN KẾT LUẬN 51 Kết luận 51 Kiến nghị 51 TÀI LIỆU THAM KHẢO PHỤ LỤC Luan van DANH MỤC HÌNH ẢNH Hình 1.1: Mơ hình kiến trúc IOT Hình 1.2: Truyền liệu SPI Hình 1.3: Mơ hình kết nối chuẩn I2C .9 Hình 1.4: Kit phát triển ESP8266 NodeMCU 10 Hình 1.5: Sơ đồ chân ESP8266 NodeMCU 11 Hình 1.6: Màn hình LCD 204 .12 Hình 1.7: Module I2C LCD 14 Hình 1.8: Keypad 4x4 14 Hình 1.9: Sơ đồ mạch keypad 4x4 15 Hình 1.10: Module Sim800L 15 Hình 1.11: Sơ đồ chân Sim800L 16 Hình 1.12: Module RFID RC522 18 Hình 1.13: Cảm biến chuyển động PIR HC-SR501 .19 Hình 1.14: Cảm biến lửa .20 Hình 1.15: Mạch chuyển nguồn M350 12VDC 21 Hình 1.16: Module hạ áp LM2596 .21 Hình 1.17: Động RC servo 9G 22 Hình 1.18: Buzzer 5V 23 Hình 1.19: Giao diện phần mềm Arduino IDE 24 Hình 1.20: Các loại board phần mềm hỗ trợ 24 Hình 1.21: Chọn port giao tiếp với phần cứng .25 Hình 1.22: Một số ví dụ 25 Hình 1.23: Quản lý thư viện Arduino IDE hỗ trợ 26 Hình 1.24: Giao diện install thư viện 26 Hình 1.25: Giao diện trang Google Firebase 30 Hình 1.26: Tạo project 31 Hình 1.27: Tạo sở liệu 31 Hình 1.28: Chọn chế độ cho project .32 Hình 1.29: Chọn chế độ lưu trữ liệu 32 Hình 1.30: Giao diện sở liệu Firebase 33 Hình 2.1: Sơ đồ khối hệ thống 35 Hình 2.2: Sơ đồ kết nối keypad 4x4 để đọc giá trị ADC 37 Hình 2.3: Sơ đồ nguyên lý hệ thống 42 Hình 2.4: Lưu đồ giải thuật phần mềm (1/2) 44 Hình 2.5: Lưu đồ giải thuật phần mềm (2/2) 45 Hình 2.6: Realtime Database hệ thống Google Firebase 46 Hình 2.7: Trang web thiết kế 46 Hình 3.1: Mơ hình bên ngồi hệ thống 47 Hình 3.2: Mơ hình bên hệ thống 47 Hình 3.3: Hệ thống thực gọi khẩn cấp 48 Luan van Hình 3.4: Hệ thống thực gửi sms khẩn cấp 48 Hình 3.5: Trang web hệ thống 49 Luan van DANH MỤC BẢNG BIỂU Bảng 1.1: Chức chân LCD 20x4 13 Bảng 2.1: Giá trị điện trở nút nhấn (đơn vị Ω) 38 Bảng 2.2: Sơ đồ kết nối chân ESP8266 với linh kiện ngoại vi 40 Bảng 2.3: Sơ đồ chân kết nối nguồn 41 Luan van DANH MỤC NHỮNG TỪ VIẾT TẮT IOT: Internet of things SPI: Serial Peripheral Interface UART: Universal asynchronous receiver transmitter I2C: Inter-Integrated Circuit LCD: Liquid Crystal Display RFID: Radio Frequency Identification PIR: Passive InfraRed VCC: Voltage common collector GND: Ground DC: Direct Current PWM: Pulse Width Modulation HTML: Hypertext Markup Language CSS: Cascading Style Sheets JS: JavaScript Luan van PHỤ LỤC Chương trình lập trình hệ thống esp8266 #include #include #include #include #include #include #include #include #include #include #define SS_PIN D3 #define RST_PIN 10 #define FIREBASE_HOST "testmyled-aa8f7.firebaseio.com" #define FIREBASE_AUTH "gn0qcrclXBS7gVjNSNpOaULUn17H4cssN2kRxhie" #define buzzer #define PIR D0 #define FIRE D4 String pass = "1401"; const String ID_default = "4b91a90d"; LiquidCrystal_I2C lcd(0x27, 20, 4); MFRC522 mfrc522(SS_PIN, RST_PIN); // Create MFRC522 instance Servo sg90; int statuss = 0; int out = 0; bool the = false, chuyenDong = false, coChay = false; int modeBaoTrom = 1; String CardIDs[10]; char *inpt_pass; char *inpt_display; unsigned int soLuongThe; int8_t j = 0; char key[]={'1','2','3','A','4','5','6','B','7','8','9','C','*','0','#','D'}; int adc_value = 0, i=0, threshold = 3, outputValue = 0; // value read from the pot int val_key_adc[] = {990, 900, 830, 773, 935, 860, 799, 749, 910, 840, 783, 730, 875, 812, 762, 713 }; char k ='n'; int baoChay; int baoTrom; // ngat phat hien chay ICACHE_RAM_ATTR void ngatBaoChay() { coChay = true; } Luan van // kiem tra the vua quet co danh sach id hay ko bool soSanhThe(String id, String* ArrayID); // kiem tra danh sach id va cap nhat void capNhatThe(); void call(); void send_sms(char *text); void capNhatPass(); void setup() { Serial.begin(9600); pinMode(buzzer, OUTPUT); // cau hinh chan ngat phat hien chay pinMode(FIRE, INPUT); attachInterrupt(digitalPinToInterrupt(FIRE), ngatBaoChay, FALLING); // cau hinh chan ngat phat hien chuyen dong pinMode(PIR, INPUT); sg90.attach(D8); sg90.write(0); SPI.begin(); mfrc522.PCD_Init(); inpt_pass = (char*)malloc(5); inpt_pass = " "; inpt_display = (char*)malloc(5); inpt_display = " "; // dat bien thoi gian de ngung cho ket noi wifi qua lau unsigned long past = millis(); // ket noi voi mang wifi thu if (WiFi.status() != WL_CONNECTED) { past = millis(); WiFi.begin("Ngoc Giang", "14091998"); while (WiFi.status() != WL_CONNECTED) { // cho 30s de ket noi neu khong thi bo qua if (millis() - past > 30000) break; delay(500); } } Firebase.begin(FIREBASE_HOST, FIREBASE_AUTH); delay(300); // kiem tra va lay toan bo id tren firebase vao the soLuongThe = Firebase.getString("tkHTN/soLuong").toInt(); delay(100); for (int i = 0; i < soLuongThe; i++) { String url = "tkHTN/the" + String(i + 1); Luan van CardIDs[i] = Firebase.getString(url); delay(100); } // handshake Serial.println("AT"); delay(500); // cau hinh text mode sim Serial.println("AT+CMGF=1"); delay(500); call(); lcd.begin(); lcd.begin(); lcd.backlight(); lcd.print(" Nhap ma de mo cua"); lcd.setCursor(1,1); lcd.print(inpt_pass); } void loop() { capNhatPass(); // thay doi mode bao dong modeBaoTrom = Firebase.getString("tkHTN_baoDong/modeBaoTrom").toInt(); // cap nhat trang thai da bao dong hay chua baoChay = Firebase.getString("tkHTN_baoDong/chay").toInt(); baoTrom = Firebase.getString("tkHTN_baoDong/chuyenDong").toInt(); adc_value = analogRead(A0); if(adc_value > 600){ for (i = 0; i < 16; i++){ if ((adc_value < (val_key_adc[i]+ threshold)) && (adc_value >(val_key_adc[i]- th reshold))){ k = key[i]; inpt_pass[j] = k; j++; lcd.setCursor(1,1); lcd.print(inpt_pass); if (j == 4) { j = 0; if (strcmp(inpt_pass, pass.c_str()) == 0) { Firebase.setString("tkHTN_baoDong/buzzer", "0"); digitalWrite(buzzer, 0); baoChay = 0; baoTrom = 0; coChay = false; chuyenDong = false; Luan van sg90.write(90); delay(3000); sg90.write(0); delay(300); } else if (strcmp(inpt_pass, "####") == 0) { Firebase.setString("tkHTN_baoDong/modeBaoTrom", "1"); modeBaoTrom = 1; } lcd.setCursor(1,1); //reset inpt_pass va inpt_display for (int i = 0; i < 4; i++) { inpt_pass[i] = '_'; inpt_display[i] = '_'; } lcd.print(inpt_pass); } } } delay(100); k = 'z'; } // neu co chay va chua bao dong if (coChay && baoChay == 0) { Firebase.setString("tkHTN_baoDong/chay", "1"); Firebase.setString("tkHTN_baoDong/buzzer", "1"); baoChay = 1; digitalWrite(buzzer, 1); call(); send_sms("phat hien chay"); } // neu co chuyen dong va chua bao dong if (modeBaoTrom && digitalRead(PIR)) chuyenDong = true; if (chuyenDong && baoTrom == 0) { Firebase.setString("tkHTN_baoDong/chuyenDong", "1"); Firebase.setString("tkHTN_baoDong/buzzer", "1"); baoTrom = 1; digitalWrite(buzzer, 1); call(); send_sms("phat hien chuyen dong"); } // dieu kien de tat buzzer if (Firebase.getString("tkHTN_baoDong/buzzer").toInt() == 0) { Luan van digitalWrite(buzzer, 0); Firebase.setString("tkHTN_baoDong/chay", "0"); Firebase.setString("tkHTN_baoDong/chuyenDong", "0"); baoChay = 0; baoTrom = 0; coChay = false; chuyenDong = false; } // kiem tra co the quet qua if ( ! mfrc522.PICC_IsNewCardPresent()) { return; } // Select one of the cards if ( ! mfrc522.PICC_ReadCardSerial()) { return; } //neu co the quet qua chay lay id va kiem tra id String content= ""; for (byte i = 0; i < mfrc522.uid.size; i++) { content.concat(String(mfrc522.uid.uidByte[i] < 0x10 ? "0" : "")); content.concat(String(mfrc522.uid.uidByte[i], HEX)); } capNhatThe(); bool a = soSanhThe(content, CardIDs); } bool soSanhThe(String id, String *ArrayID) { // so sanh vs id mac dinh if (ID_default.compareTo(id) == 0) { Firebase.setString("tkHTN_baoDong/buzzer", "0"); digitalWrite(buzzer, 0); baoChay = 0; baoTrom = 0; coChay = false; chuyenDong = false; sg90.write(90); delay(3000); sg90.write(0); delay(300); return true; } for (int i = 0; i < soLuongThe; i++) { Luan van if (ArrayID[i].compareTo(id) == 0) { // neu dung thi mo cua va tat bao dong Firebase.setString("tkHTN_baoDong/buzzer", "0"); digitalWrite(buzzer, 0); baoChay = 0; baoTrom = 0; coChay = false; chuyenDong = false; sg90.write(90); delay(3000); sg90.write(0); delay(300); return true; } } return false; } void capNhatThe() { unsigned int soLuongThe = Firebase.getString("tkHTN/soLuong").toInt(); delay(100); for (int i = 0; i < soLuongThe; i++) { String url = "tkHTN/the" + String(i + 1); CardIDs[i] = Firebase.getString(url); delay(10); } } void call() { Serial.println("ATD+ +84346126117;"); delay(500); } void send_sms(char *text) { Serial.println("AT+CMGS=\"+84346126117\"");//change ZZ with country code and xxxxxxxxxxx with phone number to sms delay(200); Serial.println(text); //text content delay(200); Serial.write(26); delay(100); } void capNhatPass() { pass = Firebase.getString("tkHTN_baoDong/pass"); } Chương trình lập trình trang web hệ thống Luan van File index.html NCKH HỆ THỐNG AN NINH NHÀ Ở Buzzer Báo Động Luan van Mode Báo Trộm Phát người lạ Phát cháy Mật khẩu Luan van Thay đổi mật khẩu Thay đổi mật khẩu × Mật cũ Mật Thay đổi Thoát Luan van File style.css body{ background-image: url(./image/blue-gradient-white-linear-1920x1080-c2-87cefa ffffff-a-270-f-14.png); background-position: initial; background-repeat: no-repeat; background-size: auto; height: 100%; width: 100%; } switch { position: relative; display: inline-block; width: 60px; height: 34px; } switch input { opacity: 0; width: 0; height: 0; } slider { position: absolute; cursor: pointer; top: 0; left: 0; right: 0; bottom: 0; background-color: #ccc; -webkit-transition: 4s; transition: 4s; } slider:before { Luan van position: absolute; content: ""; height: 26px; width: 26px; left: 4px; bottom: 4px; background-color: white; -webkit-transition: 4s; transition: 4s; } input:checked + slider { background-color: #2196F3; } input:focus + slider { box-shadow: 0 1px #2196F3; } input:checked + slider:before { -webkit-transform: translateX(26px); -ms-transform: translateX(26px); transform: translateX(26px); } slider.round { border-radius: 34px; } slider.round:before { border-radius: 50%; } #chuyenDong { border-width: 2px; border-color: black; width: 100px; height: 20px; } File style.js var firebaseConfig = { apiKey: "AIzaSyDIXsmHu0C9Swyo3dT6dnneJMhw1dMQ5ow", authDomain: "testmyled-aa8f7.firebaseapp.com", databaseURL: "https://testmyled-aa8f7.firebaseio.com", projectId: "testmyled-aa8f7", storageBucket: "testmyled-aa8f7.appspot.com", messagingSenderId: "378415090064", appId: "1:378415090064:web:3c01ac67900f96aea54b15" }; firebase.initializeApp(firebaseConfig); Luan van var db = firebase.database(); document.getElementById('buzzer').onclick = function(e){ if (this.checked){ db.ref().child('tkHTN_baoDong').update({ buzzer: "1" }); } else{ db.ref().child('tkHTN_baoDong').update({ buzzer: "0" }); } }; document.getElementById('modeBaoTrom').onclick = function (e) { if (this.checked){ db.ref().child('tkHTN_baoDong').update({ modeBaoTrom: "1" }); } else{ db.ref().child('tkHTN_baoDong').update({ modeBaoTrom: "0" }); } }; db.ref().child('tkHTN_baoDong').on('value', function (snapshot) { var valbuzzer = snapshot.child('buzzer').val(); if (valbuzzer == "1"){ document.getElementById("buzzer").checked = true; } else if (valbuzzer == "0"){ document.getElementById("buzzer").checked = false; } }); db.ref().child('tkHTN_baoDong').on('value', function (snapshot) { var valmode = snapshot.child('modeBaoTrom').val(); if (valmode == "1"){ document.getElementById("modeBaoTrom").checked = true; } else if (valmode == "0"){ document.getElementById("modeBaoTrom").checked = false; } }); db.ref().child('tkHTN_baoDong').on('value', function (snapshot) { var valbaonguoi = snapshot.child('chuyenDong').val(); if (valbaonguoi== "0"){ Luan van document.getElementById("chuyenDong").innerHTML = "Khơng có người lạ" } else if(valbaonguoi== "1"){ document.getElementById("chuyenDong").innerHTML = "Phát người lạ" } }); db.ref().child('tkHTN_baoDong').on('value', function (snapshot) { var valbaochay = snapshot.child('chay').val(); if (valbaochay== "0"){ document.getElementById("chay").innerHTML = "Khơng có lửa" } else if(valbaochay== "1"){ document.getElementById("chay").innerHTML = "Phát có lửa" } }) db.ref().child('tkHTN_baoDong').on('value', function (snapshot) { document.getElementById("pass").innerHTML= snapshot.child('pass').val(); }) function changePassWord(){ var oldpassword = $("#oldpassword").val(); var newpassword = $("#newpassword").val(); var valpassword; db.ref().child('tkHTN_baoDong').on('value', function (snapshot) { valpassword = snapshot.child('pass').val(); }) if (valpassword == oldpassword && newpassword.length > 0){ db.ref().child('tkHTN_baoDong').update({ pass: newpassword }); alert("Thay đổi thành công"); } else { alert("Thay đổi không thành công"); } } Luan van Luan van S K L 0 Luan van ... chức hệ thống, giao diện website người dùng giao tiếp với hệ thống Đóng góp mặt giáo dục đào tạo, kinh tế - xã hội, an ninh, quốc phòng khả áp dụng đề tài: Đề tài "Thiết kế hệ thống an ninh nhà ở" ... van CHƯƠNG 2: THIẾT KẾ HỆ THỐNG 2.1 Phân tích hệ thống 2.1.1 Yêu cầu thiết kế Hệ thống thiết kế với yêu cầu:  Có thể đóng mở cửa tiện lợi, dễ dàng chìa khóa thơng thường đảm bảo an tồn  Có thể... TPHCM BÁO CÁO TỔNG KẾT ĐỀ TÀI NGHIÊN CỨU KHOA HỌC CỦA SINH VIÊN THIẾT KẾ HỆ THỐNG AN NINH NHÀ Ở SV2020 - 135 Chủ nhiệm đề tài: Đào Ngọc Giang TP Hồ Chí Minh, 07/2020 Luan van 16119015 BỘ GIÁO

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

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

Tài liệu liên quan