1. Trang chủ
  2. » Giáo Dục - Đào Tạo

(Đồ án tốt nghiệp) thiết kế và thi công hệ thống điều khiển và giám sát điện năng tiêu thụ cho tải thông qua mạng internet

129 11 0

Đ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

Thông tin cơ bản

Định dạng
Số trang 129
Dung lượng 7,51 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 KỸ THUẬT Đ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 ĐIỆN NĂNG TIÊU THỤ CHO TẢI THÔNG QUA MẠNG INTERNET GVHD: HÀ A THỒI SVTH: TRẦN ANH KHOA MSSV: 15141185 SVTH: NGUYỄN VĂN HẠNH MSSV: 15141151 SKL007374 Tp Hồ Chí Minh, tháng 08/2020 TRƯỜNG ĐH SPKT TP HỒ CHÍ MINH CỘNG HỊA XÃ HỘI CHỦ NGHĨA VIỆT NAM ĐỘC LẬP - TỰ DO - HẠNH PHÚC KHOA ĐIỆN-ĐIỆN TỬ o0o -BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH Tp HCM, ngày 10 tháng 07 năm 2020 NHIỆM VỤ ĐỒ ÁN TỐT NGHIỆP 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 ĐIỀU KHIỂN VÀ GIÁM SÁT ĐIỆN NĂNG TIÊU THỤ CHO TẢI THÔNG QUA MẠNG INTERNET II NHIỆM VỤ Các số liệu ban đầu: - Các loại vi điều khiển: Arduino Mega 2560 Pro, Arduino Nano, Esp 8266 V12 - Các loại Module: Lora – E32 TTL 100, Đo dòng ACS712, ULN2003 - Màn hình hiển thị: LCD 20x4 - Điều khiển thiết bị điện: relay, transistor, diode - Nguồn: module hạ áp AC – DC Nội dung thực - Tìm hiểu tham khảo tài liệu, giáo trình, nghiên cứu chủ đề, nội dung liên quan đến đề tài - Tìm hiểu cơng nghệ Lora, IoT - Thiết kế, thi công hệ thống điều khiển - Thiết kế ứng dụng điều khiển hệ điều hành Android - Chạy thử nghiệm hệ thống - Chỉnh sửa lỗi xuất - Đánh giá kết thực - Viết báo cáo luận văn Báo cáo đề tài tốt nghiệp III NGÀY GIAO NHIỆM VỤ: - IV NGÀY HOÀN THÀNH NHIỆM VỤ: 10/08/2020 V HỌ VÀ TÊN CÁN BỘ HƯỚNG DẪN: KS Hà A Thồi 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Ử CỘNG HÒA XÃ HỘI CHỦ NGHĨA VIỆT NAM LỊCH TRÌNH THỰC HIỆN ĐỒ ÁN TỐT NGHIỆP Họ tên sinh viên 1: Trần Anh Khoa Lớp: 15141DT1D MSSV:15141185 Họ tên sinh viên 2: Nguyễn Văn Hạnh Lớp: 15141DT1A MSSV:15141151 Tên đề tài: THIẾT KẾ VÀ THI CÔNG HỆ THỐNG ĐIỀU KHIỂN VÀ GIÁM SÁT ĐIỆN NĂNG TIÊU THỤ CHO TẢI THÔNG QUA MẠNG INTERNET Tuần/ngày Tuần 1,2 18/03-01/04 Tuần 3,4,5 02/03-25/04 Tuần 6,7,8,9 27/04-25/05 Tuần 10,11 26/05-09/06 Tuần 12 10/06-17/06 Tuần 13,14,15 18/06-11/07 GV HƯỚNG DẪN (Ký ghi rõ họ tên) ii LỜI CAM ĐOAN Nhóm sinh viên – Nguyễn Văn Hạnh Trần Anh Khoa xin cam đoan đồ án nhóm tự thực hướng dẫn thầy Hà A Thồi Nhóm tham khảo tài liệu trước nghiên cứu mạng online Kết công bố khóa luận tốt nghiệp trung thực khơng chép từ tài liệu hay cơng trình có trước Người thực đề tài Trần Anh Khoa Nguyễn Văn Hạnh iii LỜI CẢM ƠN Nhóm thực đồ án xin được gửi lời cảm ơn đặc biệt đến giảng viên hướng dẫn thầy Hà A Thồi giúp đỡ nhóm q trình thực đồ án, người đưa hướng nghiên cứu, giải đáp thắc mắc, tận tình quan sát nhóm làm việc Trong q trình thực nhóm tiếp thu được kiến thức thực tế cách làm việc nghiêm túc, hiệu từ thầy Nhóm em xin gửi lời tri ân thành đến quý thầy cô khoa Điện điện tử hỗ trợ chúng em kiến thức tảng vững vàng, tạo điều kiện tốt cho sinh viên trình học tập nghiên cứu Sự hỗ trợ thầm lặng vô quan trọng từ gia đình bạn bè ln động lực để nhóm làm việc hết khả hoàn thành đồ án cách tốt Một lần nhóm vơ hân hạnh được làm sinh viên trường ĐH Sư Phạm Kỹ Thuật TPHCM, học trò giảng viên đầy tâm huyết, lời cảm ơn ghi nhận sâu sắc mà nhóm muốn gửi đến thầy cơ, gia đình bạn bè Người thực đề tài Trần Anh Khoa Nguyễn Văn Hạnh iv MỤC LỤC NHIỆM VỤ ĐỒ ÁN TỐT NGHIỆP LỊCH TRÌNH THỰC HIỆN ĐỒ ÁN TỐT NGHIỆP LỜI CAM ĐOAN LỜI CẢM ƠN TÓM TẮT CHƯƠNG 1: TỔNG QUAN 1 ĐẶT VẤN ĐỀ 1.2MỤC TIÊU ĐỀ TÀI 1.3NỘI DUNG THỰC HIỆN 1.5 BỐ CỤC ĐỒ ÁN CHƯƠNG 2: CƠ SỞ LÝ THUYẾT 2.1 TẦM QUAN TRỌNG CỦA VIỆC QUẢN LÝ ĐIỆN NĂNG 2 CÔNG NGHỆ IOT 2.3GIỚI THIỆU VỀ PHẦN CỨNG 2.3.1Giới thiệu module ESP8266 2.3.2 Vi Điều Khiển 2.3.3 Module LCD 2004-20X4 2.3.4 Module Lora E32 - TTl – 100 2.3.5 Cảm biến dòng điện Hall ACS712 20A 2.3.6 IC đệm dòng ULN 2003 2.3.7 Module chuyển đổi nguồn điện AC - DC 2.3.8 Relay tiếp điểm khí 2.4 CHUẨN GIAO TIẾP UART 2.7 CÁC LOẠI MODULE TTHU PHÁT SÓNG RF 2.8 NGUỒN CUNG CẤP 2.8.1 Bộ Chuyển Đổi Nguồn AC-DC 2.8.2 Bộ Chuyển Đổi Nguồn DC-DC CHƯƠNG TÍNH TỐN VÀ THIẾT KẾ GIỚI THIỆU TÍNH TỐN VÀ THIẾT KẾ HỆ THỐNG 3.2.1 Thiết kế sơ đồ khố 3.2.2 Tính tốn mạch điện CHƯƠNG THI CÔNG HỆ THỐNG GIỚI THIỆU THI CÔNG HỆ THỐNG 4.2.1 Thi công board mạ 4.2.2 Lắp ráp kiểm tr 4.2.3 Thi công lắp ráp m LẬP TRÌNH HỆ THỐNG 4.3.1 Lưu đồ giải thuật GIỚI THIỆU VỀ PHẦN MỀM LẬP TRÌNH 4.4.1 Giới thiệu Arduino IDE 4.4.2 Giới thiệu App Blynk CHƯƠNG KẾT QUẢ_NHẬN XÉT_ĐÁNH GIÁ GIỚI THIỆU KẾT QUẢ ĐẠT ĐƯỢC KẾT QUẢ THỰC NGHIỆM 5.3.1 Cấp nguồn kết nối Master với Slave 5.3.2 Đăng nhập ứng dụng điện thoại điều khiển – giám sát NHẬN XÉT – ĐÁNH GIÁ 5.4.1 Nhận xét 5.4.2 Đánh giá CHƯƠNG KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN 6.1 KẾT LUẬN HƯỚNG PHÁT TRIỂN TÀI LIỆU THAM KHẢO PHỤ LỤC vi DANH SÁCH HÌNH ẢNH Chương Hình 2.1: Sơ đồ chân ESP8266MOD Hình 2.2: Sơ đồ chân Board ESP -12E Node MCUS Hình 2.3: Board Arduino Mega 2560 Pro 10 Hình 2.4: Board Arduino Mega 2560 Pro với GPIO 11 Hình 2.5: Board Arduino Nano 12 Hình 2.6: Arduino Nano GPIO 13 Hình 2.7: Hình ảnh mặt trước LCD 20x4 14 Hình 2.8: Module Lora E32 – TTL – 100 15 Hình 2.9: Mạch nguyên lý nối dây với vi điều khiển 15 Hình 2.10: Dạng sóng module truyền liệu qua vi điều khiển 16 Hình 2.11: Dạng sóng module nhận liệu không dây 17 Hình 2.12: Cảm biến dịng điện Hall ACS712 20A 18 Hình 2.13: Sơ đồ nối dây để sử dụng ACS712 19 Hình 2.14: IC đệm dòng UNL 2003 20 Hình 2.15: Các chân kết nối ic uln 2003 20 Hình 2.16: Mạch chuyển đổi nguồn AC – DC 21 Hình 2.17: Relay 5v 22 Hình 2.20: Gói liệu truyền UART 22 Hình 2.21: Sóng truyền UART 23 Hình 2.22: Quá trình truyền UART 24 Hình 2.23: Quá trình nhận UART 25 Hình 2.26: Sơ đồ mạch RF đơn giản 27 Hình 2.27: Sơ đồ mạch thu song RF đơn giản 28 Hình 2.28: Mạch thu phát kênh 2.4 GHZ L24YK-RX4 31 viii Hình 2.29: Mạch thu phát sóng RF NRF24L01+ 32 Hình 2.30: Mạch thu phát RF UART LC12S 2.4Ghz 33 Hình 2.31: Adapter 12v – 1,5A 33 Hình 2.32: Nguồn tổ ong 12V-10A 34 Hình 2.33: Sơ đồ hoạt động mạch tăng áp 34 Hình 2.34: Mạch tăng áp XL6009 4A 35 Hình 2.35: Sơ đồ hoạt động mạch hạ áp 35 Hình 2.36: Mạch hạ áp DC-DC LM2596 35 Chương Hình 3.1: Sơ đồ khối hệ thống 45 Hình 3.2: Sơ đồ chân ESP8266-12E Node MCU 47 Hình 3.3: Sơ đồ chân Arduimo Mega 2650 Pro 48 Hình 3.4: Sơ đồ kết nối Arduino Mega với nút nhấn 49 Hình 3.5: Sơ đồ kết nối Arduino Mega với LCD 50 Hình 3.6: Sơ đồ kết nối Arduino Mega với Lora 51 Hình 3.7: Sơ đồ nguyên lý Master 52 Hình 3.8: BJT điều khiển Buzzer 53 Hình 3.9: IC đệm dòng ULN 2003 54 Hình 3.10: Sơ đồ cấu tạo IC ULN 2003 55 Hình 3.11: Kết nối ACS với Arduino Nano 55 Hình 3.12: Kết nối relay với UNL2003 56 Hình 3.13: Kết nối khối giám sát điều khiển relay với Arduino Nano 57 Hình 3.14: Kết nối mạch điều khiển buzzer với Arduino 57 Hình 3.15: Kết nối Lora với Arduino nano 58 Hình 3.16: Kết nối phím nhấn với Arduino Nano 58 Hình 3.17: Sơ đồ nguyên lý mạch Slave 59 ix PHỤ LỤC String id = getValue(t, ';', 0); String pass = getValue(t, ';', 1); terminal.print("SSID :"); terminal.println(id); terminal.print("PASS :"); terminal.println(pass); terminal.flush(); id.toCharArray(ssid_buff,20); pass.toCharArray(pass_buff,20); } / Cáu hình nút set để lưu thông tin wifi sau nhập BLYNK_WRITE(V6) { int i = param.asInt(); if (i == 1) { delete_eeprom(); delay(50); EEPROM.put(5, ssid_buff); EEPROM.put(30, pass_buff); EEPROM.commit(); terminal.println("CAP NHAT THANH CONG"); terminal.println("Auto reboot "); terminal.flush(); delay(2000); ESP.restart(); } else { ; } } / đặt nút xóa nhớ eeprom cần BLYNK_WRITE(V7) { int i = param.asInt(); if (i == 1) { delete_eeprom(); delay(50); terminal.println("Da xoa bo nho"); terminal.flush(); } else { ; } } / Hàm điều khiển tải BLYNK_WRITE(V21) { int i = param.asInt(); if (i == 1) { / statusld1 = !statusld1; //Blynk.virtualWrite(V12, HIGH); control[10] = '1'; Serial.println(control); 95 BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH PHỤ LỤC } else { ; } } //Hàm điều khiển tải BLYNK_WRITE(V22) { int i = param.asInt(); if (i == 1) { control[10] = '2'; Serial.println(control); } else { ; } } //Hàm điều khiển tải BLYNK_WRITE(V23) { int i = param.asInt(); if (i == 1) { control[10] = '3'; Serial.println(control); } else { ; } } //Hàm điều khiển tải BLYNK_WRITE(V24) { int i = param.asInt(); if (i == 1) { control[10] = '4'; Serial.println(control); } else { ; } } / Hàm xử lý nhận chuỗi void checkStatus() { //Serial.println("Step1"); / xác thực chuỗi nhận if ((id == "slave1")&&(data.length() == 40)) { // Dữ liệu gửi lên web server 96 BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH PHỤ LỤC String temp = String("gateway1-") + l1 + String(";") + l2 + String(";") + l3 + String(";") + l4 + String("-statusA"); temp.toCharArray(mqtt2,100); client.publish(mqtt_topic_pub, mqtt2); sendmqtt(); float t1 = cur.toFloat(); float t2 = alarm.toFloat(); / Serial.println(mqtt2); //Serial.println(t2); // Cập nhật hiển thị blynk tải Blynk.virtualWrite(V11,t1 ); Blynk.virtualWrite(V12,t2 ); if (l1 == "ld1:a") { Blynk.virtualWrite(V21, HIGH); statusld1 = 1; // Blynk.virtualWrite(V12,); } else { Blynk.virtualWrite(V21, LOW); statusld1 = 0; } / Cập nhật hiển thị blynk tải if (l2 == "ld2:a") { Blynk.virtualWrite(V22, HIGH); } else { Blynk.virtualWrite(V22, LOW); } / Cập nhật hiển thị blynk tải if (l3 == "ld3:a") { Blynk.virtualWrite(V23, HIGH); } else { Blynk.virtualWrite(V23, LOW); } / Cập nhật hiển thị blynk tải if (l4 == "ld4:a") { Blynk.virtualWrite(V24, HIGH); } else { Blynk.virtualWrite(V24, LOW); } / Nếu ngưỡng thị bật thông báo sáng đèn warning if (t1 > t2) { warning.on(); Blynk.notify("Current warning!"); 97 BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH PHỤ LỤC Serial.println("warning"); over = 0; } else { warning.off(); over = 1; } } } ❖ Chương trình code cho mạch Master // Khai báo thư viện #include #include #include #define ledStatus3 40 #define ledStatus4 38 #define btnSet A14 #define btnMode A12 #define btnDown 34 #define btnUp 32 #define buzz 42 // Khai báo biến boolean status_btn_up = 0; boolean status_btn_set = 0; boolean status_btn_down = 0; boolean check = 0; float CURRENT_ALAMR = 0; / Chuỗi truyền xuống slave tải String warning = "master;warning"; String safety = "master;safety"; / Khai báo dử dụng lcd / Biến lưu liệu nhận từ slave String data = ""; String id = ""; String l1 = ""; String l2 = ""; String l3 = ""; String l4 = ""; String cur = ""; boolean fw = 0; void setup() { Serial.begin(9600); // Khai báo Serial2.begin(9600);// Khai báo Serial2.setTimeout(150); Serial3.begin(9600);// Khai báo Serial3.setTimeout(150); //EEPROM.put(20, CURRENT_ALAMR) EEPROM.get(20, CURRENT_ALAMR) ; eeprom lcd.begin(20,4); // Khai lcd.print("Starting "); delay(500); serial serial2 serial3 ; // Đọc giá trị ngưỡng dòng từ báo lcd 20x4 98 BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH PHỤ LỤC Serial.println("Start"); / Khai báo chân, input, output pinMode(ledStatus3, OUTPUT); pinMode(ledStatus4, OUTPUT); pinMode(buzz, OUTPUT); pinMode(btnSet, INPUT); pinMode(btnMode, INPUT); pinMode(btnDown, INPUT); pinMode(btnUp, INPUT); digitalWrite(ledStatus3, LOW); digitalWrite(ledStatus4, LOW); delay(1000); blink_buzz(2); lcd.setCursor(14, 1); lcd.print("Done"); delay(2000); display_setting(); } void loop() { read_input(); if(check == 0){ / Kiểm tra liệu nhận slave gửi if (Serial3.available() > ) { data = Serial3.readString(); data.trim(); // Tách liệu id = getValue(data, ';', 0); l1 = getValue(data, ';', 1); l2 = getValue(data, ';', 2); l3 = getValue(data, ';', 3); l4 = getValue(data, ';', 4); cur = getValue(data, ';', 5); / Kiểm tra dịng cao giá trị ngưỡng báo động gửi cảnh báo slave if (cur.toFloat() > CURRENT_ALAMR) { / blink_buzz(1); digitalWrite(buzz , HIGH); digitalWrite(ledStatus3, HIGH); digitalWrite(ledStatus4, HIGH); fw = 1; Serial3.println(warning); } else { digitalWrite(buzz , LOW); digitalWrite(ledStatus3, LOW); digitalWrite(ledStatus4, LOW); if (fw == 1) { Serial3.println(safety); fw = 0; } } // Xác thực chuỗi nhận có hay khơng 99 BỘ MƠN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH PHỤ LỤC if ((id == "slave1")&&(data.length() == 35)) { } / Cập nhật hiển thị lcd display_update(); //Gửi liệu lên Esp8266 String data2 = data + String(";") + String(CURRENT_ALAMR); Serial2.println(data2); }// Check chuỗi gửi từ Esp8266 if (Serial2.available() > ) { String data3 = Serial2.readString(); data3.trim(); //Serial.println(data3); / Serial.println(data3.length()); String id2 = getValue(data3, ';', 0); String value = getValue(data3, ';', 1); // Xác thực chuỗi nhận if((id2 == "control")&&(data3.length() == 11)) { / Gửi điều khiển xuống slave Serial.println(data3); Serial3.println(data3); } } } } / -Hàm check nhấn nút -boolean debounce(int pin) { boolean state; boolean previousState; const int debounceDelay = 60; previousState = digitalRead(pin); for (int counter = 0; counter < debounceDelay; counter++) { delay(1); state = digitalRead(pin); if (state != previousState) { counter = 0; previousState = state; } } return state; } / Hàm đọc input, nút nhấn đầu vào void read_input() { int value_set = debounce(btnSet); if (!value_set) // check nút set nhấn { status_btn_set = !status_btn_set; blink_buzz(2); Serial.println("Nut set"); 100 BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH PHỤ LỤC } int value_up = debounce(btnUp); if (!value_up) // check nút UP nhấn { //Serial.println("Nut up"); if (status_btn_set == 1) { CURRENT_ALAMR = CURRENT_ALAMR + 0.1 ; / temp = count; //Serial.print("UP "); display_set_cur(); Serial.print(CURRENT_ALAMR); Serial.println("Nut up"); } } int value_down = debounce(btnDown); if (!value_down) // Check nút Down nhấn { //Serial.println("Nut down"); if (status_btn_set == 1) { CURRENT_ALAMR = CURRENT_ALAMR - 0.1 ; / temp = count; / display_segment(TEMP_ALAMR); / Serial.print("Down "); display_set_cur(); Serial.print(CURRENT_ALAMR); Serial.println("Nut down"); } } if(status_btn_set == 1) { check = 1; } if((status_btn_set == 0)&&(check == 1)) { // Lưu gia trị set vào nhớ eeprom EEPROM.put( 20, CURRENT_ALAMR ); check = 0; blink_buzz(2); } } // Hàm hú còi, led báo động void blink_buzz (int n) { for (int i = ; i < n ; i++) { digitalWrite(buzz , HIGH); digitalWrite(ledStatus3, HIGH); digitalWrite(ledStatus4, HIGH); delay (300) ; digitalWrite(buzz , LOW); digitalWrite(ledStatus3, LOW); digitalWrite(ledStatus4, LOW); delay (300) ; } } 101 BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH PHỤ LỤC / Hàm hiển thị lcd ban đầu void display_setting() { lcd.clear(); //lcd.setCursor(7, 0); //lcd.print("Monitor"); lcd.setCursor(0, 0); lcd.print("Load1:"); lcd.setCursor(6, 0); lcd.print("on"); lcd.setCursor(11, 0); lcd.print("Load2:"); lcd.setCursor(17, 0); lcd.print("on"); lcd.setCursor(0, 1); lcd.print("Load3:"); lcd.setCursor(6, 1); lcd.print("on"); lcd.setCursor(11, 1); lcd.print("Load4:"); lcd.setCursor(17, 1); lcd.print("on"); lcd.setCursor(0, 2); lcd.print("Current:"); lcd.setCursor(9, 2); lcd.print("0.00/"); lcd.setCursor(14, 2); lcd.print(String(CURRENT_ALAMR)); lcd.setCursor(19, 2); lcd.print("A"); lcd.setCursor(0, 3); lcd.print("Power :"); lcd.setCursor(10, 3); lcd.print(" W"); } // Hàm update hiển thị cho lcd void display_update() { if (l1 == "ld1:a") { lcd.setCursor(6, 0); lcd.print("on "); } else { lcd.setCursor(6, 0); lcd.print("off"); } if (l2== "ld2:a") { lcd.setCursor(17, 0); lcd.print("on "); } else { 102 BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH PHỤ LỤC lcd.setCursor(17, 0); lcd.print("off"); } if (l3 == "ld3:a") { lcd.setCursor(6, 1); lcd.print("on "); } else { lcd.setCursor(6, 1); lcd.print("off"); } if (l4 == "ld4:a") { lcd.setCursor(17, 1); lcd.print("on "); } else { lcd.setCursor(17, 1); lcd.print("off"); } lcd.setCursor(9, 2); lcd.print(cur); int w = cur.toFloat() * 220; lcd.setCursor(10, 3); String poe = String(w) + String(" W "); lcd.print(poe); } void display_set_cur() { lcd.setCursor(14, 2); lcd.print(String(CURRENT_ALAMR)); } // Hàm lấy giá trị từ chuỗi String getValue(String data, char separator, int index) { int found = 0; int strIndex[] = {0, -1}; int maxIndex = data.length()-1; for(int i=0; i= printPeriod) { previousMillis = millis(); count++; if (count == 1) { / Đọc nút nhấn read_input(); / Đọc trạng thái tải readstatus(); / Gửi chuỗi truyền lên master String data = String(stringsta) + String(';') + String(temp); Serial.println(data); } else { // Tính giá trị dòng điện Amps_TRMS = intercept + slope * inputStats.sigma(); / Calib giá trị cảm biến temp = abs(Amps_TRMS - 0.18); / Serial.println(stringsta); count = 0; } } } } / Hàm cảnh báo dòng void blink_buzz (int n) { for (int i = ; i < n ; i++) { digitalWrite(buzz , HIGH); delay (300) ; digitalWrite(buzz , LOW); delay (300) ; } } / Hàm check nút nhấn boolean debounce(int pin) 106 BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH PHỤ LỤC { boolean state; boolean previousState; const int debounceDelay = 60; previousState = digitalRead(pin); for (int counter = 0; counter < debounceDelay; counter++) { delay(1); state = digitalRead(pin); if (state != previousState) { counter = 0; previousState = state; } } return state; } / Hàm đọc nút nhấn điều khiển void read_input() { boolean value = debounce(btn1); if (!value) { status_btn1 = !status_btn1; action(); } boolean value2 = debounce(btn2); if (!value2) { status_btn2 = !status_btn2; action(); } boolean value3 = debounce(btn3); if (!value3) { status_btn3 = !status_btn3; action(); } boolean value4 = debounce(btn4); if (!value4) { status_btn4 = !status_btn4; action(); } } / Hàm thực thi lệnh điều khiển void action() { if (status_btn1 == 1) { digitalWrite(load1, HIGH); } else digitalWrite(load1, LOW); if (status_btn2 == 1) 107 BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH PHỤ LỤC { digitalWrite(load2, HIGH); } else digitalWrite(load2, LOW); if (status_btn3 == 1) { digitalWrite(load3, HIGH); } else digitalWrite(load3, LOW); if (status_btn4 == 1) { digitalWrite(load4, HIGH); } else digitalWrite(load4, LOW); } / Hàm đọc trạng thái tải void readstatus(){ for (int i = ; i < ; i++) { if(digitalRead(load[i]) == 0) { stringsta[sttsta[i]] = 'b'; } else { stringsta[sttsta[i]] = 'a'; } } } / Hàm check lệnh điều khiển void check_control() { if (t2 == "ld1") { status_btn1 = !status_btn1; action(); } if (t2 == "ld2") { status_btn2 = !status_btn2; action(); } if (t2 == "ld3") { status_btn3 = !status_btn3; action(); } if (t2 == "ld4") { status_btn4 = !status_btn4; action(); } } 108 BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH ... tên ? ?Thi? ??t kế thi công hệ thống điều khiển giám sát điện tiêu thụ cho tải thông qua mạng Internet? ?? Người dùng giám sát điều khiển thi? ??t bị điện từ xa nơi thông qua ứng dụng điện thoại được kết... ? ?Thi? ??t kế thi công hệ thống điều khiển giám sát điện tiêu thụ cho tải thơng qua mạng Internet? ?? có giới hạn sau: - Hệ thống gồm board mạch (Master) board mạch phụ (Slave) điều khiển giám sát cho. .. TỐN VÀ THI? ??T KẾ GIỚI THI? ??U TÍNH TỐN VÀ THI? ??T KẾ HỆ THỐNG 3.2.1 Thi? ??t kế sơ đồ khố 3.2.2 Tính tốn mạch điện CHƯƠNG THI CÔNG HỆ THỐNG GIỚI THI? ??U THI CÔNG HỆ THỐNG

Ngày đăng: 27/12/2021, 08:50

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w