Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 132 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
132
Dung lượng
12,64 MB
Nội dung
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 TRƯỜNG ĐH SPKT TP HỒ CHÍ MINH CỘNG HỊA XÃ HỘI CHỦ NGHĨA VIỆT NAM KHOA ĐIỆN-ĐIỆN TỬ ĐỘC LẬP - TỰ DO - HẠNH PHÚC BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH o0o -Tp HCM, ngày 04 tháng 08 năm 2020 NHIỆM VỤ ĐỒ ÁN TỐT NGHIỆP Họ tên sinh viên: Nguyễn Ngọc Nhiệm MSSV: 16141218 Chuyên ngành: Hệ đào tạo: Khóa: Trương Tuấn Anh Kỹ thuật Điện Tử, Truyền Thơng Đại học quy 2016 MSSV: 16141105 Mã ngành: 141 Mã hệ: Lớp: 16141DT 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Ụ: 10/03/2020 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 CỘNG HỊA XÃ HỘI CHỦ NGHĨA VIỆT NAM KHOA ĐIỆN-ĐIỆN TỬ ĐỘC LẬP - TỰ DO - HẠNH PHÚC BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH o0o -Tp HCM, ngày 04 tháng 08 năm 2020 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 MSSV: 16141218 Họ tên sinh viên: Trương Tuấn Anh MSSV: 16141105 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 Nội dung Tuần Gặp GVHD để nghe phổ biến yêu cầu làm đồ án, tiến (30/3 – 5/4) hành chọn đồ án Tuần (6/4 GVHD tiến hành xét duyệt đề tài Xác nhận GVHD – 12/4) Tuần (13/4 Viết đề cương chi tiết lịch trình đồ án tốt nghiệp – 19/4) Tuần (20/4 Tìm hiểu đề tài lựa chọn thiết bị phù hợp – 26/4) Tìm hiểu cơng nghệ Lora, giao thức UART, Wifi Tuần Thiết kế sơ đồ khối giải thích chức (27/4 – 3/5) khối Tuần (4/5 Tính toán thiết kế sơ đồ nguyên lý cho hệ thống – 10/5) Tuần (11/5 – 17/5) Tuần (18/5 Viết chương trình, kiểm tra hoạt động Arduino với module Lora SX1278, module ESP8266 NodeMCU, cảm biến Thiết kế PCB thi công phần cứng – 24/5) Tuần (25/5 Hoàn thiện phần cứng – 31/5) Tuần 10 Kiểm tra lắp ráp mơ hình (1/6 – 7/6) ii Tuần 11 (8/6 – 14/6) Tuần 12 (15/6 – 21/6) Tuần 13 (22/6 Thiết kế lưu đồ giải thuật viết chương trình điều hiển hệ thống Thiết kế app Android, truyền nhận liệu Firebase với App Esp8266 Chạy thử nghiệm toàn hệ thống Kiểm tra sửa – 28/6) chữa lỗi Tuần 14 Viết báo cáo, làm silde báo cáo (29/6 – 5/7) Tuần 15 Hoàn thiện in báo cáo (6/7 – 12/7) Tuần 16 Báo cáo với GVHD (13/7 – 19/7) GV HƯỚNG DẪN (Ký ghi rõ họ tên) 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 2.3.1 Chuẩn truyền thông UART 18 2.3.2 Chuẩn giao tiếp I2C 19 2.3.3 Chuẩn giao tiếp SPI 20 2.3.4 Truyền thông không dây wifi 21 Chương TÍNH TỐN VÀ THIẾT KẾ 23 3.1 GIỚI THIỆU 23 3.2 TÍNH TỐN VÀ THIẾT KẾ HỆ THỐNG 23 3.2.1 Thiết kế sơ đồ khối hệ thống 23 3.2.2 Tính tốn thiết kế mạch điện 25 Chương THI CÔNG HỆ THỐNG 44 4.1 GIỚI THIỆU 44 4.2 THI CÔNG HỆ THỐNG 44 4.2.1 Thi công board mạch 44 4.2.2 Lắp ráp kiểm tra 52 4.3 ĐĨNG GĨI VÀ THI CƠNG MƠ HÌNH 56 4.3.1 Đóng gói điều khiển 56 4.3.2 Thi công mô hình 58 4.4 LẬP TRÌNH HỆ THỐNG 61 4.4.1 Lưu đồ giải thuật 61 4.4.4 Giới thiệu tính Realtime Database Firebase 75 4.5 VIẾT TÀI LIỆU HƯỚNG DẪN 77 Chương KẾT QUẢ_NHẬN XÉT_ĐÁNH GIÁ 79 5.1 GIỚI THIỆU 79 5.2 KẾT QUẢ ĐẠT ĐƯỢC 79 5.3 KẾT QUẢ THỰC NGHIỆM 80 5.3.1 Bộ điều khiển trung tâm 80 5.3.2 Bộ điều khiển phụ 83 vii 5.3.3 Điều khiển giám sát thiết bị từ xa điện thoại 85 5.3.4 Điều khiển giám sát thiết bị trực tiếp điều khiển .91 5.3.5 Điều khiển thiết bị giám sát liệu khơng có internet 92 5.4 NHẬN XÉT VÀ ĐÁNH GIÁ 93 5.4.1 Nhận xét 93 5.4.2 Đánh giá 94 Chương KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN 96 6.1 KẾT LUẬN 96 6.2 HƯỚNG PHÁT TRIỂN 96 TÀI LIỆU THAM KHẢO 98 PHỤ LỤC 100 viii LIỆT KÊ HÌNH VẼ Hình 2.1 Cấu tạo mạng Lora Hình 2.2 Module E32-TTL-100 RF Hình 2.3 Ảnh minh họa arduino Uno Hình 2.4 Arduino Nano Hình 2.5 Module wifi Esp32 WROOM 10 Hình 2.6 Module cảm biến nhiệt độ, độ ẩm DHT11 11 Hình 2.7 Cảm biến đo độ ẩm đất 12 Hinh 2.8 Module thời gian thực RTC – DS1307 13 Hình 2.9 Màn hình LCD TFT 3.2inch ILI9341 14 Hình 2.10 Ảnh minh họa LCD20x4 15 Hình 2.11 Ảnh minh họa LCD 16x2 16 Hình 2.12 Module chuyển đổi I2C cho LCD 17 Hình 2.13 Kết nối I2C với LCD 17 Hình 2.14 Relay 5v 18 Hình 2.15 Kết nối UART hai thiết bị 19 Hình 2.16 Sơ đồ giao tiếp I2C thiết bị 20 Hình 2.17 Sơ đồ giao tiếp SPI thiết bị 21 Hình 2.18 Mạng wifi 22 Hình 3.1 Sơ đồ khối hệ thống 23 Hình 3.2 Mạch kích Relay 25 Hình 3.3 Khối ngõ công suất 27 Hình 3.4 Khối cảm biến 28 Hình 3.5 Khối điều khiển hiển thị 29 Hình 3.6 Mạch chuyển bus tín hiệu 29 Hình 3.7 Sơ đồ nguyên lý khối thu phát Lora 30 ix PHỤ LỤC createButtonCircle(Den_NC, "Bat", 2, ILI9341_WHITE, 280, 98, 35, 1, ILI9341_GREEN); } else { createButtonCircle(Den_NC, "Tat", 2, ILI9341_WHITE, 280, 98, 35, 1, ILI9341_RED); } if (quatNC) { createButtonCircle(Quat_NC, "Bat", 2, ILI9341_WHITE, 280, 188, 35, 1, ILI9341_GREEN); } else { createButtonCircle(Quat_NC, "Tat", 2, ILI9341_WHITE, 280, 188, 35, 1, ILI9341_RED); } break; case 2: if (denV) { createButtonCircle(Den_V, "Bat", 2, ILI9341_WHITE, 280, 98, 35, 1, ILI9341_GREEN); } else { createButtonCircle(Den_V, "Tat", 2, ILI9341_WHITE, 280, 98, 35, 1, ILI9341_RED); } if (bomV) { createButtonCircle(Bom_V, "Bat", 2, ILI9341_WHITE, 280, 188, 35, 1, ILI9341_GREEN); } else { createButtonCircle(Bom_V, "Tat", 2, ILI9341_WHITE, 280, 188, 35, 1, ILI9341_RED); } break; case 3: if (denK) { createButtonCircle(Den_K, "Bat", 2, ILI9341_WHITE, 280, 98, 35, 1, ILI9341_GREEN); } else { createButtonCircle(Den_K, "Tat", 2, ILI9341_WHITE, 280, 98, 35, 1, ILI9341_RED); } if (quatK) { createButtonCircle(Quat_K, "Bat", 2, ILI9341_WHITE, 280, 188, 35, 1, ILI9341_GREEN); } else { createButtonCircle(Quat_K, "Tat", 2, ILI9341_WHITE, 280, 188, BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP- Y SINH 35, 1, 104 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 11 #define RX_PIN 10 #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 12 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.print(" TAT lcd.setCursor(0, 2); lcd.print("DEN 2:"); if (led2 == 1) lcd.print(" BAT else lcd.print(" TAT 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.print(" TAT lcd.setCursor(0, 2); lcd.print("QUAT:"); if (led6 == 1) lcd.print(" BAT else lcd.print(" TAT 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 11 #define RX_PIN 10 #define LED5 #define LED6 #define BTN1 #define BTN2 #define BTN3 #define BTN4 #define BTN5 #define BTN6 #define CMH 12 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 ... Wifi, Lora? ?? Ở nhóm định 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. .. 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... 16141105 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 Nội dung Tuần Gặp GVHD