Mục lục:
- 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
- Bước 2: Sơ đồ mạch cho Máy bỏ phiếu sinh trắc học sử dụng Arduino
- Bước 3: Mã nguồn và giải thích mã từng bước
- Bước 4: Kiểm tra Hệ thống bỏ phiếu bằng vân tay bằng Arduino
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)
2024 Tác giả: John Day | [email protected]. Sửa đổi lần cuối: 2024-01-30 13:30
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 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:
Hệ thống chấm công dựa trên dấu vân tay và RFID sử dụng cơ sở dữ liệu Raspberry Pi và MySQL: 5 bước
Hệ thống chấm công dựa trên dấu vân tay và RFID sử dụng cơ sở dữ liệu Raspberry Pi và MySQL: Video về dự án này
Nhập xe bằng sinh trắc học - Xe không chìa đích thực: 4 bước
Nhập xe sinh trắc học - Xe không chìa khóa đích thực: Vài tháng trước, con gái tôi hỏi tôi, tại sao xe hơi hiện đại không được trang bị hệ thống nhập số liệu sinh học, trong khi ngay cả điện thoại di động cũng có. Kể từ đó, tôi đang làm việc để triển khai tương tự và cuối cùng đã cài đặt và thử nghiệm một thứ gì đó trên T
Diều hâu: Robot điều khiển bằng cử chỉ bằng tay sử dụng giao diện dựa trên xử lý hình ảnh: 13 bước (có hình ảnh)
Gesture Hawk: Robot điều khiển bằng cử chỉ bằng tay sử dụng giao diện dựa trên xử lý hình ảnh: Gesture Hawk đã được giới thiệu trong TechEvince 4.0 như một giao diện người-máy xử lý hình ảnh đơn giản. Tiện ích của nó nằm ở chỗ không cần thiết bị cảm biến hoặc thiết bị đeo bổ sung nào ngoại trừ một chiếc găng tay để điều khiển chiếc xe robot chạy trên
Nhật ký cá nhân sinh trắc học: 5 bước (có hình ảnh)
Nhật ký cá nhân sinh trắc học: Thiết bị nhỏ gọn này có cảm biến vân tay để bạn có thể bảo mật những thứ thú vị của mình trong một chiếc hộp di động được cá nhân hóa. Tôi sử dụng để giữ một cuốn nhật ký và cây bút và thiết kế cho các dự án mới của mình. Có vỏ được in 3D và sử dụng nano Arduino. Ý tưởng quà tặng tuyệt vời
Máy ATM sử dụng Arduino (Dấu vân tay + Thẻ RFID): 4 bước (có Hình ảnh)
Máy ATM sử dụng Arduino (Finger-print + RFID Card): Xin chào các bạn, tôi trở lại với ý tưởng mới về máy ATM sử dụng Arduino. Nó có thể hữu ích ở các vùng nông thôn, nơi không thể sử dụng dịch vụ không dùng tiền mặt. Đó là một ý tưởng nhỏ. bạn rất thích nó. Hãy bắt đầu