1. Trang chủ
  2. » Luận Văn - Báo Cáo

Thiết kế và thi công thiết bị giám sát, điều khiển kho mát từ xa

91 3 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 91
Dung lượng 2,51 MB

Nội dung

MỤC LỤC NHIỆM VỤ ĐỒ ÁN TỐT NGHIỆP i LỊCH TRÌNH THỰC HIỆN ĐỒ ÁN TỐT NGHIỆP ii LỜI CAM ĐOAN iii LỜI CẢM ƠN iv MỤC LỤC v LIỆT KÊ HÌNH VẼ vii LIỆT KÊ BẢNG x TÓM TẮT xii Chương TỔNG QUAN 1.1 ĐẶT VẤN ĐỀ 1.2 MỤC TIÊU .2 1.3 NỘI DUNG NGHIÊN CỨU 1.4 GIỚI HẠN 1.5 BỐ CỤC .3 Chương CƠ SỞ LÝ THUYẾT 2.1 HỆ THỐNG ĐIỀU KHIỂN VÀ GIÁM SÁT KHO LẠNH 2.2 ĐIỀU KHIỂN THIẾT BỊ BẰNG HỒNG NGOẠI 2.2.1 Đặc điểm tính chất tia hồng ngoại .5 2.2.2 Phân loại: 2.2.3 Ứng dụng tia hồng ngoại 2.2.4 Tín hiệu hồng ngoại sử dụng điều khiển từ xa 2.3 GIỚI THIỆU PHẦN CỨNG .9 2.3.1 Led thu phát hồng ngoại 2.3.2 Vi Điều Khiển 12 2.3.3 Cảm biến nhiệt .17 2.3.4 Relay 20 2.3.5 Module LM2596 21 2.3.6 Màn hình TFT 22 2.3.7 Sị nóng lạnh TEC12715 .23 2.3.8 Động quạt tản nhiệt 24 v MỤC LỤC 2.4 CHUẨN GIAO TIẾP SPI 25 2.4.1 Khái niệm 25 2.4.2 Nguyên lý hoạt động 26 2.5 GIỚI THIỆU ỨNG DỤNG TRÊN ĐIỆN THOẠI 26 2.5.1 Tổng quan hệ điều hành android 27 2.5.2 Điều khiển giám sát mơ hình kho mát điện thoại 28 Chương TÍNH TỐN VÀ THIẾT KẾ 29 3.1 GIỚI THIỆU .29 3.2 TÍNH TỐN VÀ THIẾT KẾ THIẾT BỊ 29 3.2.1 Thiết kế sơ đồ khối thiết bị 29 3.2.2 Tính tốn thiết kế mạch 30 3.2.3 Sơ đồ nguyên lý toàn mạch 36 Chương THI CÔNG HỆ THỐNG 39 4.1 GIỚI THIỆU 39 4.2 THI CÔNG HỆ THỐNG 39 4.2.1 Thi công bo mạch 41 4.2.2 Lắp ráp, kiểm tra thi cơng mơ hình 43 4.3 LẬP TRÌNH HỆ THỐNG .44 4.3.1 Lưu đồ giải thuật 44 4.3.2 Phần mềm lập trình cho vi điều khiển 50 4.3.3 Phần mềm lập trình Android Studio 52 4.3.4 Phần mềm lập trình website .54 4.4 VIẾT TÀI LIỆU HƯỚNG DẪN SỬ DỤNG, THAO TÁC 54 Chương KẾT QUẢ-NHẬN XÉT-ĐÁNH GIÁ .57 Chương KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN .62 6.1 KẾT LUẬN .62 6.2 HƯỚNG PHÁT TRIỂN 62 TÀI LIỆU THAM KHẢO 63 PHỤ LỤC 65 vi LIỆT KÊ HÌNH VẼ Hình Trang Hình 2.1 Hệ thống giám sát nhiệt độ cho kho lạnh PLCPis Hình 2.2 Thiết bị điều khiển nhiệt độ kho lạnh ECA-GPIs4.4EZ Hình 2.3 Đặc điểm tia hồng ngoại [8] Hình 2.4 Dạng sóng tín hiệu điều khiển từ remote hồng ngoại Hình 2.5 Hình ảnh remote thực tế Hình 2.6 Minh họa gói tin NEC Hình 2.7 Minh họa hình dạng khung truyền theo chuẩn NEC, cho địa 00h (00000000b) lệnh ADh (10101101b) Hình 2.8 Mã HEX IR Máy điều hịa khơng khí sử dụng mã hóa NEC Hình 2.9 Hình ảnh thực tế sơ đồ chân TL 1838 10 Hình 2.10 Sơ đồ góc khoảng cách nhận sóng 10 Hình 2.11 Nguyên lý thu hồng ngoại 11 Hình 2.12 LED phát hồng ngoại IR333-A 11 Hình 2.13 Sơ đồ nguyên lý phát hồng ngoại 12 Hình 2.14 Module ESP8266 NodeMCU 13 Hình 2.15 Sơ đồ chân Node MCU 13 Hình 2.16 Hình ảnh thực tế sơ đồ chân ESP8266-12E 14 Hình 2.17 Mặt trước sau module ESP32 NodeMCU 15 Hình 2.18 ESP32-WROOM-32 16 Hình 2.19 Sơ đồ chức chân ESP32 NodeMCU 17 Hình 2.20 Hình ảnh cảm biến DHT22 thực tế 18 Hình 2.21 Quy trình tổng thể 19 Hình 2.22 Chỉ số liệu “0” 19 Hình 2.23 Chỉ số liệu “1” 20 Hình 2.24 Hình ảnh thực tế Relay 20 Hình 2.25 Hình ảnh thực tế module ổn áp LM2596 21 Hình 2.26 Hướng dòng điện module LM2596 22 Hình 2.27 Màn hình TFT 2.4 inch ILI9341 23 Hình 2.28 Sị nóng lạnh TEC 12715 24 vii Hình 2.29 Quạt tản nhiệt 24 Hình 2.30 Kết nối SPI hai thiết bị 25 Hình 2.31 Kết nối SPI nhiều thiết bị 26 Hình 2.32 Các chế độ làm việc SPI 26 Hình 2.33 Truyền liệu theo chuẩn SPI 27 Hình 3.1 Sơ đồ khối thiết bị 29 Hình 3.2 Sơ đồ khối vi điều khiển 31 Hình 3.3 Sơ đồ kết nối vi điều khiển với TFT thông qua ESP32 32 Hình 3.4 Sơ đồ kết nối vi điều khiển cảm biến DHT22 33 Hình 3.5 Sơ đồ kết nối khối cơng suất 34 Hình 3.6 Sơ đồ nguyên lý nguồn 35 Hình 3.7 Sơ đồ nguyên lý toàn mạch 38 Hình 4.1 Mạch PCB top 39 Hình 4.2 Mạch PCB bottom 40 Hình 4.3 Sơ đồ bố trí linh kiện mạch (Mặt - Mặt dưới) 41 Hình 4.4 Mặt mạch sau hàn linh kiện 43 Hình 4.5 Mạch thiết bị thực tế 43 Hình 4.6 Lưu đồ giải thuật hệ thống 45 Hình 4.7 Lưu đồ giải thuật chế độ Auto 46 Hình 4.8 Lưu đồ giải thuật chế độ Manual 47 Hình 4.9 Lưu đồ giải thuật Webserver 48 viii Hình 4.10 Lưu đồ điều khiển ứng dụng điện thoại 49 Hình 4.11 Giao diện lập trình phần mềm Arduino IDE 51 Hình 4.12 Giao diện project Android 52 Hình 4.13 Giao diện App điều khiển 53 Hình 4.14 Giao diện truy cập hệ thống 55 Hình 4.15 Giao diện truy cập bảng điều khiển 55 Hình 4.16 Lựa chọn nhiệt độ cài đặt mà người dùng muốn điều khiển 56 Hình 4.17 Giao diện điều khiển hệ thống 56 Hình 4.18 Giao diện liệu giám sát 57 Hình 4.19 Giao diện liệu điều khiển 57 Hình 5.1 Mơ hình giám sát điều khiển 58 Hình 5.2 Thơng số nhiệt độ, độ ẩm, trạng thái sò chế độ auto 59 Hình 5.3 Thơng số nhiệt độ, độ ẩm, trạng thái sò chế độ manual 59 ix LIỆT KÊ BẢNG Bảng Trang Bảng 2.1 Thông số TL1838 10 Bảng 2.2 Chức chân ESP8266-12E 14 Bảng 4.1 Danh sách linh kiện 42 Bảng 4.2 Chức biểu tượng công cụ 51 x DANH SÁCH TỪ VIẾT TẮT IOT : Internet of Things PLC : Program Logic Controller IR : Infrared Radiation NIR : Near Infrared Radiation MIR : Medium Infrared Radiation FIR : Far Infrared Radiation LED : Light Emitting Diode Wifi : Wireless Fidelity ID : Identity Document MCU : MicroController Unit xi TÓM TẮT Ngày với tiến khoa học kỹ thuật đặc biệt cơng nghiệp 4.0 nhu cầu nâng cao sống người, giảm bớt sức lao động tiết kiệm thời gian ngày quan tâm, để áp ứng nhu cầu nhiều lĩnh vực phải phát triển theo đặc biệt ngành thuộc lĩnh vực khoa học kĩ thuât Sự phát triển lĩnh vực mang lại nhiều ứng dụng thông minh giúp điều tưởng chừng xa vời trở thành thực Một ứng dụng khoa học kỹ thuât phải kể đến hệ thống giám sát, điều khiển từ xa Những năm gần điều khiển từ xa liên tục cải tiến, nâng cấp phát triển Chúng thành phần thiết bị điện tử tivi, đầu đĩa, quạt, điều hòa đặt biệt chúng người dùng làm điều khiển mà không cần dây dẫn Điều khiển từ xa thường sử dụng tia hồng ngoại giúp người dùng điều khiển thiết bị thơng qua số nút nhấn để thay đổi thiết lập khác Trong thực tế, tất chức thiết bị có số nút chủ yếu Thơng thường tín hiệu điều khiển từ xa mã hóa đồng với thiết bị thuộc dịng sản phẩm hay thương hiệu cụ thể nhà sản xuất quy định Đầu phát tín hiệu điều khiển từ xa thường đèn LED (diode phát quang), điều khiển cần có khoảng khơng gian khơng có vật cản chắn thiết bị chính, tín hiệu phản xạ qua gương Với ý tưởng giải vấn đề bất cập việc làm mát cho loại nơng sản, vacxin, phịng máy tính/sever, container, xe chở hàng hóa bảo quản hoa nên nhóm thực đưa đề tài: “Thiết kế thi công hệ thống giám sát điều khiển kho mát từ xa” Hệ thống giám sát nhiệt độ, độ ẩm từ nhiều kho khác nhau, có khả điều khiển sị thơng qua ứng dụng, điều khiển giám sát từ xa thông qua ứng dụng điện thoại thơng minh máy tính.Với đề tài này, nhóm thực hy vọng làm sở nghiên cứu cho nhóm sau mở rộng, phát triển Nếu điều chỉnh tốt, ý tưởng kết hợp với kho lớn để trở thành hệ thống lớn đáp ứng nhu cầu điều khiển, quản lí tất thiết bị kho cách thông minh, nâng cao đời sống tiện ích cho người xii CHƯƠNG TỔNG QUAN Chương TỔNG QUAN 1.1 ĐẶT VẤN ĐỀ Ngày nông nghiệp phát triển mạnh, sản phẩm tạo ngày phong phú khả lưu thông hàng hóa nước cịn gặp nhiều khó khăn nhu cầu lưu trữ hàng hóa kho ngày nhiều [1] Việc kiểm soát nhiệt độ, độ ẩm bảo quản, lưu trữ sản phẩm công-nông nghiệp kho hàng quan trọng Thông thường với loại hàng hóa lưu trữ, nhiệt độ, độ ẩm phịng lưu trữ phải ln trì mức định [2] Ở nước ta có nhiều loại hàng hóa, đặc biệt nơng sản cần bảo quản việc giám sát quản lí bảo quản làm theo phương pháp thủ cơng cần cán kỹ thuật tiến hành đo đạc, kiểm tra để đưa giải pháp để tăng giảm nhiệt độ, độ ẩm theo yêu cầu [3] Cũng giống trên, phịng thí nghiệm, bệnh viện, nhà kính trồng cảnh, khu sản xuất rau sạch, kho bảo quản nông sản, kỹ thuật viên, người quản lý cần giám sát yếu tố nhiệt độ, độ ẩm, ánh sáng, để đưa phương án xử lý vấn đề xảy [3] Đặc biệt số lượng kho hàng hay khu nuôi trồng cần giám sát lớn với phương pháp thủ cơng nhiều thời gian công sức mà công việc lại không hiệu Cùng với phát triển mạnh mẽ công nghệ thông tin, công nghệ kỹ thuật tiên tiến áp dụng nhằm giải vấn đề trên, ví dụ thiết bị giám sát, điều khiển nhà kính, khu sản xuất, kho hàng hóa thông qua internet [4] giải gần tuyệt đối vấn đề trên, thiết bị hoạt động với thiết bị điều khiển tín hiệu điện, cịn với nhà kính, kho hàng lắp đặt thiết bị, xử lý trung tâm điều khiển qua remote hồng ngoại cịn hạn chế Chính thế, nhằm giải vấn đề nhóm thực định chọn đề tài: “Thiết kế thi công hệ thống giám sát, điều khiển kho mát từ xa ” để đáp ứng nhu cầu điều khiển, giám sát cho kho hàng hóa, nhà kính điều khiển thuận tiện BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH CHƯƠNG TỔNG QUAN Với sản phẩm thiết kế đo nhiệt độ, độ ẩm kho lưu trữ có phù hợp với nơng sản, sản phẩm lưu trữ hay không gửi liệu điện thoại, web để người quản lý kiểm sốt đưa giải pháp nhanh cho việc quản lý, diện rộng, đơn giản hóa việc giám sát, tiết kiệm nguồn nhân lực quản lý 1.2 MỤC TIÊU Thiết kế thiết bị giám sát điều khiển kho mát từ xa thơng qua ứng dụng IOT Trong sử dụng ESP-32 làm vi điều khiển trung tâm, lưu trữ liệu Database, module thu, phát tín hiệu hồng ngoại hiển thị hình TFT Thiết bị có khả điều khiển nhận tín hiệu từ remote điều khiển hồng ngoại để giám sát điều khiển thiết bị thông qua remote thông qua ứng dụng điện thoại thông minh sử dụng hệ điều hành Android web 1.3 NỘI DUNG NGHIÊN CỨU ▪ Tìm hiểu tín hiệu hồng ngoại ▪ Tìm hiểu cách thu phát phương thức điều khiển tia hồng ngoại ▪ Thiết kế giao diện giám sát, điều khiển điện thoại Android Studio ▪ Thiết kế, thi cơng lập trình cho khối giám sát nhiệt độ ▪ Thiết kế thi công mô hình thiết bị 1.4 GIỚI HẠN Các thiết bị ngoại vi điều khiển chiều từ khối xử lý thiết bị hư hỏng không gửi trạng thái thiết bị cảnh báo theo chiều ngược lại tới khối xử lý Mơ hình với kích thước 40 dài x 30 rộng x 30 cao cm, mơ hình nhỏ Mạch hoạt động ổn định môi trường từ – 50 độ C, vượt ảnh hưởng đến kết đo từ cảm biến gây hư hỏng toàn mạch BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH while (1) { RemoteIR(); ButtonMode(); ButtonControlSo(); if (millis() - last >= 1000) { Serial.println("Start MANULAL"); checkwifi(); Read_DHT22(); RemoteIR(); hienthi(); Read_MySql(); InsertDB(String(Smode), String(nhietdocaidat), String(nhietdo), String(doam), String(trangthaiso1), String(trangthaiso2)); last = millis(); } if (Smode == 1) { break; } } } } *CHƯƠNG TRÌNH KIỂM TRA TÍN HIỆU WIFI void checkwifi() { countwifi++; if(countwifi >= 5) { countwifi = 0; if(WiFi.status() != WL_CONNECTED) { ConnectToWifi(); } } } void ConnectToWifi() { Serial.print ("Connecting to "); Serial.print (wifi_name); WiFi.begin (wifi_name, wifi_pass); // Connecting to the wifi network while (WiFi.status() != WL_CONNECTED) // Waiting for the response of wifi network { delay (500); Serial.print ("."); dem++; if(dem >= 20) { dem = 0; break; } } if(WiFi.status() == WL_CONNECTED) { Serial.println("Connection WIFI Void LOOP!!!"); } else { Serial.println("Not Connect WIFI Void LOOP!!!"); } } *CHƯƠNG TRÌNH NÚT NHẤN ĐIỀU KHIỂN SỊ, MODE void ButtonControlSo() { if (digitalRead(NutSo1) == LOW) { delay(200); while (1) { delay(300); if (digitalRead(NutSo1) == HIGH) { Serial.println("Dieu khiển Sò 1"); ControlSo1(); break; } } } if (digitalRead(NutSo2) == LOW) { delay(200); while (1) { delay(300); if (digitalRead(NutSo2) == HIGH) { Serial.println("Dieu khiển Sò 2"); ControlSo2(); break; } } } } void ButtonMode() { if (digitalRead(NutMode) == LOW) { delay(200); while (1) { delay(300); if (digitalRead(NutMode) == HIGH) { Serial.println("Chuyen mode Button"); if (Smode == 1) { Smode = 2; UpdateMode(String(Smode)); } else if (Smode == 2) { Smode = 1; UpdateMode(String(Smode)); } break; } } } } void RemoteIR() { if (irrecv.decode(&results)) { Serial.println(results.value); giaitri = results.value; Serial.print("giaitri: "); /* 16753245 = mode 16736925 = ON OFF so 16769565 = ON OFF sò 16720605 = tăng nhiệt độ cài đăt 16712445 = giảm nhiệt độ cài đặt */ if (giaitri == 16753245) Serial.println(giaitri); { Serial.println("Chuyển mode"); if (Smode == 1) { Smode = 2; UpdateMode(String(Smode)); } else if (Smode == 2) { Smode = 1; UpdateMode(String(Smode)); } } else { if (Smode == 2) { if (giaitri == 16736925) { Serial.println("ON OFF so 1"); ControlSo1(); } if (giaitri == 16769565) { Serial.println("ON OFF so 2"); ControlSo2(); } if (giaitri == 16720605) { Serial.println("Tang nhiet độ cài đặt"); Tangnhietdo(); } if (giaitri == 16712445) { Serial.println("Giảm nhiet độ cài đặt"); Giamnhietdo() } } } irrecv.resume(); } } delay(1000); *CHƯƠNG TRÌNH ĐIỀU KHIỂN TĂNG GIẢM NHIỆT ĐỘ CÀI void Tangnhietdo() { nhietdocaidat++; if (nhietdocaidat >= 30) { nhietdocaidat = 30; } UpdateNhietdo(String(nhietdocaidat)); } void Giamnhietdo() { nhietdocaidat ; if (nhietdocaidat = nhietdocaidat) { trangthaiso1 = 1; trangthaiso2 = 1; digitalWrite(Relay1, LOW); digitalWrite(Relay2, LOW);// relay td muc thap nen ON } } *CHƯƠNG TRÌNH APP ĐIỀU KHIỂN void Mode() { publish(1); } void Up() { String chedo = ""; chedo = mode.toString(); print(chedo); if(chedo == "AUTO") { print("Không điều khiển"); ShowToask("BẠN ĐANG CHẾ ĐỘ AUTO KHÔNG THỂ ĐIỀU KHIỂN"); return; } else if(chedo == "MAN") { print("Được điều khiển"); publish(4); } } void Down() { String chedo = ""; chedo = mode.toString(); print(chedo); if(chedo == "AUTO") { print("Không điều khiển"); ShowToask("BẠN ĐANG CHẾ ĐỘ AUTO KHÔNG THỂ ĐIỀU KHIỂN"); return; } else if(chedo == "MAN") { print("Được điều khiển"); publish(5); } } void So1() { String chedo = ""; chedo = mode.toString(); print(chedo); if(chedo == "AUTO") { print("Không điều khiển"); ShowToask("BẠN ĐANG CHẾ ĐỘ AUTO KHÔNG THỂ ĐIỀU KHIỂN"); return; } else if(chedo == "MAN") { print("Được điều khiển"); publish(2); } } void So2() { String chedo = ""; chedo = mode.toString(); print(chedo); if(chedo == "AUTO") { print("Không điều khiển"); ShowToask("BẠN ĐANG CHẾ ĐỘ AUTO KHÔNG THỂ ĐIỀU KHIỂN"); return; } else if(chedo == "MAN") { print("Được điều khiển"); publish(3); } } Future getDataPHP() async { var host = 'http://192.168.0.104:82//DatabasePHP4/read-data-web.php'; http.Response response = await http.get(host); var Dataphp = response.body; var DataJsonObject = json.decode(Dataphp); print('$DataJsonObject'); print('nhietdo :${DataJsonObject['nhietdo']}'); print('doam :${DataJsonObject['doam']}'); setState(() { if(DataJsonObject['nhietdo'] != null) { nhietdo = DataJsonObject['nhietdo']; } if(DataJsonObject['doam'] != null) { doam = DataJsonObject['doam']; } if(DataJsonObject['nhietdocaidat'] != null) { nhietdocai = DataJsonObject['nhietdocaidat']; } if(DataJsonObject['mode'] != null) { if(DataJsonObject['mode'] == "1") { mode = "AUTO"; } else if(DataJsonObject['mode'] == "2") { mode = "MAN"; } } if(DataJsonObject['trangthaiso1'] != null) { if(DataJsonObject['trangthaiso1'] == "1") { TTSo1 = "ON"; BtnSo1 = "OFF"; } else if(DataJsonObject['trangthaiso1'] == "0") { TTSo1 = "OFF"; BtnSo1 = "ON"; } } if(DataJsonObject['trangthaiso2'] != null) { if(DataJsonObject['trangthaiso2'] == "1") { TTSo2 = "ON"; BtnSo2 = "OFF"; } else if(DataJsonObject['trangthaiso2'] == "0") { TTSo2 = "OFF"; BtnSo2 = "ON"; } } }); } void initState() { ShowToask("WELCOME APP IOT"); Timer timer = Timer.periodic(new Duration(seconds: 1), (timer) { getDataPHP(); }); super.initState(); } void publish(int index) async { /* insdexx = Mode index = on so index = so index = up nd index = down nd */ if(index == 1) { // mode String chedo = ""; chedo = mode.toString(); String tx_mode = ""; if(chedo == "AUTO") { tx_mode = "2"; } else if(chedo == "MAN") { tx_mode = "1"; } final response = await http.post('http://192.168.0.104:82//DatabasePHP4/UpdateMode.php', body: { "Smode":tx_mode.trim(), }); print(response.body); ShowToask("Đã Send!!!"); } else if(index == 2) { // so String tx_so1 = ""; String ttso1 = ""; ttso1 = TTSo1.toString(); if(ttso1 == "ON") { tx_so1 = "0"; } else if(ttso1 == "OFF") { tx_so1 = "1";} final response = await http.post('http://192.168.0.104:82//DatabasePHP4/UpdateSo1.php', body: { "trangthaiso1":tx_so1.trim(), }); print(response.body); ShowToask("Đã Send!!!"); } else if(index == 3) { // so String tx_so2 = ""; String ttso2 = ""; ttso2 = TTSo2.toString(); if(ttso2 == "ON") { tx_so2 = "0"; } else if(ttso2 == "OFF") { tx_so2 = "1";} final response = await http.post('http://192.168.0.104:82//DatabasePHP4/UpdateSo2.php', body: { "trangthaiso2":tx_so2.trim(), }); print(response.body); ShowToask("Đã Send!!!"); } else if(index == 4) { // UP // so int tx_giatri2 = 0; String giatri = ""; giatri = nhietdocai.toString(); tx_giatri2 = int.parse(giatri); tx_giatri2++; if(tx_giatri2 >= 30) { tx_giatri2 = 30; } final response = await http.post('http://192.168.0.104:82//DatabasePHP4/UpdateNhietdo.php', body: { "nhietdocaidat":tx_giatri2.toString().trim(), }); print(response.body); ShowToask("Đã Send!!!"); } if(index == 5) { int tx_giatri2 = 0; String giatri = ""; giatri = nhietdocai.toString(); // down tx_giatri2 = int.parse(giatri); tx_giatri2 ; if(tx_giatri2

Ngày đăng: 07/06/2022, 22:39

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

  • Đang cập nhật ...

TÀI LIỆU LIÊN QUAN

w