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

(Đồ án tốt nghiệp) thiết kế bộ điều khiển thiết bị điện thông minh

87 15 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 87
Dung lượng 3,19 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 CNKT ĐIỆN TỬ TRUYỀN THÔNG THIẾT KẾ BỘ ĐIỀU KHIỂN THIẾT BỊ ĐIỆN THÔNG MINH GVHD: TH.S ĐẶNG PHƯỚC HẢI TRANG SVTH: ĐINH BÁ PHƯỚC MSSV: 15141349 SKL007173 Tp Hồ Chí Minh, tháng 08/2020 TRƯỜNG ĐẠI HỌC SƯ PHẠM KỸ THUẬTTHÀNH PHỐ HỒ CHÍ MINH KHOA ĐÀO TẠO CHẤT LƯỢNG CAO ĐỒ ÁN TỐT NGHIỆP THIẾT KẾ BỘ ĐIỀU KHIỂN THIẾT BỊ ĐIỆN THÔNG MINH SVTH: ĐINH BÁ PHƯỚC MSSV: 15141349 Khoá: 2015 Ngành: CNKT Điện tử Truyền thông GVHD: Th.S ĐẶNG PHƯỚC HẢI TRANG Tp Hồ Chí Minh, tháng 08 năm 2020 CỘNG HỊA XÃ HỘI CHỦ NGHĨA VIỆT NAM Độc lập – Tự – Hạnh phúc *** -Tp Hồ Chí Minh, ngày tháng năm 2020 NHIỆM VỤ ĐỒ ÁN TỐT NGHIỆP Họ tên sinh viên: Đinh Bá Phước MSSV: 15141349 Ngành: CNKT Điện tử Truyền Thông Lớp: 15141CLVT Giảng viên hướng dẫn: ThS Đặng Phước Hải Trang ĐT: 0964100106 Ngày nhận đề tài: Ngày nộp đề tài: Tên đề tài: Thiết kế điều khiển thiết bị điện thông minh Các số liệu, tài liệu ban đầu: Nội dung thực đề tài: Sản phẩm: GIẢNG VIÊN HƯỚNG DẪN i CỘNG HOÀ XÃ HỘI CHỦ NGHĨA VIỆTNAM Độc lập – Tự – Hạnh Phúc ******* PHIẾU NHẬN XÉT CỦA GIÁO VIÊN HƯỚNG DẪN Họ tên Sinh viên: Đinh Bá Phước MSSV: 15141349 Ngành: CNKT Điện tử Truyền thông Tên đề tài: Thiết kế điều khiển thiết bị điện thông minh………………………… Họ tên Giáo viên hướng dẫn: ThS Đặng Phước Hải Trang NHẬN XÉT Về nội dung đề tài & khối lượng thực hiện: Nội dung khối lượng phù hợp với yêu cầu KLTN (cho sinh viên thực hiện) Ưu điểm: Đề tài có tính ứng dụng Khuyết điểm: Tài liệu tham khảo khiêm tốn, chưa thích tài liệu tham khảo Chưa đánh giá chi tiết kết nghiên cứu Đề nghị cho bảo vệ hay không? Đề nghị cho bảo vệ trước hội đồng Đánh giá loại: Khá Điểm: …7, 0…………… (Bằng chữ: Bảy chẵn Tp Hồ Chí Minh, ngày 11 tháng 08 Giáo viên hướng dẫn (Ký & ghi rõ họ tên) ii năm 2020 CỘNG HOÀ XÃ HỘI CHỦ NGHĨA VIỆT NAM Độc lập – Tự – Hạnh Phúc ******* PHIẾU NHẬN XÉT CỦA GIÁO VIÊN PHẢN BIỆN Họ tên Sinh viên: Đinh Bá Phước MSSV: 15141349 Ngành: CNKT Điện tử Truyền thông Tên đề tài: Thiết kế điều khiển thiết bị điện thông minh Họ tên Giáo viên phản biện: NHẬN XÉT Về nội dung đề tài & khối lượng thực hiện: Ưu điểm: Khuyết điểm: Đề nghị cho bảo vệ hay không? Đánh giá loại: Điểm: ……………… (Bằng chữ: ) Tp Hồ Chí Minh, ngày tháng Giáo viên phản biện (Ký & ghi rõ họ tên) iii năm 2020 LỜI CẢM ƠN Trong suốt thời gian thực đồ án người thực nhận sự trợ giúp tận tình Thầy ThS Đặng Phước Hải Trang để em hồnh thành đồ án Em xin chân thành cảm ơn quý thầy, cô trường Đại Học Sư Phạm Kỹ Thuật TP HCM, đặc biệt thầy cô khoa Điện - Điện Tử, nhiệt tình giúp đỡ, truyền đạt kiến thức suốt trình học tập người thực trường Vốn kiến thức tiếp thu q trình học tập khơng tảng cho trình thực đồ án tốt nghiệp mà hành trang quý báu cho sự nghiệp em sau Em xin cảm ơn sự ủng hộ giúp đỡ nhiệt tình gia đình, bạn bè, người thân động viên, giúp đỡ em suốt trình học tập thực đồ án tốt nghiệp Mặc dù cố gắng hết sức, xong chắn đồ án không tránh khỏi thiếu sót Em mong nhận sự thơng cảm bảo tận tình q thầy bạn Cuối em xin kính chúc quý Thầy, Cơ, gia đình bạn bè dồi sức khỏe thành công sự nghiệp Xin chân thành cảm ơn! Người thực đề tài Đinh Bá Phước v TÓM TẮT Trong năm qua, khoa học máy tính xử lý thơng tin có bước tiến vượt bậc ngày có đóng góp to lớn vào cách mạng khoa học kỹ thuật đại Đặc biệt sự đời phát triển nhanh chóng kỹ thuật số làm cho ngành điện tử trở nên phong phú đa dạng Nó góp phần lớn việc đưa kỹ thuật đại thâm nhập rộng rãi vào lĩnh vực hoạt động sản xuất, kinh tế đời sống xã hội Từ hệ thống máy tính lớn đến hệ thống máy tính cá nhân, từ việc điều khiển máy công nghiệp đến thiết bị phục vụ đời sống ngày người Trong hệ thống đó, việc trao đổi thơng tin vơ quan trọng Công nghệ truyền tin không dây ngày phát triển, đặc biệt công nghệ Wifi phổ biến hầu hết thiết bị điện tử di động Bên cạnh việc điều khiển thiết bị hình cảm ứng dần phổ biến ưu điểm vượt trội đặc biệt việc điều khiển trực tiếp thiết bị Đồ án trình bày kết nghiên cứu điều khiển công nghệ không dây Wifi, Internet thiết bị điện tử chạy hệ điều hành Android, điều khiển trực tiếp thiết bị thơng qua hình cảm ứng, ứng dụng vào việc điều khiển thiết bị điện xoay chiều công suất thấp thông qua việc điều khiển Web điện thoại Android Từ khóa: THIẾT KẾ BỘ ĐIỀU KHIỂN THIẾT BỊ ĐIỆN THÔNG MINH vi MỤC LỤC Trang bìa Trang Nhiệm vụ đồ án tốt nghiệp i Trang phiếu nhận xét giáo viên hướng dẫn ii Trang phiếu nhận xét giáo viên phản biện iii Lời cảm ơn iv Tóm tắt v Mục lục vi Danh mục chữ viết tắt ix Danh mục hình ảnh x CHƯƠNG 1: 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 2: CƠ SỞ LÝ THUYẾT 2.1 TỔNG QUAN VỀ INTERNET OF THINGS (IOT) 2.1.1 Giới thiệu Internet of Things 2.1.2 Ứng dụng IoT 2.1.3 Đặc điểm công nghệ IoT 2.2 GIỚI THIỆU VỀ MQTT 2.2.1 Giao thức MQTT 2.2.2 Kiến trúc MQTT 2.2.3 Một số khái niệm giao thức MQTT 2.2.4 Ưu điểm MQTT 2.2.5 Ứng dụng MQTT 2.3 WEBSITE 2.3.1 Giới thiệu chung 2.3.2 Các thành phần Website 2.3.3 Ngơn ngữ lập trình web 2.4 GIAO TIẾP UART 10 2.5 MÀN HÌNH CẢM ỨNG 11 2.6 NGÔN NGỮ PHP 12 2.6.2 Đặc điểm bật PHP 12 vii CHƯƠNG 3: TÍNH TỐN VÀ THIẾT KẾ 13 3.1 Sơ đồ khối hệ thống 13 3.1.1 Yêu cầu hệ thống 13 3.1.2 Sơ đồ khối chức mỗi khối 13 3.2 Chức khối: 14 3.2.1 Khối cảm biến 14 3.2.2 Khối xử lý trung tâm 16 3.2.3 Khối kết nối wifi 18 3.2.4 Khối điền khiển thiết bị ngoại vi 19 3.2.5 Khối cảm ứng 20 3.2.7 Thiết kế khối nguồn 25 3.2.8 Sơ đồ nguyên lý toàn mạch 26 CHƯƠNG 4: THI CÔNG HỆ THỐNG 28 4.1 THI CÔNG MẠCH 28 4.2 LẬP TRÌNH HỆ THỐNG 31 4.2.1 Lưu đồ giải thuật 31 4.2.2 Cài đặt Raspberry Pi thành Web Sever 34 4.2.3 Phần mềm lập trình cho ESP 8266 38 4.2.4 HƯỚNG DẪN SỬ DỤNG, THAO TÁC 43 CHƯƠNG 5: KẾT QUẢ - NHẬN XÉT-ĐÁNH GIÁ 47 CHƯƠNG KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN 51 6.1 KẾT LUẬN 51 6.2 HƯỚNG PHÁT TRIỂN 51 TÀI LIỆU THAM KHẢO 52 PHỤ LỤC 53 viii C ADC CS CSD CTS CTS DCD DSR DTE DTR DTX EFR EGSM ETS FR GPRS GSM HR I/O IC Imax Kbps LED Li-Ion MO MT RI RTS RXD TXD Analog-to-Digi Coding Scheme Circuit Switche Clear To Send / Clear to Send Data Carry Dete Date Set Ready Data Terminal E Data Terminal R Discontinuous T Enhanced Full R Enhanced GSM European Telec Full Rate General Packet Global Standard Half Rate Input/Output Integrated Circu Maximum Load Kilo bits per sec Light Emitting Lithium-Ion Mobile Origina Mobile Termina Ring Indicator / Request To Sen Receive Data / T Transmit Data / ii {number3 =1; btn3->setText ("BAT"); Serial println ("$R3ON"); } memset (buffer3, 0, sizeof (buffer3)); itoa (number3, buffer3, 10); } void setup (void) { pinMode (RL1, OUTPUT); Serial begin (115200); nexInit (); n0 attachPop (n0PopCallback); n1 attachPop (n0PopCallback); b0 attachPop (b0PopCallback, &b0); b1 attachPop (b1PopCallback, &b1); b2 attachPop (b2PopCallback, &b2); } void loop (void) { nexLoop (nex_listen_list); UART_Control (); } void UART_Control () { if (!UART_Read (300, response)) { return; } if (UART_HasOwnString ("$")) { if (UART_Compare ("$T")) 56 { n0 setValue (30); } else if (UART_Compare ("$H")) { n1 setValue (70); } } } bool UART_Read (unsigned long TIMEOUT, char* response) { int rsize = 0; if (Serial available ()) { while (TIMEOUT > 0) { if (Serial available ()) { char c = Serial read (); if (c != '\n' && c != '\r') { response[rsize++] = c; } if (rsize == UART_RESPONSE_MAX_LEN - 1) { return true; } } TIMEOUT; delay (1); } } response[rsize] = '\0'; return rsize > 0; } bool UART_HasOwnString (const char* str) { 57 return (strstr (response, str) != nullptr); } bool UART_Compare (const char* command) { return strcmp (response, command) == 0; } Chương trình code ESP_RELAY #include #define BLYNK_PRINT Serial #include #include #include char auth[] = "v1O79-pXioMClsQNxHKE_e_0VYe60etB"; char ssid[] = "hassio"; char pass[] = "12345678"; BlynkTimer timer; #define RELAY_1 #define RELAY_2 12 #define RELAY_3 #define RELAY_1_BLYNK V12 #define RELAY_2_BLYNK V13 #define RELAY_3_BLYNK V14 #define RELAY_4_BLYNK V15 #define DHT_PIN 15 // dht #define GAS_PIN 14 // gas #define SUN_PIN 13 // anh sang #define GAS_BLYNK V6 // GAS #define HUL_BLYNK V5 // DO AM #define TEM_BLYNK V4 // NHIET DO #define SUN_BLYNK V7 // ANH SANG #include "DHT h" #define DHTTYPE DHT11 58 DHT dht (DHT_PIN, DHTTYPE); int gas = 0, sun = 0; float hul = 0, tem = 0; HardwareSerial uart (2); #define UART_REQUEST_TIMEOUT #define UART_RESPONSE_MAX_LEN char response[128]; void setup () { Serial begin (115200); delay (500); uart begin (115200); delay (500); Blynk begin (auth, ssid, pass); timer setInterval (1000L, Sensor_Read); delay (5000); Sensor_Init (); Relay_Init (); } void loop () { Blynk run (); timer run (); if (!UART_Read (300, response)) { return; } if (UART_HasOwnString ("$")) { if (UART_Compare ("$R1ON")) { digitalWrite (RELAY_1, true); 59 Blynk virtualWrite (RELAY_1_BLYNK, true);// CHAN AO, GIA TRI } else if (UART_Compare ("$R1OFF")) { digitalWrite (RELAY_1, false); Blynk virtualWrite (RELAY_1_BLYNK, false); } else if (UART_Compare ("$R2ON")) { digitalWrite (RELAY_2, true); Blynk virtualWrite (RELAY_2_BLYNK, true); } else if (UART_Compare ("$R2OFF")) { digitalWrite (RELAY_2, false); Blynk virtualWrite (RELAY_2_BLYNK, false); } else if (UART_Compare ("$R3ON")) { digitalWrite (RELAY_3, true); Blynk virtualWrite (RELAY_3_BLYNK, true); } else if (UART_Compare ("$R3OFF")) { digitalWrite (RELAY_3, false); Blynk virtualWrite (RELAY_3_BLYNK, false); } } } void Sensor_Init () { pinMode (GAS_PIN, INPUT); 60 pinMode (SUN_PIN, INPUT); dht begin (); } void Relay_Init () { pinMode (RELAY_1, OUTPUT); pinMode (RELAY_2, OUTPUT); pinMode (RELAY_3, OUTPUT); } void Sensor_Read () { gas = readPinDigital (GAS_PIN); sun = readPinDigital (SUN_PIN); hul = dht readHumidity (); tem = dht readTemperature (); Sensor_WriteBlynk (); } void Sensor_WriteBlynk () { Blynk virtualWrite (GAS_BLYNK, gas); Blynk virtualWrite (SUN_BLYNK, sun); if (!isnan (hul) && !isnan (tem)) { Blynk virtualWrite (HUL_BLYNK, hul); Blynk virtualWrite (TEM_BLYNK, tem); } } BLYNK_CONNECTED () { Blynk syncAll (); } BLYNK_WRITE (V12) 61 { Serial print (F ("V12: ")); Serial println (param asInt ()); digitalWrite (RELAY_1, param asInt ()); UART_Send_Relay ("R1", param asInt ()); } BLYNK_WRITE (V13) { Serial print (F ("V13: ")); Serial println (param asInt ()); digitalWrite (RELAY_2, param asInt ()); UART_Send_Relay ("R2", param asInt ()); } BLYNK_WRITE (V14) { Serial print (F ("V14: ")); Serial println (param asInt ()); digitalWrite (RELAY_3, param asInt ()); UART_Send_Relay ("R3", param asInt ()); } BLYNK_WRITE (V15) { Serial print (F ("V15: ")); Serial println (param asInt ()); } bool UART_Read (unsigned long TIMEOUT, char* response) { int rsize = 0; if (uart available ()) { while (TIMEOUT > 0) { if (uart available ()) { char c = uart read (); 62 if (c != '\n' && c != '\r') { response[rsize++] = c; } if (rsize == UART_RESPONSE_MAX_LEN - 1) { return true; } } TIMEOUT; delay (1); } } response[rsize] = '\0'; return rsize > 0; } bool UART_HasOwnString (const char* str) { return (strstr (response, str) != nullptr); } bool UART_Compare (const char* command) { return strcmp (response, command) == 0; } void UART_Send_Data (String data) { Serial println ("SEND VIA UART: " + data); uart println (data); } void UART_Send_Relay (String relay, bool status) { String data = "$" + relay; if (status) { data += "ON"; 63 } else { data += "OFF"; } UART_Send_Data (data); } bool readPinDigital (int pin, bool state) { if (digitalRead (pin) == state) { delay (50); if (digitalRead (pin) == state) { return true; } } return false; } bool readPinDigital (int pin) { if (digitalRead (pin) == true) { delay (50); if (digitalRead (pin) == true) { return true; } } return false; } 64 Chương trình code đo dòng điện, điện áp #define BLYNK_PRINT Serial #include #include char auth[] = "v1O79-pXioMClsQNxHKE_e_0VYe60etB"; char ssid[] = "hassio"; char pass[] = "12345678"; BlynkTimer timer; #include "SoftwareSerial h"; #include "Hshopvn_Pzem004t_V2 h" #define RX_PZEM D7 #define TX_PZEM D6 Hshopvn_Pzem004t_V2 pzem1 (TX_PZEM, RX_PZEM); unsigned int pz_u_fl; unsigned int pz_i_fl; unsigned int pz_p_fl; unsigned int pz_e_fl; void setup () { Serial begin (115200); delay (100); pzem1 begin (); pzem1 setTimeout (100); Blynk begin (auth, ssid, pass); timer setInterval (5000, readData); } void loop () { Blynk run (); timer run (); } 65 void readData () { pzem_info pzemData = pzem1 getData (); pz_u_fl = pzemData volt; pz_i_fl = pzemData ampe*1000; pz_p_fl = pzemData power; pz_e_fl = pzemData energy; PZEM_Debug_Data (); Blynk virtualWrite (V8, pz_u_fl); delay (10); Blynk virtualWrite (V9, pz_i_fl); delay (10); Blynk virtualWrite (V10, pz_p_fl); delay (10); Blynk virtualWrite (V11, pz_e_fl); delay (10); } BLYNK_CONNECTED () { Blynk syncAll (); } BLYNK_WRITE (V12) { Serial print (F ("V12: ")); Serial println (param asInt ()); } BLYNK_WRITE (V13) { Serial print (F ("V13: ")); Serial println (param asInt ()); } BLYNK_WRITE (V14) 66 { Serial print (F ("V14: ")); Serial println (param asInt ()); } BLYNK_WRITE (V15) { Serial print (F ("V15: ")); Serial println (param asInt ()); } void PZEM_Debug_Data () { Serial println ("u1: " + String (pz_u_fl)); Serial println ("i1: " + String (pz_i_fl)); Serial println ("p1: " + String (pz_p_fl)); Serial println ("e1: " + String (pz_e_fl)); } Chương trình code web var isEmpty = function (obj) { return Object keys (obj) length === 0; }; var requestApi = {}; requestApi makeGetData = function (data) { var url = '?'; var obj = Object assign ({}, data); if (!isEmpty (obj)) { for (var prop in obj) { if (obj hasOwnProperty (prop)) { url += prop + '=' + obj[prop] + "&"; } } } 67 return url replace (/ $/g, ""); }; requestApi makePostData = function (data) { var formData = new FormData; var obj = Object assign ({}, data); if (!isEmpty (obj)) { for (var prop in obj) { if (obj hasOwnProperty (prop)) { formData append (prop, obj[prop]); } } } return formData; }; requestApi send = function (method, server, path, data) { if (method === 'GET') return this get (server, path, data); else if (method === 'POST') return this post (server, path, data); }; requestApi get = function (server, path, data) { var query = this makeGetData (data); return new Promise (function (resolve, reject) { var req = new XMLHttpRequest (); req onreadystatechange = function () { if (req readyState === 4) { if (req status === 200) { var data = JSON parse (req responseText); resolve (data); } else reject (Error (req statusText)); } }; req onerror = function () { reject (Error ("Error")); 68 }; req open ("GET", server + path + query, true); req send (); }); }; requestApi post = function (server, path, data) { var formData = this makePostData (data); return new Promise (function (resolve, reject) { var req = new XMLHttpRequest (); req onreadystatechange = function () { if (req readyState === 4) { if (req status === 200) { var data = JSON parse (req responseText); resolve (data); } else reject (Error (req statusText)); } }; req onerror = function () { reject (Error ("Error")); }; req open ("POST", server + path, true); req setRequestHeader ( 'Content-Type', 'application/x-www-form-urlencoded' ); req send (formData); }); }; 69 ... thống điều khiển yêu cầu điều khiển qua mạng Internet, WiFi, 3G/4G tiện dụng điều khiển điện thoại thông minh Dự định em thiết kế hộp thông minh điều khiển thiết bị điện thông qua web server điều. .. nghệ thiết bị, hệ thống thơng minh dần tạo Các hệ thống điều khiển thông minh sử dụng rộng rãi đời sống, chẳng hạn hệ thống thông minh điều khiển thiết bị điện nhà Các dự án nhà thông minh ứng... và thiết bị khối: - Relay SRD5VDC: Relay nằm vị trí trung gian thiết bị điều khiển thiết bị cần điều khiển Có chức chuyển mạch tín hiệu điều khiển từ khối xử lý để điều khiển thiết bị có điện

