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

THIẾT kế và CHẾ tạo KHÓA THÔNG MINH NHẬN DIỆN KHUÔN mặt

83 1 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 83
Dung lượng 1,53 MB

Nội dung

HỌC PHẠM THUẬT THIẾT KẾ VÀ CHẾ TẠO KHĨA THƠN G MINH NHẬN DIỆN NGHIỆP HỌC NGÀNH: CÔNG NGHỆ KĨ THUẬT ĐIỆN ĐIỆN TỬ CHUYÊN NGÀNH: THUẬT TỬ viên: Tương Thanh Phuc – Nguyên Thanh Huy TỬ Họ tên sinh TÊN ĐỀ TÀI : Thiêt kê chê tao khoa thông minh nhân diên khuôn măt NẴNG TRƯỜNG TIEU y ễ n T h a n h H u y L p : D Mã sinh viên: 1811505120142 18115051 20326 Người hướng dẫn: Ths Trần Duy Chung Sinh viên thực hiện: Tưởng Thanh Phúc Lớp: 18D3 N g u Đà Nẵng, 6/2022 ĐẠI HỌC ĐÀ NẴNG TRƯỜNG ĐẠI HỌC SƯ PHẠM KỸ THUẬT KHOA ĐIỆN-ĐIỆN TỬ ĐỒ ÁN TỐT NGHIỆP ĐẠI HỌC NGÀNH: CÔNG NGHỆ KĨ THUẬT ĐIỆN -ĐIỆN TỬ CHUYÊN NGÀNH: KĨ THUẬT ĐIỆN TỬ ĐỀ TÀI: THIẾT KẾ VÀ CHẾ TẠO KHĨA THƠNG MINH NHẬN DIỆN KHUÔN MẶT Người hướng dẫn: Ths Trần Duy Chung Sinh viên thực hiện: Tưởng Thanh Phúc Nguyễn Thanh Huy Mã sinh viên: 1811505120142 1811505120326 Đà Nẵng, 6/2022 Lớp: 18D3 Lớp: 18D4 NHẬN XÉT CỦA NGƯỜI HƯỚNG DẪN NHẬN XÉT CỦA NGƯỜI PHẢN BIỆN TRƯỜNG ĐẠI HỌC SƯ PHẠM KỸ THUẬT CỘNG HỊA XÃ HƠI CHỦ NGHĨA VIỆT NAM KHOA ĐIỆN- ĐIỆN TỬ NHIỆM VỤ ĐỒ ÁN TỐT N Giảng viên hướng dẫn: Th.s TRẦN DUY CHUNG Sinh viên thực hiện: NGUYỄN THANH HUY TƯỞNG THANH PHÚC Tên đề tài: THIẾT KẾ VÀ CHẾ TẠO KHĨA THƠNG MINH NHẬN DIỆN KHUÔN MẶT Các số liệu, tài liệu ban đầu: Dùng esp32 cam để nhận diện khuôn mặt - Cảnh báo sai mật mở khóa từ xa qua điện điện thoại Tài liệu ban đầu: - - Tìm hiểu thơng tin qua trạng mạng, tham khảo sách, báo tài liệu chuyên nghành - Tài liệu lập trình vi điều khiển, chuẩn giao tiếp Nội dung đồ án:  Chương : Tổng Quan chung Trình bày đặt vấn để dẫn nhập lý chọn đề tài , mục tiêu , nội dung nghiên cứu, giới hạn thông số bố cục đồ án  Chương : Cơ Sở Lý Thuyết Trình bày lý thuyết có liên quan đến vấn đề mà đề tải dùng để thực thiết kế, thi công cho đề tài  Chương : Tính Tốn Và Thiết Kế Giới thiệu tổng quan yêu cầu đề tài mà thiết kế tính tốn, thiết kế gồm phần Thiết kế sơ đồ khối hệ thống, sơ đồ nguyên lý toản mạch, tính tốn thiết kế mạch  Chương : Thi Cơng Hệ Thống Trình bày q trình vẽ mạch in lắp ráp thiết bị, đo kiểm tra mạch, lắp ráp mơ hình Thiết kế lưu để giải thuật cho chương trình viết chương trình cho hệ thống Hướng dẫn quy trình sử dụng hệ thống Các sản phẩm dự kiến - Hoàn thành sản phẩm mở khóa nhận dạng khn mặt Báo cáo tổng kết đồ án tốt nghiệp Ngày giao đồ án: 2/3/2022 Ngày nộp đồ án: 2/6/2022 Trương Bộ môn Đà Nẵng, ngày 05 tháng 03 năm 2022 Người hướng dẫn TRƯỜNG ĐẠI HỌC SƯ PHẠM KỸ THUẬT CỘNG HÒA XÃ HỘI CHỦ NGHĨA VIỆT NAM KHOA ĐIỆN – ĐIỆN TỬ Độc lâp - Tự - Hanh phuc ĐỀ CƯƠNG ĐỒ ÁN TỐT NGHIỆP Họ tên sinh viên: NGUYỄN THANH HUY TƯỞNG THANH PHÚC Lớp: 18D4 Mã sinh viên: 1811505120326 1811505120142 18D3 Họ tên người hướng dẫn: Th.s TRẦN DUY CHUNG Đề tài Tên đề tài: THIẾT KẾ VÀ CHẾ TẠO KHĨA THƠNG MINH NHẬN DIỆN KHN MẶT Thời gian thực hiện: Từ ngày: 2/3/2022 đến ngày: 2/6/2022 Mục tiêu - Dùng esp32 cam để nhận diện khuôn mặt, kết hợp với vân tay, thẻ từ mật để mở khóa Cảnh báo sai mật mở khóa từ xa qua điện thoại Nội dung  Chương : Tổng Quan chung Trình bày đặt vấn để dẫn nhập lý chọn đề tài , mục tiêu , nội dung nghiên cứu, giới hạn thông số bố cục đồ án  Chương : Cơ Sở Lý Thuyết Trình bày lý thuyết có liên quan đến vấn đề mà đề tải dùng để thực thiết kế, thi công cho đề tài  Chương : Tính Tốn Và Thiết Kế Giới thiệu tổng quan yêu cầu đề tài mà thiết kế tính tốn, thiết kế gồm phần Thiết kế sơ đồ khối hệ thống, sơ đồ nguyên lý toản mạch, tính tốn thiết kế mạch  Chương : Thi Cơng Hệ Thống Trình bày q trình vẽ mạch in lắp ráp thiết bị, đo kiểm tra mạch, lắp ráp mơ hình Thiết kế lưu để giải thuật cho chương trình viết chương trình cho hệ thống Hướng dẫn quy trình sử dụng hệ thống Kêt dự kiên đat - Hoàn thành sản phẩm khóa thơng minh nhận diện khn mặt Tiên độ thực hiên TT Thời gian Tuần Tuần Tuần Tuần Tuần Tuần Tuần Tuần Tuần 10 Tuần 10 11 Tuần 11 12 Tuần 12 13 BỘ MÔN DUYỆT Tuần 13 14 Tuần 14 15 Tuần 15 Thiết kế chế tạo khóa thơng minh nhận diện khn mặt KẾT QUẢ, NHẬN XÉT VÀ ĐÁNH GIÁ Kêt quả: - Thiết kế chế tạo thành cơng khóa thơng minh nhận diện khn mặt Mở khóa vân tay, thẻ từ mật Cảnh báo sai mật qua ứng dụng telegram Nhân xét: Qua trình nghiên cứu thi cơng nhóm em hồn thành cịn nhiều thiếu xót chưa thể giao tiếp ESP32 CAM với ESP32, liệu ESP32 CAM gửi cho telegram chậm ESP32 CAM phải xử lý nhiều công việc Sinh viên thực hiện: Tưởng Thanh Phúc- Nguyễn Thanh Huy Người hướng dẫn: Ths Trần Duy Chung Thiết kế chế tạo khóa thơng minh nhận diện khuôn mặt KẾT LUẬN VÀ ĐỊNH HƯỚNG PHÁT TRIỂN  Kêt đat được: Thực mục tiêu đề ra, cịn nhiều thiếu sót nhờ hướng dẫn tận tình thầy hướng dẫn, đề tài đồ án “Thiêt kê chê tao khoa thông minh nhân diên bằng khuôn măt” đạt kết tốt  Han chê: - Hệ thống yếu nhận dạng ảnh động Khả bảo mật yếu cần ảnh qua mắt hệ thống Hoạt động chưa hoàn tồn hiệu với mắt kính thường nơi có ánh sáng chiếu Do module giá thành rẻ nên xử lý liệu chậm  Hướng phát triển sản phẩm: - Đề tài hướng phát triển rõ ràng, nâng cao khả nhận diện sẻ đảm bảo được độ an tồn cao - Nâng cao bảo mật công nghệ mới, sử dụng camera 3D phương án tốt để hạn chế vấn đề bảo mật Sinh viên thực hiện: Tưởng Thanh Phúc- Nguyễn Thanh Huy Người hướng dẫn: Ths Trần Duy Chung Thiết kế chế tạo khóa thơng minh nhận diện khuôn mặt TÀI LIỆU THAM KHẢO [1] arduino.vn/bai-viet/1107-gioi-thieu-ve-module-lm2596-giai-thuong-tuan-4 [2] arduinokit.vn/giao-tiep-i2c-lcd-arduino/? fbclid=IwAR3cyWDTczYFLDHYrYnFXfHaMCWq1qEObkxlv9su_HsP4UG4T2_aC2zqmk [3] [4] arduino.vn/bai-viet/915-huong-dan-su-dung-module-ban-phim-4x4-voi-arduino bloglaptrinh.info/dieu-khien-esp32-esp8266-qua-telegram/ cyberlotus.com/xac-thuc-sinh-trac-hoc-xu-huong-tat-yeu-trong-tuong-laigan.html [6] dientutuonglai.com/arduino-ide-la-gi.html [7] dienmayxanh.com/kinh-nghiem-hay/nguyen-ly-hoat-dong-cua-o-khoa-1287074 [5] [8] esp32.vn/idf/i2c.html#:~:text=I2C%20l%C3%A0%20giao%20th%E1%BB%A 9c %20truy%E1%BB%81n,v%C3%A0%20SDA%20(Serial%20Data) [15] hshop.vn/products/kit-rf-thu-phat-wifi-ble-esp32-cam hshop.vn/products/mach-tang-op-dc-xl6009 haphan.com/News/17500/tong-quan-cong-nghe-rfid-trong-thoi-dai-4-0 hshop.vn/products/khoa-chot-dien-solenoid-lock-ly-03 hshop.vn/products/cam-bien-nhan-dang-van-tay-as608-fingerprint-sensor himart.vn/tin-tuc/lich-su-phat-trien-cua-khoa-cua/227.html khoingo.net/so-sanh-face-recognition-va-face-detection/ [16] lib.hpu.edu.vn/bitstream/handle/123456789/18117/51_NguyenTienManh_CT1 [9] [10] [11] [12] [13] [14] 001.pdf medium.datadriveninvestor.com/face-recognition-from-scratch-using-opencvand-python-part-1-c61e13e553dc [18] mialock.com/cong-nghe-nhan-dien-van-tay-live-scan[17] 13804.html?fbclid=IwAR0ibehzNQD8LCZTK44bRc1mRMkI4MK492mR7SHb22Lg onAfRvHbRLlPW14 [19] nshopvn.com/product/mach-chuyen-usb-uart-ttl-ft232rl/ nshopvn.com/blog/gioi-thieu-mach-thu-phat-wifi-ble-esp32-cam-ai-thinkerhuong-dan-su-dung-voi-arduino-thuc-hanh-lam-bo-mo-khoa-cua-nhan-dien-khuonmat-bang-esp32-cam/ [21] nshopvn.com/product/kit-rf-thu-phat-wifi-bluetooth-esp32/ [20] ohtech.vn/all-courses/lap-trinh-esp32-cam-voi-arduino-ide/lessons/streamvideo-va-nhan-dien-khuon-mat-voi-esp32-cam-va-arduino-ide/ [23] plctech.com.vn/relay-la-gi/ [22] Sinh viên thực hiện: Tưởng Thanh Phúc- Nguyễn Thanh Huy Người hướng dẫn: Ths Trần Duy Chung Thiết kế chế tạo khóa thơng minh nhận diện khn mặt [24] tino.org/vi/rfid-la-gi/ vi.wikipedia.org/wiki/H%E1%BB%87_th%E1%BB%91ng_nh%E1%BA%AD n_d%E1%BA%A1ng_khu%C3%B4n_m%E1%BA%B7t#:~:text=H%E1%BB%87%2 0th%E1%BB%91ng%20nh%E1%BA%ADn%20d%E1%BA%A1ng%20khu%C3%B4 n%20m%E1%BA%B7t%20l%C3%A0%20m%E1%BB%99t%20%E1%BB%A9ng%2 0d%E1%BB%A5ng,d%E1%BB%AF%20li%E1%BB%87u%20v%E1%BB%81%20k hu%C3%B4n%20m%E1%BA%B7t [26] vi.wikipedia.org/wiki/Sinh_tr%E1%BA%AFc_h%E1%BB%8Dc [25] Sinh viên thực hiện: Tưởng Thanh Phúc- Nguyễn Thanh Huy Người hướng dẫn: Ths Trần Duy Chung Thiết kế chế tạo khóa thơng minh nhận diện khn mặt PHỤ LỤC Code ESP32 CAM: #include "esp_camera.h" #include #include #include #include #include "soc/soc.h" #include "soc/rtc_cntl_reg.h" #define CAMERA_MODEL_AI_THINKER #define Green #include "camera_pins.h" String token = "5541295927:AAHafYPAFow73Su78k5wknkM72SMeMG_CR8"; String CHAT_ID = "5286348623"; const char* ssid = "NOM"; //Wifi Name SSID const char* password = "12345678"; //WIFI Password bool sendPhoto = false; WiFiClientSecure clientTCP; UniversalTelegramBot bot(token, clientTCP); int botRequestDelay = 1000; unsigned long lastTimeBotRan; void startCameraServer(); int matchFace = 0; boolean activateRelay = false; long prevMillis=0; int interval = 5000; } void setup() { pinMode(Green,OUTPUT); Serial.begin(115200); Serial.setDebugOutput(true); Serial.println(); camera_config_t config; config.ledc_channel = LEDC_CHANNEL_0; config.ledc_timer = LEDC_TIMER_0; config.pin_d0 = Y2_GPIO_NUM; Phụ lục Thiết kế chế tạo khóa thơng minh nhận diện khuôn mặt config.pin_d1 = Y3_GPIO_NUM; config.pin_d2 = Y4_GPIO_NUM; config.pin_d3 = Y5_GPIO_NUM; config.pin_d4 = Y6_GPIO_NUM; config.pin_d5 = Y7_GPIO_NUM; config.pin_d6 = Y8_GPIO_NUM; config.pin_d7 = Y9_GPIO_NUM; config.pin_xclk = XCLK_GPIO_NUM; config.pin_pclk = PCLK_GPIO_NUM; config.pin_vsync = VSYNC_GPIO_NUM; config.pin_href = HREF_GPIO_NUM; config.pin_sscb_sda = SIOD_GPIO_NUM; config.pin_sscb_scl = SIOC_GPIO_NUM; config.pin_pwdn = PWDN_GPIO_NUM; config.pin_reset = RESET_GPIO_NUM; config.xclk_freq_hz = 20000000; config.pixel_format = PIXFORMAT_JPEG; if(psramFound()){ config.frame_size = FRAMESIZE_UXGA; config.jpeg_quality = 10; config.fb_count = 2; } else { config.frame_size = FRAMESIZE_SVGA; config.jpeg_quality = 12; config.fb_count = 1; } #if defined(CAMERA_MODEL_ESP_EYE) pinMode(13, INPUT_PULLUP); pinMode(14, INPUT_PULLUP); #endif esp_err_t err = esp_camera_init(&config); if (err != ESP_OK) { Serial.printf("Camera init failed with error 0x%x", err); return; } sensor_t * s = esp_camera_sensor_get(); if (s->id.PID == OV3660_PID) { s->set_vflip(s, 1);//flip it back s->set_brightness(s, 1);//up the blightness just a bit s->set_saturation(s, -2);//lower the saturation } s->set_framesize(s, FRAMESIZE_QVGA); Phụ lục Thiết kế chế tạo khóa thơng minh nhận diện khuôn mặt #if defined(CAMERA_MODEL_M5STACK_WIDE) s->set_vflip(s, 1); s->set_hmirror(s, 1); #endif WiFi.begin(ssid, password); while (WiFi.status() != WL_CONNECTED) { delay(500); Serial.print("."); } Serial.println(""); Serial.println("WiFi connected"); startCameraServer(); Serial.print("Camera Ready! Use 'http://"); Serial.print(WiFi.localIP()); Serial.println("' to connect"); } void loop() { if (sendPhoto) { Serial.println("Preparing photo"); alerts2Telegram(token, CHAT_ID); sendPhoto = false; } if (millis() > lastTimeBotRan + botRequestDelay) { int numNewMessages = bot.getUpdates(bot.last_message_received + 1); while (numNewMessages) { Serial.println("got response"); handleNewMessages(numNewMessages); numNewMessages = bot.getUpdates(bot.last_message_received + 1); } lastTimeBotRan = millis(); } if(matchFace==2) { alerts2Telegram(token, CHAT_ID); } if(matchFace==1) { digitalWrite(Green,HIGH); delay(2000); Phụ lục Thiết kế chế tạo khóa thơng minh nhận diện khn mặt matchFace=0; } else { digitalWrite(Green,LOW); matchFace=0; } } String alerts2Telegram(String token, String chat_id) { const char* myDomain = "api.telegram.org"; String getAll="", getBody = ""; camera_fb_t * fb = NULL; fb = esp_camera_fb_get(); if(!fb) { Serial.println("Camera capture failed"); delay(1000); ESP.restart(); return "Camera capture failed"; } WiFiClientSecure client_tcp; if (client_tcp.connect(myDomain, 443)) { Serial.println("Connected to " + String(myDomain)); String head = " India\r\nContent-Disposition: form-data; name=\"chat_id\"; \r\n\r\n" + chat_id + "\r\n India\r\nContent-Disposition: form-data; name=\"photo\"; filename=\"esp32-cam.jpg\"\r\nContent-Type: image/jpeg\r\n\r\n"; String tail = "\r\n India \r\n"; uint16_t imageLen = fb->len; uint16_t extraLen = head.length() + tail.length(); uint16_t totalLen = imageLen + extraLen; client_tcp.println("POST /bot"+token+"/sendPhoto HTTP/1.1"); client_tcp.println("Host: " + String(myDomain)); client_tcp.println("Content-Length: " + String(totalLen)); client_tcp.println("Content-Type: multipart/form-data; boundary=India"); client_tcp.println(); client_tcp.print(head); Phụ lục Thiết kế chế tạo khóa thơng minh nhận diện khuôn mặt uint8_t *fbBuf = fb->buf; size_t fbLen = fb->len; for (size_t n=0;n millis()) { Serial.print("."); delay(100); while (client_tcp.available()) { char c = client_tcp.read(); if (c == '\n') { if (getAll.length()==0) state=true; getAll = ""; } else if (c != '\r') getAll += String(c); if (state==true) getBody += String(c); startTime = millis(); } if (getBody.length()>0) break; Phụ lục Thiết kế chế tạo khóa thơng minh nhận diện khn mặt } client_tcp.stop(); Serial.println(getBody); } else { getBody = "Connection to telegram failed."; Serial.println("Connection to telegram failed."); } delay(5000); matchFace=0; return getBody; } Code ESP32: #include #include #include #include #include #include #include #include #define ROW_NUM #define COLUMN_NUM #define RST_PIN 13 #define SS_PIN 12 #define MODEM_RX 16 #define MODEM_TX 17 #define mySerial Serial2 // use for ESP32 #define WIFI_SSID "NOM" #define WIFI_PASSWORD "12345678" #define BOT_TOKEN "5541295927:AAHafYPAFow73Su78k5wknkM72SMeMG_CR8" #define CHAT_ID "5286348623" LiquidCrystal_I2C lcd(0x27,20,4); MFRC522 mfrc522(SS_PIN, RST_PIN); const unsigned long BOT_MTBS = 1000; char keys[ROW_NUM][COLUMN_NUM] = { {'1','2','3','A'}, {'4','5','6','B'}, {'7','8','9','C'}, {'*','0','#','D'} }; byte pin_rows[ROW_NUM] = {4, 15, 32, 33}; byte pin_column[COLUMN_NUM] = {25, 26, 27, 14}; Phụ lục Thiết kế chế tạo khóa thơng minh nhận diện khuôn mặt Keypad keypad = Keypad( makeKeymap(keys), pin_rows, pin_column, ROW_NUM, COLUMN_NUM ); const String password = "7890"; String input_password; int l =4,bt=0; String TheDung="3B C3 3C 0D"; MFRC522::MIFARE_Key key; int relay = 2; //Led int ledStatus = 0; Adafruit_Fingerprint finger = Adafruit_Fingerprint(&mySerial); WiFiClientSecure secured_client; UniversalTelegramBot bot(BOT_TOKEN, secured_client); unsigned long bot_lasttime; // last time messages' scan has been done void handleNewMessages(int numNewMessages) { Serial.print("handleNewMessages "); Serial.println(numNewMessages); for (int i = 0; i < numNewMessages; i++) { String chat_id = String(bot.messages[i].chat_id); if (chat_id != CHAT_ID ) { bot.sendMessage(chat_id, "Unauthorized user", ""); } else { String text = bot.messages[i].text; String from_name = bot.messages[i].from_name; if (from_name == "") from_name = "Guest"; if (text == "/mocua") { digitalWrite(LED_BUILTIN, 1); ledStatus = 1; lcd.setCursor(0,1); lcd.print(" Moi Vao"); bot.sendMessage(chat_id, "Da Mo Cua", ""); delay(2000); digitalWrite(LED_BUILTIN, 0); lcd.clear(); bt=0; Phụ lục Thiết kế chế tạo khóa thơng minh nhận diện khuôn mặt l=4; } } } } void setup() { Serial.begin(9600); //input_password.reserve(32); while (!Serial); SPI.begin(); mfrc522.PCD_Init(); Serial.print(WIFI_SSID); WiFi.begin(WIFI_SSID, WIFI_PASSWORD); secured_client.setCACert(TELEGRAM_CERTIFICATE_ROOT); for (byte i = 0; i < 6; i++) { key.keyByte[i] = 0xFF; } lcd.init(); lcd.init(); lcd.backlight(); pinMode(LED_BUILTIN, OUTPUT); finger.begin(57600); delay(5); if (finger.verifyPassword()) { } else { while (1) { delay(1); } } finger.getTemplateCount(); } void loop() { if (millis() - bot_lasttime > BOT_MTBS) { int numNewMessages = bot.getUpdates(bot.last_message_received + 1); while (numNewMessages) { Serial.println("got response"); handleNewMessages(numNewMessages); numNewMessages = bot.getUpdates(bot.last_message_received + 1); } bot_lasttime = millis(); } if(bt==0) { lcd.setCursor(3,0); lcd.print("Truong SPKT!"); Phụ lục Thiết kế chế tạo khóa thơng minh nhận diện khn mặt } else { lcd.setCursor(1,0); lcd.print("Vui Long Nhap MK"); lcd.setCursor(1,1); lcd.print("MK:"); } getFingerprintIDez(); delay(50); ///////////////////////////////////////////////////////////////////////////////////// char keypadd = keypad.getKey(); if (keypadd) { bt=1; lcd.setCursor(l,1); lcd.print(keypadd); if (keypadd == '*') { input_password = ""; } else if (keypadd == '#') { if (password == input_password) { lcd.setCursor(0,1); lcd.print("MK dung moi vao"); bot.sendMessage(CHAT_ID, "Da Mo Cua Bang Mat Khau ", ""); digitalWrite(LED_BUILTIN, 1); delay(2000); digitalWrite(LED_BUILTIN, 0); lcd.clear(); bt=0; l=4; } else { lcd.setCursor(0,1); lcd.print("MK sai thu lai"); bot.sendMessage(CHAT_ID, "Nhap Mat Khau Sai ", ""); delay(2000); lcd.clear(); bt=0; l=4; } input_password = ""; } else { input_password += keypadd; l=l+1; delay(50); } } else Phụ lục Thiết kế chế tạo khóa thơng minh nhận diện khuôn mặt { String content=""; byte letter; if(!mfrc522.PICC_IsNewCardPresent()) { return; } if(!mfrc522.PICC_ReadCardSerial()) { return; } for(byte i=0;i

Ngày đăng: 26/07/2022, 09:01

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

TÀI LIỆU LIÊN QUAN

w