基于Arduino的指紋生物識(shí)別投票機(jī)
我們都知道現(xiàn)有的電子投票機(jī),用戶必須按下一個(gè)按鈕才能投票。但這些機(jī)器從一開始就因回火而受到批評(píng)。因此,政府計(jì)劃引進(jìn)指紋投票機(jī),用戶可以根據(jù)自己的指紋進(jìn)行投票。該系統(tǒng)不僅可以消除重復(fù)投票的可能性,還可以防止任何形式的操縱。
所以在這個(gè)項(xiàng)目中,我們將使用Arduino Uno, TFT顯示器和指紋傳感器來構(gòu)建一個(gè)生物識(shí)別投票機(jī)的原型。
我們以前使用R305指紋傳感器與NodeMCU來構(gòu)建基于生物識(shí)別的考勤系統(tǒng),但在這里我們將使用先進(jìn)的GT-511C3指紋傳感器與Arduino。
組件的要求
?Arduino Uno
?2.4 " TFT液晶顯示屏
?GT-511C3指紋傳感器
這款2.4英寸TFT顯示屏以前與Arduino一起用于構(gòu)建基于物聯(lián)網(wǎng)的餐廳菜單訂購(gòu)系統(tǒng)。
線路圖
基于Arduino的生物識(shí)別投票機(jī)電路圖如下:
這個(gè)項(xiàng)目的電路圖非常簡(jiǎn)單,因?yàn)槲覀冎皇怯肁rduino Uno連接TFT顯示器和指紋傳感器模塊。指紋傳感器的VCC和GND引腳連接到Arduino的5V和GND引腳,TX和RX引腳連接到Arduino Uno的數(shù)字引腳11和12。
2.4英寸TFT液晶屏是Arduino Shield,可以直接安裝在Arduino Uno上,如下圖所示。TFT顯示器有28個(gè)引腳,完全適合Arduino Uno,所以我必須將指紋傳感器焊接在Arduino的背面。
代碼的解釋
本文最后給出了使用Arduino的指紋投票系統(tǒng)項(xiàng)目的完整代碼;這里我們將解釋代碼的一些重要功能。
該代碼使用了SPFD5408、Software Serial和FPS_GT511C3庫(kù)。SPFD5408是原Adafruit庫(kù)的修改版本。這些資料庫(kù)檔案可從下列連結(jié)下載:
?SPFD5408圖書館
?軟件系列
?FPS_GT511C3
下載并將這些庫(kù)添加到Arduino IDE后,通過包含所需的庫(kù)文件來啟動(dòng)代碼。
之后,定義X和y軸的校準(zhǔn)值。這些是庫(kù)中給出的默認(rèn)值。如果您的TFT顯示觸摸不能正常工作,那么您可以再次校準(zhǔn)它并用新的校準(zhǔn)值更改這些校準(zhǔn)值。
在下一行中,定義連接指紋傳感器的Arduino Uno引腳。指紋傳感器的發(fā)送引腳連接到Arduino的引腳11,接收器連接到Arduino的引腳12。
在包括了庫(kù)并定義了一些重要的參數(shù)之后,我們就可以進(jìn)入編程部分了。這個(gè)程序包含三個(gè)部分。一個(gè)是創(chuàng)建投票機(jī)的UI,第二個(gè)是獲取按鈕的觸摸點(diǎn)并根據(jù)觸摸檢測(cè)按鈕,最后計(jì)算結(jié)果并將其保存到Arduino的內(nèi)存中。
1. 創(chuàng)建UI
我已經(jīng)創(chuàng)建了一個(gè)簡(jiǎn)單的UI與三個(gè)按鈕和項(xiàng)目的名稱。TFT顯示庫(kù)允許您繪制線條,矩形,圓圈,字符,字符串以及更多的任何首選顏色和大小。這里使用fillRoundRect和drawRoundRect函數(shù)創(chuàng)建了兩個(gè)矩形按鈕。tft的語法。drawwroundrect函數(shù)如下:
2. 獲取觸點(diǎn)和檢測(cè)按鈕
現(xiàn)在,在代碼的第二部分中,我們將檢測(cè)按鈕接觸點(diǎn),然后使用這些點(diǎn)來預(yù)測(cè)按鈕。. ts.getPoint()函數(shù)用于檢測(cè)TFT顯示器上的用戶觸摸。ts.getPoint給出了觸摸區(qū)域的原始ADC值。然后使用地圖函數(shù)將這些RAW ADC值轉(zhuǎn)換為像素坐標(biāo)。
現(xiàn)在,由于我們知道每個(gè)按鈕的X和Y坐標(biāo),我們可以通過使用‘ if ’語句來預(yù)測(cè)用戶觸摸的位置。
當(dāng)選民按下候選人按鈕時(shí),他將被要求掃描指紋傳感器上的手指。如果手指ID被授權(quán),那么選民就可以投票。如果任何未注冊(cè)的用戶想要投票,那么指紋模塊將不會(huì)將其ID檢測(cè)到系統(tǒng)中,并且顯示器將顯示“對(duì)不起,您不能投票”。
3. 結(jié)果
最后一步是從EEPROM內(nèi)存中獲取選票計(jì)數(shù),并比較所有三位候選人的選票。得票最多的候選人獲勝。結(jié)果只能從串行監(jiān)視器訪問,不會(huì)顯示在TFT屏幕上。
使用Arduino測(cè)試指紋投票系統(tǒng)
要測(cè)試該項(xiàng)目,將Arduino Uno連接到筆記本電腦并上傳以下給定代碼。一旦代碼上傳,TFT顯示應(yīng)該顯示候選人的名字。當(dāng)有人點(diǎn)擊候選人的名字時(shí),機(jī)器會(huì)要求掃描指紋掃描儀。如果指紋是有效的,那么用戶投票將被計(jì)數(shù),但如果模式與數(shù)據(jù)庫(kù)的記錄不匹配,則投票的訪問將被拒絕。每個(gè)候選人的總票數(shù)將被存儲(chǔ)在EEPROM中,票數(shù)最高的候選人將獲勝。
本文編譯自iotdesignpro