Ngày đăng: 22/12/2021, 06:03

Nguồn tham khảo

Tài liệu tham khảo Loại Chi tiết
[1] “Giáo trình vi xử lý II”, Nguyễn Đình Phú, NXB ĐH Quốc Gia Tp. HCM, 2007 Sách, tạp chí
Tiêu đề: Giáo trình vi xử lý II
Nhà XB: NXB ĐH Quốc Gia Tp. HCM
[2] “Thiết kế và xây dựng hệ thống mô hình nhà thông minh”, Nguyễn Văn Lem, Đồ án tốt nghiệp, trường ĐHSPKT Tp. HCM, 2015 Sách, tạp chí
Tiêu đề: Thiết kế và xây dựng hệ thống mô hình nhà thông minh
[3] “Điện tử cơ bản”, Trần Thu Hà, NXB ĐH Quốc Gia Tp. HCM, 2013 Sách, tạp chí
Tiêu đề: Điện tử cơ bản
Nhà XB: NXB ĐH Quốc Gia Tp. HCM
[4] “Thiết kế, thi công mô hình hệ thống điều khiển thiết bị điện và giám sát nhà ”, Nguyễn Ngọc Lực, Đồ án tốt nghiệp, trường ĐHSPKT Tp. HCM, 2018 Sách, tạp chí
Tiêu đề: Thiết kế, thi công mô hình hệ thống điều khiển thiết bị điện và giám sát nhà
[5] “Giám sát điện năng qua Internet”, Đoàn Trung Tín, Đồ án tốt nghiệp, trường ĐHSPKT Tp. HCM, 2018 Sách, tạp chí
Tiêu đề: Giám sát điện năng qua Internet
[6] “ACIS Smart Home người lĩnh ấn tiên phong trong giải pháp nhà thông minh Việt Nam”, Nguyên An, 2017 Sách, tạp chí
Tiêu đề: ACIS Smart Home người lĩnh ấn tiên phong trong giải pháp nhà thông minh Việt Nam
[9] “Thiết kế và thi công hệ thống giám sát thiết bị điều khiển trong nhà kết hợp wifivà Lora”, Nguyễn Đức Dũy, Đồ án tốt nghiệp, trường ĐHSPKT Tp. HCM, 2018 Sách, tạp chí
Tiêu đề: Thiết kế và thi công hệ thống giám sát thiết bị điều khiển trong nhà kết hợp wifivà Lora
[10] “Hệ thống IoT điều khiển và giám sát ngôi nhà”, Huỳnh Xuân Dũng, Đồ án tốt nghiệp, trường ĐHSPKT Tp. HCM, 2018 Sách, tạp chí
Tiêu đề: Hệ thống IoT điều khiển và giám sát ngôi nhà
[11] “The Effects of Touch Screen Technology on the Usability of E- ReadingDevices” Sách, tạp chí
Tiêu đề: The Effects of Touch Screen Technology on the Usability of E-ReadingDevices
[7] https: //tudonghoa24. com/solution/giao-thuc-mqtt-trong-iot-la-gi-nhung-ung-dung-cua-mqtt-nhu-nao/ Khác

TỪ KHÓA LIÊN QUAN

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

TÀI LIỆU LIÊN QUAN

w