(Đồ án hcmute) xây dựng mô hình xe trò chơi trẻ em ứng dụng công nghệ ocr

87 3 0
(Đồ án hcmute) xây dựng mô hình xe trò chơi trẻ em ứng dụng công nghệ ocr

Đ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

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 CÔNG NGHỆ KỸ THUẬT ĐIỆN TỬ TRUYỀN THƠNG XÂY DỰNG MƠ HÌNH XE TRỊ CHƠI TRẺ EM ỨNG DỤNG CÔNG NGHỆ OCR GVHD:Nguyễn Văn Hiệp SVTT:Nguyễn Minh Dũng MSSV:15141122 SVTT:Đặng Minh Lâm MSSV:15141193 SKL 0 3 Tp Hồ Chí Minh, tháng 08/2019 an 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: XÂY DỰNG MÔ HÌNH XE TRỊ CHƠI TRẺ EM ỨNG DỤNG CƠNG NGHỆ OCR GVHD: ThS Nguyễn Văn Hiệp SVTH: MSSV: Nguyễn Minh Dũng 15141122 Đặng Minh Lâm 15141193 TP Hồ Chí Minh - 08/2019 an TRƢỜNG ĐH SPKT TP HỒ CHÍ MINH KHOA ĐIỆN-ĐIỆN TỬ BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH CỘNG HÒA XÃ HỘI CHỦ NGHĨA VIỆT NAM ĐỘC LẬP - TỰ DO - HẠNH PHÚC o0o Tp HCM, ngày 10 tháng 03 năm 2020 NHIỆM VỤ ĐỒ ÁN TỐT NGHIỆP Nguyễn Minh Dũng MSSV: 15141122 Đặng Minh Lâm MSSV: 15141193 Chuyên ngành: Điện tử công nghiệp Mã ngành: 41 Hệ đào tạo: Đại học quy Mã hệ: Khóa: 2015 Lớp: 15141DT1B I TÊN ĐỀ TÀI: XÂY DỰNG MƠ HÌNH XE TRÕ CHƠI TRẺ EM ỨNG DỤNG CÔNG NGHỆ OCR II NHIỆM VỤ Các số liệu ban đầu: - Vi điều khiển: Arduino Uno R3 - Các loại module: L298N, HC - 06 - Cảm biến: Thanh cảm biến hồng ngoại TCRT5000L - Nguồn: Pin 18650 Nội dung thực hiện: - Tìm hiểu nguyên lý hoạt động cảm biến hồng ngoại TCRT5000L - Tìm hiểu chuẩn truyền thông nhƣ USART, SPI - Thiết kế thi cơng mơ hình xe thơ - Thiết kế thực dây thiết bị mô hình xe - Thiết kế thực mơ hình đƣờng chạy dành cho mơ hình xe - Thiết kế thực mơ hình biển báo gắn mơ hình đƣờng chạy - Thiết kế phần mềm thơng báo điện thoại Android - Viết chƣơng trình điều khiển cho Arduino, nạp code chạy thử nghiệm sản phẩm - Chỉnh sửa hoàn thiện hệ thống - Thực viết luận văn báo cáo - Tiến hành báo cáo đề tài tốt nghiệp Họ tên sinh viên: III NGÀY GIAO NHIỆM VỤ: 10/3/2020 IV NGÀY HOÀN THÀNH NHIỆM VỤ: 20/7/2020 V HỌ VÀ TÊN CÁN BỘ HƢỚNG DẪN: ThS Nguyễn Văn Hiệp CÁN BỘ HƢỚNG DẪN BM ĐIỆN TỬ CÔNG NGHIỆP – Y SINH an TRƢỜNG ĐH SPKT TP HỒ CHÍ MINH KHOA ĐIỆN-ĐIỆN TỬ BỘ MƠN ĐIỆN TỬ CƠNG NGHIỆP – Y SINH CỘNG HỊA XÃ HỘI CHỦ NGHĨA VIỆT NAM ĐỘC LẬP - TỰ DO - HẠNH PHÚC o0o Tp HCM, ngày 14 tháng 05 năm 2020 LỊCH TRÌNH THỰC HIỆN ĐỒ ÁN TỐT NGHIỆP Họ tên sinh viên 1: Nguyễn Minh Dũng MSSV: 15141122 Họ tên sinh viên 2: Đặng Minh Lâm MSSV: 15141193 Tên đề tài: XÂY DỰNG MƠ HÌNH XE TRÕ CHƠI TRẺ EM ỨNG DỤNG CƠNG NGHỆ OCR Xác nhận Tuần/ngày Nội dung GVHD Tuần Tìm hiểu cảm biến dị line Tuần Tuần Tuần Tìm hiểu Arduino Uno R3 Module L298N Giao tiếp module cảm biến dò line TCRT5000 Arduino Giao tiếp Module L298N Arduino Tuần Tuần Kết nối phần cứng Module cảm biến dò line, Module L298N, Module Bluetooth với Arduino Tuần Tuần 10 Tuần 11 Tuần 12 Tìm hiểu ứng dụng Android Studio Thiết kế ứng dụng điện thoại android Hồn thiện xe dị line Viết chƣơng trình cho xe chạy theo line Viết chƣơng trình gửi liệu từ app Arduino thông qua Bluetooth Tuần 13 Tuần 14 Tuần 15 Tuần 16 Tuần 17 Thiết kế thi cơng mơ hình Tiến hành chạy thử Kiểm tra lại phần cứng, giao tiếp phần cứng ứng dụng điện thoại Kiểm tra lại toàn hệ thống Tiến hành viết báo cáo cho đề tài Hoàn thiện đề tài GV HƢỚNG DẪN (Ký ghi rõ họ tên) an iii LỜI CAM ĐOAN Đề tài nhóm tự thực dƣới hƣớng dẫn giảng viên ThS Nguyễn Văn Hiệp Đề tài 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 Nhóm thực đề tài Nguyễn Minh Dũng an Đặng Minh Lâm iv LỜI CẢM ƠN Nhóm em xin gửi lời cảm ơn sâu sắc đến Thầy Nguyễn Văn Hiệp, ngƣời trực tiếp hƣớng dẫn giúp đỡ tạo điều kiện để nhóm hồn thành tốt đề tài Mặc dù kiến thức nhóm cịn hạn chế nhƣng thầy nhiệt tình giúp đỡ, vạch hƣớng cho phù hợp Xin chân thành cảm ơn quý thầy cô Giảng viên khoa Điện - Điện Tử, trƣờng Đại Học Sƣ Phạm Kỹ Thuật Tp.HCM giúp đỡ nhóm q trình thực đồ án Ngồi nhóm cịn nhận quan tâm, giúp đỡ gia đình, bạn bè, anh chị trƣờng để hoàn thành đồ án Do kiến thức cịn hạn chế nên q trình thực khơng tránh khỏi sai sót mong thầy bạn góp ý để nhóm hồn thành đồ án tốt Xin chân thành cảm ơn! Nhóm thực đề tài Nguyễn Minh Dũng an Đặng Minh Lâm v MỤC LỤC Trang bìa i NHIỆM VỤ ĐỒ ÁN TỐT NGHIỆP ii LỊCH TRÌNH THỰC HIỆN ĐỒ ÁN TỐT NGHIỆP iii LỜI CAM ĐOAN iv LỜI CẢM ƠN v MỤC LỤC vi LIỆT KÊ HÌNH viii LIỆT KÊ BẢNG .ix TÓM TẮT .xi 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 .2 CHƢƠNG 2: CƠ SỞ LÝ THUYẾT .4 2.1 TỔNG QUAN VỀ CÔNG NGHỆ OCR 2.2 CÁC CHUẨN TRUYỀN DỮ LIỆU .6 2.2.1 Chuẩn giao tiếp UART 2.2.2 Chuẩn truyền thông SPI 2.3 TỔNG QUAN VỀ HỆ ĐIỀU HÀNH ANDROID 2.3.1 Khái niệm hệ điều hành android 2.3.2 Giao diện 2.3.3 Ứng dụng 11 2.3.4 Ƣu nhƣợc điểm hệ điều hành Android 13 CHƢƠNG 3: TÍNH TOÁN VÀ THIẾT KẾ 14 3.1 ĐẶT VẤN ĐỀ .14 3.2 GIỚI THIỆU VỀ HỆ THỐNG VÀ SƠ ĐỒ KHỐI .14 3.3 THIẾT KẾ VÀ TÍNH TỐN CÁC MƠ HÌNH 15 3.3.1 Thiết kế mơ hình xe 15 3.3.2 Thiết kế mơ hình đƣờng (line) xe chạy 17 3.3.3 Thiết kế mô hình biển báo 19 3.4 THIẾT KẾ VÀ TÍNH TỐN CÁC KHỐI 19 3.4.1 Sơ đồ khối mạch điều khiển xe 19 an vi 3.4.2 Thiết kế khối 21 CHƢƠNG 4: THI CÔNG HỆ THỐNG 34 4.1 GIỚI THIỆU 34 4.2 THI CÔNG HỆ THỐNG .34 4.2.1 Sơ đồ nguyên lý 34 4.2.2 Thi công Board mạch 36 4.3 ĐÓNG GĨI VÀ THI CƠNG MƠ HÌNH 38 4.3.1 Đóng gói mơ hình xe 38 4.3.2 Hồn tất mơ hình đƣờng chạy 41 4.4 LẬP TRÌNH HỆ THỐNG 42 4.4.1 Lƣu đồ giải thuật 42 4.4.2 Phần mềm lập trình cho vi điều khiển 48 4.4.3 Phần mềm lập trình cho điện thoại, máy tính .50 4.5 VIẾT TÀI LIỆU HƢỚNG DẪN SỬ DỤNG, THAO TÁC 52 CHƢƠNG 5: KẾT QUẢ_NHẬN XÉT_ĐÁNH GIÁ 53 5.1 GIỚI THIỆU 53 5.2 KẾT QUẢ ĐẠT ĐƢỢC 53 5.3 KẾT QUẢ THỰC NGHIỆM .53 5.3.1 Thiết kế thi công tủ .54 5.3.2 Phần cứng, giao diện điều khiển 56 5.3.3 App android 57 5.4 NHẬN XÉT, ĐÁNH GIÁ 59 5.4.1 Nhận xét 59 5.4.2 Đánh giá 59 CHƢƠNG 6: KẾT LUẬN VÀ HƢỚNG PHÁT TRIỂN 61 6.1 KẾT LUẬN 61 6.2 HƢỚNG PHÁT TRIỂN 61 TÀI LIỆU THAM KHẢO 62 PHỤ LỤC .63 an vii LIỆT KÊ HÌNH Hình Trang Hình 2.1 Giản đồ truyền liệu UART Hình 2.2 Giao tiếp SPI Hình 2.3.Logo hệ điều hành Android Hình 2.4 Giao diện thiết bị chạy hệ điều hành Android 10 Hình 2.5 Thanh trạng thái thiết bị chạy hệ điều hành Android 11 Hình 2.6 Kho ứng dụng Google Play Store 12 Hình 3.1 Hình ảnh minh họa cho hệ thống 14 Hình 3.2 Phân bố linh kiện dự kiến mặt xe 16 Hình 3.3 Phân bố linh kiện dự kiến mặt dƣới xe 17 Hình 3.4 Mơ hình đƣờng (line) xe chạy .18 Hình 3.5 Sơ đồ khối xe 20 Hình 3.6 Board arduino UNO R3 22 Hình 3.7 Sơ đồ chân Arduino Uno .23 Hình 3.8 Thanh cảm biến dò line 27 Hình 3.9 Module Bluetooth HC - 06 28 Hình 3.10 Module L298N 29 Hình 3.11 Động DC giảm tốc 30 Hình 3.12 Cịi chíp .31 Hình 3.13 Chiếc điện thoại sử dụng cho hệ thống .32 Hình 4.1 Sơ đồ nguyên lý toàn mạch 34 Hình 4.2 Sơ đồ mạch làm gọn dây cho xe phần nguồn 35 Hình 4.3 Sơ đồ mạch làm gọn dây cho xe phần Bluetooth Buzzer 35 Hình 4.4 Mạch in theo sơ đồ mạch hình 4.3 36 Hình 4.5 Mạch in thi cơng theo sơ đồ mạch hình 4.3 36 Hình 4.6 Mạch in theo sơ đồ mạch hình 4.2 37 Hình 4.7 Mạch in thi cơng theo sơ đồ mạch hình 4.2 37 Hình 4.8 Hình ảnh mặt xe .38 Hình 4.9 Hình ảnh mặt dƣới xe 38 Hình 4.10 Hình ảnh xe đƣợc đóng hộp 39 Hình 4.11 Hình ảnh xe đƣợc đóng hộp 40 Hình 4.12 Hình ảnh xe đƣợc đóng hộp 41 Hình 4.13 Mơ hình đƣờng chaỵ 41 Hình 4.14 Lƣu đồ chƣơng trình thực chức dị line 42 Hình 4.15 Sơ đồ bố trí mắt hồng ngoại cảm biến 43 Hình 4.16 Lƣu đồ chƣơng trình thực chức xử lý liệu gởi 44 Hình 4.17 Hình ảnh mơ tả cách thức chọn hƣớng mắt hồng ngoại 45 Hình 4.18 Lƣu đồ chƣơng trình App Android .47 Hình 4.19 Giao diện phần mềm lập trình Arduino IDE .48 Hình 4.20 Giao diện phần mềm Android Studio 50 Hình 4.21 Giao diện phần thiết kế giao diện cho ứng dụng 51 Hình 5.1 Hình ảnh thực tế mơ hình đƣờng (line) xe chạy 54 Hình 5.2 Mơ hình xe bắt gặp lệnh “STOP” dừng lại hú còi 55 Hình 5.3 Các linh kiện đƣợc phân bố kết nối với 56 Hình 5.4 Giao diện app điện thoại .57 an viii Hình 5.5 Giao diện app điện thoại 57 Hình 5.6 Giao diện app điện thoại 58 an ix CHƢƠNG 6: KẾT LUẬN VÀ HƢỚNG PHÁT TRIỂN CHƢƠNG 6: KẾT LUẬN VÀ HƢỚNG PHÁT TRIỂN 6.1 KẾT LUẬN Sau khoảng 16 tuần nghiên cứu tìm hiểu, nhóm hồn thành đồ án thi cơng sản phẩm xe dị đƣờng ( line) ứng dụng cơng nghệ OCR đáp ứng đƣợc yêu cầu đặt ban đầu: - Sản phẩm đƣợc thi cơng hồn thiện, dây gọn gàng mang vào sử dụng - Các chức đƣợc đƣa hoạt động mƣợt mà, ổn định - App android có giao diện trực quan, dễ sử dụng - Thời gian trễ app tùy thuộc vào việc xe chạy ổn định bắt đƣợc chữ tốt - Thời gian hoạt động xe chƣa cao 6.2 HƢỚNG PHÁT TRIỂN - Thiết kế xe với mẫu mã đẹp mắt hơn, bắt mắt thu hút e nhỏ - Tăng dung lƣợng Pin để xe hoạt động nhiều - Bổ sung thêm tính nhƣ xe có đèn Led nhấp nháy, xe chạy lùi, quay vịng,… BỘ MƠN ĐIỆN TỬ CƠNG NGHIỆP – Y SINH an 61 TÀI LIỆU THAM KHẢO TÀI LIỆU THAM KHẢO Sách tham khảo [1] Nguyễn Văn Hiệp - Đinh Quang Hiệp, “Lập trình android ”, Nhà xuất ĐH Quốc Gia, Tp.HCM, 2015 [2] Nguyễn Đình Phú, “Giáo trình Vi xử lí ”, Trƣờng ĐHSPKT, Tp.HCM, 2013 [3] Văn Trọng Công – Phạm Thiên Đông, “Ứng dụng công nghệ OCR điều khiển Led màu sáng theo màu mong muốn”, Đồ án môn học trƣờng ĐHSPKT, Tp.HCM, Website tham khảo [1] www.arduino.vn [2] www.wikipedia.org [3] www.alldatasheet.com BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH an 62 PHỤ LỤC PHỤ LỤC Code Arduino  Chƣơng trình thực chức xe chạy theo line #include /*=========================================================================== =====================*/ /* L298N Pin define */ #define inA1 #define inA2 #define inB1 #define inB2 #define ENA 10 #define ENB 11 /* Traffic signs */ #define BOARD_STOP "stop" #define BOARD_FAST "fast" #define BOARD_TURN_LEFT "left" #define BOARD_TURN_RIGHT "right" #define BOARD_NORMAL "normal" /* IR-Pack Pin define */ #define IR_eye_1 15 #define IR_eye_2 16 #define IR_eye_3 17 #define IR_eye_4 18 #define IR_eye_5 19 /* IR current status */ #define LEFT_4 0b00001 #define LEFT_3 0b00011 #define LEFT_2 0b00010 #define LEFT_1 0b00110 #define MIDDLE 0b00100 BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH an 63 PHỤ LỤC #define RIGHT_1 0b01100 #define RIGHT_2 0b01000 #define RIGHT_3 0b11000 #define RIGHT_4 0b10000 /* PWM value for Motor*/ #define NORMAL_SPEED 85 #define FAST_SPEED 100 #define STOP_MOTOR /* Horn Pin define */ #define Horn #define MAX_WAIT_TIME_FOR_EXECUTE_MESSAGE 3000 /* Message from Phone*/ struct exec_message { bool is_executed; char message[20]; bool is_copied; }; /* Non-blocking timer */ struct non_blocking_timer { unsigned long time_start; bool timer_is_running; }; /*=========================================================================== =====================*/ /* Global variable*/ // Buffer to store message data from Bluetooth char mess_data[100]; // The index of buffer data uint8_t index_mess = 0; // Hold the lastest status of IR eye BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH an 64 PHỤ LỤC bool eye_status[5] = {false, false, false, false, false}; // This car is stop before ? static uint8_t pre_stop = 0; // Initalize soft serial to communicate with Bluetooth module SoftwareSerial Bluetooth(2, 3); // RX, TX // Store the Command (CMD) from Bluetooth exec_message phone_message = {false, "", false}; non_blocking_timer clean_message_timer = {0, false}; /*=========================================================================== =====================*/ /* Prototype */ void go_straight(); void go_back(); void turn_left(); void turn_right(); void stop_car(); /*================================*/ bool have_Bluetooth_message(); void checking_IR_eyes(); bool read_IR_num(int eye_no); void clean_all_after_execute_cmd(); void make_decision(int8_t status); void clean_buffer(); bool check_message_is_valid(); uint8_t check_eye_status(); /*=========================================================================== =====================*/ /* Setup step*/ void setup() { /* Setup serial port */ Serial.begin(9600); Bluetooth.begin(9600); BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH an 65 PHỤ LỤC /* Configure Horn pin */ pinMode(Horn, OUTPUT); /* Configure L298N control pin */ pinMode(inA1, OUTPUT); pinMode(inA2, OUTPUT); pinMode(inB1, OUTPUT); pinMode(inB2, OUTPUT); /* Configure Infrared module */ pinMode(IR_eye_1, INPUT); pinMode(IR_eye_2, INPUT); pinMode(IR_eye_3, INPUT); pinMode(IR_eye_4, INPUT); pinMode(IR_eye_5, INPUT); /* Configure channel of L298N */ pinMode(ENA, OUTPUT); pinMode(ENB, OUTPUT); /* Enable channel for motor speed*/ set_normal_speed(); delay(7000); } /*=========================================================================== =====================*/ /* Main loop */ void loop() { checking_IR_eyes(); have_Bluetooth_message(); /* Unblock to Debug IR status*/ // for (int i = 4; i >= 0; i ) // Serial.print(eye_status[i]); // Serial.print("\n"); if (clean_message_timer.timer_is_running) BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH an 66 PHỤ LỤC checking_timer(); choose_direction(); } /*=========================================================================== =====================*/ bool have_Bluetooth_message() { char charater_in; while (Bluetooth.available()) { charater_in = Bluetooth.read(); if (charater_in == 0x0D || charater_in == '\n') { mess_data[index_mess] = '\0'; index_mess = 0; if ((phone_message.is_copied == false) && (check_message_is_valid())) { strcpy(phone_message.message, mess_data); Serial.print(phone_message.message); Serial.print("\n"); phone_message.is_copied = true; phone_message.is_executed = false; start_timer_now(); } return true; } else { mess_data[index_mess++] = charater_in; } } return false; } void start_timer_now() { BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH an 67 PHỤ LỤC clean_message_timer.time_start = millis(); clean_message_timer.timer_is_running = true; } void checking_timer() { if ((millis() - clean_message_timer.time_start) >= MAX_WAIT_TIME_FOR_EXECUTE_MESSAGE) { clean_all_after_execute_cmd(); } } void choose_direction() { int8_t status; /* Check if have command*/ if ((phone_message.is_copied == true) && (phone_message.is_executed == false)) { if (strcmp(phone_message.message, BOARD_STOP) == && pre_stop == 0) { stop_car(); Serial.print("Stop Car\n"); use_horn(3, 1000); set_normal_speed(); pre_stop = 1; clean_all_after_execute_cmd(); } else if (strcmp(phone_message.message, BOARD_TURN_RIGHT) == && eye_status[0] == true) { Serial.print("CMD right\n"); turn_left(); delay(750); pre_stop = 0; clean_all_after_execute_cmd(); BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH an 68 PHỤ LỤC } else if (strcmp(phone_message.message, BOARD_TURN_LEFT) == && eye_status[4] == true) { Serial.print("CMD left\n"); turn_right(); delay(750); pre_stop = 0; clean_all_after_execute_cmd(); } else if (strcmp(phone_message.message, BOARD_FAST) == 0) { set_fast_speed(); Serial.print("CMD fast\n"); pre_stop = 0; clean_all_after_execute_cmd(); } else if (strcmp(phone_message.message, BOARD_NORMAL) == 0) { set_normal_speed(); Serial.print("CMD normal\n"); pre_stop = 0; clean_all_after_execute_cmd(); } } status = check_eye_status(); make_decision(status); } void clean_all_after_execute_cmd() { clean_buffer(); phone_message.is_executed = true; phone_message.is_copied = false; strcpy(phone_message.message, ""); strcpy(mess_data, ""); // Turn off timer BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH an 69 PHỤ LỤC clean_message_timer.timer_is_running = false; index_mess = 0; } void make_decision(int8_t status) { switch (status) { case LEFT_4: turn_right(); break; case LEFT_3: turn_right(); break; case LEFT_2: turn_right(); break; case LEFT_1: turn_right(); break; case MIDDLE: go_straight(); break; case RIGHT_1: turn_left(); break; case RIGHT_2: turn_left(); break; case RIGHT_3: turn_left(); BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH an 70 PHỤ LỤC break; case RIGHT_4: turn_left(); break; default: break; } } uint8_t check_eye_status() { uint8_t result = 0; result += (uint8_t)eye_status[4]; result += (uint8_t)eye_status[3]

Ngày đăng: 02/02/2023, 09:37

Tài liệu cùng người dùng

Tài liệu liên quan