資料介紹
描述
我們都知道現(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)的餐廳菜單訂購系統(tǒng)。
使用 Arduino 的生物識(shí)別投票機(jī)電路圖

該項(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庫。SPFD5408 庫是原始 Adafruit 庫的修改版本。這些庫文件可以從下面給出的鏈接下載:
在包含庫并定義一些重要參數(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 顯示庫允許您繪制線條、矩形、圓形、字符、字符串以及更多任何喜歡的顏色和大小。這里使用 fillRoundRect 和 drawRoundRect 函數(shù)創(chuàng)建了兩個(gè)矩形按鈕。tft.drawRoundRect 函數(shù)的語法如下:
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); //頁面邊框
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.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ù)測(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ù)庫的記錄不匹配,則拒絕投票。每個(gè)候選人的總票數(shù)將存儲(chǔ)在 EEPROM 中,得票最多的候選人將獲勝。
我希望你喜歡這個(gè)教程并學(xué)到了一些有用的東西。如果您有任何疑問,請(qǐng)?jiān)谙旅娴脑u(píng)論部分告訴我們,并在Hackster.io上關(guān)注我們以獲取更多此類有趣的項(xiàng)目。
- Arduino制作循跡小車教程 7次下載
- 使用Arduino和TTP223觸摸傳感器制作智能電子投票機(jī)
- 使用Arduino Nano的生物節(jié)律時(shí)鐘
- 基于Arduino系統(tǒng)拉線墻畫機(jī)器人設(shè)計(jì)制作 12次下載
- 基于Arduino硬件光控?zé)?b class="flag-6" style="color: red">制作資料 7次下載
- 電子投票方案及其研究綜述 1次下載
- 使用RDA5807制作收音機(jī)的Arduino代碼免費(fèi)下載 68次下載
- Arduino示波器制作資料說明 35次下載
- Arduino教程之如何使用Arduino制作一個(gè)寶寶使用的小桔燈詳細(xì)資料概述 14次下載
- 基于Arduino的趣味電子制作 89次下載
- 幾個(gè)Arduino創(chuàng)意制作分享 6次下載
- 基于虹膜生物特征的WSNs訪問認(rèn)證方法研究_陳英 0次下載
- 生物特征識(shí)別技術(shù)研究及應(yīng)用韓玉峰 0次下載
- 基于Arduino的觸摸變色臺(tái)燈制作 15次下載
- 基于生物特征的Auto ID技術(shù)——BioID
- 用Arduino做一個(gè)自動(dòng)割草機(jī) 2019次閱讀
- 如何制作一個(gè)簡(jiǎn)單的2步Arduino可編程定時(shí)器電路 2462次閱讀
- 如何制作一個(gè)簡(jiǎn)單的2步Arduino可編程定時(shí)器電路 4658次閱讀
- 如何利用Arduino UNO和SD卡制作音樂播放器 8107次閱讀
- 如何使用Arduino來制作一個(gè)簡(jiǎn)單的歐姆表 6428次閱讀
- DIY一個(gè)簡(jiǎn)單的Arduino板子 5703次閱讀
- 基于使用Arduino、加速度計(jì)和LED制作時(shí)間手套 2982次閱讀
- 淺談生物特征識(shí)別技術(shù)的歷史、特點(diǎn)及意義 1.6w次閱讀
- 利用Arduino制作8×10 LED矩陣 8712次閱讀
- 幾大生物特征識(shí)別技術(shù)對(duì)比淺析,你了解多少呢? 4524次閱讀
- 各種生物識(shí)別技術(shù)原理匯總介紹 3169次閱讀
- max7219與arduino驅(qū)動(dòng)設(shè)計(jì)例程 4.7w次閱讀
- 基于生物特征識(shí)別的虹膜識(shí)別技術(shù)介紹及其應(yīng)用 8336次閱讀
- ARDUINO IDE編寫和AVR單片機(jī)程序的下載 1w次閱讀
- arduino和單片機(jī)的區(qū)別 10.5w次閱讀
下載排行
本周
- 1NS1081/NS1081S/NS1081Q USB 3.0閃存數(shù)據(jù)手冊(cè)
- 0.40 MB | 4次下載 | 2 積分
- 2光伏并網(wǎng)逆變器原理
- 7.31 MB | 3次下載 | 2 積分
- 3T20電烙鐵原理圖資料
- 0.27 MB | 2次下載 | 免費(fèi)
- 4PL83081 雙路恒流同步降壓轉(zhuǎn)換器技術(shù)手冊(cè)
- 3.34 MB | 1次下載 | 免費(fèi)
- 5PL88052 4.8V至60V輸入,5A,同步降壓轉(zhuǎn)換器技術(shù)手冊(cè)
- 3.36 MB | 1次下載 | 免費(fèi)
- 6LX8201微孔霧化驅(qū)動(dòng)芯片電路圖資料
- 0.15 MB | 1次下載 | 免費(fèi)
- 7PC6200_7V直流電機(jī)驅(qū)動(dòng)器技術(shù)手冊(cè)
- 0.47 MB | 次下載 | 免費(fèi)
- 8恒溫晶體振蕩器(OCXO)FOC-2D:20.6×20.6mm在通信基站和測(cè)試設(shè)備中的應(yīng)用參數(shù)規(guī)格
- 485.75 KB | 次下載 | 免費(fèi)
本月
- 1如何看懂電子電路圖
- 12.88 MB | 329次下載 | 免費(fèi)
- 2RK3588數(shù)據(jù)手冊(cè)
- 2.24 MB | 14次下載 | 免費(fèi)
- 3PC5502負(fù)載均流控制電路數(shù)據(jù)手冊(cè)
- 1.63 MB | 12次下載 | 免費(fèi)
- 4STM32F10x參考手冊(cè)資料
- 13.64 MB | 12次下載 | 1 積分
- 5OAH0428 V1.0英文規(guī)格書
- 5.86 MB | 8次下載 | 免費(fèi)
- 6NS1081/NS1081S/NS1081Q USB 3.0閃存數(shù)據(jù)手冊(cè)
- 0.40 MB | 4次下載 | 2 積分
- 7PID控制算法學(xué)習(xí)筆記資料
- 3.43 MB | 3次下載 | 2 積分
- 8光伏并網(wǎng)逆變器原理
- 7.31 MB | 3次下載 | 2 積分
總榜
- 1matlab軟件下載入口
- 未知 | 935132次下載 | 10 積分
- 2開源硬件-PMP21529.1-4 開關(guān)降壓/升壓雙向直流/直流轉(zhuǎn)換器 PCB layout 設(shè)計(jì)
- 1.48MB | 420064次下載 | 10 積分
- 3Altium DXP2002下載入口
- 未知 | 233089次下載 | 10 積分
- 4電路仿真軟件multisim 10.0免費(fèi)下載
- 340992 | 191415次下載 | 10 積分
- 5十天學(xué)會(huì)AVR單片機(jī)與C語言視頻教程 下載
- 158M | 183349次下載 | 10 積分
- 6labview8.5下載
- 未知 | 81599次下載 | 10 積分
- 7Keil工具M(jìn)DK-Arm免費(fèi)下載
- 0.02 MB | 73818次下載 | 10 積分
- 8LabVIEW 8.6下載
- 未知 | 65990次下載 | 10 積分
評(píng)論