Mục lục:

Máy bỏ phiếu sinh trắc học dựa trên dấu vân tay sử dụng Arduino: 4 bước (có hình ảnh)
Máy bỏ phiếu sinh trắc học dựa trên dấu vân tay sử dụng Arduino: 4 bước (có hình ảnh)

Video: Máy bỏ phiếu sinh trắc học dựa trên dấu vân tay sử dụng Arduino: 4 bước (có hình ảnh)

Video: Máy bỏ phiếu sinh trắc học dựa trên dấu vân tay sử dụng Arduino: 4 bước (có hình ảnh)
Video: [4 NGÀY LÀM CHỦ CÔNG CỤ SINH TRẮC VÂN TAY] - BUỔI 1 2024, Tháng mười hai
Anonim
Máy bỏ phiếu sinh trắc học dựa trên dấu vân tay sử dụng Arduino
Máy bỏ phiếu sinh trắc học dựa trên dấu vân tay sử dụng Arduino

Tất cả chúng ta đều biết về máy bỏ phiếu điện tử hiện có, nơi người dùng phải nhấn một nút để bỏ phiếu. Nhưng những chiếc máy này đã bị chỉ trích vì tôi luyện ngay từ đầu. Vì vậy, chính phủ đang có kế hoạch giới thiệu một máy bỏ phiếu dựa trên dấu vân tay, nơi người dùng có thể bỏ phiếu dựa trên dấu vân tay của họ. Hệ thống này sẽ không chỉ loại bỏ khả năng trùng lặp phiếu bầu mà còn ngăn chặn bất kỳ hình thức thao túng nào.

Vì vậy, trong dự án này, chúng tôi sẽ xây dựng một nguyên mẫu của máy bỏ phiếu Sinh trắc học sử dụng Arduino Uno, màn hình TFT và Cảm biến vân tay. Trước đây chúng tôi đã sử dụng Cảm biến vân tay R305 với NodeMCU để xây dựng Hệ thống chấm công dựa trên sinh trắc học nhưng ở đây chúng tôi sẽ sử dụng cảm biến vân tay GT-511C3 tiên tiến với Arduino.

Bước 1: Các thành phần cần thiết để xây dựng máy bỏ phiếu sinh trắc học

  • Arduino Uno
  • Tấm chắn màn hình TFT LCD 2,4”
  • Cảm biến vân tay GT-511C3

Màn hình TFT 2,4 inch này trước đây được sử dụng với Arduino để xây dựng Hệ thống đặt hàng thực đơn nhà hàng dựa trên IoT.

Bước 2: Sơ đồ mạch cho Máy bỏ phiếu sinh trắc học sử dụng Arduino

Sơ đồ mạch cho máy bỏ phiếu sinh trắc học sử dụng Arduino
Sơ đồ mạch cho máy bỏ phiếu sinh trắc học sử dụng Arduino

Sơ đồ mạch cho dự án này rất đơn giản vì chúng tôi chỉ kết nối màn hình TFT và mô-đun cảm biến vân tay với Arduino Uno. Chân VCC và GND của cảm biến vân tay được kết nối với chân 5V và GND của Arduino trong khi chân TX và RX được kết nối với chân kỹ thuật số 11 & 12 của Arduino Uno.

Màn hình TFT LCD 2,4”là một tấm chắn Arduino và có thể được gắn trực tiếp trên Arduino Uno, như thể hiện trong hình dưới đây. Màn hình TFT có 28 chân cắm hoàn toàn phù hợp với Arduino Uno, vì vậy tôi đã phải hàn cảm biến vân tay ở mặt sau của Arduino.

Bước 3: Mã nguồn và giải thích mã từng bước

Mã hoàn chỉnh cho Dự án Hệ thống Bỏ phiếu bằng Vân tay này sử dụng Arduino được đưa ra ở cuối bài viết; ở đây chúng tôi đang giải thích một số chức năng quan trọng của mã.

Mã sử dụng các thư viện SPFD5408, Software Serial và FPS_GT511C3. Thư viện SPFD5408 là phiên bản sửa đổi của Thư viện Adafruit gốc. Các tệp thư viện này có thể được tải xuống từ các liên kết dưới đây:

  • Thư viện SPFD5408
  • Sê-ri phần mềm
  • FPS_GT511C3

Sau khi bao gồm các thư viện và xác định một số tham số quan trọng, chúng ta có thể đi vào phần lập trình. Có ba phần liên quan đến chương trình này. Một là tạo giao diện người dùng của máy bỏ phiếu, thứ hai là nhận điểm tiếp xúc cho các nút & phát hiện các nút dựa trên thao tác chạm và cuối cùng là tính toán kết quả và lưu chúng vào bộ nhớ của Arduino.

1. Tạo giao diện người dùng:

Tôi đã tạo một giao diện người dùng đơn giản với ba nút và tên của dự án. Thư viện màn hình TFT cho phép bạn vẽ Đường thẳng, Hình chữ nhật, Hình tròn, Chuỗi, Chuỗi và nhiều hơn nữa với bất kỳ màu sắc và kích thước ưa thích nào. Ở đây, hai nút hình chữ nhật được tạo bằng cách sử dụng các hàm fillRoundRect và drawRoundRect. Cú pháp cho hàm tft.drawRoundRect được đưa ra dưới đây:

tft.drawRoundRect (int16_t x0, int16_t y0, int16_t w, int16_t h, int16_t radius, uint16_t color)

Ở đâu:

tọa độ x0 = X của điểm đầu của hình chữ nhật

