Đồ án tốt nghiệp: Thiết kế và thi công hệ thống điều khiển và giám sát thiết bị trong nhàĐồ án tốt nghiệp: Thiết kế và thi công hệ thống điều khiển và giám sát thiết bị trong nhàĐồ án tốt nghiệp: Thiết kế và thi công hệ thống điều khiển và giám sát thiết bị trong nhàĐồ án tốt nghiệp: Thiết kế và thi công hệ thống điều khiển và giám sát thiết bị trong nhàĐồ án tốt nghiệp: Thiết kế và thi công hệ thống điều khiển và giám sát thiết bị trong nhàĐồ án tốt nghiệp: Thiết kế và thi công hệ thống điều khiển và giám sát thiết bị trong nhàĐồ án tốt nghiệp: Thiết kế và thi công hệ thống điều khiển và giám sát thiết bị trong nhàĐồ án tốt nghiệp: Thiết kế và thi công hệ thống điều khiển và giám sát thiết bị trong nhàĐồ án tốt nghiệp: Thiết kế và thi công hệ thống điều khiển và giám sát thiết bị trong nhàĐồ án tốt nghiệp: Thiết kế và thi công hệ thống điều khiển và giám sát thiết bị trong nhàĐồ án tốt nghiệp: Thiết kế và thi công hệ thống điều khiển và giám sát thiết bị trong nhàĐồ án tốt nghiệp: Thiết kế và thi công hệ thống điều khiển và giám sát thiết bị trong nhàĐồ án tốt nghiệp: Thiết kế và thi công hệ thống điều khiển và giám sát thiết bị trong nhàĐồ án tốt nghiệp: Thiết kế và thi công hệ thống điều khiển và giám sát thiết bị trong nhàĐồ án tốt nghiệp: Thiết kế và thi công hệ thống điều khiển và giám sát thiết bị trong nhàĐồ án tốt nghiệp: Thiết kế và thi công hệ thống điều khiển và giám sát thiết bị trong nhàĐồ án tốt nghiệp: Thiết kế và thi công hệ thống điều khiển và giám sát thiết bị trong nhàĐồ án tốt nghiệp: Thiết kế và thi công hệ thống điều khiển và giám sát thiết bị trong nhàĐồ án tốt nghiệp: Thiết kế và thi công hệ thống điều khiển và giám sát thiết bị trong nhàĐồ án tốt nghiệp: Thiết kế và thi công hệ thống điều khiển và giám sát thiết bị trong nhà
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 KHOA ĐIỆN – ĐIỆN TỬ ĐỒ ÁN TỐT NGHIỆP NGÀNH CNKT ĐIỆN TỬ - TRUYỀN THÔNG THIẾT KẾ VÀ THI CÔNG HỆ THỐNG ĐIỀU KHIỂN VÀ GIÁM SÁT THIẾT BỊ TRONG NHÀ GVHD: ThS NGUYỄN TRƯỜNG DUY SVTH: TRẦN HOÀNG ANH MSSV: 16141104 SVTH: TRẦN THỊ MINH THY MSSV: 16141301 SKL 0 Tp Hồ Chí Minh, tháng 01/2021 LỜI CAM ĐOAN Đề tài nhóm thực dựa vào số tài liệu trước khơng chép từ tài liệu hay cơng trình nghiên cứu có trước Người thực đề tài: TRẦN HOÀNG ANH TRẦN THỊ MINH THY v LỜI CẢM ƠN Lời nhóm em xin chân thành cảm ơn đến thầy Nguyễn Trường Duy giúp đỡ hướng dẫn tận tình nhiều trình thực đồ án tốt nghiệp Và xin cảm ơn chân thành thầy cô Khoa Điện – Điện Tử tạo điều kiện tốt cho nhóm, cuối cảm ơn tất đến tất anh chị, bạn bè… chia góp ý để nhóm sớm hồn thành đồ án tốt nghiệp Người thực đề tài: TRẦN HOÀNG ANH TRẦN THỊ MINH THY vi MỤC LỤC NHIỆM VỤ ĐỒ ÁN TỐT NGHIỆP i LỊCH TRÌNH THỰC HIỆN ĐỒ ÁN TỐT NGHIỆP iii LỜI CAM ĐOAN i LỜI CẢM ƠN vi MỤC LỤC vii LIỆT KÊ HÌNH VẼ x LIỆT KÊ BẢNG VẼ xiii Chương TỔNG QUAN 1.1 ĐẶT VẤN ĐỀ 1.2 MỤC TIÊU 1.3 NỘI DUNG NGHIÊN CỨU 1.4 GIỚI HẠN 1.5 BỐ CỤC Chương CƠ SỞ LÝ THUYẾT SƠ LƯỢC VỀ INTERNET OF THINGS 2.1 2.1.1 Giới thiệu IoT 2.1.2 Ứng dụng IoT SƠ LƯỢC VỀ MẠNG WIFI 2.2 2.2.1 Giới thiệu wifi 2.2.2 Một số chuẩn kết nối wifi phổ biến SƠ LƯỢC VỀ NHÀ THÔNG MINH 2.3 2.3.1 Giới thiệu nhà thông minh 2.3.2 Cơ chế hoạt động nhà thông minh 10 2.3.3 Ưu điểm nhược điểm nhà thông minh 11 2.3.4 Các tảng nhà nhà thông minh phổ biến nay……………………………….11 CÁC CHUẨN VÀ PHƯƠNG THỨC TRUYỀN DỮ LIỆU 13 2.4 2.4.1 Chuẩn truyền thông UART 13 2.4.2 Giao thức HTTP HTTPS 15 a Giao thức HTTP 15 b Giao thức HTTPS 16 2.4.3 Phương thức GET POST 17 vii a Phương thức GET 17 b Phương thức POST 18 2.5 PHẦN CỨNG 18 2.5.1 Vi điều khiển 18 a Giới thiệu Arduino 18 b Giới thiệu Arduino Mega 2560 18 2.5.2 Module wifi ESP8266 23 2.5.3 Module Wifi ESP32-CAM 25 2.5.4 Module bluetooth HC-05 28 2.5.5 Động servo SG90 29 2.5.6 Relay tiếp điểm khí 30 2.5.7 Bàn phím ma trận 4x4 (Keypad 4x4) 31 Chương TÍNH TỐN VÀ THIẾT KẾ 33 3.1 GIỚI THIỆU 33 3.2 TÍNH TỐN VÀ THIẾT KẾ HỆ THỐNG 33 3.2.1 Thiết kế sơ đồ khối hệ thống 33 3.2.2 Tính tốn thiết kế mạch 35 a Khối điều khiển trung tâm 35 b Khối cảm biến 36 c Khối ngõ công suất 38 d Khối nút nhấn 42 e Khối đóng – mở cửa 44 f Khối truyền liệu 46 g Khối điều khiển camera 47 i Khối nguồn 48 3.2.3 Sơ đồ ngun lí tồn mạch 50 a Sơ đồ ngun lí tồn mạch 50 b Giải thích ngun lý hoạt động tồn mạch 52 Chương THI CÔNG HỆ THỐNG 53 4.1 GIỚI THIỆU 53 4.2 THI CÔNG HỆ THỐNG 53 4.2.1 Thi công board mạch 53 a Mạch điều khiển 53 b Mạch điều khiển camera 54 viii 4.2.2 Lắp ráp kiểm tra 61 a Mạch điều khiển 61 b Mạch điều khiển camera 61 4.3 THI CƠNG MƠ HÌNH 64 4.4 LẬP TRÌNH HỆ THỐNG 65 4.4.1 Lưu đồ giải thuật 61 a Lưu đồ giải thuật Arduino Mega 2560 61 b Lưu đồ chương trình ESP8266 71 c Lưu đồ chương trình ESP32-CAM 65 4.4.2 Phần mềm lập trình Arduino 65 4.4.3 Lập trình phần mềm Android với MIT App Inventor 66 4.4.4 Phần mềm lập trình web Sublime Text 69 4.4.5 Giới thiệu Hostinger 71 Chương KẾT QUẢ, NHẬN XÉT VÀ ĐÁNH GIÁ 75 5.1 GIỚI THIỆU 76 5.2 KẾT QUẢ ĐẠT ĐƯỢC 76 5.3 NHẬN XÉT VÀ ĐÁNH GIÁ 76 5.3.1 Nhận xét 79 5.3.2 Đánh giá 79 Chương KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN 82 6.1 KẾT LUẬN 82 6.2 HƯỚNG PHÁT TRIỂN 82 TÀI LIỆU THAM KHẢO 83 PHỤ LỤC 84 ix LIỆT KÊ HÌNH VẼ Hình 2.1 Internet of things Hình 2.2 Đồng hồ apple watch Hình 2.3 Wifi gì? Hình 2.4 Nhà thông minh 10 Hình 2.5 Google Home 12 Hình 2.6 Apple Homekit 12 Hình 2.7 Amazon Alexa 13 Hình 2.8 Gói liệu truyền UART 14 Hình 2.9 Sóng truyền UART 15 Hình 2.10 Quá trình truyền UART 15 Hình 2.11 Quá trình nhận UART 15 Hình 2.12 Giao thức HTTP 16 Hình 2.13 Giao thức HTTPS 17 Hình 2.14 Arduino mega 2560 19 Hình 2.15 Sơ đồ chân Arduino Mega 2560 21 Hình 2.16 Module ESP8266 24 Hình 2.17 Sơ đồ chân ESP8266 25 Hình 2.18 Module ESP32-CAM 25 Hình 2.19 Cấu tạo ESP32-CAM 25 Hình 2.20 Sơ đồ chân ESP32-CAM 26 Hình 2.21 Module bluetooth HC-05 28 Hình 2.22 Động servo SG90 29 Hình 2.23 Relay 30 Hình 2.24 Keypad 4x4 30 Hình 2.25 Sơ đồ nguyên lý keypad 4x4 32 Hình 3.1 Sơ đồ khối hệ thống 32 Hình 3.2 Sơ đồ kết nối nguồn cho Arduino Mega 2560 33 Hình 3.3 Sơ đồ kết nối Arduino với cảm biến 36 Hình 3.4 Sơ đồ nguyên lý module relay kênh 5VDC 38 Hình 3.5 Bảng đặc tính điện mơi trường 25oC transistor C945 39 x Hình 3.6 Bảng đặc tính điện mơi trường 25oC 40 Hình 3.7 Sơ đồ nguyên lý khối ngõ công suất 40 Hình 3.8 Nút nhấn đơn 42 Hình 3.9 Sơ đồ kết nối Arduino với nút nhấn 43 Hình 3.10 Sơ đồ nguyên lý khối khóa cửa 43 Hình 3.13 Sơ đồ kết nối Arduino Mega 2560 với ESP8266 45 Hình 3.14 Sơ đồ nguyên lý khối điều khiển camera 47 Hình 3.15 Sơ đồ ngun lí toàn mạch 48 Hình 4.1 Sơ đồ mạch in mạch 51 Hình 4.2 Sơ đồ 3D bố trí linh kiện mạch 53 Hình 4.3 Sơ đồ mạch in mạch điều khiển camera 54 Hình 4.4 Sơ đồ 3D bố trí linh kiện mạch điều khiển camera 54 Hình 4.5 Hình ảnh mặt board mạch 55 Hình 4.6 Hình ảnh mặt sau board mạch 58 Hình 4.7 Mặt trước mạch điều khiển camera 58 Hình 4.8 Ảnh chụp mặt trước mơ hình nhà 59 Hình 4.9 Ảnh chụp mặt mơ hình nhà 60 Hình 4.10 Lưu đồ chương trình Arduino 60 Hình 4.11 Lưu đồ chương trình mở cửa bàn phím 61 Hình 4.12 Chương trình kiểm tra cảnh báo rị rỉ khí gas 62 Hình 4.13 Lưu đồ chương trình ESP8266 63 Hình 4.14 Lưu đồ chương trình điều khiển camera 64 Hình 4.15 Logo phần mềm Arduino 65 Hình 4.16 Giao diện phần mềm Arduino IDE 66 Hình 4.17 App Inventor 67 Hình 4.18 Giao diện quản lý dự án 67 Hình 4.19 Giao diện lập trình 68 Hình 4.20 Logo Sublime text 69 Hình 4.21 Giao diện lập trình phần mềm Sublime text 70 Hình 4.22 Trang chủ Hostinger 71 Hình 4.23 Trang đăng nhập vào tài khoản Hostinger 72 Hình 4.24 Chọn gói hosting phù hợp đăng kí 72 xi Hình 4.25 Trang quản lý tên miền website 73 Hình 4.26 Giao diện quản lý trang web 73 Hình 4.27 Trang quản lý tất file tạo website 74 Hình 4.28 Quản trị sở liệu MYSQL thông qua giao diện web 74 Hình 5.1 Hình ảnh mơ hình mặt trước 75 Hình 5.2 Hình ảnh nhận từ ESP32-CAM 76 Hình 5.3 Hình ảnh bật đèn phịng khách thơng qua app Bluetooth 77 Hình 5.4 Hình ảnh mở cửa nhập mật hiển thị lên LCD 77 Hình 5.5 Hình ảnh tắt tồn thiết bị web 78 Hình 5.6 Hình ảnh thơng số hoạt động web 79 xii LIỆT KÊ BẢNG VẼ Bảng 2.1 Thông số kỹ thuật ESP32 – CAM 26 Bảng 3.1 Bảng tính dịng điện linh kiện dùng nguồn 5V 49 Bảng 3.2 Bảng tính dòng điện linh kiện dùng nguồn 12V 50 Bảng 4.1 Bảng thống kê linh kiện 55 Bảng 5.1 Bảng thống kê linh kiện 79 xiii PHỤ LỤC ///////////////////////// reading5 = digitalRead(nn5); if (reading5 == HIGH && previous5 == LOW && millis() - time5 > debounce) { if (tt5 == "0") { state5 = HIGH; } else if (tt5 == "1") { state5 = LOW; } time5 = millis(); if (state5 == HIGH) { tb5 = "1"; } else if (state5 == LOW) { tb5 = "0"; } } previous1 = reading1; //touch2//điều hịa phịng reading6 = digitalRead(nn6); if (reading6 == HIGH && previous6 == LOW && millis() - time6 > debounce) { if (tt6 == "0") { state6 = HIGH; } else if (tt6 == "1") { state6 = LOW; } time6 = millis(); if (state6 == HIGH) { 101 PHỤ LỤC tb6 = "1"; } else if (state6 == LOW) { tb6 = "0"; } } previous6 = reading6; //touch2//điều hịa phịng reading7 = digitalRead(nn7); if (reading7 == HIGH && previous7 == LOW && millis() - time7 > debounce) { if (tt7 == "0") { state7 = HIGH; } else if (tt7 == "1") { state7 = LOW; } time7 = millis(); if (state7 == HIGH) { tb7 = "1"; } else if (state7 == LOW) { tb7 = "0"; } } previous7 = reading7; } Chương trình ESP8266 #include #include #include #include 102 PHỤ LỤC #include SoftwareSerial mySerial(D2, D1); //rx,tx unsigned long t1 = 0, t2 = 0; String tb1 = "x", tb2 = "x", tb3 = "x", tb4 = "x", tb5 = "x", tb6 = "x", tb7 = "x"; byte moc; String cb1 = "", cb2 = "", cb3 = "", cb4 = ""; String s = "", s1 = "", s2 = ""; String nhiet_do = "", do_am = "", khi_gas = "", chuyen_dong = ""; String st1 = "", st2 = "", st3 = "", st4 = "", st5 = "", st6 = "", st7 = "", st8 = "", stb = ""; int tt1 = 0, tt2 = 0, tt3 = 0, tt4 = 0, tt5 = 0, tt6 = 0, tt7 = 0, tt8 = 0; String ssid = "Aaaaaaaa";//12345679 String password = "231196@96";//12345679 const char* host = "datn2021.online"; const char *hostthietbi = "http://datn2021.online/dktb/text.php"; WiFiClient client; void setup() { Serial.begin(9600); mySerial.begin(57600); WiFi.begin(ssid, password); while (WiFi.status() != WL_CONNECTED) { delay(300); Serial.print("."); } } void loop() { //co tin hieu tu arduino if (mySerial.available()) { char c = mySerial.read(); s += c; 103 PHỤ LỤC if (c == '\n') { s1 = s; s = ""; for (int i = 0; i 500) { // kết nối đến port 80 if (client.connect(host, 80)) { Serial.println("connected"); // truyền liệu lên server theo phương thức get client.print(String("GET http://datn2021.online/insert/insertcb.php?") + ("nhiet-do=") + nhiet_do + ("&do-am=") + do_am + ("&khi-gas=") + khi_gas + ("&chuyen-dong=") + chuyen_dong + " HTTP/1.1\r\n" + "Host: " + host + "\r\n" + "Connection: close\r\n\r\n"); } else { Serial.println("connection failed"); } delay(50); if (client.connect(host, 80)) { Serial.println("connected"); client.print(String("GET http://datn2021.online/insert/inserttb1.php?") + ("&tb1=") + tb1 + ("&tb2=") + tb2 + ("&tb3=") + tb3 + ("&tb4=") + tb4 + ("&tb5=") + tb5 + 106 PHỤ LỤC ("&tb6=") + tb6 + ("&tb7=") + tb7 + " HTTP/1.1\r\n" + "Host: " + host + "\r\n" + "Connection: close\r\n\r\n"); } else { // khơng kết nối với server in kết nối thất bại Serial.println("connection failed"); } //phần cố định delay(50); t1 = millis(); } //nhan du lieu tu database va gui ve arduino if (millis() - t2 > 400) { HTTPClient http; http.begin(hostthietbi); int httpCode = http.GET(); String payload = http.getString(); if (httpCode == 200) { const size_t capacity = JSON_OBJECT_SIZE(3) + JSON_ARRAY_SIZE(2) + 60; DynamicJsonBuffer jsonBuffer(capacity); JsonObject& root = jsonBuffer.parseObject(payload); if (!root.success()) { Serial.println(F("Parsing failed!")); return; } String x1 = root["led"][0]["tb1"]; 107 PHỤ LỤC String x2 = root["led"][0]["tb2"]; String x3 = root["led"][0]["tb3"]; String x4 = root["led"][0]["tb4"]; String x5 = root["led"][0]["tb5"]; String x6 = root["led"][0]["tb6"]; String x7 = root["led"][0]["tb7"]; // String x8 = root["led"][0]["tb8"]; if (x1 == "on") { st1 = "1"; } else if (x1 == "off") { st1 = "0"; } if (x2 == "on") { st2 = "1"; } else if (x2 == "off") { st2 = "0"; } if (x3 == "on") { st3 = "1"; } else if (x3 == "off") { st3 = "0"; } if (x4 == "on") { st4 = "1"; } else if (x4 == "off") { st4 = "0"; } if (x5 == "on") { st5 = "1"; 108 PHỤ LỤC } else if (x5 == "off") { st5 = "0"; } if (x6 == "on") { st6 = "1"; } else if (x6 == "off") { st6 = "0"; } if (x7 == "on") { st7 = "1"; } else if (x7 == "off") { st7 = "0"; } stb = st1 + st2 + st3 + st4 + st5 + st6 + st7; mySerial.println(stb); Serial.println(stb); } else { Serial.println("Error in response"); } http.end(); delay(50); t2 = millis(); } } Chương trình ESP32-CAM #include "esp_camera.h" #include #include 109 PHỤ LỤC // WARNING!!! Make sure that you have either selected ESP32 Wrover Module, // or another board which has PSRAM enabled // // Select camera model //#define CAMERA_MODEL_WROVER_KIT //#define CAMERA_MODEL_ESP_EYE //#define CAMERA_MODEL_M5STACK_PSRAM //#define CAMERA_MODEL_M5STACK_WIDE #define CAMERA_MODEL_AI_THINKER #define SERVO1 12 // Cửa sổ khách #define SERVO2 13 // Cửa sổ khách #include "camera_pins.h" Servo gServo1; Servo gServo2; int pos = 0; Servo myservo; const char* ssid = "Aaaaaaaa"; const char* password = "231196@96"; void startCameraServer(); boolean matchFace = false; boolean activateRelay = false; long prevMillis = 0; int interval = 5000; void ServoOpen() 110 PHỤ LỤC { for (pos = 180; pos >= 0; pos -= 1) { // goes from degrees to 180 degrees // in steps of degree myservo.write(pos); delay(15); // tell servo to go to position in variable 'pos' // waits 15ms for the servo to reach the position } } void ServoClose() { for (pos = 0; pos id.PID == OV3660_PID) { s->set_vflip(s, 1);//flip it back s->set_brightness(s, 1);//up the blightness just a bit s->set_saturation(s, -2);//lower the saturation } //drop down frame size for higher initial frame rate s->set_framesize(s, FRAMESIZE_QVGA); #if defined(CAMERA_MODEL_M5STACK_WIDE) s->set_vflip(s, 1); s->set_hmirror(s, 1); #endif WiFi.begin(ssid, password); while (WiFi.status() != WL_CONNECTED) { delay(500); Serial.print("."); } 113 PHỤ LỤC Serial.println(""); Serial.println("WiFi connected"); startCameraServer(); Serial.print("Camera Ready! Use 'http://"); Serial.print(WiFi.localIP()); Serial.println("' to connect"); } void loop() { if (matchFace == true && activateRelay == false) { activateRelay = true; ServoOpen(); delay(5000); ServoClose(); prevMillis = millis(); } if (activateRelay == true && millis() - prevMillis > interval) { activateRelay = false; matchFace = false; } } 114 S K L 0 ... tài ? ?Thi? ??t kế thi công hệ thống điều khiển giám sát thi? ??t bị nhà? ?? để kế thừa tính hữu dụng từ đồ án nhóm trước phát triền lên với nhiều tính như: điều khiển thi? ??t bị giọng nói qua app, điều khiển. .. thi? ??t kế, thi công cho đề tài Chương 3: Thi? ??t kế tính tốn Thi? ??t kế sơ đồ khối hệ thống, đưa sơ đồ nguyên lí khối hệ thống thực tính tốn thi? ??t kế Chương 4: Thi cơng hệ thống Chương trình bày thi? ??t. .. TÍNH TỐN VÀ THI? ??T KẾ 33 3.1 GIỚI THI? ??U 33 3.2 TÍNH TOÁN VÀ THI? ??T KẾ HỆ THỐNG 33 3.2.1 Thi? ??t kế sơ đồ khối hệ thống 33 3.2.2 Tính tốn thi? ??t kế mạch