(Đồ án tốt nghiệp) Thiết kế và thi công thiết bị giám sát, điều khiển kho mát từ xa(Đồ án tốt nghiệp) Thiết kế và thi công thiết bị giám sát, điều khiển kho mát từ xa(Đồ án tốt nghiệp) Thiết kế và thi công thiết bị giám sát, điều khiển kho mát từ xa(Đồ án tốt nghiệp) Thiết kế và thi công thiết bị giám sát, điều khiển kho mát từ xa(Đồ án tốt nghiệp) Thiết kế và thi công thiết bị giám sát, điều khiển kho mát từ xa(Đồ án tốt nghiệp) Thiết kế và thi công thiết bị giám sát, điều khiển kho mát từ xa(Đồ án tốt nghiệp) Thiết kế và thi công thiết bị giám sát, điều khiển kho mát từ xa(Đồ án tốt nghiệp) Thiết kế và thi công thiết bị giám sát, điều khiển kho mát từ xa(Đồ án tốt nghiệp) Thiết kế và thi công thiết bị giám sát, điều khiển kho mát từ xa(Đồ án tốt nghiệp) Thiết kế và thi công thiết bị giám sát, điều khiển kho mát từ xa(Đồ án tốt nghiệp) Thiết kế và thi công thiết bị giám sát, điều khiển kho mát từ xa(Đồ án tốt nghiệp) Thiết kế và thi công thiết bị giám sát, điều khiển kho mát từ xa(Đồ án tốt nghiệp) Thiết kế và thi công thiết bị giám sát, điều khiển kho mát từ xa(Đồ án tốt nghiệp) Thiết kế và thi công thiết bị giám sát, điều khiển kho mát từ xa(Đồ án tốt nghiệp) Thiết kế và thi công thiết bị giám sát, điều khiển kho mát từ xa(Đồ án tốt nghiệp) Thiết kế và thi công thiết bị giám sát, điều khiển kho mát từ xa
BỘ GIÁO DỤC & ĐÀO TẠO TRƯỜNG ĐẠI HỌC SƯ PHẠM KỸ THUẬT TP HỒ CHÍ MINH KHOA ĐIỆN – ĐIỆN TỬ BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH - ĐỒ ÁN TỐT NGHIỆP NGÀNH CÔNG NGHỆ KỸ THUẬT ĐIỆN TỬ TRUYỀN THÔNG ĐỀ TÀI: THIẾT KẾ VÀ THI CÔNG THIẾT BỊ GIÁM SÁT, ĐIỀU KHIỂN KHO MÁT TỪ XA GVHD : Th.S Nguyễn Trường Duy SVTH 1: Nguyễn Đình Khang MSSV: 16141177 SVTH 2: Trần Lữ Thứ MSSV: 16141299 Tp Hồ Chí Minh - 2/2021 LỜI CAM ĐOAN Đề tài chúng em thực hướng dẫn Th.S Nguyễn Trường Duy 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 có trước Sinh viên thực đồ án Nguyễn Đình Khang Trần Lữ Thứ iii LỜI CẢM ƠN Để hoàn thành tốt Đồ án tốt nghiệp, chúng em xin gửi lời cảm ơn chân thành đến quý Thầy cô Khoa Điện - Điện Tử nói chung thầy mơn Điện Tử Cơng Nghiệp - Y Sinh nói riêng truyền đạt cho chúng em kiến thức, kinh nghiệm quý báu suốt trình học tập Đặc biệt chúng em xin gửi lời cảm ơn đến Thầy Nguyễn Trường Duy - Giảng viên Bộ môn Điện Tử Công Nghiệp-Y Sinh trực tiếp hướng dẫn giúp đỡ, tạo điều kiện để chúng em hoàn thành tốt đề tài Cuối chúng em xin cảm ơn gia đình, bạn bè động viên, đóng góp ý kiến, giúp đỡ suốt trình học tập, nghiên cứu để hoàn thành đề tài tốt nghiệp Chúng em xin chân thành cảm ơn! Sinh viên thực đồ án Nguyễn Đình Khang Trần Lữ Thứ iv 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 ii LỜI CAM ĐOAN iii LỜI CẢM ƠN iv MỤC LỤC v LIỆT KÊ HÌNH VẼ vii LIỆT KÊ BẢNG x TÓM TẮT xii Chương TỔNG QUAN 1.1 ĐẶT VẤN ĐỀ 1.2 MỤC TIÊU .2 1.3 NỘI DUNG NGHIÊN CỨU 1.4 GIỚI HẠN 1.5 BỐ CỤC .3 Chương CƠ SỞ LÝ THUYẾT 2.1 HỆ THỐNG ĐIỀU KHIỂN VÀ GIÁM SÁT KHO LẠNH 2.2 ĐIỀU KHIỂN THIẾT BỊ BẰNG HỒNG NGOẠI 2.2.1 Đặc điểm tính chất tia hồng ngoại .5 2.2.2 Phân loại: 2.2.3 Ứng dụng tia hồng ngoại 2.2.4 Tín hiệu hồng ngoại sử dụng điều khiển từ xa 2.3 GIỚI THIỆU PHẦN CỨNG .9 2.3.1 Led thu phát hồng ngoại 2.3.2 Vi Điều Khiển 12 2.3.3 Cảm biến nhiệt .17 2.3.4 Relay 20 2.3.5 Module LM2596 21 2.3.6 Màn hình TFT 22 2.3.7 Sị nóng lạnh TEC12715 .23 2.3.8 Động quạt tản nhiệt 24 v MỤC LỤC 2.4 CHUẨN GIAO TIẾP SPI 25 2.4.1 Khái niệm 25 2.4.2 Nguyên lý hoạt động 26 2.5 GIỚI THIỆU ỨNG DỤNG TRÊN ĐIỆN THOẠI 26 2.5.1 Tổng quan hệ điều hành android 27 2.5.2 Điều khiển giám sát mơ hình kho mát điện thoại 28 Chương TÍNH TỐN VÀ THIẾT KẾ 29 3.1 GIỚI THIỆU .29 3.2 TÍNH TỐN VÀ THIẾT KẾ THIẾT BỊ 29 3.2.1 Thiết kế sơ đồ khối thiết bị 29 3.2.2 Tính tốn thiết kế mạch 30 3.2.3 Sơ đồ nguyên lý toàn mạch 36 Chương THI CÔNG HỆ THỐNG 39 4.1 GIỚI THIỆU 39 4.2 THI CÔNG HỆ THỐNG 39 4.2.1 Thi công bo mạch 41 4.2.2 Lắp ráp, kiểm tra thi cơng mơ hình 43 4.3 LẬP TRÌNH HỆ THỐNG .44 4.3.1 Lưu đồ giải thuật 44 4.3.2 Phần mềm lập trình cho vi điều khiển 50 4.3.3 Phần mềm lập trình Android Studio 52 4.3.4 Phần mềm lập trình website .54 4.4 VIẾT TÀI LIỆU HƯỚNG DẪN SỬ DỤNG, THAO TÁC 54 Chương KẾT QUẢ-NHẬN XÉT-ĐÁNH GIÁ .57 Chương KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN .62 6.1 KẾT LUẬN .62 6.2 HƯỚNG PHÁT TRIỂN 62 TÀI LIỆU THAM KHẢO 63 PHỤ LỤC 65 vi LIỆT KÊ HÌNH VẼ Hình Trang Hình 2.1 Hệ thống giám sát nhiệt độ cho kho lạnh PLCPis Hình 2.2 Thiết bị điều khiển nhiệt độ kho lạnh ECA-GPIs4.4EZ Hình 2.3 Đặc điểm tia hồng ngoại [8] Hình 2.4 Dạng sóng tín hiệu điều khiển từ remote hồng ngoại Hình 2.5 Hình ảnh remote thực tế Hình 2.6 Minh họa gói tin NEC Hình 2.7 Minh họa hình dạng khung truyền theo chuẩn NEC, cho địa 00h (00000000b) lệnh ADh (10101101b) Hình 2.8 Mã HEX IR Máy điều hịa khơng khí sử dụng mã hóa NEC Hình 2.9 Hình ảnh thực tế sơ đồ chân TL 1838 10 Hình 2.10 Sơ đồ góc khoảng cách nhận sóng 10 Hình 2.11 Nguyên lý thu hồng ngoại 11 Hình 2.12 LED phát hồng ngoại IR333-A 11 Hình 2.13 Sơ đồ nguyên lý phát hồng ngoại 12 Hình 2.14 Module ESP8266 NodeMCU 13 Hình 2.15 Sơ đồ chân Node MCU 13 Hình 2.16 Hình ảnh thực tế sơ đồ chân ESP8266-12E 14 Hình 2.17 Mặt trước sau module ESP32 NodeMCU 15 Hình 2.18 ESP32-WROOM-32 16 Hình 2.19 Sơ đồ chức chân ESP32 NodeMCU 17 Hình 2.20 Hình ảnh cảm biến DHT22 thực tế 18 Hình 2.21 Quy trình tổng thể 19 Hình 2.22 Chỉ số liệu “0” 19 Hình 2.23 Chỉ số liệu “1” 20 Hình 2.24 Hình ảnh thực tế Relay 20 Hình 2.25 Hình ảnh thực tế module ổn áp LM2596 21 Hình 2.26 Hướng dịng điện module LM2596 22 Hình 2.27 Màn hình TFT 2.4 inch ILI9341 23 Hình 2.28 Sị nóng lạnh TEC 12715 24 vii Hình 2.29 Quạt tản nhiệt 24 Hình 2.30 Kết nối SPI hai thiết bị 25 Hình 2.31 Kết nối SPI nhiều thiết bị 26 Hình 2.32 Các chế độ làm việc SPI 26 Hình 2.33 Truyền liệu theo chuẩn SPI 27 Hình 3.1 Sơ đồ khối thiết bị 29 Hình 3.2 Sơ đồ khối vi điều khiển 31 Hình 3.3 Sơ đồ kết nối vi điều khiển với TFT thông qua ESP32 32 Hình 3.4 Sơ đồ kết nối vi điều khiển cảm biến DHT22 33 Hình 3.5 Sơ đồ kết nối khối công suất 34 Hình 3.6 Sơ đồ nguyên lý nguồn 35 Hình 3.7 Sơ đồ nguyên lý toàn mạch 38 Hình 4.1 Mạch PCB top 39 Hình 4.2 Mạch PCB bottom 40 Hình 4.3 Sơ đồ bố trí linh kiện mạch (Mặt - Mặt dưới) 41 Hình 4.4 Mặt mạch sau hàn linh kiện 43 Hình 4.5 Mạch thiết bị thực tế 43 Hình 4.6 Lưu đồ giải thuật hệ thống 45 Hình 4.7 Lưu đồ giải thuật chế độ Auto 46 Hình 4.8 Lưu đồ giải thuật chế độ Manual 47 Hình 4.9 Lưu đồ giải thuật Webserver 48 viii Hình 4.10 Lưu đồ điều khiển ứng dụng điện thoại 49 Hình 4.11 Giao diện lập trình phần mềm Arduino IDE 51 Hình 4.12 Giao diện project Android 52 Hình 4.13 Giao diện App điều khiển 53 Hình 4.14 Giao diện truy cập hệ thống 55 Hình 4.15 Giao diện truy cập bảng điều khiển 55 Hình 4.16 Lựa chọn nhiệt độ cài đặt mà người dùng muốn điều khiển 56 Hình 4.17 Giao diện điều khiển hệ thống 56 Hình 4.18 Giao diện liệu giám sát 57 Hình 4.19 Giao diện liệu điều khiển 57 Hình 5.1 Mơ hình giám sát điều khiển 58 Hình 5.2 Thơng số nhiệt độ, độ ẩm, trạng thái sò chế độ auto 59 Hình 5.3 Thơng số nhiệt độ, độ ẩm, trạng thái sò chế độ manual 59 ix LIỆT KÊ BẢNG Bảng Trang Bảng 2.1 Thông số TL1838 10 Bảng 2.2 Chức chân ESP8266-12E 14 Bảng 4.1 Danh sách linh kiện 42 Bảng 4.2 Chức biểu tượng công cụ 51 x DANH SÁCH TỪ VIẾT TẮT IOT : Internet of Things PLC : Program Logic Controller IR : Infrared Radiation NIR : Near Infrared Radiation MIR : Medium Infrared Radiation FIR : Far Infrared Radiation LED : Light Emitting Diode Wifi : Wireless Fidelity ID : Identity Document MCU : MicroController Unit xi } void ConnectToWifi() { Serial.print ("Connecting to "); Serial.print (wifi_name); WiFi.begin (wifi_name, wifi_pass); // Connecting to the wifi network while (WiFi.status() != WL_CONNECTED) // Waiting for the response of wifi network { delay (500); Serial.print ("."); dem++; if(dem >= 20) { dem = 0; break; } } if(WiFi.status() == WL_CONNECTED) { Serial.println("Connection WIFI Void LOOP!!!"); } else { Serial.println("Not Connect WIFI Void LOOP!!!"); } } *CHƯƠNG TRÌNH NÚT NHẤN ĐIỀU KHIỂN SỊ, MODE void ButtonControlSo() { if (digitalRead(NutSo1) == LOW) { delay(200); while (1) { delay(300); if (digitalRead(NutSo1) == HIGH) { Serial.println("Dieu khiển Sò 1"); ControlSo1(); break; } } } if (digitalRead(NutSo2) == LOW) { delay(200); while (1) { delay(300); if (digitalRead(NutSo2) == HIGH) { Serial.println("Dieu khiển Sò 2"); ControlSo2(); break; } } } } void ButtonMode() { if (digitalRead(NutMode) == LOW) { delay(200); while (1) { delay(300); if (digitalRead(NutMode) == HIGH) { Serial.println("Chuyen mode Button"); if (Smode == 1) { Smode = 2; UpdateMode(String(Smode)); } else if (Smode == 2) { Smode = 1; UpdateMode(String(Smode)); } break; } } } } void RemoteIR() { if (irrecv.decode(&results)) { Serial.println(results.value); giaitri = results.value; Serial.print("giaitri: "); /* 16753245 = mode 16736925 = ON OFF so 16769565 = ON OFF sò 16720605 = tăng nhiệt độ cài đăt 16712445 = giảm nhiệt độ cài đặt */ if (giaitri == 16753245) Serial.println(giaitri); { Serial.println("Chuyển mode"); if (Smode == 1) { Smode = 2; UpdateMode(String(Smode)); } else if (Smode == 2) { Smode = 1; UpdateMode(String(Smode)); } } else { if (Smode == 2) { if (giaitri == 16736925) { Serial.println("ON OFF so 1"); ControlSo1(); } if (giaitri == 16769565) { Serial.println("ON OFF so 2"); ControlSo2(); } if (giaitri == 16720605) { Serial.println("Tang nhiet độ cài đặt"); Tangnhietdo(); } if (giaitri == 16712445) { Serial.println("Giảm nhiet độ cài đặt"); Giamnhietdo() } } } irrecv.resume(); } } delay(1000); *CHƯƠNG TRÌNH ĐIỀU KHIỂN TĂNG GIẢM NHIỆT ĐỘ CÀI void Tangnhietdo() { nhietdocaidat++; if (nhietdocaidat >= 30) { nhietdocaidat = 30; } UpdateNhietdo(String(nhietdocaidat)); } void Giamnhietdo() { nhietdocaidat ; if (nhietdocaidat = nhietdocaidat) { trangthaiso1 = 1; trangthaiso2 = 1; digitalWrite(Relay1, LOW); digitalWrite(Relay2, LOW);// relay td muc thap nen ON } } *CHƯƠNG TRÌNH APP ĐIỀU KHIỂN void Mode() { publish(1); } void Up() { String chedo = ""; chedo = mode.toString(); print(chedo); if(chedo == "AUTO") { print("Không điều khiển"); ShowToask("BẠN ĐANG CHẾ ĐỘ AUTO KHÔNG THỂ ĐIỀU KHIỂN"); return; } else if(chedo == "MAN") { print("Được điều khiển"); publish(4); } } void Down() { String chedo = ""; chedo = mode.toString(); print(chedo); if(chedo == "AUTO") { print("Không điều khiển"); ShowToask("BẠN ĐANG CHẾ ĐỘ AUTO KHÔNG THỂ ĐIỀU KHIỂN"); return; } else if(chedo == "MAN") { print("Được điều khiển"); publish(5); } } void So1() { String chedo = ""; chedo = mode.toString(); print(chedo); if(chedo == "AUTO") { print("Không điều khiển"); ShowToask("BẠN ĐANG CHẾ ĐỘ AUTO KHÔNG THỂ ĐIỀU KHIỂN"); return; } else if(chedo == "MAN") { print("Được điều khiển"); publish(2); } } void So2() { String chedo = ""; chedo = mode.toString(); print(chedo); if(chedo == "AUTO") { print("Không điều khiển"); ShowToask("BẠN ĐANG CHẾ ĐỘ AUTO KHÔNG THỂ ĐIỀU KHIỂN"); return; } else if(chedo == "MAN") { print("Được điều khiển"); publish(3); } } Future getDataPHP() async { var host = 'http://192.168.0.104:82//DatabasePHP4/read-data-web.php'; http.Response response = await http.get(host); var Dataphp = response.body; var DataJsonObject = json.decode(Dataphp); print('$DataJsonObject'); print('nhietdo :${DataJsonObject['nhietdo']}'); print('doam :${DataJsonObject['doam']}'); setState(() { if(DataJsonObject['nhietdo'] != null) { nhietdo = DataJsonObject['nhietdo']; } if(DataJsonObject['doam'] != null) { doam = DataJsonObject['doam']; } if(DataJsonObject['nhietdocaidat'] != null) { nhietdocai = DataJsonObject['nhietdocaidat']; } if(DataJsonObject['mode'] != null) { if(DataJsonObject['mode'] == "1") { mode = "AUTO"; } else if(DataJsonObject['mode'] == "2") { mode = "MAN"; } } if(DataJsonObject['trangthaiso1'] != null) { if(DataJsonObject['trangthaiso1'] == "1") { TTSo1 = "ON"; BtnSo1 = "OFF"; } else if(DataJsonObject['trangthaiso1'] == "0") { TTSo1 = "OFF"; BtnSo1 = "ON"; } } if(DataJsonObject['trangthaiso2'] != null) { if(DataJsonObject['trangthaiso2'] == "1") { TTSo2 = "ON"; BtnSo2 = "OFF"; } else if(DataJsonObject['trangthaiso2'] == "0") { TTSo2 = "OFF"; BtnSo2 = "ON"; } } }); } void initState() { ShowToask("WELCOME APP IOT"); Timer timer = Timer.periodic(new Duration(seconds: 1), (timer) { getDataPHP(); }); super.initState(); } void publish(int index) async { /* insdexx = Mode index = on so index = so index = up nd index = down nd */ if(index == 1) { // mode String chedo = ""; chedo = mode.toString(); String tx_mode = ""; if(chedo == "AUTO") { tx_mode = "2"; } else if(chedo == "MAN") { tx_mode = "1"; } final response = await http.post('http://192.168.0.104:82//DatabasePHP4/UpdateMode.php', body: { "Smode":tx_mode.trim(), }); print(response.body); ShowToask("Đã Send!!!"); } else if(index == 2) { // so String tx_so1 = ""; String ttso1 = ""; ttso1 = TTSo1.toString(); if(ttso1 == "ON") { tx_so1 = "0"; } else if(ttso1 == "OFF") { tx_so1 = "1";} final response = await http.post('http://192.168.0.104:82//DatabasePHP4/UpdateSo1.php', body: { "trangthaiso1":tx_so1.trim(), }); print(response.body); ShowToask("Đã Send!!!"); } else if(index == 3) { // so String tx_so2 = ""; String ttso2 = ""; ttso2 = TTSo2.toString(); if(ttso2 == "ON") { tx_so2 = "0"; } else if(ttso2 == "OFF") { tx_so2 = "1";} final response = await http.post('http://192.168.0.104:82//DatabasePHP4/UpdateSo2.php', body: { "trangthaiso2":tx_so2.trim(), }); print(response.body); ShowToask("Đã Send!!!"); } else if(index == 4) { // UP // so int tx_giatri2 = 0; String giatri = ""; giatri = nhietdocai.toString(); tx_giatri2 = int.parse(giatri); tx_giatri2++; if(tx_giatri2 >= 30) { tx_giatri2 = 30; } final response = await http.post('http://192.168.0.104:82//DatabasePHP4/UpdateNhietdo.php', body: { "nhietdocaidat":tx_giatri2.toString().trim(), }); print(response.body); ShowToask("Đã Send!!!"); } if(index == 5) { int tx_giatri2 = 0; String giatri = ""; giatri = nhietdocai.toString(); // down tx_giatri2 = int.parse(giatri); tx_giatri2 ; if(tx_giatri2