Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 86 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
86
Dung lượng
1,53 MB
Nội dung
khoa thông minh nhân diên khuôn măt TÊN ĐỀ TÀI : Thiêt kê va chê tao Họ tên sinh viên: Tương Thanh Phuc – Nguyên Thanh Huy TRƯỜNG ĐẠI HỌC SƯ PHẠM KỸ THUẬ NGÀNH: CÔNG NGHỆ KĨ THUẬT ĐIỆN CHUYÊN NGÀNH: KĨ THUẬT ĐIỆN TỬ THIẾT KẾ VÀ CHẾ TẠO KHĨA THƠNG M Người hướng dẫn: Ths Trần Duy Chung Sinh viên thực hiện: Mã sinh viên: ĐẠ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 KHN 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 NG 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 KHN 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 Toá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ự - Haậ̣nh phuú́c ĐỀ CƯƠNG ĐỒ ÁN TỐT NGHIỆP Họ tên sinh viên: NGUYỄN THANH HUY TƯỞNG THANH PHÚC Mã sinh viên: 1811505120326 1811505120142 Lớp: 18D4 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ơ đồ ngun 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 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 đaậ̣t - Hồn thành sản phẩm khóa thơng minh nhận diện khuôn 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 Tuần 13 14 Tuần 14 Vá lỗi cố có Hồn 15 Tuần 15 thiện báo cáo, gặp GVPB bảo vệ Đà Nẵng, ngày 05 tháng 03 năm 2022 BỘ MÔN DUYỆT SINH VIÊN NGƯỜI HƯỚNG DẪN Thiết kế chế tạo khóa thơng minh nhận diện khuôn mặt KÊT QUA, NHÂN XET VÀ ĐANH GIA Kêú́t quả: - Thiêt kê va chê tao thành công khoa thơng minh nhân diên băng khn măt Mởở̉ khóa vân tay, thẻ từ mật Canh bao sai mât khâu qua ứng dụng telegram Nhâậ̣n xét: Qua q 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 khn mặt KÊT LN VA ĐỊNH HƯƠNG PHAT TRIỂN Kêú́t đaậ̣t đươc: Thực mục tiêu đề ra, 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ê va chê tao khoa thông minh nhân diên bằng khuôn măt” đạt kết tốt Haậ̣n chêú́: - Hệ thống yêu nhân dang anh đông Kha bao mât yêu vi chi cân môt tâm anh co thê qua măt đươc thông Hoạt động chưa hồ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 san 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 bao mât băng công nghê mơi, sư dung camera 3D la phương an tôt nhât đê han chê vê vân đê bao 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 KHAO 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 [1] [3] arduino.vn/bai-viet/915-huong-dan-su-dung-module-ban-phim-4x4-voi-arduino [4] 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 [5] dienmayxanh.com/kinh-nghiem-hay/nguyen-ly-hoat-dong-cua-o-khoa-1287074 [8] esp32.vn/idf/i2c.html#:~:text=I2C%20l%C3%A0%20giao%20th%E1%BB %A9c%20truy%E1%BB%81n,v%C3%A0%20SDA%20(Serial%20Data) [7] [9] hshop.vn/products/kit-rf-thu-phat-wifi-ble-esp32-cam [10] hshop.vn/products/mach-tang-op-dc-xl6009 [11] haphan.com/News/17500/tong-quan-cong-nghe-rfid-trong-thoi-dai-4-0 [12] hshop.vn/products/khoa-chot-dien-solenoid-lock-ly-03 [13] hshop.vn/products/cam-bien-nhan-dang-van-tay-as608-fingerprint-sensor [14] himart.vn/tin-tuc/lich-su-phat-trien-cua-khoa-cua/227.html [15] khoingo.net/so-sanh-face-recognition-va-face-detection/ lib.hpu.edu.vn/bitstream/handle/ 123456789/18117/51_NguyenTienManh_CT1001.pdf [16] medium.datadriveninvestor.com/face-recognition-from-scratch-using-opencvand-python-part-1-c61e13e553dc [18] mialock.com/cong-nghe-nhan-dien-van-tay-live-scan-13804.html? fbclid=IwAR0ibehzNQD8LCZTK44bRc1mRMkI4MK492mR7SHb22LgonAfRvHbR LlPW14 [17] [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-dienkhuon-mat-bang-esp32-cam/ [21] nshopvn.com/product/kit-rf-thu-phat-wifi-bluetooth-esp32/ [20] 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 [22] ohtech.vn/all-courses/lap-trinh-esp32-cam-voi-arduino-ide/lessons/stream- video-va-nhan-dien-khuon-mat-voi-esp32-cam-va-arduino-ide/ [23] plctech.com.vn/relay-la-gi/ tino.org/vi/rfid-la-gi/ [25] vi.wikipedia.org/wiki/H%E1%BB%87_th%E1%BB%91ng_nh%E1%BA %ADn_d%E1%BA%A1ng_khu%C3%B4n_m%E1%BA%B7t#:~:text=H%E1%BB %87%20th%E1%BB%91ng%20nh%E1%BA%ADn%20d%E1%BA%A1ng%20khu %C3%B4n%20m%E1%BA%B7t%20l%C3%A0%20m%E1%BB%99t%20%E1%BB %A9ng%20d%E1%BB%A5ng,d%E1%BB%AF%20li%E1%BB%87u%20v%E1%BB %81%20khu%C3%B4n%20m%E1%BA%B7t [24] [26] vi.wikipedia.org/wiki/Sinh_tr%E1%BA%AFc_h%E1%BB%8Dc 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; Phụ lục Thiết kế chế tạo khóa thơng minh nhận diện khuôn mặt config.pin_d0 = Y2_GPIO_NUM; 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 } Phụ lục Thiết kế chế tạo khóa thơng minh nhận diện khuôn mặt s->set_framesize(s, FRAMESIZE_QVGA); #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); Phụ lục Thiết kế chế tạo khóa thơng minh nhận diện khn mặt delay(2000); 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 khn 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 khn 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 khuôn 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 khn mặt { String content=""; byte letter; if(!mfrc522.PICC_IsNewCardPresent()) { return; } if(!mfrc522.PICC_ReadCardSerial()) { return; } for(byte i=0;i