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