nội dung website
38 Giao diện website xây dựng: Hình 3.13 Giao diện điều khiển thiết bị Giao diện trang chủ bật lên nhiệt độ độ ẩm thời gian Ngồi cịn hiển thị nhiệt độ cao nhất, độ ẩm cao kèm theo thời gian Hình 3.14 Giao diện trang chủ giám sát nhiệt độ, độ ẩm Hình 3.15 Tồn giao diện trang chủ 39 Khi người dùng truy cập vào từ điện thoại hay thiết bị khác webserver hiển thị giao diện tương ứng phù hợp với thiết bị người dùng Hình 3.16 Giao diện truy nhập điện thoại 40 Hình 3.17 Giao diện bảng sở liệu hiển thị giao diện người dùng 41 CHƯƠNG KẾT QUẢ 4.1 KẾT QUẢ MÔ HÌNH THI CƠNG Hình 4.1 Mơ hình demo hệ thống Khối board mạch hệ thống gồm có module nodeMcu, cảm biến DHT11, khối cảm biến ánh sáng, khối nút nhấn, bus giao tiếp khối mạch Relay Sử dụng Adapter chuyển từ 220V AC sang 12V DC dòng 1A, nguồn 12V vào khối nguồn để chuyển điện áp phù hợp cung cấp cho khối khác 4.2 HOẠT ĐỘNG CỦA HỆ THỐNG Khi có nguồn cấp khối bắt đầu hoạt động 42 Đầu tiên khối module ESP8266 NodeMcu khởi chạy chế độ thiết lập ban đầu Khối module phải kết nối wifi hệ thống hoạt động tiếp Sau kết thành cơng mạng wifi ESP kết nối đến server, gửi địa IP ESP lên server để tương tác với server Lúc đầu cấp điện hệ thống hoạt động chế độ Manual Phía server lắng nghe xem có client kết nối khơng, có client kết nối kiểm tra có tín hiệu điều khiển từ giao diện Khi server nhận tín hiệu điều khiển tương ứng từ giao diện, server giải mã tín hiệu để phía ESP nhận tín hiệu thay đổi trạng thái điều khiển phù hợp Khi nhấn nút chuyển chế độ sang Auto, khơng cần quan tâm đến tín hiệu từ giao diện người dùng Chế độ auto thực theo thay đổi ánh sáng ngưỡng nhiệt độ cài giới hạn trước Hệ thống cập nhật lại trạng thái chế độ thiết bị có thay đổi Ở module DHT11 hoạt động hồn toàn độc lập với việc điều khiển thiết bị ngược lại Nếu khơng nhận tín hiệu điều khiển thiết bị module ESP NodeMcu cập nhật nhiệt độ, độ ẩm lên server 43 CHƯƠNG KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN 5.1 KẾT LUẬN Sau thời gian nghiên cứu học tập, tìm hiểu với dẫn Thầy Lê Minh, đến đồ án nhóm hồn thành Đồ án đáp ứng yêu cầu đặt ban đầu “THIẾT KẾ ĐIỀU KHIỂN THIẾT BỊ VÀ GIÁM SÁT NHIỆT ĐỘ QUA INTERNET” chế độ hoạt động Qua đề tài giúp nhóm có nhiều kiến thức hữu ích cho chun ngành sau có kỹ làm việc nhóm, xếp trình tự cơng việc,… Việc thiết kế hệ thống có ý nghĩa to lớn, ứng dụng nhiều lĩnh vực đời sống xã hội cơng nghiệp Ngồi ra, module ESP nodeMcu kết hợp với Vi điều khiển khác mở nhiều hướng ứng dụng khác, phục vụ tốt cho việc học tập nghiên cứu Việc xây dựng hệ thống liên quan đến nhiều tảng kiến thức từ kiến thức lý thuyết kiến thức thực tiễn Những kết đạt - Tìm hiểu nguyên lý chung chuẩn truyền thông wifi IEEE 802.11 quy định, tìm hiểu kiến thức họ giao thức TCP/IP - Kết nối thành công mạch với server, demo điêu khiển thiết bị thông qua wifi - Thiết kế thành công mạch đo nhiệt độ, độ ẩm sử dụng cảm biến DHT11, truyền lên server sau khoảng thời gian định trước - Lập trình giao diện web để đo lường, hiển thị thống kê thông số nhiệt độ, độ ẩm điều khiển cấu chấp hành Đánh giá kết đạt - Đo hiển thị xác nhiệt độ, độ ẩm mơi trường upload liệu lên server ổn định Kết đo xác với sai số nằm phạm vi cho phép Mạch hoạt động ổn định 44 - Tuy nhiên, số mặt hạn chế trang web chưa tự động cập nhật lên giá trị phải refresh lại trang để cập nhật liệu - Với kết bước đầu kết nối truyền liệu thành công qua mạng wifi thực đo lường điều khiển số thông số môi trường, điều khiển cấu chấp hành để thay đổi quạt, điều hòa với kết demo khẳng định khả phát triển đề tài Trong trình nghiên cứu thực đề tài hội để nhóm tự kiểm tra lại kiến học trường, đồng thời phát huy tính sáng tạo, khả giải vấn đề theo yêu cầu đặt Tuy nhiên số chỗ nhóm trình bày chưa cụ thể, logic cịn nhiều thiếu sót, mong Thầy góp ý giúp đỡ tạo điều kiện để nhóm sữa chữa nhằm phục vụ tốt cho việc trình bày đồ án tốt nghiệp sau 5.2 HƯỚNG PHÁT TRIỂN Tối ưu mạch điện, giải thuật, cảm biến nhiệt độ nghỉ khơng có nhu cầu dùng Tăng tính xác ổn định Tích hợp nhiều cảm biến phù hợp với nhiều đối tượng người dùng để phục vụ cho sống phục vụ công nghiệp thay chuẩn ethernet, RS485 Phát triển ứng dụng theo dõi sức khỏe bệnh nhân từ xa TÀI LIỆU THAM KHẢO [1] https://esp8266.vn/ [2] https://iotmakervn.github.io/iot-starter-book/ 45 [3] https://www.electronics-lab.com/project/nodemcu-esp8266-webservertutorial/ [4] www.dientuvietnam.com/ PHỤ LỤC #include #include "DHT.h" #define DHTPIN D4 #define DHTTYPE DHT11 #define CBAS D6 46 #define relay1 D1 #define relay2 D0 #define btn_mode1 D7 #define btn_mode2 D3 #define led_mode1 D5 #define led_mode2 D2 int mode1 = 0; int mode2 = 0; String status1 = "OFF"; String status2 = "OFF"; String chedo1 = "Manual"; String chedo2 = "Manual"; unsigned long previousMillis = 0; unsigned long interval = 100000; const char* ssid = " "; const char* password = " "; const char* host = "doan2doan2.000webhostapp.com"; const int httpPort = 80; WiFiClient client; WiFiServer server(httpPort); String header; DHT dht(DHTPIN, DHTTYPE); void setup() { Serial.begin(115200); delay(100); dht.begin(); pinMode(relay1, OUTPUT); digitalWrite(relay1, LOW); pinMode(relay2, OUTPUT); digitalWrite(relay2, LOW); pinMode(btn_mode1, INPUT); pinMode(btn_mode2, INPUT); pinMode(led_mode1, OUTPUT); digitalWrite(led_mode1, LOW); pinMode(led_mode2, OUTPUT); digitalWrite(led_mode2, LOW); pinMode(CBAS, INPUT); Serial.println(); Serial.println(); Serial.print("Connecting to WiFi network with IP Address: "); Serial.println(ssid); WiFi.begin(ssid, password); while (WiFi.status() != WL_CONNECTED) { 47 delay(500); Serial.print("."); } Serial.println(""); Serial.println("WiFi connected."); Serial.print("IP address: "); Serial.println(WiFi.localIP()); Serial.print("Netmask: "); Serial.println(WiFi.subnetMask()); Serial.print("Gateway: "); Serial.println(WiFi.gatewayIP()); server.begin(); Serial.print("Connecting to "); Serial.println(host); if (!client.connect(host, httpPort)) { Serial.println("connection failed"); return; } //=================Load WiFi.localIP()=================== String url_ip = "/FinalDoan/address.php?ip=" + (WiFi.localIP().toString()); Serial.print("Requesting URL IP: "); Serial.println(url_ip); client.print(String("GET ") + url_ip + " HTTP/1.1\r\n" + "Host: " + host + "\r\n" + "Connection: close\r\n\r\n"); delay(200); while(client.available()) { String line_ip = client.readStringUntil('\r'); Serial.print(line_ip); } Serial.println(); Serial.println("Closing connection"); //==================Load Status Device=================== String url_state = "/FinalDoan/addstatus.php?status_1=" + status1 + "&status_2=" + status2 + "&mode_1=" + chedo1 + "&mode_2=" + chedo2; Serial.print("Requesting URL STATUS: "); Serial.println(url_state); client.print(String("GET ") + url_state + " HTTP/1.1\r\n" + "Host: " + host + "\r\n" + "Connection: close\r\n\r\n"); delay(200); while(client.available()){ String line_state = client.readStringUntil('\r'); Serial.print(line_state); } Serial.println(); Serial.println("Closing connection"); } 48 //===================void loop()==================== void loop() { if( digitalRead(btn_mode1) == 0) { while( digitalRead(btn_mode1) == 0) {} mode1 = !mode1; Serial.print("Mode 1: "); Serial.println(mode1); } if( digitalRead(btn_mode2) == 0) { while( digitalRead(btn_mode2) == 0) {} mode2 = !mode2; Serial.print("Mode 2: "); Serial.println(mode2); } //=============================================== if(mode1 == 1) { chedo1 = "Auto"; digitalWrite(led_mode1, HIGH); if(digitalRead(CBAS) == 1) { digitalWrite(relay1, HIGH); status1 = "ON"; } else { digitalWrite(relay1, LOW); status1 = "OFF"; } } else { chedo1 = "Manual"; digitalWrite(led_mode1, LOW); } //============================================= if(mode2 == 1) { chedo2 = "Auto"; digitalWrite(led_mode2, HIGH); float temp = dht.readTemperature(); if(temp >= 33) { digitalWrite(relay2, HIGH); 49 status2 = "ON"; } else { digitalWrite(relay2, LOW); status2 = "OFF"; } } else { chedo2 = "Manual"; digitalWrite(led_mode2, LOW); } //============================================== client = server.available(); if (client) { Serial.println("New Client."); String currentLine = ""; while (client.connected()) { if (client.available()) { char c = client.read(); Serial.write(c); header += c; if (c == '\n') { if (currentLine.length() == 0) { client.println("HTTP/1.1 200 OK"); client.println("Content-type:text/html"); client.println("Connection: close"); client.println(); if ( mode1 == 0) { if (header.indexOf("GET /?pin=11")) { Serial.println("Relay 1"); digitalWrite(relay1, !digitalRead(relay1)); if (( digitalRead( relay1)) == 1) { status1 = "ON"; } else { status1 = "OFF"; } } } if ( mode2 == 0) { if (header.indexOf("GET /?pin=12")) { Serial.println("Relay 2"); 50 digitalWrite(relay2, !digitalRead(relay2)); if (( digitalRead( relay2)) == 1) { status2 = "ON"; } else { status2 = "OFF"; } } } client.println(); break; } else { currentLine = ""; } } else if (c != '\r') { currentLine += c; } } } //================================================= if (!client.connect(host, httpPort)) { Serial.println("connection failed"); return; } String url_status2 = "/FinalDoan/addstatus.php?status_1=" + status1 + "&status_2=" + status2 + "&mode_1=" + chedo1 + "&mode_2=" + chedo2; client.print(String("GET ") + url_status2 + " HTTP/1.1\r\n" + "Host: " + host + "\r\n" + "Connection: close\r\n\r\n"); while(client.available()) { String line_status2 = client.readStringUntil('\r'); Serial.print(line_status2); } header = ""; client.stop(); Serial.println("Client disconnected."); Serial.println(""); } //==================SENSOR==================== unsigned long currentMillis = millis(); if(currentMillis - previousMillis > interval) { 51 float h = dht.readHumidity(); float t = dht.readTemperature(); if (isnan(h) || isnan(t)) { Serial.println("Failed to read from DHT sensor!"); return; } Serial.print("Connecting to "); Serial.println(host); if (!client.connect(host, httpPort)) { Serial.println("connection failed"); return; } String url = "/FinalDoan/addsensor.php?temp=" + String(t) + "&humi="+ String(h); Serial.print("Requesting URL: "); Serial.println(url); client.print(String("GET ") + url + " HTTP/1.1\r\n" + "Host: " + host + "\r\n" + "Connection: close\r\n\r\n"); previousMillis = currentMillis; while(client.available()) { String line = client.readStringUntil('\r'); Serial.print(line); } Serial.println(); Serial.println("Closing connection"); } } 52 ... trang chủ bật lên nhiệt độ độ ẩm thời gian Ngồi cịn hiển thị nhiệt độ cao nhất, độ ẩm cao kèm theo thời gian Hình 3.14 Giao diện trang chủ giám sát nhiệt độ, độ ẩm Hình 3.15 Tồn giao diện trang... dụng hầu hết mạng máy tính LAN, WAN, mạng toàn cầu Internet sử dụng giao thức TCP/IP phát triển dạng rút gọn mơ hình OSI 15 2.6.2 Mơ hình tham chiếu OSI Khi mạng đời nhanh chóng phát triển Kích... khác nhau, tất điều liên quan đến hoạt đơng vận chuyển thông tin 18 TCP/IP cho phép hoạt động thông tin diễn số mạng liên mạng phù hợp tốt hoạt động truyền tin LAN WAN TCP/IP không bao gồm cho