- Các thành phần bắt buộc:
- Mô-đun cảm biến vân tay trong máy bỏ phiếu:
- Giải thích làm việc:
- Giải thích mạch:
- Giải thích chương trình:
Tất cả chúng ta đều khá quen thuộc với Máy Bỏ phiếu Điện tử, nơi phiếu bầu của bạn được đăng ký điện tử và bạn không cần sử dụng phiếu bầu để bỏ phiếu trong cuộc bầu cử. Ngày nay bảo mật là một mối quan tâm lớn và nó cũng cần được đảm bảo rằng ai đó không thể bỏ phiếu hai lần, vì vậy vấn đề này có thể được giải quyết bằng cách giới thiệu tính năng Bỏ phiếu dựa trên dấu vân tay, trong đó một người có thể được ủy quyền dựa trên dấu vân tay của mình. Điều này cũng sẽ ngừng bỏ phiếu giả mạo. Vì vậy, hôm nay chúng tôi đang xây dựng Máy bỏ phiếu sinh trắc học dựa trên FingerPrint sử dụng Arduino.
Đồng thời kiểm tra các Dự án Máy bỏ phiếu Điện tử trước đây của chúng tôi sử dụng các Bộ vi điều khiển khác nhau:
- Máy bỏ phiếu điện tử sử dụng Raspberry Pi
- Máy bỏ phiếu dựa trên RFID
- Dự án máy bỏ phiếu điện tử dựa trên vi điều khiển AVR
- Máy bỏ phiếu điện tử sử dụng Arduino
Các thành phần bắt buộc:
- Arduino Uno
- Mô-đun cảm biến vân tay
- Nút ấn
- Đèn LED -2
- Điện trở 1K -3
- Điện trở 2.2K
- Quyền lực
- Kết nối dây
- Buzzer
- LCD 16x2
- Bảng bánh mì
Mô-đun cảm biến vân tay trong máy bỏ phiếu:
Mô-đun cảm biến vân tay hoặc Máy quét vân tay là một mô-đun ghi lại hình ảnh in của ngón tay, sau đó chuyển đổi nó thành mẫu tương đương và lưu chúng vào bộ nhớ của nó trên ID (vị trí) được chọn bởi Arduino. Ở đây, tất cả quá trình đều được Arduino chỉ huy như chụp ảnh dấu tay, chuyển nó thành các mẫu và vị trí lưu trữ, v.v.
Trong Mạch máy bỏ phiếu FingerPrint này, chúng tôi đã sử dụng Mô-đun cảm biến vân tay để xác thực cử tri 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 5 nút nhấn để Khớp, Đăng ký / quay lại, Xóa / OK, LÊN và Xuống. Phím Enroll và Del có tính năng kép ở đây. Phím đăng ký được sử dụng để đăng ký dấu ngón tay mới vào hệ thống và cả chức năng quay lại. Có nghĩa là khi người dùng muốn đăng ký ngón tay mới thì họ cần nhấn phím đăng ký sau đó LCD yêu cầu ID hoặc Vị trí nơi người dùng muốn lưu trữ đầu ra dấu tay. Lúc này nếu người dùng không muốn tiếp tục nữa thì có thể nhấn phím đăng ký một lần nữa để quay lại (lúc này phím đăng ký hoạt động như phím Quay lại). Khóa ghi danh phương tiện có cả chức năng ghi danh và quay lại. 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 sau đó họ cần chọn ID ngón tay hoặc Vị trí bằng cách sử dụng hai phím khác là LÊN VÀ XUỐNG lúc này người dùng cần nhấn phím XÓA / OK (lúc này phím này hoạt động như OK) để tiếp tục với ID hoặc Vị trí đã chọn. Khóa khớp được sử dụng cho bất cứ khi nào người bỏ phiếu muốn bỏ phiếu thì trước tiên họ cần xác thực người bỏ phiếu thực sự bằng cách giữ ngón tay trên Cảm biến vân tay, nếu họ thông qua xác thực này thì họ có thể bỏ phiếu.
Để tìm hiểu thêm về tuyển in ngón tay và những thứ khác, Kiểm tra hướng dẫn trước của chúng tôi trên interfacing Finger Print Sensor với Arduino, và cũng kiểm tra của chúng tôi Demo video ở phần cuối của hướng dẫn này.
Giải thích làm việc:
Hoạt động của Hệ thống bỏ phiếu sinh trắc học này cho cuộc bầu cử là một chút phức tạp cho người mới bắt đầu. Trước hết, người dùng cần đăng ký ngón tay hoặc cử tri (trong mã này giới hạn tối đa của người bỏ phiếu là 25) với sự trợ giúp của các nút / phím nhấn. Để thực hiện việc này, người dùng cần nhấn phím ENROLL và sau đó LCD yêu cầu nhập vị trí / ID nơi ngón tay sẽ là cửa hàng. Vì vậy, bây giờ người dùng cần nhập ID (Vị trí) bằng cách sử dụng phím LÊN / XUỐNG. Sau khi chọn Vị trí / ID người dùng cần nhấn một phím OK (phím DEL). Bây giờ LCD sẽ yêu cầu đặt ngón tay trên mô-đun in ngó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. Sau đó, LCD sẽ yêu cầu tháo ngón tay khỏi mô-đun in ngón tay và một lần nữa yêu cầu đặt ngón tay. Bây giờ người dùng cần đặt ngón tay của mình một lần nữa trên mô-đun in ngón tay. Giờ đây, mô-đun in ngón tay 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ờ cử tri sẽ được đăng ký và họ có thể bỏ phiếu. Bằng cùng một phương pháp, tất cả các cử tri có thể đượ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 nào đã lưu trữ thì cần nhấn phím DEL, sau khi nhấn phím DEL, màn hình LCD sẽ yêu cầu chọn vị trí có nghĩa là 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 ngón tay đã được xóa thành công.
Quy trình bỏ phiếu:
Bây giờ khi người dùng muốn bỏ phiếu thì họ cần nhấn phím khớp và sau đó còi sẽ phát ra tiếng bíp và đèn LED cũng sẽ phát sáng và màn hình LCD sẽ yêu cầu đặt ngón tay lên mô-đun vân tay. Bây giờ Arduino sẽ cung cấp cho bạn ba lần thử đặt ngón tay. Sau khi đặt ngón tay lên mô-đun dấu vân tay, mô-đun vân tay chụp ảnh ngón tay và tìm thấy ID của nó có trong hệ thống. Nếu ID ngón tay được phát hiện thì màn hình LCD sẽ hiển thị Người bỏ phiếu được ủy quyền. Nó có nghĩa là người dùng được quyền bỏ phiếu. Và sau đó hệ thống chuyển sang giai đoạn tiếp theo để bỏ phiếu. Bây giờ đèn LED xanh sẽ phát sáng, điều đó có nghĩa là bây giờ cử tri có thể bỏ phiếu cho các ứng cử viên của họ bằng cách nhấn một phím được đánh dấu (từ bảng bánh mì RED trong cuộc biểu tình này). Bây giờ nếu cùng một cử tri muốn bỏ phiếu lại thì hệ thống sẽ hiển thị là 'Đã được bình chọn' . Có nghĩa là cùng một cử tri không thể bỏ phiếu lại và còi sẽ phát ra tiếng bíp trong 5 giây. Nếu bất kỳ người dùng chưa đăng ký nào muốn bỏ phiếu thì mô-đun dấu vân tay sẽ không phát hiện ID của người đó vào hệ thống và màn hình LCD sẽ hiển thị ' Không tìm thấy vân tay' .
CAN1, CAN2, CAN3 ở đây đại diện cho Ứng viên 1, Ứng viên 2 và Ứng viên 3, những người đã ứng cử.
Giải thích mạch:
Mạch của Dự án Máy bỏ phiếu dựa trên FingerPrint này rất đơn giản, chứa Arduino để kiểm soát toàn bộ quá trình của dự án, nút nhấn để đăng ký, xóa, chọn ID và mục đích bỏ phiếu, còi để cảnh báo, đèn LED để chỉ thị và màn hình LCD 16x2 để hướng dẫn Bỏ phiếu và hiển thị kết quả. Đè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 và đèn LED màu xanh lá cây cho biết hệ thống đã sẵn sàng bỏ phiếu hoặc xem kết quả.
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) và A4 (Match), D5 (Can1), D4 (Can2), D3 (Can3), D2 (Kết quả) của Arduino đối với mặt đất. Đè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 mặt đất thông qua điện trở 1k và đèn LED màu xanh lá cây được kết nối với D6 của Arduino theo cùng một phương pháp. Rx và Tx của mô-đun vân tay kết nối trực tiếp tại chân nối tiếp Tx và Rx 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 tại A5. Màn hình LCD 16x2 được 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 chương trình:
Trong một chương trình, chúng tôi đã sử dụng Thư viện cảm biến vân tay Adafruit để giao tiếp mô-đun vân tay với bảng Arduino. Bạn có thể kiểm tra Mã hoàn chỉnh bên dưới. Ở đây chúng tôi giải thích các chức năng chính của Chương trình Arduino.
Trong chức năng thiết lập, chúng tôi đã đưa ra các hướng dẫn đến các chân đã xác định và đã khởi chạy mô-đun LCD và Vân tay.
Sau đó, trong hàm void loop () , chúng ta đã đợi phím kiểm tra và nhấn phím Match để bắt đầu in ngón tay để lấy đầu vào và so sánh id hình ảnh đã chụp với các ID được lưu trữ. Nếu một trận đấu xảy ra thì hãy tiếp tục với bước tiếp theo.
void loop () {lcd.setCursor (0,0); lcd.print ("Bấm phím Khớp"); lcd.setCursor (0,1); lcd.print ("để khởi động hệ thống"); digitalWrite (indVote, LOW); digitalWrite (indFinger, LOW); if (digitalRead (khớp) == 0) {digitalWrite (buzzer, HIGH); chậm trễ (200); digitalWrite (buzzer, LOW); digitalWrite (indFinger, HIGH); for (int i = 0; i <3; i ++)…………………
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.
void checkKeys () {if (digitalRead (đăng ký) == 0) {lcd.clear (); lcd.print ("Vui lòng đợi"); chậm trễ (1000); while (digitalRead (đăng ký) == 0); Ghi danh(); } else if (digitalRead (del) == 0) {lcd.clear (); lcd.print ("Vui lòng đợi"); chậm trễ (1000); delet (); }}
Hàm đã cho được sử dụng để nhập ID sẽ 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.
void delet () {int count = 0; lcd.clear (); lcd.print ("Xóa dấu vân tay"); lcd.setCursor (0,1); lcd.print ("Vị trí:"); while (1) {lcd.setCursor (9,1); lcd.print (số lượng); if (digitalRead (up) == 0) {count ++; if (count> 25) count = 0; chậm trễ (500); }………………..
Chức năng đã cho được sử dụng để xóa dấu vân tay khỏi bản ghi của ID đã chọn.
uint8_t deleteFingerprint (uint8_t id) {uint8_t p = -1; lcd.clear (); lcd.print ("Vui lòng đợi"); p = finger.deleteModel (id); if (p == FINGERPRINT_OK) {Serial.println ("Đã xóa!"); lcd.clear (); lcd.print ("Đã xóa Figer"); lcd.setCursor (0,1); lcd.print ("Thành công"); chậm trễ (1000); } else {Serial.print ("Có gì đó sai"); lcd.clear (); lcd.print ("Có gì đó sai"); lcd.setCursor (0,1); lcd.print ("Thử lại Sau"); chậm trễ (2000); trả lại p; }}
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à lưu nó 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 ();………………….
Hàm cho trước được sử dụng để Bỏ phiếu và hiển thị kết quả:
void Vote () {lcd.clear (); lcd.print ("Vui lòng Đặt"); lcd.setCursor (0,1); lcd.print ("Bình chọn của Bạn"); digitalWrite (indVote, HIGH); digitalWrite (indFinger, LOW); digitalWrite (buzzer, HIGH); chậm trễ (500); digitalWrite (buzzer, LOW); chậm trễ (1000); while (1) {if (digitalRead (sw1) == 0)…………………
Kiểm tra Mã đầy đủ và video trình diễn bên dưới.