Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 44 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
44
Dung lượng
2,58 MB
Nội dung
MỤC LỤC DANH MỤC HÌNH ẢNH DANH MỤC BẢNG BIỂU Bảng 2.1: Nối dây với vi điều khiển Bảng 2.2 Chức chân cảm biến Bảng 2.3 Bảng thông số kỹ thuật Arduino Uno R3 1 LỜI NÓI ĐẦU Như biết, cơng trình xây dựng, cấu thành nhiều yếu tố, ổ khóa cửa phận nhỏ so với tồn cơng trình quan trọng Khóa cửa khụng giới hạn khoảng khơng gian bên bên ngồi, mà phận tạo nên an toàn bên bên ngồi.Vì cơng trình, khóa cửa trở thành người bạn trung thành bảo vệ tính mạng, tài sản người thân yêu bạn Khóa cửa góp phần tạo nên tổ ấm hạnh phúc Trong đợt tốt nghiệp này, em có nhận đề tài “ THIẾT KẾ, CHẾ TẠO HỆ THỐNG ĐĨNG MỞ CỬA TỰ ĐỘNG BẰNG VÂN TAY”.Hơm nay,em hoàn thành xong đồ án tốt nghiệp theo thời gian qui định nhà trường Em xin gửi lời cảm ơn chân thành đến Ban Giám Hiệu Nhà Trường q ThầyCơ, bạn bè tạo điều kiện cho em hoàn thành tốt nhiệm vụ giao Đặc biệt em cảm ơn Thầy Nguyễn Văn Vinh nhiệt tình hướng dẫn, giúp đỡ định hướng cho em việc thực đồ án hoàn thành thời gian quy định Thời gian thực đồ án tốt nghiệp có hạn kiến thức em nhiều hạn chế nên đồ án khơng tránh khỏi thiếu sót Em mong đóng góp bảo q Thầy-Cơ để đồ án em hồn chỉnh Hưng Yên , ngày tháng năm 2019 Sinh viên thực Phạm Thành Đạt 2 CHƯƠNG TỔNG QUAN VỀ CÁC HỆ THỐNG KHÓA CỬA TỰ ĐỘNG 1.1 Mục đích, ý nghĩa đề tài - Hệ thống khóa cửa vân tay ứng dụng thay khóa cửa thơng thường gia đình, giảm bớt nguy có kẻ gian âm mưu đột - nhập Thơng qua việc tìm hiểu hệ thống khóa cửa tự động, thực thành - cơng đề tài mang lại ý nghĩa to lớn Tồn chương trình bản thuyết minh đè tài trở thành tài liệu nghiên cứu, tham khảo nhanh, dễ hiểu, thiết thực cho bạn sinh viên người - muốn tìm hiểu đề tài chúng em Với thành công đề tài góp phần giúp cho bạn sinh viên nói chung bạn sinh viên khoa Điện- Điện tử nói riêng hiểu ý nghĩa thực tiễn u thích chun ngành chọn 1.2 Lịch sử phát triển khóa cửa Để có khóa cửa ngày hơm nay, khóa cửa trải qua nhiều giai đoạn phát triển, tóm lược qua cột mốc sau: 1.1.1 Then cài Đó phận thường làm gỗ kim loại dùng để cài chặt mặt sau cánh cửa tựa hai bờ vai cửa Hình 1 Khóa then cài Dây xích Đó sợi dây thường làm kim loại, có tác dụng quấn giữ chặt cánh cửa lại (để giữ cửa khỏi mở cách mấu điểm cuối sợi dây với móc nằm mặt sau cánh cửa) Hình Khóa dây xích Chốt Là hình thức biến thể then cài dây xích Đó hình dẹp kim loại gắn cánh cửa, để giữ cửa khỏi mở cách chốt (cài) vào khung bao cửa Đỉnh cao chốt cửa chốt âm vừa đạt độ an tồn cao vừa thẩm mỹ Hình Khóa chốt Ghi chú: Khuyết điểm lớn loại (then cài, dây xích, chốt nổi…) khóa mặt cánh cửa ( có người bên trong) 1.2.1 Khóa truyền thống Những khóa cửa đời đơn giản thường làm gỗ (loại tốt) với hệ chỡa chữ L đơn giản dễ phá Khi vật liệu kim loại phát triển ổ khóa cửa chuyển qua làm kim loại (đồng, thau, Inox, Atimon, nhôm…) đa dạng kiểu dáng, hoa văn màu sắc, lại ta phân biệt giai đoạn phát triển thơng qua hệ chìa Hình Khóa dạng ổ 1.2.2 Khóa đại – khóa điện tử Ngày với tiến ngành kỹ thuật điện, điện tử… thấy loại khóa khơng dùng loại chìa truyền thống mà dùng hình thức giao diện khác để mở card từ, tôn điện (nam châm điện), giọng nói, vân tay, ánh mắt,… Hình Khóa điện tử Điểm tối ưu loại chìa tiện dụng, Sự bất lợi lớn loại chế độ vận hành, kiểm tra, bảo trì, giám sát người lạ phá hoại (thay pin định kỳ, bo mạch điện tử có tuổi thọ định (2-3 năm), gắn nơi khô không ẩm ướt, đặt biệt ý đến phá phách người bên phận nhận diện phận gắn dễ đập phá 1.3 Một số loại khóa cửa thị trường Trên thị trường có nhiều loại khóa cửa, đa dạng mẫu mã chủng loại đáp ứng nhu cầu khác khách hàng 1.3.1 Khóa Gồm hai phần ổ khóa chìa khóa, làm kim loại cứng nhiều hình dạng, Khóa mở có chìa khóa với mép khóa với thứ tự chốt nhỏ ổ khóa nhằm nâng chốt nhỏ lên gây tác dụng khóa ổ khóa Hình Cơ chế mở khóa Hình Hình ảnh số loại khóa 1.3.2 Khóa cửa vân tay Khóa vân tay hay gọi khóa cửa vân tay loại khóa dùng vân tay thay cho chìa khóa để mở cửa Tùy theo loại khóa, thơng thường khóa vân tay có dung lượng từ 100-300 vân tay Hình Khúa cửa vân tay 1.3.3 Khóa cửa thẻ từ Khóa từ có tên gọi Nopass với ổ khóa kim loại (có lớp từ tính bên trong), chìa khóa loại thẻ có hình dạng thẻ tín dụng làm chất liệu đặc biệt, thẻ có chứa ngầm phần tử nhiễm từ khơng nhìn thấy Khi mở, đóng cửa bạn cần đút thẻ từ vào khe ổ khóa Ưu điểm khóa hồn tồn khơng dùng điện, pin hay ắc quy Về cấu tạo khóa có cấu trúc lớp từ gắn ngầm bờn ổ khóa Mỗi cấu trúc tổ hợp hình học 28 41 lực từ Hình Khóa cửa thẻ từ 1.3.4 Khóa cửa cách nhận diện võng mạc Dựa theo nguyên tắc chuyển động không giống mắt nhìn vào vật khác Thông qua camera để ghi lại chuyển động đặc trưng mắt để mở khóa Hình 10 Khóa cửa cách nhận diện võng mạc 1.3.5 Khóa cửa mật mã số Loại khóa sử dụng mật mã số lập trình, cài đặt từ trước để mở khóa thay cho cách mở khóa chìa thơng thường Và đương nhiên dùng chìa khóa để mở loại khóa tùy vào nhu cầu sử dụng Hình 11 Khóa cửa mật mã số 1.4 Kết luận chương Với phát triển vũ bão công nghệ thông tin, giải pháp an ninh ngày trọng Ngày khóa cửa chuyển dần từ khóa vật lý sang khóa tự động, điện tử Các dịng khóa điện tử ngày khơng cịn dùng chìa để thao tác mở cửa Chúng áp dụng công nghệ đại vào xác thực đóng mở cửa hồn tồn tự động Điển hình loại khóa ện tử hàng đầu: khóa vân tay CHƯƠNG PHÂN TÍCH MỘT SỐ PHƯƠNG PHÁP ĐĨNG MỞ CỬA BẰNG VÂN TAY 2.1 Cơng nghệ sinh trắc Được biết công nghệ áp dụng đặc tính sinh học, vật lí hay đặc điểm đặc trưng, riêng biệt cá thể, cá nhân dáng đi, vân tay, gương mặt, hay giọng nói…để nhận biết, nhận dạng Trong tiếng anh, Biometric có nghĩa sinh trắc học Cơng nghệ sinh trắc dùng việc xác nhận thông tin cá nhân hay nhân thân cách hiệu quả xác Hình Sơ đồ khối logic hệ thống sinh trắc học 2.2 Tìm hiểu vân tay Hình 2 Hình ảnh vân tay 2.2.1 Giới thiệu Tính tới thời điểm nay, công nghệ sinh trắc mà sử dụng lâu đời phổ biến nhận diện dấu vân tay Mỗi cá nhân người sinh đểu có cho dấu vân tay riêng biệt, không giống ai, hết tất cả loại sinh trắc khác, vân tay dấu hiệu đặc trưng thể người Đặc biệt dấu vân tay làm giả ưu tiên hàng đầu cho việc bảo mật 2.2.2 Lịch sử Người Trung Quốc từ lâu biết dùng dấu vân tay để nhận diện đứa trẻ sinh ra, chúng người ta lấy mực đen để bôi lên tay để in lên giấy trắng Năm 1858, vân tay sử dụng Anh Một người đàn ông cai trị người Anh Ấn Độ bắt người bản xứ dung dấu tay in lên mặt sau tờ hợp đồng Francis Galton bắt đầu công khoa học vân tay cuối kỉ XIX cải tiến sau thực nghiệm với xác suất tin cậy lớn Một hệ thống phân loại vân tay khác tạo cho nước Tây Ban Nha Đến ngày nhiều quốc gia phát triển công nghê khoa học vân tay áp dụng mạnh mẽ Không sử dụng lĩnh vực hình sự, cịn giúp ích nhiều việc bảo mật Nhiều ngân hàng phát triển sử dụng vân tay để quét máy ATM Không vậy, người ta xác định bệnh tật biến đổi gen nhờ vào nhận dạng vân tay y học 2.2.3 Lý thuyết, nguyên lý nhận dạng dấu vân tay Sử dụng cảm biến vân tay để nhận biết cách đối chiếu hình ảnh vân tay lưu trữ trước thư viện, so với thiết bị nhận biết hệ cũ cảm biến vân tay áp dụng nhiều phổ biến hơn, giúp ích nhiều việc chấm công, quản lý, kiểm soát dễ dàng, tỉ lệ sai lệch thấp Về nguyên lý hoạt động cảm biến vân tay, sử dụng ngón tay áp lên thiết bị nhận dạng vân tay đó, hình ảnh vân tay qt thiết bị sau hình ảnh vân tay đối chiếu đặc điểm với liệu lưu trữ từ trước hệ thống Trong trình này, liệu hình ảnh chuyển sang dạng liệu số kết thúc q trình kết quả thơng báo vân tay có hợp lệ hay khơng để tiếp tục thực chức 2.3 Tìm hiểu linh kiện 2.3.1 Cảm biến vân tay quang học AS608 10 Kết nối Arduino vào máy tính chạy chương trình lưu vân tay Hình Chương trình lưu vân tay Nạp chương trình, sau nhấp Serial Monitor, chương trình mở bảng giao tiếp để ta nhập số ID lưu vân tay Hình Bảng giao tiếp nhập ID vân tay Nhập số ID theo cú pháp “ID #(giá trị từ 1-127), sau nhập vân tay Chương trình bắt nhập lại vân tay lần để xác nhận 30 Hình Thơng báo vân tay lưu 3.5 Yêu cầu thi công Dùng board Arduino để thiết kế board kết nối với linh kiện cảm biến Yêu cầu phải có đầy đủ linh kiện cần thiết, sau tiến hành vẽ mạch ngun lý mơ máy tính, sau chuyển sang mạch in tương đương với mạch nguyên lý Cuối có mạch cứng hồn chỉnh, ta kết nối linh kiện cảm biến vân tay, khóa cửa, led vào chân cần kết nối mạch cứng để kiểm tra lại kết quả xem có giống mơ hay khơng hay khơng 3.6 Sơ đồ ngun lý tồn mạch 31 Hình Sơ đồ nguyên lý 3.7 Sơ đồ mạch in tồn mạch Hình Sơ đồ mạch in 3.8 Mơ hình sản phẩm thực tế hồn thành 32 Hình Hình ảnh mạch hồn thiện Hình 10 Kết nối lắp ráp mạch vào mơ hình sản phẩm 33 Hình 11 Sản phẩm hồn thiện 3.9 Kết luận chương Mạch chạy theo yêu cầu, mạch nhỏ gọn, thi công không phức tạp, sau kiểm tra qua nhiều lần, mạch chạy tốt, hệ thống xác nhận vân tay trùng khớp, đèn led, khóa cửa chạy mơ cửa mở xác, chưa ổn định Khi hệ thống xác nhận vân tay không khớp, đèn led sáng lên báo hiệu Với board mạch thiết kế vậy, trình nạp lại code hay thay đổi code trở nên dễ dàng hơn, việc lấy dây cable kết nối Arduino với máy tính để nạp lại code Trong trình thực đề tài” Thiết kế chế tạo hệ thống đóng mở cửa tự động vân tay” chúng em nhiều vướng mắc Nhưng sau tìm hiểu, học hỏi trợ giúp thầy bạn bè chúng em tính tốn thiết kế cuối hồn thiện sản phẩm dựa sở lý thuyết kiến thức học Chúng em hoàn thiện đề tài giao với phương pháp lập trình cho vi điều khiển đọc vân tay, so sánh vân tay lưu để điều khiển khóa cửa cảnh báo để đảm bảo an ninh cho nhà 34 • • - 35 Ưu điểm Hệ thống hoạt động ổn định Có tính thực tiễn cao Dễ dàng sử dụng với mục đích khác Nhược điểm Phần cứng hoàn thiện chưa đẹp Lưu vân tay phải sử dụng máy tính KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN Kết luận Kết quả đạt q trình đề tài em là: • Hồn thành thiết kế gia công mạch, kiểm tra kĩ càng, mạch chưa ổn định đáp ứng chạy yêu cầu đề tài • Thiết kế hồn thành ứng dụng cho lắp đặt thay loại khóa cửa dân dụng hay loại khóa mật số cửa cổng quan, xí nghiệp, trường học,… • Hệ thống đóng mở cửa dùng cảm biến vân tay thực đề tài xem làm hệ thống thông minh với chức đạt như: Nhận diện người dùng qua việc xác minh hình ảnh vân tay so với thư viện vân tay lưu trữ để đóng mở cửa xác, giảm bớt nguy có kẻ gian âm mưu đột nhập Tuy nhiên bên cạnh ưu điểm có hệ thống cịn có nhược điểm hạn chế dễ bị phá hoại, vấn đề bảo vệ chưa tốt Hướng phát triển Sản phẩm mạch làm đạt yêu cầu đề không vào chuyên sâu hạn chế thời gian kiến thức chưa đủ nên mạch làm bị thiếu chuyên mơn cịn sơ sài, có thời gian, hội nghiên cứu tốt nghiên cứu kỹ hơn, em mong đề tài có thêm chức như: • Xem ngày xác nhận vân tay • Có thể thực thay đổi trực tiếp vân tay xóa bỏ vân tay hệ thống • Tích hợp kiểu bảo mật khác để tạo nên khóa cửa nhiều chức năng, chẳng hạn nhận diện khuôn mặt, mở khóa thẻ từ, bàn phím, khóa truyền thống • Khi bấm sai nhiều lần gửi tin nhắn cảnh báo đến điện thoại Sau cùng, hi vọng với hướng phát triển với góp ý chân tình từ thầy, cô, đề tài phát triển mở rộng tốt hơn, tiên tiến hơn, thông minh để phục vụ cho nhu cầu người 36 TÀI LIỆU THAM KHẢO Tiếng Việt: - Wikipedia: Sinh Trắc Học https://banlinhkien.vn/ http://arduino.vn/ https://www.facebook.com/groups/congdongarduinovietnam/ Tiếng Anh: - https://learn.adafruit.com/adafruit-optical-fingerprint-sensor 37 PHỤ LỤC Chương trình hệ thống #include #include #define BAODONG int dem, dem1, dem2, i; int getFingerprintIDez(); SoftwareSerial mySerial(2, 3); unsigned long time_curent, time_old; int tt = 0; Adafruit_Fingerprint finger = Adafruit_Fingerprint(&mySerial); void setup() { while (!Serial); Serial.begin(9600); Serial.println("Adafruit finger detect test"); finger.begin(57600); pinMode(13, OUTPUT); pinMode(12, OUTPUT); pinMode(7, OUTPUT); digitalWrite(BAODONG, LOW); if (finger.verifyPassword()) { Serial.println("Found fingerprint sensor!"); } else { Serial.println("Did not find fingerprint sensor :("); while (1); } Serial.println("Waiting for valid finger "); } void loop() { getFingerprintIDez(); delay(10); if (tt == && (time_curent - time_old < 1000)) { digitalWrite(13, HIGH); digitalWrite(12, HIGH); dem = 0; } else if (tt == && (time_curent - time_old < 1000)) { digitalWrite(13, HIGH); digitalWrite(12, HIGH); dem = 0; 38 } else { digitalWrite(13, LOW); digitalWrite(12, LOW); tt = 0; } time_curent = millis(); switch (dem) { case 1: Serial.println("BAO DONG LAN 1"); delay(100); break; case 2: Serial.println("BAO DONG LAN 2"); delay(100); break; case 3: digitalWrite(BAODONG, HIGH); Serial.println("BAO DONG"); delay(10000); digitalWrite(BAODONG, LOW); Serial.println("NGUNG BAO DONG"); delay(100); dem = 0; break; } } uint8_t getFingerprintID() { uint8_t p = finger.getImage(); switch (p) { case FINGERPRINT_OK: Serial.println("Image taken"); break; case FINGERPRINT_NOFINGER: Serial.println("No finger detected"); return p; case FINGERPRINT_PACKETRECIEVEERR: Serial.println("Communication error"); return p; case FINGERPRINT_IMAGEFAIL: Serial.println("Imaging error"); return p; default: Serial.println("Unknown error"); return p; } 39 p = finger.image2Tz(); switch (p) { case FINGERPRINT_OK: Serial.println("Image converted"); break; case FINGERPRINT_IMAGEMESS: Serial.println("Image too messy"); return p; case FINGERPRINT_PACKETRECIEVEERR: Serial.println("Communication error"); return p; case FINGERPRINT_FEATUREFAIL: Serial.println("Could not find fingerprint features"); return p; case FINGERPRINT_INVALIDIMAGE: Serial.println("Could not find fingerprint features"); return p; default: Serial.println("Unknown error"); return p; } p = finger.fingerFastSearch(); if (p == FINGERPRINT_OK) { Serial.println("Found a print match!"); } else if (p == FINGERPRINT_PACKETRECIEVEERR) { Serial.println("Communication error"); return p; } else if (p == FINGERPRINT_NOTFOUND) { Serial.println("Did not find a match"); return p; } else { Serial.println("Unknown error"); return p; } Serial.print("Found ID #"); Serial.print(finger.fingerID); Serial.print(" with confidence of "); Serial.println(finger.confidence); } int getFingerprintIDez() { uint8_t p = finger.getImage(); if (p != FINGERPRINT_OK) { Serial.println("No Match "); return -1; } p = finger.image2Tz(); if (p != FINGERPRINT_OK) { Serial.println("No Match "); return -1; 40 } p = finger.fingerFastSearch(); if (p != FINGERPRINT_OK) { Serial.println("No Match Finger "); delay(10); digitalWrite(BAODONG, HIGH); delay(100); digitalWrite(BAODONG, LOW); dem = dem + 1; return -1; } time_curent = millis(); time_old = time_curent; Serial.print("Found ID #"); Serial.print(finger.fingerID); Serial.print(" with confidence of "); Serial.println(finger.confidence); return finger.fingerID; } Chương trình lưu vân tay #include #include SoftwareSerial mySerial(2, 3); Adafruit_Fingerprint finger = Adafruit_Fingerprint(&mySerial); uint8_t id; void setup() { Serial.begin(9600); while (!Serial); // For Yun/Leo/Micro/Zero/ delay(100); Serial.println("\n\nAdafruit Fingerprint sensor enrollment"); finger.begin(57600); if (finger.verifyPassword()) { Serial.println("Found fingerprint sensor!"); } else { Serial.println("Did not find fingerprint sensor :("); while (1) { delay(1); } } } uint8_t readnumber(void) { uint8_t num = 0; while (num == 0) { while (! Serial.available()); num = Serial.parseInt(); } return num; } void loop() 41 { Serial.println("Ready to enroll a fingerprint!"); Serial.println("Please type in the ID # (from to 127) you want to save this finger as "); id = readnumber(); if (id == 0) { return; } Serial.print("Enrolling ID #"); Serial.println(id); while (! getFingerprintEnroll() ); } uint8_t getFingerprintEnroll() { int p = -1; Serial.print("Waiting for valid finger to enroll as #"); Serial.println(id); while (p != FINGERPRINT_OK) { p = finger.getImage(); switch (p) { case FINGERPRINT_OK: Serial.println("Image taken"); break; case FINGERPRINT_NOFINGER: Serial.println("."); break; case FINGERPRINT_PACKETRECIEVEERR: Serial.println("Communication error"); break; case FINGERPRINT_IMAGEFAIL: Serial.println("Imaging error"); break; default: Serial.println("Unknown error"); break; } } p = finger.image2Tz(1); switch (p) { case FINGERPRINT_OK: Serial.println("Image converted"); break; case FINGERPRINT_IMAGEMESS: Serial.println("Image too messy"); return p; case FINGERPRINT_PACKETRECIEVEERR: Serial.println("Communication error"); return p; 42 case FINGERPRINT_FEATUREFAIL: Serial.println("Could not find fingerprint features"); return p; case FINGERPRINT_INVALIDIMAGE: Serial.println("Could not find fingerprint features"); return p; default: Serial.println("Unknown error"); return p; } Serial.println("Remove finger"); delay(2000); p = 0; while (p != FINGERPRINT_NOFINGER) { p = finger.getImage(); } Serial.print("ID "); Serial.println(id); p = -1; Serial.println("Place same finger again"); while (p != FINGERPRINT_OK) { p = finger.getImage(); switch (p) { case FINGERPRINT_OK: Serial.println("Image taken"); break; case FINGERPRINT_NOFINGER: Serial.print("."); break; case FINGERPRINT_PACKETRECIEVEERR: Serial.println("Communication error"); break; case FINGERPRINT_IMAGEFAIL: Serial.println("Imaging error"); break; default: Serial.println("Unknown error"); break; } } p = finger.image2Tz(2); switch (p) { case FINGERPRINT_OK: Serial.println("Image converted"); break; case FINGERPRINT_IMAGEMESS: Serial.println("Image too messy"); return p; case FINGERPRINT_PACKETRECIEVEERR: 43 Serial.println("Communication error"); return p; case FINGERPRINT_FEATUREFAIL: Serial.println("Could not find fingerprint features"); return p; case FINGERPRINT_INVALIDIMAGE: Serial.println("Could not find fingerprint features"); return p; default: Serial.println("Unknown error"); return p; } Serial.print("Creating model for #"); Serial.println(id); p = finger.createModel(); if (p == FINGERPRINT_OK) { Serial.println("Prints matched!"); } else if (p == FINGERPRINT_PACKETRECIEVEERR) { Serial.println("Communication error"); return p; } else if (p == FINGERPRINT_ENROLLMISMATCH) { Serial.println("Fingerprints did not match"); return p; } else { Serial.println("Unknown error"); return p; } Serial.print("ID "); Serial.println(id); p = finger.storeModel(id); if (p == FINGERPRINT_OK) { Serial.println("Stored!"); } else if (p == FINGERPRINT_PACKETRECIEVEERR) { Serial.println("Communication error"); return p; } else if (p == FINGERPRINT_BADLOCATION) { Serial.println("Could not store in that location"); return p; } else if (p == FINGERPRINT_FLASHERR) { Serial.println("Error writing to flash"); return p; } else { Serial.println("Unknown error"); return p; } } 44