<acronym id="s8ci2"><small id="s8ci2"></small></acronym>
<rt id="s8ci2"></rt><rt id="s8ci2"><optgroup id="s8ci2"></optgroup></rt>
<acronym id="s8ci2"></acronym>
<acronym id="s8ci2"><center id="s8ci2"></center></acronym>
0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

如何使用Arduino構建基于指紋的生物識別投票機

科技觀察員 ? 來源:circuitdigest ? 作者:薩達姆 ? 2023-01-06 16:13 ? 次閱讀

我們都非常熟悉電子投票機,您的投票以電子方式登記,您無需使用選票即可在選舉中投票。今天,安全性是一個主要問題,還需要確保某人不能投票兩次,因此可以通過引入基于指紋的投票來解決這個問題,在這種情況下,一個人可以根據他的指紋獲得授權。這也將阻止虛假投票。所以今天我們正在 使用Arduino構建基于指紋的生物識別投票機 。

所需組件:

  1. Arduino Uno
  2. 指紋傳感器模塊
  3. 按鈕
  4. 指示燈 -2
  5. 1K 電阻器 -3
  6. 2.2K電阻
  7. 權力
  8. 連接線
  9. 蜂鳴器
  10. 16x2 液晶顯示器
  11. 面包板

投票機中的指紋傳感器模塊:

指紋 傳感器模塊或指紋掃描儀是一種模塊 ,用于捕獲手指的指紋圖像,然后將其轉換為等效模板,并將它們保存到Arduino所選ID(位置)上的內存中。在這里,所有過程都由Arduino控制,例如拍攝指紋圖像,將其轉換為模板和存儲位置等。

指紋傳感器模塊

在這個指紋投票機電路中,我們使用指紋傳感器模塊通過在系統中輸入手指來驗證真正的選民。在這里,我們使用 5 個按鈕來匹配、注冊/返回、刪除/確定、向上和向下。注冊和德爾鍵在這里具有雙重功能。注冊鍵用于將新的手指印模注冊到系統和返回功能中。意味著當用戶想要注冊新手指時,他/她需要按注冊鍵,然后LCD詢問用戶想要存儲指紋輸出的ID或位置?,F在,如果此時用戶不想繼續,那么他/她可以再次按注冊鍵返回(這次注冊鍵表現為后退鍵)。表示注冊密鑰同時具有注冊和返回功能。DEL/OK 鍵還具有相同的雙重功能,就像用戶注冊新手指時一樣,他/她需要使用另外兩個鍵(即向上和向下)選擇手指 ID 或位置,現在用戶需要按 DEL/OK 鍵(這次此鍵的行為類似于確定)以繼續使用選定的 ID 或位置。匹配鍵用于每當選民想要投票時,他/她需要首先通過手指在指紋傳感器上對真正的選民進行身份驗證,如果他/她通過了此身份驗證,那么他/她就可以投票。

生物識別投票機中的指紋注冊

工作說明:

對于初學者來說,這個用于選舉的生物識別投票系統的工作有點復雜。首先,用戶需要在按鈕/鍵的幫助下注冊手指或投票者(在此代碼中,選民的最大限制為 25)。為此,用戶需要按REGISTER鍵,然后LCD要求輸入手指將成為商店的位置/ ID。所以現在用戶需要使用向上/向下鍵輸入ID(位置)。選擇位置/ID 后,用戶需要按確定鍵(DEL 鍵)?,F在,液晶屏將要求將手指放在指紋模塊上?,F在用戶需要將手指放在指紋模塊上。然后液晶屏將要求將手指從指紋模塊中取出,并再次要求放置手指?,F在用戶需要再次將手指放在指紋模塊上?,F在,指紋模塊獲取圖像并將其轉換為模板,并通過選定的ID將其存儲在指紋模塊的內存中?,F在選民將被登記,他/她可以投票。通過同樣的方法,所有選民都可以登記到系統中。

投票機框圖

現在,如果用戶想要刪除或刪除任何存儲的ID,那么他/她需要按DEL鍵,按DEL鍵后,LCD將要求選擇位置意味著選擇要刪除的ID?,F在用戶需要選擇ID并按確定鍵(相同的DEL鍵)?,F在LCD會讓您知道手指已成功刪除。

投票流程:

現在,當用戶想要投票時,他/她需要按匹配鍵,然后蜂鳴器將發出嗶嗶聲,LED也會發光,LCD將要求將手指放在指紋模塊上?,F在Arduino會給你三次嘗試把你的手指。將手指放在指紋模塊上后,指紋模塊捕獲手指圖像,發現其ID存在于系統中。如果檢測到手指 ID,則 LCD 將顯示授權選民。這意味著用戶有權投票。然后系統進入下一階段進行投票?,F在綠色LED會亮起,這意味著現在選民可以通過按重新當選的鍵(來自本演示中的紅色面包板)為他們的候選人投票?,F在,如果同一選民想再次投票,那么系統將顯示它 “已投票”。 表示同一選民無法再次投票,蜂鳴器將發出 5 秒的嗶嗶聲。如果任何非注冊用戶想要投票,則指紋模塊將不會在系統中檢測到其ID,LCD將顯示“未找到指紋”。

使用Arduino的生物識別投票機中的投票按鈕

這里的CAN1,CAN2,CAN3代表候選人1,候選人2和候選人3,他們參加了選舉。

電路說明:

這個基于指紋的投票機項目的電路非常簡單,其中包含用于控制整個項目過程的Arduino,用于注冊,刪除,選擇ID和投票目的的按鈕,用于警報的蜂鳴器,用于指示的LED和用于指示選民并顯示結果的16x2 LCD。黃色 LED 表示指紋模塊已準備好拍攝手指圖像,綠色 LED 表示系統已準備好進行投票或查看結果。

1.png

按鈕直接連接到 Arduino 的引腳 A0(注冊)、A1(DEL)、A2(向上)、A3(向下)和 A4(匹配)、D5(Can1)、D4(Can2)、D3(Can3)、D2(結果)相對于接地。黃色 LED 通過 1k 電阻連接到 Arduino 的數字引腳 D7 相對于接地,綠色 LED 以相同的方法連接到 Arduino 的 D6。指紋模塊的 Rx 和 Tx 直接連接到 Arduino 的串行引腳 Tx 和 Rx。5v 電源用于為取自 Arduino 板的指紋模塊供電。A5 處還連接了一個蜂鳴器。16x2 LCD 配置為 4 位模式,其 RS、EN、D4、D5、D6 和 D7 直接連接到 Arduino 的數字引腳 D13、D12、D11、D10、D9 和 D8。

程序說明:

在設置功能中,我們已經給出了定義引腳的方向,并啟動了LCD和指紋模塊。

之后,在 void loop() 函數中,我們等待檢查鍵并按匹配鍵開始指紋進行輸入并將捕獲的圖像ID與存儲的ID進行比較。如果發生匹配,則繼續下一步。

void loop() 
{
 lcd.setCursor(0,0);
 lcd.print("Press Match Key ");
 lcd.setCursor(0,1);
 lcd.print("to start system");
 
 digitalWrite(indVote, LOW);
 digitalWrite(indFinger, LOW);
 if(digitalRead(match)==0)
 {
  digitalWrite(buzzer, HIGH);
  delay(200);
  digitalWrite(buzzer, LOW);
  digitalWrite(indFinger, HIGH);
  for(int i=0;i<3;i++)
..... .....
....... ....

給定 void checkKeys() 函數用于檢查是否按下注冊或 DEL 鍵以及按下時該怎么做。如果按下 ENROL 鍵,則調用 Enroll( ) 函數并按下 DEL 鍵,則調用 delete() 函數。

void checkKeys()
{
   if(digitalRead(enroll) == 0)
   {
    lcd.clear();
    lcd.print("Please Wait");
    delay(1000);
    while(digitalRead(enroll) == 0);
    Enroll();
   }

   else if(digitalRead(del) == 0)
   {
    lcd.clear();
    lcd.print("Please Wait");
    delay(1000);
    delet();
   }  
}

給定函數用于輸入要刪除的 ID 并調用uint8_t *deleteFingerprint(uint8_t id) *函數,該函數將從記錄中刪除手指。

void delet()
{
   int count=0;
   lcd.clear();
   lcd.print("Delete Finger    ");
   lcd.setCursor(0,1);
   lcd.print("Location:");
   while(1)
   {
     lcd.setCursor(9,1);
     lcd.print(count);
     if(digitalRead(up) == 0)
     {
       count++;
       if(count>25)
       count=0;
       delay(500);
     }
.... .....
..... .....

給定功能用于從所選ID的記錄中刪除指紋。

uint8_t deleteFingerprint(uint8_t id) 
{
  uint8_t p = -1;  
  lcd.clear();
  lcd.print("Please wait");
  p = finger.deleteModel(id);
  if (p == FINGERPRINT_OK) 
  {
    Serial.println("Deleted!");
    lcd.clear();
    lcd.print("Figer Deleted");
    lcd.setCursor(0,1);
    lcd.print("Successfully");
    delay(1000);
  } 
  
  else 
  {
    Serial.print("Something Wrong"); 
    lcd.clear();
    lcd.print("Something Wrong");
    lcd.setCursor(0,1);
    lcd.print("Try Again Later");
    delay(2000);
    return p;
  }   
}

給定功能用于獲取指紋圖像并將其轉換為模板,并通過選定的ID將其保存到指紋模塊存儲器中。

uint8_t getFingerprintEnroll() 
{
  int p = -1;
  lcd.clear();
  lcd.print("finger ID:");
  lcd.print(id);
  lcd.setCursor(0,1);
  lcd.print("Place Finger");
  delay(2000);
  while (p != FINGERPRINT_OK)
  {
    p = finger.getImage();
..... .....
....... ....

給定函數用于投票和顯示結果:

void Vote()
{
  lcd.clear();
  lcd.print("Please Place");
  lcd.setCursor(0,1);
  lcd.print("Your Vote");
  digitalWrite(indVote, HIGH);
  digitalWrite(indFinger, LOW);
  digitalWrite(buzzer, HIGH);
  delay(500);
  digitalWrite(buzzer, LOW);
  delay(1000);
  while(1)
  {
        if(digitalRead(sw1)==0)

#include

#include

LiquidCrystal lcd(13,12,11,10,9,8);

#include

uint8_t id;

Adafruit_Fingerprint finger = Adafruit_Fingerprint(&Serial);

#define enroll 14

#define del 15

#define up 16

#define down 17

#define match 18

#define indVote 6

#define sw1 5

#define sw2 4

#define sw3 3

#define resultsw 2

#define indFinger 7

#define buzzer 19

#define records 25

int vote1,vote2,vote3;

int flag;

void setup()

{

delay(1000);

pinMode(enroll, INPUT_PULLUP);

pinMode(up, INPUT_PULLUP); 

pinMode(down, INPUT_PULLUP); 

pinMode(del, INPUT_PULLUP);

pinMode(match, INPUT_PULLUP);

pinMode(sw1, INPUT_PULLUP); 

pinMode(sw2, INPUT_PULLUP);

pinMode(sw3, INPUT_PULLUP);

pinMode(resultsw, INPUT_PULLUP);

pinMode(buzzer, OUTPUT);

pinMode(indVote, OUTPUT);

pinMode(indFinger, OUTPUT);

lcd.begin(16,2);

if(digitalRead(resultsw) ==0)

{

for(int i=0;iEEPROM.write(i+10,0xff);

   EEPROM.write(0,0);

   EEPROM.write(1,0);

   EEPROM.write(2,0);

   lcd.clear();

   lcd.print("System Reset");

   delay(1000);

}

lcd.clear();

lcd.print("Voting Machine");

lcd.setCursor(0,1);

lcd.print("by Finger Print");

delay(2000);

lcd.clear();

lcd.print("Circuit Digest");

lcd.setCursor(0,1);

lcd.print("Saddam Khan");

delay(2000);

if(EEPROM.read(0) == 0xff)

EEPROM.write(0,0);

if(EEPROM.read(1) == 0xff)

EEPROM.write(1,0);

if(EEPROM.read(1) == 0xff)

EEPROM.write(1,0);

//finger.begin(57600);

Serial.begin(57600);

lcd.clear();

lcd.print("Finding Module");

lcd.setCursor(0,1);

delay(1000);

if (finger.verifyPassword()) 

{

  //Serial.println("Found fingerprint sensor!");

  lcd.clear();

  lcd.print("Found Module ");

  delay(1000);

} 

else 

{

//Serial.println("Did not find fingerprint sensor :(");

lcd.clear();

lcd.print("module not Found");

lcd.setCursor(0,1);

lcd.print("Check Connections");

while (1);

}

lcd.clear();

lcd.setCursor(0,0);

lcd.print("Cn1");

lcd.setCursor(4,0);

lcd.print("Cn2");

lcd.setCursor(8,0);

lcd.print("Cn3");

lcd.setCursor(12,0);

lcd.print("Cn4");

lcd.setCursor(0,1);

vote1=EEPROM.read(0);

lcd.print(vote1);

lcd.setCursor(6,1);

vote2=EEPROM.read(1);

lcd.print(vote2);

lcd.setCursor(12,1);

vote3=EEPROM.read(2);

lcd.print(vote3);

delay(2000);

}

void loop()

{

lcd.setCursor(0,0);

lcd.print("Press Match Key ");

lcd.setCursor(0,1);

lcd.print("to start system");

digitalWrite(indVote, LOW);

digitalWrite(indFinger, LOW);

if(digitalRead(match)==0)

{

digitalWrite(buzzer, HIGH);

delay(200);

digitalWrite(buzzer, LOW);

digitalWrite(indFinger, HIGH);

for(int i=0;i<3;i++)

{

lcd.clear();

lcd.print("Place Finger");

delay(2000);

int result=getFingerprintIDez();

if(result>=0)

{

  flag=0;

    for(int i=0;i
    {

      if(result == EEPROM.read(i+10))

      {

         lcd.clear();

          lcd.print("Authorised Voter");

          lcd.setCursor(0,1);

          lcd.print("Please Wait....");

          delay(1000);

          Vote();

          EEPROM.write(i+10, 0xff);

          flag=1;

          return;

      }

    }



    if(flag == 0)

    {

    lcd.clear();

    lcd.print("Already Voted");

    //lcd.setCursor(0,1);

    //lcd.print("")

    digitalWrite(buzzer, HIGH);

    delay(5000);

    digitalWrite(buzzer, LOW);

    return;

    }

 }

}

lcd.clear();

}

checkKeys();

delay(1000);

}

void checkKeys()

{

if(digitalRead(enroll) == 0)

{

lcd.clear();

lcd.print("Please Wait");

delay(1000);

while(digitalRead(enroll) == 0);

Enroll();

}

else if(digitalRead(del) == 0)

{

lcd.clear();

lcd.print("Please Wait");

delay(1000);

delet();

}

}

void Enroll()

{

int count=0;

lcd.clear();

lcd.print("Enter Finger ID:");

while(1)

{

lcd.setCursor(0,1);

 lcd.print(count);

 if(digitalRead(up) == 0)

 {

   count++;

   if(count>25)

   count=0;

   delay(500);

 }



 else if(digitalRead(down) == 0)

 {

   count--;

   if(count<0)

   count=25;

   delay(500);

 }

 else if(digitalRead(del) == 0)

 {

      id=count;

      getFingerprintEnroll();

      for(int i=0;iif(EEPROM.read(i+10) == 0xff)

        {

          EEPROM.write(i+10, id);

          break;

        }

      }

      return;

 }



   else if(digitalRead(enroll) == 0)

 {        

      return;

 }

}

}

void delet()

{

int count=0;

lcd.clear();

lcd.print("Enter Finger ID");

while(1)

{

lcd.setCursor(0,1);

 lcd.print(count);

 if(digitalRead(up) == 0)

 {

   count++;

   if(count>25)

   count=0;

   delay(500);

 }



 else if(digitalRead(down) == 0)

 {

   count--;

   if(count<0)

   count=25;

   delay(500);

 }

 else if(digitalRead(del) == 0)

 {

      id=count;

      deleteFingerprint(id);

      for(int i=0;iif(EEPROM.read(i+10) == id)

        {

          EEPROM.write(i+10, 0xff);

          break;

        }

      }

      return;

 }

   else if(digitalRead(enroll) == 0)

 {        

      return;

 }

}

}

uint8_t getFingerprintEnroll()

{

int p = -1;

lcd.clear();

lcd.print("finger ID:");

lcd.print(id);

lcd.setCursor(0,1);

lcd.print("Place Finger");

delay(2000);

while (p != FINGERPRINT_OK)

{

p = finger.getImage();

switch (p)

{

case FINGERPRINT_OK:

  //Serial.println("Image taken");

  lcd.clear();

  lcd.print("Image taken");

  break;

case FINGERPRINT_NOFINGER:

  //Serial.println("No Finger");

  lcd.clear();

  lcd.print("No Finger");

  break;

case FINGERPRINT_PACKETRECIEVEERR:

  //Serial.println("Communication error");

  lcd.clear();

  lcd.print("Comm Error");

  break;

case FINGERPRINT_IMAGEFAIL:

  //Serial.println("Imaging error");

  lcd.clear();

  lcd.print("Imaging Error");

  break;

default:

  //Serial.println("Unknown error");

   lcd.clear();

  lcd.print("Unknown Error");

  break;

}

}

// OK success!

p = finger.image2Tz(1);

switch (p) {

case FINGERPRINT_OK:

  //Serial.println("Image converted");

  lcd.clear();

  lcd.print("Image converted");

  break;

case FINGERPRINT_IMAGEMESS:

  //Serial.println("Image too messy");

   lcd.clear();

   lcd.print("Image too messy");

  return p;

case FINGERPRINT_PACKETRECIEVEERR:

  //Serial.println("Communication error");

        lcd.clear();

  lcd.print("Comm Error");

  return p;

case FINGERPRINT_FEATUREFAIL:

  //Serial.println("Could not find fingerprint features");

        lcd.clear();

  lcd.print("Feature Not Found");

  return p;

case FINGERPRINT_INVALIDIMAGE:

  //Serial.println("Could not find fingerprint features");

              lcd.clear();

  lcd.print("Feature Not Found");

  return p;

default:

  //Serial.println("Unknown error");

              lcd.clear();

  lcd.print("Unknown Error");

  return p;

}

//Serial.println("Remove finger");

lcd.clear();

lcd.print("Remove Finger");

delay(2000);

p = 0;

while (p != FINGERPRINT_NOFINGER) {

p = finger.getImage();

}

//Serial.print("ID "); //Serial.println(id);

p = -1;

//Serial.println("Place same finger again");

lcd.clear();

lcd.print("Place Finger");

  lcd.setCursor(0,1);

  lcd.print("   Again");

while (p != FINGERPRINT_OK) {

p = finger.getImage();

switch (p) {

case FINGERPRINT_OK:

  //Serial.println("Image taken");

  break;

case FINGERPRINT_NOFINGER:

  //Serial.print(".");

  break;

case FINGERPRINT_PACKETRECIEVEERR:

  //Serial.println("Communication error");

  break;

case FINGERPRINT_IMAGEFAIL:

  //Serial.println("Imaging error");

  break;

default:

  //Serial.println("Unknown error");

  return;

}

}

// OK success!

p = finger.image2Tz(2);

switch (p) {

case FINGERPRINT_OK:

  //Serial.println("Image converted");

  break;

case FINGERPRINT_IMAGEMESS:

  //Serial.println("Image too messy");

  return p;

case FINGERPRINT_PACKETRECIEVEERR:

  //Serial.println("Communication error");

  return p;

case FINGERPRINT_FEATUREFAIL:

  //Serial.println("Could not find fingerprint features");

  return p;

case FINGERPRINT_INVALIDIMAGE:

  //Serial.println("Could not find fingerprint features");

  return p;

default:

  //Serial.println("Unknown error");

  return p;

}

// OK converted!

//Serial.print("Creating model for #"); //Serial.println(id);

p = finger.createModel();

if (p == FINGERPRINT_OK) {

//Serial.println("Prints matched!");

} else if (p == FINGERPRINT_PACKETRECIEVEERR) {

//Serial.println("Communication error");

return p;

} else if (p == FINGERPRINT_ENROLLMISMATCH) {

//Serial.println("Fingerprints did not match");

return p;

} else {

//Serial.println("Unknown error");

return p;

}

//Serial.print("ID "); //Serial.println(id);

p = finger.storeModel(id);

if (p == FINGERPRINT_OK) {

//Serial.println("Stored!");

lcd.clear();

lcd.print("Stored!");

delay(2000);

} else if (p == FINGERPRINT_PACKETRECIEVEERR) {

//Serial.println("Communication error");

return p;

} else if (p == FINGERPRINT_BADLOCATION) {

//Serial.println("Could not store in that location");

return p;

} else if (p == FINGERPRINT_FLASHERR) {

//Serial.println("Error writing to flash");

return p;

}

else {

//Serial.println("Unknown error");

return p;

}

}

int getFingerprintIDez()

{

uint8_t p = finger.getImage();

if (p != FINGERPRINT_OK)

return -1;

p = finger.image2Tz();

if (p != FINGERPRINT_OK)

return -1;

p = finger.fingerFastSearch();

if (p != FINGERPRINT_OK)

{

lcd.clear();

lcd.print("Finger Not Found");

lcd.setCursor(0,1);

lcd.print("Try Later");

delay(2000);

return -1;

}

// found a match!

//Serial.print("Found ID #");

//Serial.print(finger.fingerID);

return finger.fingerID;

}

uint8_t deleteFingerprint(uint8_t id)

{

uint8_t p = -1;

lcd.clear();

lcd.print("Please wait");

p = finger.deleteModel(id);

if (p == FINGERPRINT_OK)

{

//Serial.println("Deleted!");

lcd.clear();

lcd.print("Figer Deleted");

lcd.setCursor(0,1);

lcd.print("Successfully");

delay(1000);

}

else

{

//Serial.print("Something Wrong"); 

lcd.clear();

lcd.print("Something Wrong");

lcd.setCursor(0,1);

lcd.print("Try Again Later");

delay(2000);

return p;

}

}

void Vote()

{

lcd.clear();

lcd.print("Please Place");

lcd.setCursor(0,1);

lcd.print("Your Vote");

digitalWrite(indVote, HIGH);

digitalWrite(indFinger, LOW);

digitalWrite(buzzer, HIGH);

delay(500);

digitalWrite(buzzer, LOW);

delay(1000);

while(1)

{

if(digitalRead(sw1)==0)

    {

      vote1++;

      voteSubmit(1);

      EEPROM.write(0, vote1);

      while(digitalRead(sw1)==0);

      return;

    }

    if(digitalRead(sw2)==0)

    {

      vote2++;

        voteSubmit(2);

        EEPROM.write(1, vote2);

      while(digitalRead(sw2)==0);

      return;

    }

    if(digitalRead(sw3)==0)

    {

      vote3++;

         voteSubmit(3);

         EEPROM.write(2, vote3);

      while(digitalRead(sw3)==0);

      return;

    }

    

     if(digitalRead(resultsw)==0)

     {

          lcd.clear();

          lcd.setCursor(0,0);

          lcd.print("Can1");

          lcd.setCursor(6,0);

          lcd.print("Can2");

          lcd.setCursor(12,0);

          lcd.print("Can3");

          for(int i=0;i<3;i++)

          {

            lcd.setCursor(i*6,1);

            lcd.print(EEPROM.read(i));

          }

          delay(2000);

       int vote=vote1+vote2+vote3;

       if(vote)

       {

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

        {

         lcd.clear();

         lcd.print("Can1 Wins");

         delay(2000);

         lcd.clear();

        }

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

        {

         lcd.clear();

         lcd.print("Can2 Wins");

         delay(2000);

         lcd.clear();

        }

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

        {

         lcd.clear();

         lcd.print("Can3 Wins");

         delay(2000);

         lcd.clear();

        }

       

       else

       {

         lcd.clear();

         lcd.print("   Tie Up Or   ");

         lcd.setCursor(0,1);

         lcd.print("   No Result   ");

         delay(1000);

         lcd.clear();

       }

       

      }      

       else 

       {

         lcd.clear();

         lcd.print("No Voting....");

         delay(1000);

         lcd.clear();

       }

       vote1=0;vote2=0;vote3=0;vote=0;

       lcd.clear();

       return;

     }

}

digitalWrite(indVote, LOW);

}

void voteSubmit(int cn)

{

lcd.clear();

if(cn == 1)

lcd.print("Can1");

else if(cn == 2)

lcd.print("Can2");

else if(cn == 3)

lcd.print("Can3");

lcd.setCursor(0,1);

lcd.print("Vote Submitted");

digitalWrite(buzzer , HIGH);

delay(1000);

digitalWrite(buzzer, LOW);

digitalWrite(indVote, LOW);

return;

}


聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 生物識別
    +關注

    關注

    3

    文章

    1204

    瀏覽量

    52345
  • 指紋傳感器
    +關注

    關注

    6

    文章

    192

    瀏覽量

    63347
  • Arduino
    +關注

    關注

    185

    文章

    6434

    瀏覽量

    185272
收藏 人收藏

    評論

    相關推薦

    虹膜/指紋/人臉識別 誰是生物識別黑科技?

    識別方式來看,生物識別可以分為指紋識別、人臉識別、聲音識別、虹膜
    發表于 10-15 08:58 ?2138次閱讀

    如何使用Arduino指紋模塊制作生物識別考勤系統

    ,8051和樹莓派的其他電子考勤系統項目。在這個項目中,我們使用指紋模塊和Arduino來獲取和保存考勤數據和記錄。通過使用指紋傳感器,系統對用戶來說將變得更加安全。以下部分介紹了**使用 A
    的頭像 發表于 01-25 15:54 ?3038次閱讀
    如何使用<b class='flag-5'>Arduino</b>和<b class='flag-5'>指紋</b>模塊制作<b class='flag-5'>生物</b><b class='flag-5'>識別</b>考勤系統

    指紋識別在新型學籍管理系統中的應用

    動態信息的有效性和真實性識別能力,目前還是采用傳統的書面簽字方法.為此,結合廈門大學新型教務管理系統的開發,采用指紋識別技術,構建了針對學籍信息管理系統模塊的遠程簽到系統.引入指紋考勤
    發表于 04-24 09:47

    指紋識別電子鎖(單片+集成指紋模塊)

    些力不從心。隨著生物識別技術逐漸興起,傳統的安全防盜系統面臨極大的挑戰?;谶@種現狀,我們提出了一套項目旨在通過對Atmeg16單片的學習,以安全防盜為目的,設計出一款基于單片指紋
    發表于 12-05 01:06

    新唐指紋識別

    指紋識別技術是一種生物識別技術。指紋識別系統是一套包括指紋圖像獲取、處理、特征提取和比對等模塊的模式識別系統。
    發表于 01-27 15:06

    嵌入式指紋識別方案有什么優勢?

    應用背景信息化時代,生物識別技術作為信息安全和個人身份識別技術越來越受到人們的重視。指紋作為人體中最明顯的外表特征,具有唯一性、終身不變性、易獲取、難以復制等優點。隨著科學技術的發展,指紋識別
    發表于 08-19 07:23

    如何開發嵌入式指紋識別系統?

    生理測定技術是當前研究的熱點之一。目前,有很多技術等生物測定技術可用于身份認證,包括:虹膜識別、視網膜識別、面部識別、簽名識別、聲音
    發表于 09-20 07:19

    瑞薩MCU指紋識別解決方案!

    `隨著智能社會加速實現,智能生物識別及進入系統也在日常工作、生活場景中得到快速普及。雖然指紋識別已經開始普及,指紋芯片市場的競爭也已進入白熱化階段,瑞薩認為“
    發表于 09-02 13:57

    生物識別技術可靠嗎?

    其實,生物識別技術還可以稱之為生物特征識別技術。這種技術是通過利用生物本身具備唯一性的特征來進行身份識別的技術手段,然而具備
    發表于 11-02 07:13

    怎樣去設計一種基于單片指紋識別電子密碼鎖

    文末下載完整資料1.1指紋識別簡介1.1.1指紋識別原理??指紋識別技術的原理和其它生物識別技術的原理相似。它是利用人體的指紋特征對個體身份
    發表于 07-13 09:04

    求一種指紋識別方案

    指紋識別技術是眾多生物特征識別技術中的一種,指紋識別是將識別對象的指紋進行分類比對從而進行判別。
    發表于 07-21 09:08

    絕對實用的ARM指紋識別系統方案

    最為實用、應用最為廣泛的生物識別技術,尤其在民用生物識別技術中?!   鹘y的指紋識別系統都是基于PC的,這種系統具有識別速度快、樣本存儲
    發表于 11-09 06:02

    什么是不同類型的生物識別傳感器?

    。印度***擁有超過12.8億印度人的生物特征數據(視網膜、所有10個手指的指紋和面部數據) ,這些數據正式用于實施***控制的社會福利計劃。它可用于犯罪控制、執法、反恐、人口監測、識別鄰國的非法移民
    發表于 03-25 10:44

    指紋,人臉,虹膜三種生物識別優缺點比較

    生物識別本身來說,也可以分為指紋識別、人臉識別、虹膜識別、掌/指紋靜脈
    發表于 06-22 16:55 ?1.6w次閱讀

    如何使用Arduino制作生物特征投票

    電子發燒友網站提供《如何使用Arduino制作生物特征投票機.zip》資料免費下載
    發表于 11-22 10:59 ?0次下載
    如何使用<b class='flag-5'>Arduino</b>制作<b class='flag-5'>生物</b>特征<b class='flag-5'>投票</b>機
    亚洲欧美日韩精品久久_久久精品AⅤ无码中文_日本中文字幕有码在线播放_亚洲视频高清不卡在线观看
    <acronym id="s8ci2"><small id="s8ci2"></small></acronym>
    <rt id="s8ci2"></rt><rt id="s8ci2"><optgroup id="s8ci2"></optgroup></rt>
    <acronym id="s8ci2"></acronym>
    <acronym id="s8ci2"><center id="s8ci2"></center></acronym>