- Vật liệu thiết yếu
- Mô-đun cảm biến vân tay GT511C3 (FPS)
- Kết nối cảm biến vân tay GT511C3 với Arduino
- Arduino với GT511C3
- Lập trình Arduino cho cảm biến vân tay GT511C3
- Hoạt động của cảm biến vân tay GT511C3 với Arduino
Sinh trắc học đã được sử dụng như một hệ thống xác thực đáng tin cậy trong một thời gian dài. Ngày nay tồn tại những hệ thống sinh trắc học phức tạp có thể xác định một người bằng nhịp đập của tim hoặc thậm chí bằng DNA của người đó. Các phương pháp khả thi khác bao gồm nhận dạng giọng nói, nhận dạng khuôn mặt, quét mống mắt và quét vân tay. Trong đó, nhận dạng vân tay là phương pháp được sử dụng rộng rãi nhất, chúng ta có thể tìm thấy nó từ một hệ thống chấm công đơn giản cho điện thoại thông minh đến Kiểm tra an ninh và hơn thế nữa.
Trong hướng dẫn này, chúng ta sẽ học cách sử dụng Cảm biến vân tay (FPS) GT511C3 phổ biến với Arduino. Có rất nhiều FPS có sẵn và chúng tôi đã học cách sử dụng chúng để xây dựng các thiết kế như hệ thống chấm công, máy bỏ phiếu, hệ thống bảo mật, v.v. Nhưng GT511C3 cao cấp hơn với độ chính xác cao và thời gian phản hồi nhanh hơn, vì vậy chúng tôi sẽ học cách sử dụng nó với Arduino để ghi nhận dấu vân tay trên đó và sau đó phát hiện dấu vân tay bất cứ khi nào được yêu cầu. Vậy hãy bắt đầu.
Vật liệu thiết yếu
- Arduino Nano / UNO
- Cảm biến vân tay GT511C3
- Màn hình LCD 16x2
- Nồi - điện trở 10k và 1k, 10k, 22k
- Nút ấn
- Kết nối dây
- Bảng bánh mì
Mô-đun cảm biến vân tay GT511C3 (FPS)
Trước khi đi sâu vào dự án, hãy để chúng tôi hiểu về Mô-đun cảm biến vân tay GT511C3 và cách hoạt động của nó. Cảm biến này rất khác với dạng cảm biến Vân tay điện dung và siêu âm thường được sử dụng trong điện thoại thông minh của chúng ta. Các GT511C3 là một bộ cảm biến vân tay quang học, có nghĩa là nó dựa trên hình ảnh của vân tay để nhận ra mô hình của nó. Vâng, bạn đã đọc đúng, cảm biến thực sự có một camera bên trong nó chụp ảnh dấu vân tay của bạn và sau đó xử lý những hình ảnh này bằng cách sử dụng vi mạch ARM Cortex M3 mạnh mẽ được tích hợp sẵn. Hình ảnh dưới đây cho thấy mặt trước và mặt sau của cảm biến có sơ đồ chân.
Như bạn có thể thấy cảm biến có một camera (điểm đen) được bao quanh bởi các đèn LED màu xanh lam, các đèn LED này phải sáng lên để chụp ảnh dấu vân tay rõ ràng. Những hình ảnh này sau đó được xử lý và chuyển đổi thành giá trị nhị phân bằng cách sử dụng Vi điều khiển ARM kết hợp với EEPROM. Mô-đun cũng có đèn LED SMD màu xanh lá cây để chỉ ra nguồn. Mỗi hình ảnh dấu vân tay có kích thước 202x258 pixel với độ phân giải 450dpi. Các cảm biến có thể ghi danh tối đa 200 dấu vân tay và cho từng in dấu vân tay mẫu nó gán một hình thức ID 0-199. Sau đó, trong quá trình phát hiện, nó có thể tự động so sánh vân tay được quét với tất cả 200 mẫu và nếu tìm thấy trùng khớp, nó sẽ cung cấp số ID của vân tay cụ thể đó bằng Smack Finger 3.0Thuật toán trên Vi điều khiển ARM. Cảm biến có thể hoạt động từ 3,3V đến 6V và giao tiếp thông qua giao tiếp nối tiếp ở 9600. Các chân giao tiếp (Rx và Tx) được cho là chỉ có khả năng chịu được 3,3V, tuy nhiên bảng dữ liệu không chỉ rõ nhiều về nó. Chân ra của FPS GT511C3 được hiển thị bên dưới.
Ngoài giao tiếp nối tiếp, mô-đun cũng có thể được giao tiếp trực tiếp với máy tính thông qua kết nối USB bằng các chân hiển thị trong hình trước. Sau khi kết nối với máy tính, mô-đun có thể được điều khiển bằng ứng dụng SDK_DEMO.exe có thể được tải xuống từ liên kết. Ứng dụng này cho phép người dùng đăng ký / xác minh / xóa dấu vân tay và cũng có thể nhận dạng dấu vân tay. Phần mềm cũng có thể giúp bạn đọc hình ảnh được chụp bởi cảm biến, rất đáng để thử. Ngoài ra, bạn cũng có thể sử dụng Phần mềm này ngay cả khi cảm biến được kết nối với Arduino, chúng ta sẽ thảo luận về vấn đề này sau trong bài viết này.
Một tính năng thú vị khác về cảm biến là vỏ kim loại xung quanh vùng cảm biến. Như tôi đã nói trước đó, đèn LED màu xanh lam phải được bật để cảm biến hoạt động. Nhưng trong các ứng dụng mà cảm biến chủ động chờ lấy dấu vân tay, không thể để đèn LED luôn bật vì nó sẽ làm nóng cảm biến và do đó làm hỏng cảm biến. Do đó, trong những trường hợp đó, vỏ kim loại có thể được nối dây với chân đầu vào cảm ứng điện dung của MCU để phát hiện xem nó có bị chạm hay không. Nếu có, đèn LED có thể được bật và quá trình phát hiện có thể được bắt đầu. Phương pháp này không được trình bày ở đây vì nó nằm ngoài phạm vi của bài viết này.
Khi hoạt động ở 3.3V, cảm biến tiêu thụ khoảng 130mA. Nó cần gần 3 giây để đăng ký một ngón tay và 1 giây để xác định nó. Tuy nhiên, nếu số lượng mẫu được đăng ký ít hơn, tốc độ nhận dạng sẽ cao. Để biết thêm chi tiết về cảm biến, bạn có thể tham khảo biểu dữ liệu này từ ADH-Tech, nhà sản xuất chính thức của mô-đun.
Kết nối cảm biến vân tay GT511C3 với Arduino
GT511C3 FPS có hai chân nguồn có thể được cấp nguồn bởi chân + 5V của Arduino và hai chân giao tiếp Rx và Tx có thể được kết nối với bất kỳ chân kỹ thuật số nào của Arduino để giao tiếp nối tiếp. Ngoài ra, chúng tôi cũng đã thêm một nút nhấn và một màn hình LCD để hiển thị trạng thái cảm biến. Sơ đồ mạch hoàn chỉnh để giao tiếp GT511C3 FPS với Arduino có thể được tìm thấy bên dưới.
Vì các chân Rx và Tx có khả năng chịu 3.3V nên chúng tôi đã sử dụng một bộ chia điện thế ở phía Rx để chuyển đổi 5V thành 3.3V. Điện trở 10k và điện trở 22k chuyển đổi tín hiệu 5V từ chân Arduino Tx thành 3,3V trước khi nó đến chân Rx của FPS. Cảm biến cũng có thể được cấp nguồn bằng 3.3V nhưng hãy đảm bảo rằng Arduino của bạn có thể cung cấp đủ dòng điện cho cảm biến. Chúng tôi đã kết nối màn hình LCD ở chế độ 4 bit được cấp nguồn bằng chân 5V của Arduino. Một nút nhấn được kết nối với chân D2, khi được nhấn sẽ đưa chương trình vào chế độ đăng ký nơi người dùng có thể đăng ký ngón tay mới. Sau khi đăng ký, chương trình sẽ vẫn ở chế độ quét để quét tìm bất kỳ ngón tay nào chạm vào cảm biến.
Arduino với GT511C3
Như đã đề cập trước đó GT511C3 FPS giao tiếp thông qua giao tiếp nối tiếp, cảm biến hiểu mã hex và đối với mỗi mã hex, một hoạt động cụ thể được thực hiện. Bạn có thể kiểm tra biểu dữ liệu để biết tất cả các giá trị hex và chức năng tương ứng của nó nếu bạn quan tâm. Nhưng, thật may mắn cho chúng tôi bboyho đã tạo một thư viện có thể được sử dụng trực tiếp với Arduino để Đăng ký và phát hiện dấu tay. Thư viện Github cho GT511C3 FPS có thể được tải xuống từ liên kết bên dưới
Thư viện Arduino GT511C3
Liên kết sẽ tải xuống tệp ZIP, sau đó bạn sẽ phải thêm tệp đó vào IDE Arduino của mình bằng cách làm theo lệnh Sketch -> Bao gồm Thư viện -> Thêm Thư viện.ZIP. Khi bạn đã thêm thư viện, hãy khởi động lại IDE của mình và bạn sẽ có thể tìm thấy các chương trình e xample cho GT511C3 FSP trong Tệp -> Ví dụ -> Máy quét vân tay TTL như hình dưới đây
Bạn sẽ thấy bốn chương trình ví dụ, chương trình nhấp nháy sẽ nhấp nháy đèn led màu xanh trên FPS, chương trình đăng ký và ngón tay ID có thể được sử dụng để đăng ký và xác định các ngón tay cho phù hợp. Lưu ý rằng một ngón tay sau khi được đăng ký sẽ luôn được mô-đun ghi nhớ ngay cả khi nó bị tắt nguồn.
Chương trình Chuyển tiếp nối tiếp có thể được tải lên Arduino để sử dụng ứng dụng Demo_SDK.exe mà chúng ta đã thảo luận trước đó trong bài viết này. Để xóa bất kỳ mẫu vân tay nào hoặc để lưu bản sao trên máy tính của bạn, bạn có thể sử dụng ứng dụng SDK này.
Lập trình Arduino cho cảm biến vân tay GT511C3
Mục đích của chúng tôi ở đây là viết một chương trình sẽ đăng ký một ngón tay khi một nút được nhấn và hiển thị số ID của ngón tay đã được đăng ký. Chúng tôi cũng có thể hiển thị tất cả thông tin trên màn hình LCD để cho phép dự án trở thành một dự án độc lập. Các mã hoàn chỉnh để làm như vậy được đưa ra ở dưới cùng của trang này. Ở đây tôi chia nhỏ tương tự thành các đoạn nhỏ để giúp bạn hiểu rõ hơn.
Như mọi khi, chúng tôi bắt đầu chương trình bằng cách bao gồm các thư viện bắt buộc, ở đây chúng tôi sẽ cần thư viện FPS_GT511C3 cho mô-đun FPS của chúng tôi, Phần mềm nối tiếp để sử dụng D4 và D5 trên giao tiếp nối tiếp và Tinh thể lỏng cho giao diện LCD. Sau đó, chúng ta cần đề cập đến chân FPS và LCD được kết nối với. Nếu bạn đã làm theo sơ đồ mạch như vậy thì nó là 4 và 5 cho FPS và D6 đến D11 cho LCD. Mã cho cùng một được hiển thị bên dưới
#include "FPS_GT511C3.h" // Nhận thư viện từ https://github.com/sparkfun/Fingerprint_Scanner-TTL #include "SoftwareSerial.h" // Thư viện nối tiếp phần mềm #include
Bên trong chức năng thiết lập , chúng tôi hiển thị một số thông báo giới thiệu trên màn hình LCD và sau đó khởi tạo mô-đun FPS. Lệnh fps.SetLED (true) sẽ bật đèn LED màu xanh lam trên cảm biến, bạn có thể tắt nó bằng fps.SetLED (false) khi không cần thiết vì nó sẽ làm nóng cảm biến nếu bật liên tục. Chúng tôi cũng đã tạo chân D2 làm chân đầu vào và kết nối nó với điện trở kéo lên bên trong để kết nối nút nhấn với chân.
void setup () { Serial.begin (9600); lcd.begin (16, 2); // Khởi tạo LCD lcd.print 16 * 2 ("GT511C3 FPS"); // Dòng thông báo Intro 1 lcd.setCursor (0, 1); lcd.print ("với Arduino"); // Dòng thông báo Intro delay 2 (2000); lcd.clear (); fps.Open (); // gửi lệnh nối tiếp để khởi tạo fp fps.SetLED (true); // bật đèn LED để fps có thể nhìn thấy dấu vân tay pinMode (2, INPUT_PULLUP); // Kết nối với điện trở kéo lên bên trong làm chân đầu vào }
Bên trong chức năng vòng lặp void, chúng ta phải kiểm tra xem nút có được nhấn hay không, nếu được nhấn, chúng ta sẽ ghi danh một ngón tay mới và lưu mẫu của nó với số ID bằng cách sử dụng chức năng đăng ký. Nếu không, chúng tôi sẽ tiếp tục chờ một ngón tay được nhấn vào cảm biến. Nếu được nhấn, chúng tôi sẽ xác định dấu vân tay bằng cách so sánh nó với tất cả các mẫu dấu vân tay đã đăng ký bằng phương pháp 1: N. Sau khi số ID được phát hiện, chúng tôi sẽ hiển thị chào mừng, sau đó là số ID. Nếu dấu vân tay không khớp với bất kỳ ngón tay nào đã đăng ký thì số lượng id sẽ là 200, trong trường hợp đó, chúng tôi sẽ hiển thị không xác định chào mừng.
if (digitalRead (2)) // Nhấn nút If { Enroll (); // Đăng ký vân tay } // Kiểm tra nhận dạng vân tay if (fps.IsPressFinger ()) { fps.CaptureFinger (false); int id = fps.Identify1_N (); lcd.clear (); lcd.print ("Chào mừng:"); if (id == 200) lcd.print ("Unkown"); // Nếu không nhận dạng lcd.print (id); chậm trễ (1000); }
Các Enroll chức năng sẽ phải mất ba đầu vào mẫu để ghi danh một ngón tay thành công. Sau khi đăng ký, một mẫu cho ngón tay cụ thể đó sẽ được tạo và sẽ không bị xóa trừ khi người dùng buộc nó thông qua các lệnh HEX. Mã để đăng ký một ngón tay được hiển thị bên dưới. Phương pháp IsPressFinger được sử dụng để kiểm tra xem ngón tay có được phát hiện không, nếu có thì hình ảnh được chụp bằng CaptureFinger và cuối cùng là Enroll1, Enroll2 và Enroll3 được sử dụng cho ba mẫu khác nhau để đăng ký thành công một ngón tay. Màn hình LCD hiển thị số ID của ngón tay nếu đăng ký thành công nếu không, nó sẽ hiển thị thông báo lỗi kèm theo mã. Mã 1 có nghĩa là dấu vân tay không được chụp rõ ràng và do đó bạn phải thử lại. Mã 2 là chỉ báo lỗi bộ nhớ và mã 3 là cho biết ngón tay đã được đăng ký.
void Enroll () // Hàm đăng ký từ chương trình thư viện exmaple { int registerid = 0; bool usedid = true; while (usedid == true) { usedid = fps.CheckEnrolled (registerid); if (usedid == true) registerid ++; } fps.EnrollStart (registerid); // đăng ký lcd.print ("Đăng ký #"); lcd.print (registerid); while (fps.IsPressFinger () == false) delay (100); bool bret = fps.CaptureFinger (true); int iret = 0; if (bret! = false) { lcd.clear (); lcd.print ("Bỏ ngón tay"); fps.Enroll1 (); while (fps.IsPressFinger () == true) delay (100); lcd.clear (); lcd.print ("Bấm lại"); while (fps.IsPressFinger () == false) delay (100); bret = fps.CaptureFinger (true); if (bret! = false) { lcd.clear (); lcd.print ("Bỏ ngón tay"); fps.Enroll2 (); while (fps.IsPressFinger () == true) delay (100); lcd.clear (); lcd.print ("Bấm lại lần nữa"); while (fps.IsPressFinger () == false) delay (100); bret = fps.CaptureFinger (đúng); if (bret! = false) { lcd.clear (); lcd.print ("Bỏ ngón tay"); iret = fps.Enroll3 (); if (iret == 0) { lcd.clear (); lcd.print ("Đăng ký Thành công"); } else { lcd.clear (); lcd.print ("Đăng ký Không thành công:"); lcd.print (iret); } } else lcd.print ("Không thành công 1"); } else lcd.print ("Không thành công 2"); } else lcd.print ("Không thành công 3"); }
Hoạt động của cảm biến vân tay GT511C3 với Arduino
Bây giờ phần cứng và mã của chúng tôi đã sẵn sàng, đã đến lúc kiểm tra dự án của chúng tôi. Tải mã lên Arduino và cấp nguồn cho nó, tôi chỉ đang sử dụng cổng micro-usb để cấp nguồn cho dự án. Khi khởi động, chúng ta sẽ thấy thông báo giới thiệu trên màn hình LCD và sau đó nó sẽ hiển thị “Chào!..”. Điều này có nghĩa là FPS đã sẵn sàng để quét tìm ngón tay, nếu bất kỳ ngón tay đã đăng ký nào được nhấn, nó sẽ thông báo “Chào mừng”, sau đó là số ID của ngón tay đó như hình dưới đây.
Nếu một ngón tay mới phải được đăng ký thì chúng ta có thể sử dụng nút ấn để vào chế độ đăng ký và làm theo hướng dẫn trên màn hình LCD để đăng ký một ngón tay. Sau khi quá trình đăng ký hoàn tất, màn hình LCD sẽ hiển thị lại “Chào!..” để cho biết rằng nó được đọc để xác định lại ngón tay. Toàn bộ hoạt động có thể được tìm thấy tại video được liên kết bên dưới.
Từ đây, bạn có thể phát triển nhiều thứ thú vị trên đó bằng cách sử dụng mô-đun cảm biến Finger Print. Hy vọng bạn đã hiểu hướng dẫn và thích xây dựng một cái gì đó hữu ích, nếu bạn có bất kỳ câu hỏi nào hãy để lại trong phần bình luận hoặc sử dụng diễn đàn cho các câu hỏi kỹ thuật khác.