- Các thành phần bắt buộc
- Mô tả dự án:
- Mô-đun FingerPrint:
- Hoạt động của Hệ thống chấm công dựa trên dấu vân tay
- Sơ đồ mạch và mô tả cho dự án hệ thống chấm công bằng vân tay
- Giải thích mã:
Hệ thống chấm công là hệ thống thường được sử dụng để đánh dấu sự hiện diện trong văn phòng và trường học. Từ việc đánh dấu thủ công trong sổ đăng ký tham dự đến việc sử dụng các ứng dụng công nghệ cao và hệ thống sinh trắc học, các hệ thống này đã được cải thiện đáng kể. Trong các dự án trước đây, chúng tôi đã đề cập đến một số dự án hệ thống chấm công điện tử khác sử dụng vi điều khiển RFID và AVR, 8051 và raspberry Pi. Trong dự án này, chúng tôi đã sử dụng Mô-đun vân tay và Arduino để lấy và lưu giữ dữ liệu và hồ sơ tham dự. Bằng cách sử dụng cảm biến vân tay, hệ thống sẽ trở nên an toàn hơn cho người dùng. Các phần sau giải thích chi tiết kỹ thuật của việc tạo hệ thống chấm công sinh trắc học dựa trên dấu vân tay bằng Arduino.
Các thành phần bắt buộc
- Arduino -1
- Mô-đun dấu vân tay -1
- Nút ấn - 4
- Đèn LED -1
- Điện trở 1K -2
- Điện trở 2,2K -1
- Quyền lực
- Kết nối dây
- Cái hộp
- Buzzer -1
- 16x2 LCD -1
- Bảng bánh mì -1
- Mô-đun RTC -1
Mô tả dự án:
Trong mạch hệ thống chấm công bằng vân tay này, chúng tôi đã sử dụng mô-đun Cảm biến vân tayđể xác thực một người hoặc nhân viên thực sự bằng cách lấy đầu vào ngón tay của họ trong hệ thống. Ở đây chúng tôi đang sử dụng 4 nút nhấn để đăng ký, Xóa, LÊN / Xuống. Phím ENROLL và DEL có ba tính năng. Phím ENROLL được sử dụng để đăng ký một người mới vào hệ thống. Vì vậy, khi người dùng muốn đăng ký ngón tay mới thì họ cần nhấn phím ENROLL sau đó màn hình LCD sẽ hỏi ID, nơi người dùng muốn lưu trữ hình ảnh ngón tay. Bây giờ nếu lúc này người dùng không muốn tiếp tục nữa thì có thể nhấn phím ENROLL một lần nữa để quay lại. Lúc này phím ENROLL hoạt động như phím Back, tức là phím ENROLL có cả chức năng ghi danh và quay lại. Bên cạnh đó, khóa đăng ký cũng được sử dụng để tải dữ liệu chấm công qua màn hình nối tiếp. Tương tự, phím DEL / OK cũng có chức năng kép tương tự như khi người dùng đăng ký ngón tay mới,thì anh ấy / cô ấy cần chọn ID ngón tay bằng cách sử dụng hai phím khác là LÊN và XUỐNG. Bây giờ người dùng cần nhấn phím DEL / OK (lúc này phím này hoạt động giống như OK) để tiếp tục với ID đã chọn. Và phím Del được sử dụng để thiết lập lại hoặc xóa dữ liệu khỏi EEPROM của Arduino.
Mô-đun FingerPrint:
Mô-đun cảm biến vân tay chụp ảnh in của ngón tay và sau đó chuyển đổi nó thành mẫu tương đương và lưu chúng vào bộ nhớ của nó theo ID đã chọn của Arduino. Tất cả quá trình đều do Arduino chỉ huy như lấy hình ảnh dấu tay, chuyển đổi thành mẫu và lưu trữ dưới dạng ID, v.v. Bạn có thể kiểm tra một số dự án khác bằng mô-đun vân tay:
Hệ thống bảo mật dựa trên dấu vân tay
Máy bỏ phiếu sinh trắc học dựa trên dấu vân tay
Ở đây chúng tôi đã thêm một đèn LED màu vàng cho biết rằng mô-đun vân tay đã sẵn sàng để chụp ảnh ngón tay. Một bộ rung cũng được sử dụng cho các chỉ định khác nhau. Arduino là thành phần chính của hệ thống này, nó chịu trách nhiệm điều khiển toàn bộ hệ thống.
Hoạt động của Hệ thống chấm công dựa trên dấu vân tay
Hoạt động của dự án hệ thống chấm công bằng vân tay nàykhá đơn giản. Trước hết, người dùng cần đăng ký dấu vân tay của người dùng với sự trợ giúp của các nút nhấn. Để thực hiện việc này, người dùng cần nhấn phím ENROLL sau đó màn hình LCD yêu cầu nhập ID cho vân tay để lưu vào bộ nhớ theo tên ID. Vì vậy, bây giờ người dùng cần nhập ID bằng cách sử dụng phím UP / DOWN. Sau khi chọn ID, người dùng cần nhấn phím OK (phím DEL). Bây giờ LCD sẽ yêu cầu đặt ngón tay lên mô-đun vân tay. Bây giờ người dùng cần đặt ngón tay của mình trên mô-đun in ngón tay và sau đó mô-đun sẽ lấy hình ảnh ngón tay. Bây giờ, màn hình LCD sẽ thông báo xóa ngón tay khỏi mô-đun vân tay và một lần nữa yêu cầu đặt ngón tay một lần nữa. Bây giờ người dùng cần đặt ngón tay của mình một lần nữa và mô-đun sẽ lấy một hình ảnh và chuyển đổi nó thành các mẫu và lưu trữ nó theo ID đã chọn vào bộ nhớ của mô-đun in ngón tay.Bây giờ người dùng sẽ được đăng ký và họ có thể truy cập điểm danh bằng cách đặt ngón tay của họ trên mô-đun vân tay. Bằng phương pháp tương tự, tất cả người dùng sẽ được đăng ký vào hệ thống.
Bây giờ, nếu người dùng muốn xóa hoặc xóa bất kỳ ID hoặc dấu vân tay đã lưu trữ nào, thì họ cần nhấn phím DEL. Sau khi nhấn phím xóa, màn hình LCD sẽ yêu cầu chọn ID cần xóa. Bây giờ người dùng cần chọn ID và nhấn phím OK (cùng phím DEL). Bây giờ LCD sẽ cho bạn biết rằng dấu vân tay đã được xóa thành công.
Cách Điểm danh hoạt động trong Dự án Hệ thống Chấm công bằng Vân tay này:
Bất cứ khi nào người dùng đặt ngón tay lên trên mô-đun vân tay thì mô-đun vân tay sẽ ghi lại hình ảnh ngón tay và tìm kiếm xem có ID nào được liên kết với dấu vân tay này trong hệ thống hay không. Nếu ID vân tay được phát hiện thì màn hình LCD sẽ hiển thị Đã đăng ký điểm danh và đồng thời còi sẽ phát ra tiếng bíp một lần và đèn LED sẽ tắt cho đến khi hệ thống sẵn sàng nhập lại.
Cùng với mô-đun vân tay, chúng tôi cũng đã sử dụng mô-đun RTC cho Ngày và giờ. Ngày và giờ đang chạy liên tục trong hệ thống. Vì vậy, Arduino dành thời gian và ngày tháng bất cứ khi nào người dùng thực sự đặt ngón tay của mình lên dấu vân tay và lưu chúng trong EEPROM tại vùng bộ nhớ được phân bổ.
Ở đây chúng tôi đã tạo 5 không gian người dùng trong hệ thống này trong 30 ngày. Bằng cách nhấn nút ĐẶT LẠI trong Arduino và sau đó khóa đăng ký ngay lập tức sẽ chịu trách nhiệm tải xuống dữ liệu chấm công qua màn hình nối tiếp từ Bộ nhớ EEPROM của Arduino.
Quản lý bộ nhớ:
Chúng tôi có bộ nhớ 1023 byte trong Arduino UNO trong đó chúng tôi có 1018 byte để lưu trữ dữ liệu và chúng tôi đã lấy 5 dữ liệu tham dự của người dùng trong 30 ngày. Và mỗi lần tham dự sẽ ghi lại thời gian và ngày tháng để nó trở thành dữ liệu 7 byte.
Vì vậy, tổng bộ nhớ cần thiết là
5 * 30 * 7 = 1050 nên ở đây chúng ta cần thêm 32 byte
Nhưng nếu chúng tôi sử dụng 4 người dùng thì chúng tôi yêu cầu
4 * 30 * 7 = 840
Ở đây chúng tôi đã thực hiện trình diễn dự án này bằng cách lấy 5 bộ nhớ người dùng. Bằng cách này, chúng tôi sẽ không thể lưu trữ 32 byte hoặc 5 bản ghi tham dự của người dùng thứ 5.
Bạn có thể thử nó bởi 4 người dùng bằng cách thay đổi một số dòng trong mã. Tôi đã đưa ra nhận xét trong đoạn mã cần thay đổi.
Sơ đồ mạch và mô tả cho dự án hệ thống chấm công bằng vân tay
Mạch của dự án hệ thống chấm công dựa trên dấu vân tay này, như trong sơ đồ trên khá đơn giản. Nó có Arduino để kiểm soát tất cả quá trình của dự án, nút nhấn để đăng ký, xóa, chọn ID và để tham dự, còi để cảnh báo, đèn LED để chỉ báo và màn hình LCD để hướng dẫn người dùng và hiển thị thông báo kết quả.
Như trong sơ đồ mạch, một nút nhấn được kết nối trực tiếp với chân A0 (ENROLL), A1 (DEL), A2 (UP), A3 (DOWN) của Arduino đối với mặt đất và đèn LED màu vàng được kết nối tại chân kỹ thuật số D7 của Arduino đối với nối đất qua điện trở 1k. Rx và Tx của mô-đun vân tay được kết nối trực tiếp tại chân nối tiếp D2 và D3 (Nối tiếp phần mềm) của Arduino. Nguồn 5v được sử dụng để cấp nguồn cho mô-đun in ngón tay lấy từ bảng Arduino. Một bộ rung cũng được kết nối ở chân A5. Màn hình LCD 16x2 được định cấu hình ở chế độ 4 bit và RS, EN, D4, D5, D6 và D7 của nó được kết nối trực tiếp tại chân Kỹ thuật số D13, D12, D11, D10, D9 và D8 của Arduino.
Giải thích mã:
Các hệ thống mã tham dự vân tay cho Arduino được đưa ra trong các phần tiếp theo. Mặc dù mã được giải thích tốt với các nhận xét, chúng tôi đang thảo luận ở đây một số phần quan trọng của mã. Chúng tôi đã sử dụng thư viện dấu vân tay để giao tiếp mô-đun dấu vân tay với bảng Arduino.
Trước hết, chúng tôi bao gồm tệp tiêu đề và xác định chân đầu vào và đầu ra và xác định macro và các biến đã khai báo. Sau đó, trong chức năng thiết lập, chúng tôi đưa ra hướng cho chân đã xác định và khởi động màn hình LCD và mô-đun in ngón
Sau đó, chúng ta phải viết mã để tải dữ liệu điểm danh.
void setup () {delay (1000); lcd.begin (16,2); Serial.begin (9600); pinMode (đăng ký, INPUT_PULLUP); pinMode (lên, INPUT_PULLUP); pinMode (xuống, INPUT_PULLUP); pinMode (del, INPUT_PULLUP); pinMode (khớp, INPUT_PULLUP); pinMode (buzzer, OUTPUT); pinMode (indFinger, OUTPUT); digitalWrite (buzzer, LOW); if (digitalRead (đăng ký) == 0) {digitalWrite (buzzer, HIGH); chậm trễ (500); digitalWrite (buzzer, LOW); lcd.clear (); lcd.print ("Vui lòng đợi"); lcd.setCursor (0,1); lcd.print ("Dữ liệu xuống mã");
Sau đó, chúng tôi phải viết mã để xóa dữ liệu tham dự từ EEPROM.
if (digitalRead (del) == 0) {lcd.clear (); lcd.print ("Vui lòng đợi"); lcd.setCursor (0,1); lcd.print ("Đang gửi lại….."); for (int i = 1000; i <1005; i ++) EEPROM.write (i, 0); for (int i = 0; i <841; i ++) EEPROM.write (i, 0xff); lcd.clear (); lcd.print ("Đặt lại Hệ thống"); chậm trễ (1000); }
Sau đó, chúng tôi bắt đầu mô-đun in ngón tay, hiển thị thông báo chào mừng trên màn hình LCD và cũng như mô-đun RTC vô hạn.
Sau đó, trong chức năng vòng lặp, chúng tôi đã đọc thời gian RTC và hiển thị nó trên màn hình LCD
void loop () {now = rtc.now (); lcd.setCursor (0,0); lcd.print ("Thời gian->"); lcd.print (now.hour (), DEC); lcd.print (':'); lcd.print (now.minute (), DEC); lcd.print (':'); lcd.print (now.second (), DEC); lcd.print (""); lcd.setCursor (0,1); lcd.print ("Ngày->"); lcd.print (now.day (), DEC); lcd.print ('/'); lcd.print (now.month (), DEC); lcd.print ('/'); lcd.print (now.year (), DEC);
Sau đó, đợi dấu vân tay nhận đầu vào và so sánh ID hình ảnh đã chụp với ID được lưu trữ. Nếu khớp xảy ra thì hãy tiếp tục với bước tiếp theo. Và kiểm tra các khóa del đăng ký nữa
int result = getFingerprintIDez (); if (kết quả> 0) {digitalWrite (indFinger, LOW); digitalWrite (buzzer, HIGH); chậm trễ (100); digitalWrite (buzzer, LOW); lcd.clear (); lcd.print ("ID:"); lcd.print (kết quả); lcd.setCursor (0,1); lcd.print ("Vui lòng đợi…."); chậm trễ (1000); tham dự (kết quả); lcd.clear (); lcd.print ("Điểm danh"); lcd.setCursor (0,1); lcd.print ("Đã đăng ký"); chậm trễ (1000); digitalWrite (indFinger, HIGH); trở về; }
Hàm void checkKeys () được sử dụng để kiểm tra Đăng ký hoặc phím DEL được nhấn hay không và phải làm gì nếu được nhấn. Nếu nhấn phím ENROLL, chức năng Enroll () được gọi và nhấn phím DEL thì chức năng delete () được gọi.
Hàm void delet () được sử dụng để nhập ID bị xóa và gọi hàm uint8_t deleteFingerprint (uint8_t id) sẽ xóa ngón tay khỏi bản ghi.
Chức năng Given được sử dụng để lấy hình ảnh in ngón tay và chuyển đổi chúng thành mẫu và cũng lưu theo ID đã chọn vào bộ nhớ mô-đun in ngón tay.
uint8_t getFingerprintEnroll () {int p = -1; lcd.clear (); lcd.print ("ID ngón tay:"); lcd.print (id); lcd.setCursor (0,1); lcd.print ("Đặt ngón tay"); chậm trễ (2000); while (p! = FINGERPRINT_OK) {p = finger.getImage ();………………….
Chức năng đã cho được sử dụng để lưu trữ thời gian và ngày tham dự trong vùng được phân bổ của EEPROM
void tham gia (int id) {int user = 0, eepLoc = 0; if (id == 1) {eepLoc = 0; người dùng = user1 ++; } else if (id == 2) {eepLoc = 210; người dùng = user2 ++; } else if (id == 3)………….
Hàm đã cho được sử dụng để tìm nạp dữ liệu từ EEPROM và gửi đến màn hình nối tiếp
void download (int eepIndex) {if (EEPROM.read (eepIndex)! = 0xff) {Serial.print ("T->"); if (EEPROM.read (eepIndex) <10) Serial.print ('0'); Serial.print (EEPROM.read (eepIndex ++)); Serial.print (':'); if (EEPROM.read (eepIndex) <10) Serial.print ('0'); Serial.print (EEPROM.read (eepIndex ++));………….