y0 = Tọa độ Y của điểm đầu của hình chữ nhật

w = Chiều rộng của hình chữ nhật

h = Chiều cao của hình chữ nhật

radius = Bán kính của góc tròn

color = Màu của Rect.

void drawHome ()

{

tft.fillScreen (TRẮNG);

tft.drawRoundRect (0, 0, 319, 240, 8, WHITE); //Đường viền trang

tft.fillRoundRect (10, 70, 220, 50, 8, VÀNG);

tft.drawRoundRect (10, 70, 220, 50, 8, TRẮNG); //Biểu quyết

tft.fillRoundRect (10, 160, 220, 50, 8, VÀNG);

tft.drawRoundRect (10, 160, 220, 50, 8, TRẮNG); //Đăng ký

tft.fillRoundRect (10, 250, 220, 50, 8, VÀNG); //Kết quả

tft.drawRoundRect (10, 250, 220, 50, 8, WHITE);

tft.setCursor (65, 5);

tft.setTextSize (3);

tft.setTextColor (CYAN);

tft.print ("Bỏ phiếu");

tft.setCursor (57, 29);

tft.print ("Máy");

tft.setTextSize (3);

tft.setTextColor (TRẮNG);

tft.setCursor (25, 82);

tft.print ("Ứng viên 1");

tft.setCursor (25, 172);

tft.print ("Ứng viên 2");

tft.setCursor (25, 262);

tft.print ("Ứng viên 3");

}

2. Lấy điểm chạm và nút phát hiện:

Bây giờ trong phần thứ hai của mã, chúng ta sẽ phát hiện các điểm tiếp xúc của nút và sau đó sử dụng các điểm này để dự đoán nút. Hàm ts.getPoint () được sử dụng để phát hiện thao tác chạm của người dùng trên màn hình TFT. ts.getPoint cung cấp các giá trị ADC thô cho vùng được chạm. Các giá trị RAW ADC này sau đó được chuyển đổi thành Tọa độ điểm ảnh bằng cách sử dụng chức năng bản đồ.

TSPoint p = ts.getPoint ();

if (p.z> ts.pressureThreshhold)

{

p.x = map (p.x, TS_MAXX, TS_MINX, 0, 320);

p.y = map (p.y, TS_MAXY, TS_MINY, 0, 240);

//Serial.print("X: ");

//Serial.print(p.x);

//Serial.print("Y: ");

//Serial.print(p.y);

Bây giờ, vì chúng tôi biết tọa độ X và Y cho mỗi nút, chúng tôi có thể dự đoán vị trí người dùng đã chạm vào bằng cách sử dụng câu lệnh ‘if’.

if (p.x> 70 && p.x 10 && p.y MINPRESSURE && p.z <MAXPRESSURE)

{

Serial.println ("Ứng viên 1");

Khi một cử tri nhấn nút ứng cử viên, anh ta sẽ được yêu cầu quét ngón tay trên cảm biến vân tay. Nếu ID ngón tay được cho phép thì cử tri được phép bỏ phiếu. Nếu bất kỳ người dùng chưa đăng ký nào muốn bỏ phiếu thì mô-đun 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 sẽ hiển thị "Xin lỗi bạn không thể bỏ phiếu".

if (fps. IsPressFinger ())

{

fps. CaptureFinger (sai);

int id = fps. Identify1_N ();

if (id <200)

{

msg = "Ứng viên 1";

vote1 ++;

EEPROM.write (0, vote1);

tft.setCursor (42, 170);

tft.print ("Cảm ơn");

chậm trễ (3000);

drawHome ();

3. Kết quả:

Bước cuối cùng là lấy phiếu bầu từ bộ nhớ EEPROM và so sánh phiếu bầu của cả ba ứng cử viên. Ứng cử viên có số phiếu cao nhất sẽ chiến thắng. Kết quả chỉ có thể được truy cập từ màn hình nối tiếp và sẽ không được hiển thị trên màn hình TFT.

vote1 = EEPROM.read (0);

vote2 = EEPROM.read (1);

vote3 = EEPROM.read (2);

nếu (bỏ phiếu)

{

if ((vote1> vote2 && vote1> vote3))

{

Serial.print ("Can1 Thắng");

chậm trễ (2000);

}

Bước 4: Kiểm tra Hệ thống bỏ phiếu bằng vân tay bằng Arduino

Để kiểm tra dự án, hãy kết nối Arduino Uno với máy tính xách tay và tải lên mã đã cho. Sau khi mã được tải lên, màn hình TFT sẽ hiển thị tên của ứng viên. Khi ai đó gõ vào tên ứng viên, máy sẽ yêu cầu quét máy quét vân tay. Nếu dấu vân tay hợp lệ thì phiếu bầu của người dùng sẽ được tính, nhưng trong trường hợp mẫu không khớp với bản ghi của cơ sở dữ liệu, quyền truy cập để bỏ phiếu sẽ bị từ chối. Tổng số phiếu bầu cho mỗi ứng cử viên sẽ được lưu trữ trong EEPROM và ứng cử viên có số phiếu bầu cao nhất sẽ chiến thắng.

Tôi hy vọng bạn thích hướng dẫn và học được điều gì đó hữu ích. Nếu bạn có bất kỳ thắc mắc nào, vui lòng cho chúng tôi biết trong phần bình luận bên dưới, và cũng theo dõi chúng tôi trên Có thể hướng dẫn để biết thêm các dự án thú vị như vậy.

Đề xuất: