電子發(fā)燒友App

硬聲App

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示
創(chuàng)作
電子發(fā)燒友網(wǎng)>電子資料下載>電子資料>如何使用Arduino制作生物特征投票機(jī)

如何使用Arduino制作生物特征投票機(jī)

2022-11-22 | zip | 0.05 MB | 次下載 | 免費(fèi)

資料介紹

描述

我們都知道現(xiàn)有的電子投票機(jī),用戶必須按下按鈕才能投票。但這些機(jī)器從一開始就被批評(píng)為回火。因此,政府正計(jì)劃引入基于指紋的投票機(jī),用戶可以根據(jù)他/她的指紋印象投票。該系統(tǒng)不僅可以消除重復(fù)投票的可能性,還可以防止任何形式的操縱。

所以在這個(gè)項(xiàng)目中,我們將使用 Arduino Uno 、TFT 顯示屏和指紋傳感器構(gòu)建生物識(shí)別投票機(jī)的原型。我們之前使用帶有 NodeMCU 的 R305 指紋傳感器來構(gòu)建基于生物特征的考勤系統(tǒng),但在這里我們將使用帶有 Arduino 的高級(jí) GT-511C3 指紋傳感器。

構(gòu)建生物特征投票機(jī)所需的組件

這款 2.4 英寸 TFT 顯示屏以前與 Arduino 一起用于構(gòu)建基于物聯(lián)網(wǎng)的餐廳菜單訂購(gòu)系統(tǒng)。

使用 Arduino 的生物識(shí)別投票機(jī)電路圖

pYYBAGN3MgyAV4jqAAB7oqgwPPw630.jpg
?

該項(xiàng)目的電路圖非常簡(jiǎn)單,因?yàn)槲覀儍H將 TFT 顯示屏和指紋傳感器模塊與 Arduino Uno 連接。指紋傳感器的 VCC 和 GND 引腳連接到 Arduino 的 5V 和 GND 引腳,而 TX 和 RX 引腳連接到 Arduino Uno 的數(shù)字引腳 11 和 12。

2.4” TFT LCD 屏幕為 Arduino Shield,可直接安裝在 Arduino Uno 上,如下圖所示。TFT 顯示屏有 28 個(gè)引腳,非常適合 Arduino Uno,所以我不得不將指紋傳感器焊接在 Arduino 的背面。

源代碼和分步代碼說明

這篇使用 Arduino 的指紋投票系統(tǒng)項(xiàng)目的完整代碼在文末給出;這里我們解釋一下代碼的一些重要功能。

該代碼使用 SPFD5408、軟件串行和FPS_GT511C3庫(kù)。SPFD5408 庫(kù)是原始 Adafruit 庫(kù)的修改版本。這些庫(kù)文件可以從下面給出的鏈接下載

在包含庫(kù)并定義一些重要參數(shù)之后,我們可以進(jìn)入編程部分。該計(jì)劃涉及三個(gè)部分。一是創(chuàng)建投票機(jī)的用戶界面,二是獲取按鈕的接觸點(diǎn)并根據(jù)觸摸檢測(cè)按鈕,最后計(jì)算結(jié)果并將它們保存到 Arduino 的內(nèi)存中。

1. 創(chuàng)建用戶界面:

我創(chuàng)建了一個(gè)帶有三個(gè)按鈕和項(xiàng)目名稱的簡(jiǎn)單 UI。TFT 顯示庫(kù)允許您繪制線條、矩形、圓形、字符、字符串以及更多任何喜歡的顏色和大小。這里使用 fillRoundRect 和 drawRoundRect 函數(shù)創(chuàng)建了兩個(gè)矩形按鈕。tft.drawRoundRect 函數(shù)的語(yǔ)法如下:

tft.drawRoundRect(int16_t x0,int16_t y0,int16_t w,int16_t h,int16_t 半徑,uint16_t 顏色)

在哪里:

x0=矩形起點(diǎn)的X坐標(biāo)

y0=矩形起點(diǎn)的Y坐標(biāo)

w = 矩形的寬度

h = 矩形的高度

radius=圓角的半徑

color = 矩形的顏色。

無效drawHome()

{

tft.fillScreen(白色);

tft.drawRoundRect(0, 0, 319, 240, 8, WHITE); //頁(yè)面邊框

tft.fillRoundRect(10, 70, 220, 50, 8, GOLD);

tft.drawRoundRect(10, 70, 220, 50, 8, WHITE); //投票

tft.fillRoundRect(10, 160, 220, 50, 8, GOLD);

tft.drawRoundRect(10, 160, 220, 50, 8, 白色); //注冊(cè)

tft.fillRoundRect(10, 250, 220, 50, 8, GOLD); //結(jié)果

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

tft.setCursor(65, 5);

tft.setTextSize(3);

tft.setTextColor(青色);

tft.print("投票");

tft.setCursor(57, 29);

tft.print("機(jī)器");

tft.setTextSize(3);

tft.setTextColor(白色);

tft.setCursor(25, 82);

tft.print("候選人 1");

tft.setCursor(25, 172);

tft.print("候選人 2");

tft.setCursor(25, 262);

tft.print("候選人 3");

}

2. 獲取接觸點(diǎn)和檢測(cè)按鈕:

現(xiàn)在在代碼的第二部分,我們將檢測(cè)按鈕接觸點(diǎn),然后使用這些點(diǎn)來預(yù)測(cè)按鈕。ts.getPoint() 函數(shù)用于檢測(cè)用戶對(duì) TFT 顯示屏的觸摸。ts.getPoint 給出了觸摸區(qū)域的原始 ADC 值。然后使用 map 函數(shù)將這些 RAW ADC 值轉(zhuǎn)換為像素坐標(biāo)。

TSPoint p = ts.getPoint();

如果(pz > ts.pressureThreshhold)

{

像素 = 地圖(像素,TS_MAXX,TS_MINX,0, 320);

py = map(py, TS_MAXY, TS_MINY, 0, 240);

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

//Serial.print(px);

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

//Serial.print(py);

現(xiàn)在,由于我們知道每個(gè)按鈕的 X 和 Y 坐標(biāo),我們可以使用“if”語(yǔ)句預(yù)測(cè)用戶觸摸的位置。

如果 (px > 70 && px < 120 && py > 10 && py < 220 && pz > 最小壓力 && pz < 最大壓力)

{

Serial.println("候選 1");

When a voter presses the candidate button, he will be asked to scan the finger on the fingerprint sensor. 如果手指 ID 被授權(quán),則允許投票者投票。如果任何非注冊(cè)用戶想要投票,則指紋模塊將不會(huì)檢測(cè)到其 ID 進(jìn)入系統(tǒng),顯示屏將顯示“對(duì)不起,您無法投票”。

如果(fps.IsPressFinger())

{

fps.CaptureFinger(假);

int id = fps.Identify1_N();

如果(id <200)

{

msg = "候選人 1";

投票1++;

EEPROM.write(0, vote1);

tft.setCursor(42, 170);

tft.print("謝謝");

延遲(3000);

畫家();

3. 結(jié)果:

最后一步是從 EEPROM 存儲(chǔ)器中獲取選票并比較所有三個(gè)候選人的選票。得票最高的候選人獲勝。結(jié)果只能從串行監(jiān)視器訪問,不會(huì)顯示在 TFT 屏幕上。

vote1=EEPROM.read(0);

投票2=EEPROM.read(1);

vote3=EEPROM.read(2);

如果(投票)

{

如果((投票 1 > 投票 2 && 投票 1 > 投票 3))

{

Serial.print("Can1 獲勝");

延遲(2000);

}

使用 Arduino 測(cè)試指紋投票系統(tǒng)

要測(cè)試項(xiàng)目,請(qǐng)將 Arduino Uno 連接到筆記本電腦并從此處上傳代碼。代碼上傳后,TFT 顯示屏應(yīng)顯示候選人的姓名。當(dāng)有人點(diǎn)擊候選人姓名時(shí),機(jī)器會(huì)要求掃描指紋掃描儀。如果指紋有效,則用戶投票將被計(jì)算在內(nèi),但如果指紋與數(shù)據(jù)庫(kù)的記錄不匹配,則拒絕投票。每個(gè)候選人的總票數(shù)將存儲(chǔ)在 EEPROM 中,得票最多的候選人將獲勝。

我希望你喜歡這個(gè)教程并學(xué)到了一些有用的東西。如果您有任何疑問,請(qǐng)?jiān)谙旅娴脑u(píng)論部分告訴我們,并在Hackster.io上關(guān)注我們以獲取更多此類有趣的項(xiàng)目。


下載該資料的人也在下載 下載該資料的人還在閱讀
更多 >

評(píng)論

查看更多

下載排行

本周

  1. 1山景DSP芯片AP8248A2數(shù)據(jù)手冊(cè)
  2. 1.06 MB  |  532次下載  |  免費(fèi)
  3. 2RK3399完整板原理圖(支持平板,盒子VR)
  4. 3.28 MB  |  339次下載  |  免費(fèi)
  5. 3TC358743XBG評(píng)估板參考手冊(cè)
  6. 1.36 MB  |  330次下載  |  免費(fèi)
  7. 4DFM軟件使用教程
  8. 0.84 MB  |  295次下載  |  免費(fèi)
  9. 5元宇宙深度解析—未來的未來-風(fēng)口還是泡沫
  10. 6.40 MB  |  227次下載  |  免費(fèi)
  11. 6迪文DGUS開發(fā)指南
  12. 31.67 MB  |  194次下載  |  免費(fèi)
  13. 7元宇宙底層硬件系列報(bào)告
  14. 13.42 MB  |  182次下載  |  免費(fèi)
  15. 8FP5207XR-G1中文應(yīng)用手冊(cè)
  16. 1.09 MB  |  178次下載  |  免費(fèi)

本月

  1. 1OrCAD10.5下載OrCAD10.5中文版軟件
  2. 0.00 MB  |  234315次下載  |  免費(fèi)
  3. 2555集成電路應(yīng)用800例(新編版)
  4. 0.00 MB  |  33566次下載  |  免費(fèi)
  5. 3接口電路圖大全
  6. 未知  |  30323次下載  |  免費(fèi)
  7. 4開關(guān)電源設(shè)計(jì)實(shí)例指南
  8. 未知  |  21549次下載  |  免費(fèi)
  9. 5電氣工程師手冊(cè)免費(fèi)下載(新編第二版pdf電子書)
  10. 0.00 MB  |  15349次下載  |  免費(fèi)
  11. 6數(shù)字電路基礎(chǔ)pdf(下載)
  12. 未知  |  13750次下載  |  免費(fèi)
  13. 7電子制作實(shí)例集錦 下載
  14. 未知  |  8113次下載  |  免費(fèi)
  15. 8《LED驅(qū)動(dòng)電路設(shè)計(jì)》 溫德爾著
  16. 0.00 MB  |  6656次下載  |  免費(fèi)

總榜

  1. 1matlab軟件下載入口
  2. 未知  |  935054次下載  |  免費(fèi)
  3. 2protel99se軟件下載(可英文版轉(zhuǎn)中文版)
  4. 78.1 MB  |  537798次下載  |  免費(fèi)
  5. 3MATLAB 7.1 下載 (含軟件介紹)
  6. 未知  |  420027次下載  |  免費(fèi)
  7. 4OrCAD10.5下載OrCAD10.5中文版軟件
  8. 0.00 MB  |  234315次下載  |  免費(fèi)
  9. 5Altium DXP2002下載入口
  10. 未知  |  233046次下載  |  免費(fèi)
  11. 6電路仿真軟件multisim 10.0免費(fèi)下載
  12. 340992  |  191187次下載  |  免費(fèi)
  13. 7十天學(xué)會(huì)AVR單片機(jī)與C語(yǔ)言視頻教程 下載
  14. 158M  |  183279次下載  |  免費(fèi)
  15. 8proe5.0野火版下載(中文版免費(fèi)下載)
  16. 未知  |  138040次下載  |  免費(fèi)