Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 144 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
144
Dung lượng
11,34 MB
Nội dung
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 ĐỒ ÁN TỐT NGHIỆP NGÀNH CÔNG NGHỆ KỸ THUẬT ĐIỆN TỬ TRUYỀN THÔNG THIẾT KẾ VÀ THI CÔNG HỆ THỐNG GIÁM SÁT, ĐIỀU KHIỂN CÁC THIẾT BỊ ĐIỆN TRONG NHÀ THÔNG QUA APP ANDROID & MÀN HÌNH CẢM ỨNG DÙNG MẠNG LORA VÀ WIFI GVHD: VÕ ĐỨC DŨNG SVTH: NGUYỄN NGỌC NHIỆM MSSV: 16141218 SVTH: TRƯƠNG TUẤN ANH MSSV: 16141105 SKL007370 Tp Hồ Chí Minh, tháng 08/2020 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 HỆ THỐNG GIÁM SÁT, ĐIỀU THÔNG QUA DÙNG MẠNG KHIỂN CÁC THIẾT BỊ ĐIỆN TRONG NHÀ APP ANDROID & MÀN HÌNH CẢM ỨNG LORA VÀ WIFI GVHD: ThS Võ Đức Dũng SVTH: Nguyễn Ngọc Nhiệm - 16141218 Trương Tuấn Anh Tp Hồ Chí Minh – 08/2020 - 16141105 Họ tên sinh viên: Chuyên ngành: Hệ đào tạo: Khóa: I TÊN ĐỀ TÀI: THIẾT KẾ VÀ THI CƠNG HỆ THỐNG GIÁM SÁT, ĐIỀU KHIỂN CÁC THIẾT BỊ ĐIỆN TRONG NHÀ THƠNG QUA APP ANDROID & MÀN HÌNH CẢM ỨNG DÙNG MẠNG LORA VÀ WIFI II NHIỆM VỤ Các số liệu ban đầu: - Các loại vi điều khiển: Arduino Uno, Arduino Nano, Esp32 WROOM Các loại Module: Lora SX1278 UART, RTC DS1307 Màn hình hiển thị: LCD_TFT SPI 3.2inch, LCD 20X4, LCD 16X2 Cảm biến độ ẩm đất, cảm biến nhiệt độ, độ ẩm DHT11 Ngõ điều khiển: Relay, transistor, diode, led Nguồn: Adapter 5V-2A, Adapter 5V-1A Nội dung thực hiện: - Tìm hiểu tham khảo tài liệu, giáo trình, nội dung liên quan đến đề tài - Tìm hiểu hình cảm ứng TFT, thiết kế giao diện giám sát điều khiển - Thiết kế thi công phần cứng hế thống - Viết chương trình giao tiếp ứng dụng Android, Firebase điều khiển trung tâm - Viết chương trình để giao tiếp Arduino, Lora module cảm biến - Nghiên cứu xây dựng ứng dụng Android - Chạy thử nghiệm, hiệu chỉnh đánh giá kết - Viết luận văn báo cáo - Bảo vệ đồ án tốt nghiệp III NGÀY GIAO NHIỆM VỤ: IV NGÀY HOÀN THÀNH NHIỆM VỤ: 03/07/2020 V HỌ VÀ TÊN CÁN BỘ HƯỚNG DẪN:ThS VÕ ĐỨC DŨNG CÁN BỘ HƯỚNG DẪN BM ĐIỆN TỬ CÔNG NGHIỆP – Y SINH i TRƯỜNG ĐH SPKT TP HỒ CHÍ MINH KHOA ĐIỆN-ĐIỆN TỬ BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH LỊCH TRÌNH THỰC HIỆN ĐỒ ÁN TỐT NGHIỆP Họ tên sinh viên: Nguyễn Ngọc Nhiệm Họ tên sinh viên: Trương Tuấn Anh Lớp: 16141TD2B Tên đề tài: Thiết kế thi công hệ thống giám sát, điều khiển thiết bị điện nhà thông qua App Android & hình cảm ứng dùng mạng Lora Wifi Tuần/ngày Tuần (30/3 – 5/4) Tuần (6/4 – 12/4) Tuần (13/4 – 19/4) Tuần (20/4 – 26/4) Tuần (27/4 – 3/5) Tuần (4/5 – 10/5) Tuần (11/5 – 17/5) Tuần (18/5 – 24/5) Tuần (25/5 – 31/5) Tuần 10 (1/6 – 7/6) Tuần 11 (8/6 – 14/6) Tuần 12 (15/6 – 21/6) Tuần 13 (22/6 – 28/6) Tuần 14 (29/6 – 5/7) Tuần 15 (6/7 – 12/7) Tuần 16 (13/7 – 19/7) iii LỜI CAM ĐOAN Đề tài chúng em tự 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 có trước Người thực đề tài Nguyễn Ngọc Nhiệm Trương Tuấn Anh iv LỜI CẢM ƠN Lời đầu tiên, chúng em xin phép chân thành cảm ơn thầy cô khoa Điện – Điện tử giảng dạy cho chúng em kiến thức bổ ích để hơm ứng dụng hoàn thiện đồ án tốt nghiệp Đặc biệt, chúng em xin gửi lời cảm ơn sâu sắc đến Thầy Võ Đức Dũng tận tình hướng dẫn, giúp đỡ nhóm thực đề tài Thầy ln tạo điều kiện, giải đáp thắc mắc, khó khăn để nhóm hồn thiện đề tài cách tốt Chúng em xin gửi lời đồng cảm ơn đến bạn lớp 16141DT chia trao đổi kiến thức kinh nghiệm quý báu thời gian thực đề tài Ngoài ra, chúng em xin gởi lời cảm ơn thật nhiều đến gia đình, người thân, người khích lệ, tạo động lực giúp nhóm hồn thành tốt đề tài Xin chân thành cảm ơn! Người thực đề tài Nguyễn Ngọc Nhiệm Trương Tuấn Anh v MỤC LỤC NHIỆM VỤ i LỊCH TRÌNH ii LỜI CAM ĐOAN iii LỜI CẢM ƠN v MỤC LỤC vi LIỆT KÊ HÌNH VẼ ix LIỆT KÊ BẢNG xii TÓM TẮT 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 2.1 GIỚI THIỆU VỀ MẠNG LORA 2.2 GIỚI THIỆU PHẦN CỨNG 2.2.1 Module thu phát RF UART Lora SX1278 .5 2.2.2 Vi điều khiển 2.2.3 Module Cảm Biến Nhiệt Độ - Độ Ẩm DHT11 11 2.2.4 Module cảm biến độ ẩm đất 12 2.2.5 Module thời gian thực RTC- DS1307 13 2.2.6 Màn hình hiển thị 13 2.2.7 Tiếp điểm Relay 5v 17 2.3 GIỚI THIỆU CÁC CHUẨN TRUYỀN THÔNG 18 vi PHỤ LỤC ILI9341_RED); } break; } } void recvWithStartEndMarkers() { static boolean recvInProgress = false, recvInProgress1 = false; static byte ndx = 0, ndx1 = 0; char startMarker = ''; char startMarker1 = '('; char endMarker1 = ')'; char rc; while (Serial.available() > && newData == false) { rc = Serial.read(); if (recvInProgress == true) { if (rc != endMarker) { receivedChars[ndx] = rc; ndx++; if (ndx >= numChars) { ndx = numChars - 1; } } else { receivedChars[ndx] = '\0'; // terminate the string recvInProgress = false; newData = true; ndx = 0; } } else if (rc == startMarker) { recvInProgress = true; } if (recvInProgress1 == true) { if (rc != endMarker1) { receivedChars1[ndx1] = rc; ndx1++; if (ndx1 >= numChars) { ndx1 = numChars - 1; } } else { receivedChars1[ndx1] = '\0'; // terminate the string recvInProgress1 = false; ndx1 = 0; newData_cd = true; } } else if (rc == startMarker1) { BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP- Y SINH 105 PHỤ LỤC recvInProgress1 = true; } } } void update_th() { if (idx >= 10) { idx = idx - 10; secon++; if (secon < 6) { h1 = dht.readHumidity(); t1 = dht.readTemperature(); h2 = h2 + h1; t2 = t2 + t1; } else { h = h2 / 5; t = t2 / 5; t2 = 0; h2 = 0; secon = 0; } } } ISR(TIMER1_OVF_vect) { TCNT1 = 40536; idx++; } CODE ESP32 #include #include //#include #include #include #include #include #include "html.h" #include FirebaseData firebaseData; FirebaseJson json; #define RXD2 16 BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP- Y SINH 106 PHỤ LỤC #define TXD2 17 #define LED1 22 #define LED2 23 #define LEDWF const char *ssid = "LORA SYSTEM"; const char *password = "11111111"; WebServer server(80); // khởi tạo sever port 80 //String lamp_garden = "0", lamp1 = "0", lamp_k = "0"; //String pump_garden = "0", fan1 = "0", pump_k = "0"; String lamp_garden, lamp1, lamp_k; String pump_garden, fan1, pump_k; String tren, duoi, mod; String strGateWay; String temp, tem_cd; boolean led1 = false, led2 = false, led3 = false, led4 = false, led5 = false, led6 = false, mod1; const byte numChars = 32; char receivedChars[numChars]; char receivedChars1[numChars]; char receivedChars2[numChars]; boolean newData = false; boolean newDataBtn = false; boolean newData_th = false; boolean newData_doam = false; boolean isHand = false; boolean wifi = false, temp_wf, wifi2 = true; / use i for recv nhietdo int i = 0; int t, h; void setup() { pinMode(LED1, OUTPUT); pinMode(LED2, OUTPUT); pinMode(2, OUTPUT); pinMode(LEDWF, OUTPUT); Serial.begin(9600); Serial2.begin(9600); connectwf(); //connectWifi(); Firebase.begin("nhiem-5d2c9.firebaseio.com", "GYqZOvQQE8AasNWGNtLdcVp6LcxVQt09pXUSwJK2"); wifi = WiFi.isConnected(); translateStrBool(); //reset tat ca digitalWrite(LED1, led1); digitalWrite(LED2, led2); / digitalWrite(LEDWF, wifi); temp_wf = wifi; BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP- Y SINH 107 PHỤ LỤC temp = strToSend() + ">"; tem_cd = strToSend2(); recvWithStartEndMarkers(0); updateNewData(0); / recvWithStartEndMarkers(1); / updateNewData(1);; update_th(); digitalWrite(LEDWF, wifi); Serial2.print(strToSend()); Serial2.print(">"); Serial2.print("(00000)"); Serial.print("(00000)"); delay(9000); / recvWithStartEndMarkers(1); / updateNewData(1); Serial.print(strToSend()); Serial.print(wifi); Serial.print(">"); / getDataFireBase(); } void loop() { server.handleClient(); wifi = WiFi.isConnected(); if (temp_wf != wifi) { digitalWrite(LED1, led1); digitalWrite(LED2, led2); Serial.print(strToSend()); Serial.print(wifi); Serial.print(">"); temp_wf = wifi; } digitalWrite(LEDWF, wifi); if (!wifi && wifi2) { connectwf(); Serial2.print("(00000)"); Serial.print("(00000)"); wifi2 = false; } if (wifi) { wifi2 = true; } else { temp = String(strToSend() + ">"); BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP- Y SINH 108 PHỤ LỤC } translateStrBool(); recvWithStartEndMarkers(0); if (isHand) { temp = String(strToSend() + ">"); isHand = false; } recvWithStartEndMarkers(1); if (isHand) { temp = String(strToSend() + ">"); isHand = false; } / recvWithStartEndMarkers_th(); updateNewData(0); updateNewData(1); update_th(); update_doam(); getDataFireBase(); guidulieu_cd(); if ((temp != String(strToSend() + ">")) && !isHand && (wifi == true)) { Serial.println("\nĐang so sánh:"); digitalWrite(LED1, led1); digitalWrite(LED2, led2); Serial2.print(strToSend()); Serial2.print(">"); Serial.print(strToSend()); Serial.print(wifi); Serial.print(">"); temp = strToSend() + ">"; } } CODE ARUDINO NANO KHỐI ĐIỀU KHIỂN PHỤ #include #include #include #define TX_PIN #define RX_PIN #define LED3 #define LED4 #define BTN1 #define BTN2 #define BTN3 #define BTN4 BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP- Y SINH 109 PHỤ LỤC #define BTN5 #define BTN6 #define CMH SoftwareSerial loraNode(RX_PIN, TX_PIN); LiquidCrystal_I2C lcd(0x3f, 20, 4); boolean led1 = false, led2 = false, led3 = false, led4 = false, led5 = false, led6 = false; String temp; const byte numChars = 32; char receivedChars[numChars]; boolean newData = false; int mod = 1; int value, percent; //doam volatile int idx = 0; int second = 0; void setup() { Serial.begin(9600); pinMode(BTN1, INPUT_PULLUP); pinMode(BTN2, INPUT_PULLUP); pinMode(BTN3, INPUT_PULLUP); pinMode(BTN4, INPUT_PULLUP); pinMode(BTN5, INPUT_PULLUP); pinMode(BTN6, INPUT_PULLUP); pinMode(CMH, INPUT_PULLUP); pinMode(LED3, OUTPUT); pinMode(LED4, OUTPUT); pinMode(A0, INPUT); value = analogRead(A0); percent = map(value, 0, 1023, 0, 100); loraNode.begin(9600); temp = strToSend(); implementData(); / gửi cho node cập nhật trạng thái loraNode.print(temp); Serial.print(temp); lcd.init(); lcd.backlight(); cli(); TCCR1A = 0; TCCR1B = 0; TIMSK1 = 0; TCCR1B |= (1 && newData == false) { //while (Serial.available() > && newData == false) { rc = loraNode.read(); //rc = Serial.read(); if (recvInProgress == true) { if (rc != endMarker) { receivedChars[ndx] = rc; ndx++; if (ndx >= numChars) { ndx = numChars - 1; } } else { receivedChars[ndx] = '\0'; // terminate the string recvInProgress = false; ndx = 0; newData = true; } } else if (rc == startMarker) { BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP- Y SINH 112 PHỤ LỤC recvInProgress = true; } } } boolean inputcd(int chan) { if (digitalRead(chan) == 0) { delay(20); if (digitalRead(chan) == 0) { while (digitalRead(chan) == 0); return true; } } return false; } void doamdat() { if (idx >= 10) { idx = idx - 10; second++; if (second == 2) { second = 0; value = analogRead(A0); percent = map(value, 0, 1023, 0, 100); } } } void hienthi_lcd() { if ( mod == 0) { lcd.setCursor(8, 0); lcd.print("HOME"); lcd.setCursor(0, 1); lcd.print("DEN 1:"); if (led1 == 1) lcd.print(" BAT else lcd.setCursor(0, 2); lcd.print("DEN 2:"); if (led2 == 1) lcd.print(" BAT else lcd.setCursor(0, 3); lcd.print(" } else if (mod == 1) { lcd.setCursor(8, 0); BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP- Y SINH 113 PHỤ LỤC lcd.print("VUON"); lcd.setCursor(0, 1); lcd.print("DEN:"); if (led3 == 1) lcd.print(" BAT ") ; else lcd.print(" TAT "); lcd.setCursor(12, 1); lcd.print("BOM:"); if (led4 == 1) lcd.print(" BAT"); else lcd.print(" TAT"); lcd.setCursor(0, 2); lcd.print("CAI: "); lcd.setCursor(6, 2); lcd.print("50-70"); lcd.setCursor(13, 2); lcd.print("CD: "); lcd.print("TD"); // lcd.setCursor(0, 3); lcd.print("DO AM DAT: "); if (percent < 100) { lcd.print(percent); lcd.setCursor(13, 3); lcd.print(" %"); } else { lcd.print(percent); lcd.setCursor(14, 3); lcd.print(" %"); } } else if (mod == 2) { lcd.setCursor(8, 0); lcd.print("KHO "); lcd.setCursor(0, 1); lcd.print("DEN :"); if (led5 == 1) lcd.print(" BAT else lcd.setCursor(0, 2); lcd.print("QUAT:"); if (led6 == 1) lcd.print(" BAT else lcd.setCursor(0, 3); lcd.print(" } } ISR (TIMER1_OVF_vect) { TCNT1 = 40536; idx++; BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP- Y SINH 114 PHỤ LỤC } CODE ARDUINO NANO KHỐI ĐIỀU KHIỂN PHỤ #include #include #include #define TX_PIN #define RX_PIN #define LED5 #define LED6 #define BTN1 #define BTN2 #define BTN3 #define BTN4 #define BTN5 #define BTN6 #define CMH SoftwareSerial loraNode(RX_PIN, TX_PIN); LiquidCrystal_I2C lcd(0x27, 16, 2); boolean led1 = false, led2 = false, led3 = false, led4 = false, led5 = false, led6 = false; String temp; int mod = 2; const byte numChars = 32; char receivedChars[numChars]; boolean newData = false; int h=100; void setup() { Serial.begin(9600); pinMode(BTN1, INPUT_PULLUP); pinMode(BTN2, INPUT_PULLUP); pinMode(BTN3, INPUT_PULLUP); pinMode(BTN4, INPUT_PULLUP); pinMode(BTN5, INPUT_PULLUP); pinMode(BTN6, INPUT_PULLUP); pinMode(CMH, INPUT_PULLUP); pinMode(LED5, OUTPUT); pinMode(LED6, OUTPUT); loraNode.begin(9600); temp = strToSend(); lcd.init(); lcd.backlight(); } void loop() { BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP- Y SINH 115 PHỤ LỤC h=100; if (inputcd(BTN1)) { led1 = !led1; mod=0; } if (inputcd(BTN2)) { led2 = !led2; mod=0; } if (inputcd(BTN3)) { led3 = !led3; mod=1; } if (inputcd(BTN4)) { led4 = !led4; mod=1; } if (inputcd(BTN5)) { led5 = !led5; mod=2; } if (inputcd(BTN6)) { led6 = !led6; mod=2; } if (inputcd(CMH)) { mod++; if (mod > 2) mod = 0; Serial.println(mod); } if (temp != strToSend()) { temp = strToSend(); implementData(); / gửi cho node cập nhật trạng thái loraNode.print(temp); Serial.print(temp); } recvWithStartEndMarkers(); showData(); hienthi_lcd(); } String strToSend() { return ""; } void implementData() { digitalWrite(LED5, led5); digitalWrite(LED6, led6); BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP- Y SINH 116 PHỤ LỤC } void showData() { if (newData == true) { / đọc liệu từ node gửi r cập nhật trạng thái led1 = ((String)receivedChars[0]).toInt(); led2 = ((String)receivedChars[1]).toInt(); led3 = ((String)receivedChars[2]).toInt(); led4 = ((String)receivedChars[3]).toInt(); led5 = ((String)receivedChars[4]).toInt(); led6 = ((String)receivedChars[5]).toInt(); temp = strToSend(); implementData(); newData = false; } } void recvWithStartEndMarkers() { static boolean recvInProgress = false; static byte ndx = 0; char startMarker = ''; char rc; while (loraNode.available() > && newData == false) { / while (Serial.available() > && newData == false) { rc = loraNode.read(); / rc = Serial.read(); //Serial.print(rc); if (recvInProgress == true) { if (rc != endMarker) { receivedChars[ndx] = rc; ndx++; if (ndx >= numChars) { ndx = numChars - 1; } } else { receivedChars[ndx] = '\0'; // terminate the string recvInProgress = false; ndx = 0; newData = true; } } else if (rc == startMarker) { recvInProgress = true; } } } BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP- Y SINH 117 PHỤ LỤC boolean inputcd(int chan) { if (digitalRead(chan) == 0) { delay(20); if (digitalRead(chan) == 0) { while (digitalRead(chan) == 0); return true; } } return false; } void hienthi_lcd() { if ( mod == 0) { lcd.setCursor(0, 0); lcd.print("DEN 1:"); if (led1 == 1) lcd.print(" ON ") ; else lcd.print(" OFF "); lcd.setCursor(0, 1); lcd.print("DEN 2:"); if (led2 == 1) lcd.print(" ON "); else lcd.print(" OFF "); } else if (mod == 1) { lcd.setCursor(0, 0); lcd.print("DEN VUON:"); if (led3 == 1) lcd.print(" ON ") ; else lcd.print(" OFF"); lcd.setCursor(0, 1); lcd.print("BOM VUON:"); if (led4 == 1) lcd.print(" ON "); else lcd.print(" OFF"); } else if (mod == 2) { lcd.setCursor(0, 0); lcd.print("DEN KHO :"); if (led5 == 1) lcd.print(" ON ") ; else lcd.print(" OFF"); lcd.setCursor(0, 1); lcd.print("QUAT KHO :"); if (led6 == 1) lcd.print(" ON "); else lcd.print(" OFF"); } } BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP- Y SINH 118 ... ngành: Hệ đào tạo: Khóa: I TÊN ĐỀ TÀI: THI? ??T KẾ VÀ THI CÔNG HỆ THỐNG GIÁM SÁT, ĐIỀU KHIỂN CÁC THI? ??T BỊ ĐIỆN TRONG NHÀ THÔNG QUA APP ANDROID & MÀN HÌNH CẢM ỨNG DÙNG MẠNG LORA VÀ WIFI II NHIỆM VỤ Các. .. chọn đề tài ? ?Thi? ??t kế thi công hệ thống giám sát, điều khiển thi? ??t bị điện nhà thông qua App Android & hình cảm ứng dùng mạng Lora Wifi” Vì Lora giao thức khơng giây thi? ??t kế để truyền thông tầm... thống giám sát, điều khiển thi? ??t bị điện nhà thông qua App Android & hình cảm ứng dùng mạng Lora Wifi” Sẽ giải vấn đề Các thi? ??t bị giám sát điều khiển từ xa điện thoại cần điện thoại điều khiển trung