資料介紹
描述
我們都知道現有的電子投票機,用戶必須按下按鈕才能投票。但這些機器從一開始就被批評為回火。因此,政府正計劃引入基于指紋的投票機,用戶可以根據他/她的指紋印象投票。該系統不僅可以消除重復投票的可能性,還可以防止任何形式的操縱。
所以在這個項目中,我們將使用 Arduino Uno 、TFT 顯示屏和指紋傳感器構建生物識別投票機的原型。我們之前使用帶有 NodeMCU 的 R305 指紋傳感器來構建基于生物特征的考勤系統,但在這里我們將使用帶有 Arduino 的高級 GT-511C3 指紋傳感器。
構建生物特征投票機所需的組件
這款 2.4 英寸 TFT 顯示屏以前與 Arduino 一起用于構建基于物聯網的餐廳菜單訂購系統。
使用 Arduino 的生物識別投票機電路圖
該項目的電路圖非常簡單,因為我們僅將 TFT 顯示屏和指紋傳感器模塊與 Arduino Uno 連接。指紋傳感器的 VCC 和 GND 引腳連接到 Arduino 的 5V 和 GND 引腳,而 TX 和 RX 引腳連接到 Arduino Uno 的數字引腳 11 和 12。
2.4” TFT LCD 屏幕為 Arduino Shield,可直接安裝在 Arduino Uno 上,如下圖所示。TFT 顯示屏有 28 個引腳,非常適合 Arduino Uno,所以我不得不將指紋傳感器焊接在 Arduino 的背面。
源代碼和分步代碼說明
這篇使用 Arduino 的指紋投票系統項目的完整代碼在文末給出;這里我們解釋一下代碼的一些重要功能。
該代碼使用 SPFD5408、軟件串行和FPS_GT511C3庫。SPFD5408 庫是原始 Adafruit 庫的修改版本。這些庫文件可以從下面給出的鏈接下載:
在包含庫并定義一些重要參數之后,我們可以進入編程部分。該計劃涉及三個部分。一是創建投票機的用戶界面,二是獲取按鈕的接觸點并根據觸摸檢測按鈕,最后計算結果并將它們保存到 Arduino 的內存中。
1. 創建用戶界面:
我創建了一個帶有三個按鈕和項目名稱的簡單 UI。TFT 顯示庫允許您繪制線條、矩形、圓形、字符、字符串以及更多任何喜歡的顏色和大小。這里使用 fillRoundRect 和 drawRoundRect 函數創建了兩個矩形按鈕。tft.drawRoundRect 函數的語法如下:
tft.drawRoundRect(int16_t x0,int16_t y0,int16_t w,int16_t h,int16_t 半徑,uint16_t 顏色)
在哪里:
x0=矩形起點的X坐標
y0=矩形起點的Y坐標
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, 白色); //注冊
tft.fillRoundRect(10, 250, 220, 50, 8, GOLD); //結果
tft.drawRoundRect(10, 250, 220, 50, 8, 白色);
tft.setTextSize(3);
tft.setTextColor(青色);
tft.print("投票");
tft.setCursor(57, 29);
tft.print("機器");
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. 獲取接觸點和檢測按鈕:
現在在代碼的第二部分,我們將檢測按鈕接觸點,然后使用這些點來預測按鈕。ts.getPoint() 函數用于檢測用戶對 TFT 顯示屏的觸摸。ts.getPoint 給出了觸摸區域的原始 ADC 值。然后使用 map 函數將這些 RAW ADC 值轉換為像素坐標。
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);
現在,由于我們知道每個按鈕的 X 和 Y 坐標,我們可以使用“if”語句預測用戶觸摸的位置。
如果 (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 被授權,則允許投票者投票。如果任何非注冊用戶想要投票,則指紋模塊將不會檢測到其 ID 進入系統,顯示屏將顯示“對不起,您無法投票”。
如果(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. 結果:
最后一步是從 EEPROM 存儲器中獲取選票并比較所有三個候選人的選票。得票最高的候選人獲勝。結果只能從串行監視器訪問,不會顯示在 TFT 屏幕上。
vote1=EEPROM.read(0);
投票2=EEPROM.read(1);
vote3=EEPROM.read(2);
如果(投票)
{
如果((投票 1 > 投票 2 && 投票 1 > 投票 3))
{
Serial.print("Can1 獲勝");
延遲(2000);
}
使用 Arduino 測試指紋投票系統
要測試項目,請將 Arduino Uno 連接到筆記本電腦并從此處上傳代碼。代碼上傳后,TFT 顯示屏應顯示候選人的姓名。當有人點擊候選人姓名時,機器會要求掃描指紋掃描儀。如果指紋有效,則用戶投票將被計算在內,但如果指紋與數據庫的記錄不匹配,則拒絕投票。每個候選人的總票數將存儲在 EEPROM 中,得票最多的候選人將獲勝。
我希望你喜歡這個教程并學到了一些有用的東西。如果您有任何疑問,請在下面的評論部分告訴我們,并在Hackster.io上關注我們以獲取更多此類有趣的項目。
- Arduino制作循跡小車教程 3次下載
- 使用Arduino和TTP223觸摸傳感器制作智能電子投票機
- 使用Arduino Nano的生物節律時鐘
- 基于Arduino系統拉線墻畫機器人設計制作 10次下載
- 基于Arduino硬件光控燈制作資料 6次下載
- 電子投票方案及其研究綜述 1次下載
- 使用RDA5807制作收音機的Arduino代碼免費下載 67次下載
- Arduino示波器制作資料說明 35次下載
- Arduino教程之如何使用Arduino制作一個寶寶使用的小桔燈詳細資料概述 14次下載
- 基于Arduino的趣味電子制作 88次下載
- 幾個Arduino創意制作分享 6次下載
- 基于虹膜生物特征的WSNs訪問認證方法研究_陳英 0次下載
- 生物特征識別技術研究及應用韓玉峰 0次下載
- 基于Arduino的觸摸變色臺燈制作 14次下載
- 基于生物特征的Auto ID技術——BioID
- 用Arduino做一個自動割草機 1590次閱讀
- 如何制作一個簡單的2步Arduino可編程定時器電路 1980次閱讀
- 如何制作一個簡單的2步Arduino可編程定時器電路 4219次閱讀
- 如何利用Arduino UNO和SD卡制作音樂播放器 7319次閱讀
- 如何使用Arduino來制作一個簡單的歐姆表 5565次閱讀
- DIY一個簡單的Arduino板子 5350次閱讀
- 基于使用Arduino、加速度計和LED制作時間手套 2802次閱讀
- 淺談生物特征識別技術的歷史、特點及意義 1.6w次閱讀
- 利用Arduino制作8×10 LED矩陣 8489次閱讀
- 幾大生物特征識別技術對比淺析,你了解多少呢? 4398次閱讀
- 各種生物識別技術原理匯總介紹 2963次閱讀
- max7219與arduino驅動設計例程 4.7w次閱讀
- 基于生物特征識別的虹膜識別技術介紹及其應用 8100次閱讀
- ARDUINO IDE編寫和AVR單片機程序的下載 9769次閱讀
- arduino和單片機的區別 10.5w次閱讀
下載排行
本周
- 1山景DSP芯片AP8248A2數據手冊
- 1.06 MB | 532次下載 | 免費
- 2RK3399完整板原理圖(支持平板,盒子VR)
- 3.28 MB | 339次下載 | 免費
- 3TC358743XBG評估板參考手冊
- 1.36 MB | 330次下載 | 免費
- 4DFM軟件使用教程
- 0.84 MB | 295次下載 | 免費
- 5元宇宙深度解析—未來的未來-風口還是泡沫
- 6.40 MB | 227次下載 | 免費
- 6迪文DGUS開發指南
- 31.67 MB | 194次下載 | 免費
- 7元宇宙底層硬件系列報告
- 13.42 MB | 182次下載 | 免費
- 8FP5207XR-G1中文應用手冊
- 1.09 MB | 178次下載 | 免費
本月
- 1OrCAD10.5下載OrCAD10.5中文版軟件
- 0.00 MB | 234315次下載 | 免費
- 2555集成電路應用800例(新編版)
- 0.00 MB | 33566次下載 | 免費
- 3接口電路圖大全
- 未知 | 30323次下載 | 免費
- 4開關電源設計實例指南
- 未知 | 21549次下載 | 免費
- 5電氣工程師手冊免費下載(新編第二版pdf電子書)
- 0.00 MB | 15349次下載 | 免費
- 6數字電路基礎pdf(下載)
- 未知 | 13750次下載 | 免費
- 7電子制作實例集錦 下載
- 未知 | 8113次下載 | 免費
- 8《LED驅動電路設計》 溫德爾著
- 0.00 MB | 6656次下載 | 免費
總榜
- 1matlab軟件下載入口
- 未知 | 935054次下載 | 免費
- 2protel99se軟件下載(可英文版轉中文版)
- 78.1 MB | 537798次下載 | 免費
- 3MATLAB 7.1 下載 (含軟件介紹)
- 未知 | 420027次下載 | 免費
- 4OrCAD10.5下載OrCAD10.5中文版軟件
- 0.00 MB | 234315次下載 | 免費
- 5Altium DXP2002下載入口
- 未知 | 233046次下載 | 免費
- 6電路仿真軟件multisim 10.0免費下載
- 340992 | 191187次下載 | 免費
- 7十天學會AVR單片機與C語言視頻教程 下載
- 158M | 183279次下載 | 免費
- 8proe5.0野火版下載(中文版免費下載)
- 未知 | 138040次下載 | 免費
評論
查看更多