Nothing Special   »   [go: up one dir, main page]

Academia.eduAcademia.edu

BAN SUA CUA ĐẠT

MỤC LỤC LỜI NÓI ĐẦU 5 CHƯƠNG 1. TỔNG QUAN VỀ CÁC HỆ THỐNG KHÓA CỬA TỰ ĐỘNG 6 1.1 Mục đích, ý nghĩa của đề tài 6 1.2 Lịch sử phát triển của khóa cửa 6 1.1.1 Then cài 6 1.2.2 Dây xích 7 1.2.3 Chốt nổi 7 1.2.4 Khóa cơ truyền thống 7 1.2.5 Khóa hiện đại – khóa điện tử 8 1.3 Một số loại khóa cửa trên thị trường hiện nay 8 1.3.1 Khóa cơ 9 1.3.2 Khóa cửa bằng vân tay 9 1.3.3 Khóa cửa bằng thẻ từ 10 1.3.4 Khóa cửa bằng cách nhận diện võng mạc 10 1.3.5 Khóa cửa bằng mật mã số 10 1.4 Kết luận chương 1 11 CHƯƠNG 2. PHÂN TÍCH MỘT SỐ PHƯƠNG PHÁP ĐÓNG MỞ CỬA BẰNG VÂN TAY 12 2.1 Công nghệ sinh trắc 12 2.2 Tìm hiểu về vân tay 12 2.2.1 Giới thiệu 13 2.2.2 Lịch sử 13 2.2.3 Lý thuyết, nguyên lý nhận dạng dấu vân tay 13 2.3 Tìm hiểu linh kiện 14 2.3.1 Cảm biến vân tay quang học AS608 14 2.3.2 Cảm biến vân tay điện dung R301 18 2.3.3 Đầu đọc vân tay Live Scan 21 2.3.4 Khóa điện 12V DC 23 2.3.5 Vi điều khiển Arduino UNO R3 24 2.4 Kết luận chương 2 27 CHƯƠNG 3. THIẾT KẾ , CHẾ TẠO HỆ THỐNG ĐÓNG MỞ CỬA BẰNG VÂN TAY 28 3.1 Sơ đồ khối của hệ thống 28 3.1.1 Sơ đồ khối của hệ thống 28 3.1.2 Đặc điểm chức năng các khối 28 3.2 Lưu đồ thuật toán điều khiển 29 3.3 Nguyên lý hoạt động 30 3.4 Lưu vân tay 30 3.4.1 Lưu đồ thuật toán lưu vân tay 30 3.4.2 Giải thích sơ đồ lưu vân tay 31 3.5 Yêu cầu thi công 32 3.6 Sơ đồ nguyên lý toàn mạch 33 3.7 Sơ đồ mạch in toàn mạch 33 3.8 Mô hình sản phẩm thực tế đã hoàn thành 34 3.9 Kết luận chương 3 36 KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN 37 1 Kết luận 37 2 Hướng phát triển 37 TÀI LIỆU THAM KHẢO 38 PHỤ LỤC A 39 DANH MỤC HÌNH ẢNH Hình 1. 1 Khóa then cài 6 Hình 1. 2 Khóa dây xích 7 Hình 1. 3 Khóa chốt nổi 7 Hình 1. 4 Khóa dạng ổ 8 Hình 1. 5 Khóa điện tử 8 Hình 1. 6 Cơ chế mở khóa 9 Hình 1. 7 Hình ảnh một số loại khóa cơ 9 Hình 1. 8 Khóa cửa bằng võn tay 9 Hình 1. 9 Khóa cửa bằng thẻ từ 10 Hình 1. 10 Khóa cửa bằng cách nhận diện võng mạc 10 Hình 1. 11 Khóa cửa bằng mật mã số 11 Hình 2. 1 Sơ đồ khối logic chính của hệ thống sinh trắc học 12 Hình 2. 2 Hình ảnh vân tay 12 Hình 2. 3 Module cảm biến vân tay quang học AS608 14 Hình 2. 4 Sơ đồ quá trình xử lý ảnh 15 Hình 2. 5 Sơ đồ quá trình so sánh vân tay 16 Hình 2. 6 Cảm biến vân tay ứng dụng vào ATM 17 Hình 2. 7 Công nhân sử dụng máy chấm công 18 Hình 2. 8 Cảm biến vân tay R301 18 Hình 2. 9 Bảo mật điện thoại bằng vân tay 21 Hình 2.10 Đầu đọc vân tay Live Scan 21 Hình 2. 11 Khóa điện 12VDC 23 Hình 2.12 Hình ảnh Arduino Uno R3 24 Hình 2.13 Sơ đồ cấu trúc Arduino Uno R3 24 Hình 2.14 Sơ đồ chân của Atmega328 26 Hình 2. 15 Giao diện phần mềm lập trình code cho Arduino 27 Hình 3. 1 Sơ đồ khối của hệ thống 28 Hình 3. 2 Lưu đồ thuật toán chương trình chính 29 Hình 3. 3 Lưu đồ thuật toán lưu vân tay 30 Hình 3. 4 Chương trình con lưu vân tay 31 Hình 3. 5 Bảng giao tiếp nhập ID và vân tay 31 Hình 3. 6 Thông báo vân tay đã được lưu 32 Hình 3. 7 Sơ đồ nguyên lý 33 Hình 3. 8 Sơ đồ mạch in 33 Hình 3. 9 Hình ảnh mạch hoàn thiện 34 Hình 3. 10 Kết nối và lắp ráp mạch vào mô hình sản phẩm 35 Hình 3. 11 Sản phẩm hoàn thiện 35 DANH MỤC BẢNG BIỂU Bảng 2.1: Nối dây với vi điều khiển 17 Bảng 2.2 Chức năng các chân cảm biến 20 Bảng 2.3 Bảng thông số kỹ thuật Arduino Uno R3 25 LỜI NÓI ĐẦU Như chúng ta đều biết, khi một công trình được xây dựng, nó được cấu thành bởi nhiều yếu tố, trong đó ổ khóa cửa là một bộ phận tuy nhỏ so với toàn công trình nhưng rất là quan trọng. Khóa cửa khụng chỉ giới hạn khoảng không gian bên trong và bên ngoài, mà nó cũng là bộ phận tạo nên sự an toàn bên trong đối với bên ngoài.Vì vậy trong một công trình, khóa cửa trở thành một người bạn trung thành luôn bảo vệ tính mạng, tài sản và những người thân yêu của bạn. Khóa cửa góp phần tạo nên một tổ ấm hạnh phúc. Trong đợt tốt nghiệp này, em có đượ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 của 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 cùng quý Thầy-Cô, bạn bè đó tạo điều kiện cho em hoàn thành tốt nhiệm vụ được 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 đỡ và định hướng cho em trong việc thực hiện đồ án hoàn thành đúng thời gian quy định. Thời gian thực hiện đồ án tốt nghiệp có hạn và kiến thức của em cũng nhiều hạn chế nên đồ án không tránh khỏi sự thiếu sót. Em rất mong sự đóng góp cùng sự chỉ bảo của quý Thầy-Cô để đồ án của em hoàn chỉnh hơn. Hưng Yên , ngày tháng năm 2019 Sinh viên thực hiện Phạm Thành Đạt TỔNG QUAN VỀ CÁC HỆ THỐNG KHÓA CỬA TỰ ĐỘNG Mục đích, ý nghĩa của đề tài Hệ thống khóa cửa bằng vân tay có thể ứng dụng thay thế các bộ khóa cửa thông thường tại các gia đình, giảm bớt nguy cơ khi có kẻ gian âm mưu đột nhập. Thông qua việc tìm hiểu về các hệ thống khóa cửa tự động, nếu thực hiện thành công thì đề tài sẽ mang lại ý nghĩa to lớn. Toàn bộ chương trình và bản thuyết minh của đè tài sẽ trở thành tài liệu nghiên cứu, tham khảo nhanh, dễ hiểu, thiết thực cho các bạn sinh viên và những người muốn tìm hiểu về đề tài của chúng em. Với sự thành công của đề tài sẽ góp phần giúp cho các bạn sinh viên mới nói chung và các bạn sinh viên khoa Điện- Điện tử nói riêng sẽ hiểu được ý nghĩa thực tiễn và yêu thích chuyên ngành mình đã chọn. Lịch sử phát triển của khóa cửa Để có được một bộ khóa cửa như ngày hôm nay, khóa đó cửa trải qua nhiều giai đoạn phát triển, có thể tóm lược qua các cột mốc như sau: 1.1.1 Then cài Đó là một bộ phận thường làm bằng gỗ hoặc kim loại dùng để cài chặt mặt sau của cánh cửa tựa trên hai bờ vai của bộ cửa. Hình 1. SEQ Hình_1. \* ARABIC 1 Khóa then cài Dây xích Đó là một sợi dây thường làm bằng kim loại, có tác dụng quấn và giữ chặt cánh cửa lại (để giữ cửa khỏi mở ra bằng cách mấu điểm cuối của sợi dây với một cái móc nằm ở mặt sau của cánh cửa). Hình 1. SEQ Hình_1. \* ARABIC 2 Khóa dây xích Chốt nổi Là hình thức biến thể của then cài và  dây xích. Đó là một thanh hình dẹp bằng kim loại gắn nổi trên cánh cửa, để giữ cửa khỏi mở ra bằng cách chốt (cài) vào khung bao của bộ cửa. Đỉnh cao của chốt cửa chính là cây chốt âm vừa đạt độ an toàn cao nhất vừa thẩm mỹ nhất. Hình 1. SEQ Hình_1. \* ARABIC 3 Khóa chốt nổi Ghi chú: Khuyết điểm lớn nhất của những loại trên (then cài, dây xích, chốt nổi…) là chỉ khóa được mặt trong của cánh cửa ( khi có người bên trong). Khóa cơ truyền thống Những bộ khóa cửa đầu tiên ra đời rất đơn giản thường làm bằng gỗ (loại tốt) với hệ chỡa chữ L rất đơn giản và dễ phá. Khi các vật liệu bằng kim loại phát triển ổ khóa cửa chuyển qua làm bằng kim loại (đồng, thau, Inox, Atimon, nhôm…) rất đa dạng về kiểu dáng, hoa văn và màu sắc, nhưng chung quy lại ta có thể phân biệt từng giai đoạn phát triển của nó thông qua hệ chìa. Hình 1. SEQ Hình_1. \* ARABIC 4 Khóa dạng ổ Khóa hiện đại – khóa điện tử Ngày nay với những tiến bộ trong ngành kỹ thuật điện, điện tử… chúng ta cũng thấy những loại khóa không dùng những loại chìa truyền thống mà dùng các hình thức giao diện khác để mở như card từ, tôn điện (nam châm điện), giọng nói, vân tay, ánh mắt,… Hình 1. SEQ Hình_1. \* ARABIC 5 Khóa điện tử Điểm tối ưu của những loại chìa này chính là sự tiện dụng, Sự bất lợi lớn nhất của những loại này là chế độ vận hành, kiểm tra, bảo trì, giám sát người lạ phá hoại (thay pin đúng định kỳ, bo mạch điện tử có tuổi thọ nhất định (2-3 năm), gắn nơi khô ráo không ẩm ướt, đặt biệt chú ý đến sự phá phách của người bên ngoài do những bộ phận nhận diện là những bộ phận gắn nổi rất dễ đập phá. Một số loại khóa cửa trên thị trường hiện nay Trên thị trường hiện nay có rất nhiều loại khóa cửa, rất đa dạng về mẫu mã và chủng loại đáp ứng các nhu cầu khác nhau của khách hàng. Khóa cơ Gồm hai phần là ổ khóa và chìa khóa, làm bằng kim loại cứng và nhiều hình dạng,...Khóa được mở khi có chìa khóa với các răng trên mép khóa đúng với thứ tự các chốt nhỏ trong ổ khóa nhằm nâng các chốt nhỏ đó lên gây mất tác dụng khóa của ổ khóa. Hình 1. SEQ Hình_1. \* ARABIC 6 Cơ chế mở khóa Hình 1. SEQ Hình_1. \* ARABIC 7 Hình ảnh một số loại khóa cơ Khóa cửa bằng vân tay Khóa vân tay hay cũng gọi là khóa cửa bằng vân tay là 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 1. SEQ Hình_1. \* ARABIC 8 Khúa cửa bằng vân tay Khóa cửa bằng thẻ từ Khóa từ có tên gọi là Nopass với ổ khóa bằng kim loại (có lớp từ tính bên trong), chìa khóa là một loại thẻ có hình dạng như thẻ tín dụng và được làm bằng chất liệu đặc biệt, trong thẻ có chứa ngầm các phần tử nhiễm từ nhưng không nhìn thấy. Khi mở, đóng cửa bạn chỉ cần đút thẻ từ vào khe của ổ khóa. Ưu điểm của khóa là hoàn toà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 trong ổ khóa. Mỗi cấu trúc đó là một tổ hợp hình học của 28 trong 41 lực từ. Hình 1. SEQ Hình_1. \* ARABIC 9 Khóa cửa bằng thẻ từ Khóa cửa bằng cách nhận diện võng mạc Dựa theo nguyên tắc sự chuyển động không giống nhau của mắt khi nhìn vào các vật khác nhau. Thông qua camera để ghi lại những chuyển động đặc trưng của mắt để mở khóa. Hình 1. SEQ Hình_1. \* ARABIC 10 Khóa cửa bằng cách nhận diện võng mạc Khóa cửa bằng mật mã số Loại khóa này sử dụng mật mã bằng số đó được lập trình, cài đặt từ trước để mở khóa thay cho cách mở khóa bằng chìa thông thường. Và đương nhiên chúng ta cũng có thể dùng chìa khóa để mở những loại khóa này tùy vào nhu cầu sử dụng. Hình 1. SEQ Hình_1. \* ARABIC 11 Khóa cửa bằng mật mã số Kết luận chương 1 Với sự phát triển như vũ bão của công nghệ thông tin, những giải pháp an ninh đang ngày càng được chú trọng. Ngày nay 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 nay không còn dùng chìa để thao tác mở cửa. Chúng được áp dụng những công nghệ hiện đại vào xác thực và đóng mở cửa hoàn toàn tự động. Điển hình là loại khóa điện tử hàng đầu: khóa vân tay. PHÂN TÍCH MỘT SỐ PHƯƠNG PHÁP ĐÓNG MỞ CỬA BẰNG VÂN TAY Công nghệ sinh trắc Được biết như một công nghệ áp dụng các đặc tính sinh học, vật lí hay các đặc điểm đặc trưng, riêng biệt của các cá thể, cá nhân như dáng đi, vân tay, gương mặt, con ngươi hay giọng nói…để nhận biết, nhận dạng. Trong tiếng anh, Biometric có nghĩa là sinh trắc học. Công nghệ sinh trắc được dùng trong việc xác nhận thông tin về một cá nhân hay nhân thân một cách hiệu quả và cực kì chính xác. Hình 2. SEQ Hình_2. \* ARABIC 1 Sơ đồ khối logic chính của hệ thống sinh trắc học Tìm hiểu về vân tay Hình 2. SEQ Hình_2. \* ARABIC 2 Hình ảnh vân tay Giới thiệu Tính tới thời điểm hiện nay, công nghệ sinh trắc mà được sử dụng lâu đời nhất và phổ biến nhất đó nhận diện dấu vân tay. Mỗi cá nhân con người khi được sinh ra thì đểu có cho mình dấu vân tay riêng biệt, không ai giống ai, hơn hết tất cả các loại sinh trắc khác, vân tay là dấu hiệu đặc trưng nhất trên cơ thể của mỗi con người. Đặc biệt là dấu vân tay không thể nào làm giả được cho nên nó được ưu tiên hàng đầu cho việc bảo mật. Lịch sử Người Trung Quốc từ rất lâu đã biết dùng dấu vân tay để nhận diện. như mỗi đứa trẻ được sinh ra, chúng sẽ được 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 cũng đã được sử dụng ở Anh. Một người đàn ông cai trị người Anh ở Ấn Độ đã bắt một người bản xứ dung dấu tay in lên mặt sau của một tờ hợp đồng.. Francis Galton bắt đầu công cuộc khoa học vân tay ở cuối thế kỉ XIX và cải tiến sau đó đã được 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 cũng được tạo ra cho những nước Tây Ban Nha. Đến nay thì càng ngày càng nhiều quốc gia phát triển và công nghê khoa học vân tay được áp dụng mạnh mẽ. Không chỉ được sử dụng trong lĩnh vực hình sự, hiện nay nó còn giúp ích rất nhiều trong việc bảo mật. Nhiều ngân hàng phát triển đã có thể sử dụng vân tay để quét trên máy ATM. Không chỉ vậy, người ta có thể xác định được các bệnh tật biến đổi gen nhờ vào nhận dạng vân tay trong y học. 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 bằng cách đối chiếu hình ảnh vân tay đã được lưu trữ trước đó trong thư viện, so với các thiết bị nhận biết thế hệ cũ thì cảm biến vân tay được áp dụng nhiều và phổ biến hơn, giúp ích rất nhiều như trong 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ủa một cảm biến vân tay, sử dụng ngón tay áp lên bất kì một thiết bị nhận dạng vân tay nào đó, hình ảnh vân tay sẽ được quét bởi thiết bị sau đó hình ảnh vân tay sẽ được đối chiếu đặc điểm với các dữ liệu được lưu trữ từ trước trong hệ thống. Trong quá trình này, dữ liệu hình ảnh sẽ được chuyển sang dạng dữ liệu số và kết thúc quá trình kết quả sẽ được thông báo rằng vân tay có hợp lệ hay không để tiếp tục thực hiện các chức năng tiếp theo. Tìm hiểu linh kiện Cảm biến vân tay quang học AS608 Hình 2. SEQ Hình_2. \* ARABIC 3 Module cảm biến vân tay quang học AS608 Các thông số kỹ thuật: Tích hợp xử lý hình ảnh với thuật toán xử lý trên cùng một chip. Khả năng xử lý ảnh đẹp, ảnh chụp với độ phân giải tới 500dpi. Điện áp hoạt động: 3.3 đến 5V. Dòng tiêu thụ: 90mA, dòng đỉnh 150mA. Độ phân giải: 500dpi. Chuẩn: USB - UART (TTL logical logic) Tốc độ truyền : 9600bps. Hình ảnh được quét với tốc độ: 0.5s. Bề mặt nhận dạng: 14mm *18mm. Phần trăm lỗi chấp nhận được: 0.0001%. Phần tram lỗi không chấp nhận: 0.1%. Nhiệt độ hoạt động: -20 đến 50 độ C. Nguyên lý hoạt động: Cảm biến vân tay AS608 hoạt động gồm 2 bước chính: Xác nhận dữ liệu hình ảnh vân tay: Khi đăng kí ghi danh các mẫu vân tay vào thư viện , hình ảnh vân tay sẽ được hệ thống xác nhận hai lần thông qua cảm biến quang học và xử lý hai hình ảnh đó để tạo ra một mẫu hoàn chỉnh. Tổng hợp dữ liệu để cho ra mẫu vân tay: Sau khi có hình ảnh vân tay, quá trình tổng hợp này sẽ diễn ra. Hệ thống sẽ kết hợp hai vân tay của hai lần quét thành một mẫu sau đó sẽ lưu trữ vào thư viện vân tay. Hệ thống sẽ xử lý và sau đó nhận dạng dựa vào 2 quá trình đó là xử lý hình ảnh và so sánh. Xử lý hình ảnh trong nhận diện vân tay: Hình 2. SEQ Hình_2. \* ARABIC 4 Sơ đồ quá trình xử lý ảnh Giải thích các bước: Đầu tiên là tăng cường hình ảnh, hình ảnh vân tay sẽ được làm rõ sau khi lấy mẫu từ đầu vào thiết bị quét. Nhiều lúc các hình ảnh được lấy từ các thiết bị quét vân tay không được tốt hoặc do người dùng trong lúc nhập vân tay bị thiếu, đứt đoạn hoặc dơ bẩn, cho nên, bước đầu tiên này là bước quan trọng nhất của quá trình xưt lý ảnh, khi bước này thực hiện tốt thì mới đủ điều kiện thực hiện các bước kế tiếp. Tiếp theo là phân tích ảnh, sau khi được phân tích, hình ảnh được loại đi các thông tin vô ích, các thông tin làm nhiễu, ảnh hưởng đến chất lượng hình ảnh. Bước thứ ba là nhị phân ảnh, ảnh vân tay lúc này sẽ được nhị phân hóa thành ảnh trắng đen để phục vụ cho bước làm mỏng tiếp theo. Tiếp theo là làm mỏng, những đường vân lồi của hình ảnh vân tay sẽ được làm mỏng lại. Bước cuối cùng trong quá trình xử lý hình ảnh là rút trích ra được các đặc trưng cần thiết để tiếp tục quá trình so sánh vân tay. So sánh vân tay Hình 2. SEQ Hình_2. \* ARABIC 5 Sơ đồ quá trình so sánh vân tay Giải thích quá trình so sánh vân tay dựa trên rút trích từ quá trình đầu tiên: Đầu tiên là phân tích đặc trưng tức là trước khi tiến hành việc so sánh vân tay ta phải phân tích được những đặc điểm quan trọng, cần thiết của các đặc trưng. Tiếp theo là kiểm tra tương đương cục bộ, để so sánh các vân tay thì thiết bị sẽ sử dụng các thuật toán xử lý dựa trên các đặc trưng gồm tọa độ, góc, phương, hướng để nhận biết được sự giống nhau của hai vân tay được so sánh. Kiểm tra tương đương toàn cục, khi tìm được các đặc trưng vân tay giống nhau, thuật toán sẽ tiếp tục so sánh toàn cục. Tính các điểm so sánh. Tính toán được độ giống nhau, các tỷ lệ để biết được độ giống nhau của hai hình ảnh vân tay là bao nhiêu. Bảng 2.1: Nối dây với vi điều khiển Module cảm biến AS608 Vi điều khiển Vcc 5V GND GND Tx 2 Rx 3 Chức năng của cảm biến: Lấy hình ảnh vân tay, đăng kí, lưu trữ vào thư viện vân tay của module.Đối chiếu vân tay nhập vào với thư viện vân tay để ứng dụng cho các công việc như nhận diện hay bảo mật.v.v… Cảm biến vân tay và một số ứng dụng: Máy rút tiền ATM sử dụng vân tay Hình 2. SEQ Hình_2. \* ARABIC 6 Cảm biến vân tay ứng dụng vào ATM Với công nghệ vân tay được áp dụng trên máy ATM, người dùng có thể thực hiện các thao tác với máy một cách nhanh chóng, tuyệt đối bảo mật, an toàn và vô cùng tiện lợi. đối với các máy ATM thông thường, người dùng thường gặp phải các rủi ro khi mất thẻ tín dụng, nhưng đối với ATM sử dụng công nghệ vân tay thì rủi ro này sẽ được xóa bỏ vì người dung không cần tới thẻ tín dụng. Máy chấm công sử dụng cảm biến vân tay Hình 2. SEQ Hình_2. \* ARABIC 7 Công nhân sử dụng máy chấm công Thay vì việc phải xếp hàng chờ điểm danh hoặc người quản lý phải đi điểm danh từng người đi làm thì mỗi người công nhân đi làm sẽ chỉ cần điểm danh bằng vân tay khi đến làm và khi về. Như thế sẽ rất tiết kiệm được thời gian và công sức cho việc hoạt động và sản xuất. Cảm biến vân tay điện dung R301 Mô-đun cảm biến vân tay R301 sử dụng cảm biến vân tay điện dung chất lượng cao, tích hợp các giải thuật xử lý vân tay bao gồm các chức năng đọc vân tay, xử lý ảnh, trích đặc trưng, tạo mẫu vân tay, lưu mẫu vân tay, đối chiếu vân tay (1:1) hay tìm mẫu vân tay (1:N). Hình 2. SEQ Hình_2. \* ARABIC 8 Cảm biến vân tay R301 Thông số kỹ thuật Nguồn cung cấp: 4.2 ~ 6.0 VDC Dòng hoạt động: 40 mA (dòng tối đa: 50 mA) Các chế độ sử dụng: Đối chiếu vân tay (1:1) Tìm kiếm vân tay (1:N) Độ phân giải: 508dpi Thời gian quét: <0.2 s Kích thước mẫu: 496 byte Khả năng lưu trữ: 1700 FAR (False Acceptance Rate): <0.001% FRR (False Rejection Rate): <0.1% Thời gian tìm kiếm: <50ms Giao tiếp: UART(TTL logical level)/USB 2.0 Tốc độ baud: 9600*N bps, N=1~12 (mặc định N=6) Các mức bảo mật: 5 (1,2,3,4,5(cao nhất)) Thời gian khởi động: <250 ms Kích thước mặt quét vân tay: 10 x 10 mm Kích thước board: 33.4 x 20.4 x 1.0 mm Điều kiện hoạt động: Nhiệt độ: -10℃ ~ +50℃ Độ ẩm: 10% ~ 85% Điều kiện bảo quản: Nhiệt độ: -40℃ ~ +85℃ Độ ẩm: <85% Bảng 2.2 Chức năng các chân cảm biến Pin Detail 1 5V 2 GND 3 TXD 4 RXD 5 Touch 6 TouchPower Nguyên lý hoạt động Thay vì tạo ra bản sao hình ảnh về mẫu dấu vân tay, thiết bị này sử dụng các bảng mạch tụ điện nhỏ để lưu trữ mẫu phẩm, ghi nhớ đầy đủ mọi chi tiết về dấu vân tay. Vì tụ điện có thể lưu trữ điện tích, việc kết nối chúng với các tấm dẫn điện trên bề mặt của máy quét cho phép chúng ta có thể sử dụng được các tụ điện để theo dõi các chi tiết của dấu vân tay. Phần điện tích được lưu trữ trong tụ điện sẽ được thay đổi một chút khi phần cạnh của ngón tay được đặt trên các tấm dẫn điện, trong khi khoảng cách không khí giữa các đường rãnh trên vân tay sẽ giúp điện tích ở tụ điện gần như không thay đổi. Một mạch tích hợp op-amp sẽ được sử dụng để theo dõi những thay đổi này, sau đó có thể được ghi lại bằng bộ chuyển đổi analog sang kỹ thuật số. Lợi thế của phương pháp quét vân tay này nằm ở tốc độ xử lý và khả năng nhận diện nhiều thuộc tính của vân tay, qua đó đảm bảo tính bảo mật cao. Quá trình phân tích các đường vân và đường rãnh trên cấu trúc vân tay sẽ trở nên chi tiết hơn. Ngoài ra, do cấu tạo phức tạp nên máy quét vân tay điện dung sẽ có giá thành đắt đỏ hơn so với loại quang học phía trên. Càng nhiều tụ điện, điểm nhận diện vân tay sẽ càng cao, giá cũng sẽ đắt hơn nhưng tốc độ xử lý lại chậm hơn một chút vì cảm biến sẽ phải quét nhiều thông số hơn. Ứng dụng của cảm biến vân tay điện dung Bảo mật các đồ dùng công nghệ: Hiện nay đối với các đồ dùng công nghệ như Smartphone, máy tính bảng,… thì đã có áp dụng công nghệ quét vân tay, cho phép người dùng sử dụng vân tay để mở khóa thay vì cài mật khẩu bằng số. Đối với các loại máy nào được hỗ trợ tính năng vân tay thì người dùng có thể an tâm về vấn đề bảo mật thông tin, dữ liệu,… Hình 2. SEQ Hình_2. \* ARABIC 9 Bảo mật điện thoại bằng vân tay Đầu đọc vân tay Live Scan Hình 2.10 Đầu đọc vân tay Live Scan Live scan là hình thức quét dấu vân tay tiên tiến nhất về kỹ thuật công nghệ được sử dụng tại các cơ quan thực thi pháp luật, các doanh nghiệp cao cấp. Ứng dụng đọc vân tay Live scan đã có mặt trên thế giới gần 20 năm và hiện đang được áp dụng rộng rãi hơn trong việc nhận diện công nghệ sinh trắc học vân tay. Live scan được mệnh danh là công nghệ chống mọi vân tay giả. Bởi công nghệ này gồm 2 phần đó là Live và scan. Scan tức là quét phân mảng cắt lớp vân tay bằng trắc sinh học, đưa ra mức mã hóa sâu hơn của vân tay. Live tức là quét vân tay sống, là sự kết hợp giữa quét hồng ngoại và lấy tế bào da. Đầu đọc Live scan gồm các thành phần chính đó là: Thiết bị lưu giữ tế bào da chết: lấy lại tế bào da chết trên vân tay để phân tích. Thiết bị quét cắt lớp vân tay: có nhiệm vụ ghi chụp lại đường nét vân tay và mã hóa chúng. Thiết bị cảm biến hồng ngoại nhận dạng thân nhiệt Đầu đọc vân tay Live scan có các ưu điểm nổi trội Có khả năng nhận diện được cả những vân tay bị xước, bị mờ, lão hóa. Có thể phát hiện những kẻ làm giả dấu vân tay bởi vân tay giả không có hồng ngoại, không có tế bào da chết. Tốc độ quét dấu vân tay rất nhanh với độ chính xác cao và không phụ thuộc vào góc quét. Khóa điện 12V DC Hình 2. 11 Khóa điện 12VDC Các thông số kĩ thuật của khóa điện Khối lượng 0,14 kg Kích thước: 53*39* 25mm. Điện áp: 12VDC Dòng: 1A Sử dụng van điện từ Solenoid Tốc độ phản ứng < 1s Thời gian kích liên tục < 10s Công suất tiêu thụ 9,6W Vi điều khiển Arduino UNO R3 Hình 2.12 Hình ảnh Arduino Uno R3 Tổng quan về Arduino R3 Arduino Uno là một bo mạch vi điều khiển dựa trên chip Atmega328P. Uno có 14 chân I/O digital ( trong đó có 6 chân xuất xung PWM), 6 chân Input analog, 1 thạch anh 16MHz, 1 cổng USB, 1 jack nguồn DC, 1 nút reset. Sơ đồ chi tiết của Uno R3: Hình 2.13 Sơ đồ cấu trúc Arduino Uno R3 Thông số kỹ thuật – Uno R3 Bảng 2.3 Bảng thông số kỹ thuật Arduino Uno R3 Vi điều khiển Atmega328P Điện áp hoạt động 5V Điện áp cấp (hoạt động tốt)  7 – 12 V Điện áp cấp (giới hạn) 6 – 12 V Chân I/O digital 14 ( có 6 chân xuất xung PWM) Chân Input analog 6 (A0 – A5) Dòng điện mỗi chân I/O 20 mA Dòng điện chân 3.3V 50 mA Bộ nhớ Flash 32 kB (Atmega328P) – trong đó 0.5 kB dùng cho bootloader. SRAM 2 kB (Atmega328P) EEPROM 1 kB (Atmega328P) Tốc độ xung nhịp 16 MHz Kích thước 68.6 x 53.4 mm Trọng lượng 25 g I/O Pins Sơ đồ chân của vi điều khiển ATmega328P: Hình 2.14 Sơ đồ chân của Atmega328 ♦ Digital: Các chân I/O digital (chân số 2 – 13 ) được sử dụng làm chân nhập, xuất tín hiệu số thông qua các hàm chính : pinMode(), digitalWrite(), digitalRead(). Điện áp hoạt động là 5V, dòng điện qua các chân này ở chế độ bình thường là 20mA, cấp dòng quá 40mA sẽ phá hỏng vi điều khiển. ♦ Analog :Uno có 6 chân Input analog (A0 – A5), độ phân giải mỗi chân là 10 bit (0 – 1023 ). Các chân này dùng để đọc tín hiệu điện áp 0 – 5V (mặc định) tương ứng với 1024 giá trị, sử dụng hàm analogRead().  ♦ PWM : các chân được đánh số 3, 5, 6, 9, 10, 11; có chức năng cấp xung PWM (8 bit) thông qua hàm analogWrite(). ♦ UART: Atmega328P cho phép truyền dữ liệu thông qua hai chân 0 (RX) và chân 1 (TX). Nguồn Có hai cách cấp nguồn chính cho bo mạch Uno: cổng USB và jack DC. Giới hạn điện áp cấp cho Uno là 6 – 20V. Tuy nhiên, dải điện áp khuyên dùng là 7 – 12 V (tốt nhất là 9V). Lý do là nếu nguồn cấp dưới 7V thì điện áp ở ‘chân 5V’  có thể thấp hơn 5V và mạch có thể hoạt động không ổn định; nếu nguồn cấp lớn hơn 12V có thể gấy nóng bo mạch hoặc phá hỏng. Các chân nguồn trên Uno: -  Vin : chúng ta có thể cấp nguồn cho Uno thông qua chân này. Cách cấp nguồn này ít được sử dụng. -  5V : Chân này có thể cho nguồn 5V từ bo mạch Uno. Việc cấp nguồn vào chân này hay chân 3.3 V đều có thể phá hỏng bo mạch. -  3.3V : Chân này cho nguồn 3.3 V và dòng điện maximum là 50mA. -  GND: chân đất. Lập trình trên vi điều khiển trên Arduino: Hình 2. 15 Giao diện phần mềm lập trình code cho vi điều khiển trên Arduino Kết luận chương 2 Sau khi tìm hiểu về vân tay và các linh kiện sử dụng trong mạch, chúng em quyết định chọn sử dụng cảm biến vân tay quang học, cụ thể là cảm biến vân tay AS608 và module Arduino để điều khiển cho mạch. Bởi vì giá thành và sử phổ biến của chúng nhưng vẫn đảm bảo được độ chính xác và ổn định của toàn hệ thống. THIẾT KẾ , CHẾ TẠO HỆ THỐNG ĐÓNG MỞ CỬA BẰNG VÂN TAY Sơ đồ khối của hệ thống Sơ đồ khối của hệ thống Hình 3. SEQ Hình_3. \* ARABIC 1 Sơ đồ khối của hệ thống Đặc điểm chức năng các khối Kết nối mạch hệ thống đóng mở vân tay theo sơ đồ khối, cung cấp nguồn cho các khối còn lại là các khối cảm biến, khối vi xử lý, khối hiển thị và khối chấp hành là các khóa điện, bóng đèn và các còi cảnh báo . Đầu tiên khối cảm biến nhận dữ liệu bên ngoài (vân tay), sau đó tương tác với khối điều khiển bằng các chân RX, TX, nếu dữ liệu khối điểu khiển nhận được đúng với dữ liệu đã được lưu trữ trong thư viện thì sau đó khối điều khiển sẽ tương tác với 2 khối chấp hành và khối hiển thị. Khối nguồn: 1 Adapter 12v, cấp nguồn cho khối vi điều khiển và các thiết bị chấp hành sử dụng điện 12v như còi báo động và chốt điện. Khối cảm biến: 1 cảm biến nhận diện vân tay, ở đây em sử dụng cảm biến AS608 XD-65, lưu vân tay người dùng, đọc và so sánh vân tay đưa đến vi xử lý thể thực hiện lệnh. Khối xử lý ( vi điều khiển): Arduino UNO R3, bộ não xử lý cho toàn hệ thống. Khối hiển thị gồm 3 LED xanh dương và 1 LED vàng. 2 LED đầu tiên báo hiệu vân tay đã nhập đúng, LED thứ 3 báo hiệu vân tay nhập đã sai, LED vàng thứ tư sẽ sáng khi vân tay nhập sai vào ban đêm. Khối chấp hành : 1 khóa điện 12VDC KD-01, 1 còi báo động 5VDC và 2 bóng đèn 220V AC. Lưu đồ thuật toán điều khiển Hình 3. SEQ Hình_3. \* ARABIC 2 Lưu đồ thuật toán chương trình chính Nguyên lý hoạt động Sơ đồ trên đưa ra cách nhìn tổng quát về một hệ thống quét vân tay được người dùng sử dụng để thực hiện việc đóng mở cửa theo nhu cầu. Nhìn vào sơ đồ thì khi người dùng nhập vân tay vào thiết bị quét để hệ thống quét lấy mẫu và so sánh với những mẫu đã được lưu tại thư viện. Sau khi hệ thống quét xong sẽ có hai trường hợp xảy ra . Trường hợp đầu tiên, nếu vân tay của người dùng nhập vào là vân tay hợp lệ, trùng khớp với vân tay được lưu trong hệ thống thì hệ thống sẽ nhận diện được vân tay đó và đèn báo hiệu vân tay hợp lệ là đèn màu xanh dương sẽ sáng, sau đó khóa điện và cửa được mở. Trường hợp thứ 2, nếu vân tay không khớp thì lúc đó hệ thống sẽ không tìm thấy được vân tay nào trong thư viện hợp lệ với vân tay đó, và hệ thống sẽ báo tín hiệu vân tay sai. Khi đó người dung phải nhập lại. Khi vân tay đã nhập sai 3 lần liên tiếp, hệ thống báo động sẽ hoạt động. Lưu vân tay Lưu đồ thuật toán lưu vân tay Hình 3. SEQ Hình_3. \* ARABIC 3 Lưu đồ thuật toán lưu vân tay Giải thích sơ đồ lưu vân tay Kết nối Arduino vào máy tính và chạy chương trình lưu vân tay Hình 3. SEQ Hình_3. \* ARABIC 4 Chương trình con lưu vân tay Nạp chương trình, sau đó nhấp Serial Monitor, chương trình sẽ mở một bảng giao tiếp để ta nhập số ID và lưu vân tay. Hình 3. SEQ Hình_3. \* ARABIC 5 Bảng giao tiếp nhập ID và 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 sẽ bắt chúng ta nhập lại vân tay lần nữa để xác nhận Hình 3. SEQ Hình_3. \* ARABIC 6 Thông báo vân tay đã được lưu Yêu cầu thi công Dùng board Arduino để thiết kế một board kết nối với các linh kiện và cảm biến. Yêu cầu đầu tiên là phải có đầy đủ linh kiện cần thiết, sau đó tiến hành vẽ mạch nguyên lý mô phỏng trên máy tính, sau đó sẽ chuyển sang mạch in tương đương với mạch nguyên lý đó. Cuối cùng khi có mạch cứng hoàn chỉnh, ta sẽ kết nối các linh kiện cảm biến vân tay, khóa cửa, led vào đúng chân cần kết nối trên mạch cứng để kiểm tra lại kết quả xem có giống như đã mô phỏng hay không hay không. Sơ đồ nguyên lý toàn mạch Hình 3. SEQ Hình_3. \* ARABIC 7 Sơ đồ nguyên lý Sơ đồ mạch in toàn mạch Hình 3. SEQ Hình_3. \* ARABIC 8 Sơ đồ mạch in Mô hình sản phẩm thực tế đã hoàn thành Hình 3. SEQ Hình_3. \* ARABIC 9 Hình ảnh mạch hoàn thiện Hình 3. SEQ Hình_3. \* ARABIC 10 Kết nối và lắp ráp mạch vào mô hình sản phẩm Hình 3. SEQ Hình_3. \* ARABIC 11 Sản phẩm hoàn thiện Kết luận chương 3 Mạch chạy đúng theo yêu cầu, mạch nhỏ gọn, thi công cũng không quá phức tạp, sau khi kiểm tra qua nhiều lần, mạch chạy khá 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ô phỏng cửa mở chính xác, tuy chưa được ổn định lắm. 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 một board mạch được thiết kế như vậy, quá trình nạp lại code hay thay đổi code cũng trở nên dễ dàng hơn, chỉ việc lấy dây cable kết nối Arduino với máy tính để nạp lại code. Trong quá trình thực hiện đề tài” Thiết kế chế tạo hệ thống đóng mở cửa tự động bằng vân tay” chúng em còn nhiều vướng mắc. Nhưng sau khi đã tìm hiểu, học hỏi và sự trợ giúp của thầy cô và bạn bè thì chúng em đã tính toán và thiết kế cuối cùng đã hoàn thiện được sản phẩm dựa trên cơ sở lý thuyết và những kiến thức đã học. Chúng em đã hoàn thiện đề tài được 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 và các bộ cảnh báo để đảm bảo an ninh cho căn nhà. Ưu điểm Hệ thống hoạt động khá ổn định Có tính thực tiễn cao Dễ dàng sử dụng với mục đích khác nhau Nhược điểm Phần cứng hoàn thiện chưa được đẹp Lưu vân tay vẫn phải sử dụng máy tính KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN 1 Kết luận Kết quả đạt được trong quá trình đề tài này của em là: Hoàn thành thiết kế và gia công mạch, kiểm tra kĩ càng, mạch tuy chưa ổn định lắm nhưng cũng đã đáp ứng chạy đúng yêu cầu đề tài. Thiết kế được hoàn thành có thể ứng dụng cho lắp đặt thay thế các loại khóa cửa dân dụng hay các loại khóa bằng mật khẩu số tại các cửa cổng tại các cơ quan, xí nghiệp, trường học,…. Hệ thống đóng mở cửa dùng cảm biến vân tay được thực hiện như đề tài có thể được xem làm một hệ thống thông minh với các chức năng đã đạt được như: Nhận diện được 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 đã được lưu trữ để đóng mở cửa chính xác, giảm bớt nguy cơ khi có kẻ gian âm mưu đột nhập. Tuy nhiên bên cạnh các ưu điểm có được thì hệ thống còn có nhược điểm hạn chế đó là dễ bị phá hoại, vấn đề bảo vệ còn chưa được tốt. 2 Hướng phát triển Sản phẩm mạch được làm ra tuy đạt được yêu cầu đề ra nhưng không đi vào chuyên sâu bởi vì hạn chế về thời gian cũng như kiến thức chưa đủ nên mạch làm ra bị thiếu chuyên môn và còn rất sơ sài, nếu có thời gian, cơ hội nghiên cứu tốt và nghiên cứu kỹ càng hơn, em mong rằng đề tài này được có thêm được các chức năng như: Xem được ngày giờ xác nhận vân tay. Có thể thực hiện thay đổi trực tiếp vân tay hoặc xóa bỏ được vân tay ngay trên hệ thống. Tích hợp cùng các kiểu bảo mật khác để tạo nên một bộ khóa cửa nhiều chức năng, chẳng hạn như nhận diện khuôn mặt, mở khóa bằng thẻ từ, bàn phím, khóa cơ truyền thống.... Khi bấm sai quá nhiều lần sẽ gửi tin nhắn cảnh báo đến điện thoại Sau cùng, hi vọng với những hướng đi phát triển như trên cùng với sự góp ý chân tình từ các thầy, các cô, đề tài này sẽ phát triển mở rộng tốt hơn, tiên tiến hơn, thông minh hơn nữa để phục vụ được cho nhu cầu của con người. 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 PHỤ LỤC Chương trình chính của hệ thống #include <Adafruit_Fingerprint.h> #include <SoftwareSerial.h> #define BAODONG 7 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 == 1 && (time_curent - time_old < 1000)) { digitalWrite(13, HIGH); digitalWrite(12, HIGH); dem = 0; } else if (tt == 2 && (time_curent - time_old < 1000)) { digitalWrite(13, HIGH); digitalWrite(12, HIGH); dem = 0; } 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; } 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; } 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 con lưu vân tay #include <Adafruit_Fingerprint.h> #include <SoftwareSerial.h> 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() { Serial.println("Ready to enroll a fingerprint!"); Serial.println("Please type in the ID # (from 1 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; 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: 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; } } 5 29