สารบัญ:
- ขั้นตอนที่ 1: ส่วนประกอบที่จำเป็นในการสร้างเครื่องลงคะแนนไบโอเมตริกซ์
- ขั้นตอนที่ 2: แผนภาพวงจรสำหรับเครื่องลงคะแนนไบโอเมตริกซ์โดยใช้ Arduino
- ขั้นตอนที่ 3: คำอธิบายซอร์สโค้ดและโค้ดทีละขั้นตอน
- ขั้นตอนที่ 4: ทดสอบระบบการลงคะแนนด้วยลายนิ้วมือโดยใช้ Arduino
วีดีโอ: เครื่องลงคะแนนไบโอเมตริกซ์โดยใช้ลายนิ้วมือโดยใช้ Arduino: 4 ขั้นตอน (พร้อมรูปภาพ)
2024 ผู้เขียน: John Day | [email protected]. แก้ไขล่าสุด: 2024-01-30 13:02
เราทุกคนต่างตระหนักถึงเครื่องลงคะแนนอิเล็กทรอนิกส์ที่มีอยู่ซึ่งผู้ใช้ต้องกดปุ่มเพื่อลงคะแนน แต่เครื่องจักรเหล่านี้ถูกวิพากษ์วิจารณ์ว่าเป็นเพราะการแบ่งเบาบรรเทาตั้งแต่ต้น ดังนั้น รัฐบาลจึงวางแผนที่จะเปิดตัวเครื่องลงคะแนนเสียงด้วยลายนิ้วมือ ซึ่งผู้ใช้สามารถลงคะแนนเสียงโดยอิงจากการพิมพ์ลายนิ้วมือของเขา/เธอ ระบบนี้จะไม่เพียงแต่ลบความเป็นไปได้ของการโหวตซ้ำ แต่ยังป้องกันการยักย้ายใดๆ
ดังนั้นในโครงการนี้ เราจะสร้างต้นแบบของเครื่องลงคะแนนเสียงแบบไบโอเมตริกซ์โดยใช้ Arduino Uno, จอแสดงผล TFT และเซ็นเซอร์ลายนิ้วมือ ก่อนหน้านี้เราใช้เซ็นเซอร์ลายนิ้วมือ R305 กับ NodeMCU เพื่อสร้างระบบการเข้างานแบบไบโอเมตริกซ์ แต่ในที่นี้ เราจะใช้เซ็นเซอร์ลายนิ้วมือขั้นสูง GT-511C3 กับ Arduino
ขั้นตอนที่ 1: ส่วนประกอบที่จำเป็นในการสร้างเครื่องลงคะแนนไบโอเมตริกซ์
- Arduino Uno
- โล่จอแสดงผล TFT LCD 2.4”
- เซ็นเซอร์ลายนิ้วมือ GT-511C3
ก่อนหน้านี้จอแสดงผล TFT ขนาด 2.4 นิ้วนี้เคยใช้กับ Arduino เพื่อสร้างระบบสั่งเมนูร้านอาหารตาม IoT
ขั้นตอนที่ 2: แผนภาพวงจรสำหรับเครื่องลงคะแนนไบโอเมตริกซ์โดยใช้ Arduino
แผนภาพวงจรสำหรับโครงการนี้ง่ายมาก เนื่องจากเรากำลังเชื่อมต่อจอแสดงผล TFT และโมดูลเซ็นเซอร์ลายนิ้วมือกับ Arduino Uno เท่านั้น พิน VCC และ GND ของเซ็นเซอร์ลายนิ้วมือเชื่อมต่อกับพิน 5V และ GND ของ Arduino ในขณะที่พิน TX และ RX เชื่อมต่อกับพินดิจิตอล 11 และ 12 ของ Arduino Uno
หน้าจอ TFT LCD ขนาด 2.4” เป็น Arduino Shield และสามารถติดตั้งได้โดยตรงบน Arduino Uno ดังแสดงในภาพด้านล่าง จอแสดงผล TFT มี 28 พินที่พอดีกับ Arduino Uno ได้พอดี ดังนั้นฉันจึงต้องประสานเซ็นเซอร์ลายนิ้วมือที่ด้านหลังของ Arduino
ขั้นตอนที่ 3: คำอธิบายซอร์สโค้ดและโค้ดทีละขั้นตอน
รหัสที่สมบูรณ์สำหรับโครงการระบบลงคะแนนด้วยลายนิ้วมือนี้โดยใช้ Arduino มีให้ที่ส่วนท้ายของบทความ เรากำลังอธิบายฟังก์ชันที่สำคัญบางอย่างของโค้ด
รหัสนี้ใช้ไลบรารี SPFD5408, Software Serial และ FPS_GT511C3 ไลบรารี SPFD5408 เป็นเวอร์ชันแก้ไขของไลบรารี Adafruit ดั้งเดิม ไฟล์ไลบรารีเหล่านี้สามารถดาวน์โหลดได้จากลิงค์ด้านล่าง:
- ห้องสมุด SPFD5408
- ซอฟต์แวร์ Serial
- FPS_GT511C3
หลังจากรวมไลบรารี่และกำหนดพารามิเตอร์ที่สำคัญแล้ว เราสามารถเข้าสู่ส่วนการเขียนโปรแกรมได้ มีสามส่วนที่เกี่ยวข้องในโปรแกรมนี้ หนึ่งคือการสร้าง UI ของเครื่องลงคะแนนเสียง ประการที่สองคือการรับจุดสัมผัสสำหรับปุ่ม & การตรวจจับปุ่มตามการสัมผัส และสุดท้ายจะคำนวณผลลัพธ์และบันทึกลงในหน่วยความจำของ Arduino
1. การสร้าง UI:
ฉันได้สร้าง 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 = ความสูงของสี่เหลี่ยม
รัศมี= รัศมีของมุมมน
สี = สีของพระธรรม
ถือเป็นโมฆะ drawHome()
{
tft.fillScreen (สีขาว);
tft.drawRoundRect(0, 0, 319, 240, 8, สีขาว); //ขอบหน้า
tft.fillRoundRect (10, 70, 220, 50, 8, ทอง);
tft.drawRoundRect(10, 70, 220, 50, 8, สีขาว); //โหวต
tft.fillRoundRect (10, 160, 220, 50, 8, ทอง);
tft.drawRoundRect(10, 160, 220, 50, 8, สีขาว); //ลงทะเบียน
tft.fillRoundRect (10, 250, 220, 50, 8, ทอง); //ผลลัพธ์
tft.drawRoundRect(10, 250, 220, 50, 8, สีขาว);
tft.setCursor(65, 5);
tft.setTextSize(3);
tft.setTextColor(CYAN);
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 ให้ค่า Raw ADC สำหรับพื้นที่สัมผัส ค่า RAW ADC เหล่านี้จะถูกแปลงเป็นพิกัดพิกเซลโดยใช้ฟังก์ชันแผนที่
TSPoint p = ts.getPoint();
ถ้า (p.z > ts.pressureThreshhold)
{
p.x = แผนที่ (p.x, TS_MAXX, TS_MINX, 0, 320);
py = แผนที่ (py, TS_MAXY, TS_MINY, 0, 240);
//Serial.print("X:");
//Serial.print(หน้าx);
//Serial.print("Y:");
//Serial.print(ป.ย.);
ตอนนี้ เนื่องจากเราทราบพิกัด X และ Y สำหรับแต่ละปุ่ม เราจึงสามารถคาดเดาตำแหน่งที่ผู้ใช้สัมผัสได้โดยใช้คำสั่ง 'if'
if (p.x > 70 && p.x 10 && p.y MINPRESSURE && p.z < MAXPRESSURE)
{
Serial.println("ผู้สมัคร 1");
เมื่อผู้มีสิทธิเลือกตั้งกดปุ่มผู้สมัคร เขาจะถูกขอให้สแกนนิ้วบนเซ็นเซอร์ลายนิ้วมือ หากรหัสลายนิ้วมือได้รับอนุญาต ผู้มีสิทธิเลือกตั้งก็สามารถลงคะแนนได้ หากผู้ใช้ที่ไม่ได้ลงทะเบียนต้องการลงคะแนน โมดูลลายนิ้วมือจะไม่ตรวจพบ ID ของระบบและหน้าจอจะแสดงข้อความ "ขออภัยคุณไม่สามารถโหวตได้"
ถ้า (fps. IsPressFinger())
{
fps. CaptureFinger (เท็จ);
int id = fps. Identify1_N();
ถ้า (id <200)
{
msg = "ผู้สมัคร 1";
โหวต1++;
EEPROM.write(0, โหวต1);
tft.setCursor (42, 170);
tft.print("ขอบคุณ");
ล่าช้า (3000);
drawHome();
3. ผลลัพธ์:
ขั้นตอนสุดท้ายคือการนับคะแนนจากหน่วยความจำ EEPROM และเปรียบเทียบการโหวตของผู้สมัครทั้งสามคน ผู้สมัครที่มีคะแนนเสียงสูงสุดจะเป็นผู้ชนะ ผลลัพธ์สามารถเข้าถึงได้จากจอภาพอนุกรมเท่านั้นและจะไม่แสดงบนหน้าจอ TFT
โหวต1=EEPROM.read(0);
โหวต2=EEPROM.read(1);
โหวต3=EEPROM.read(2);
ถ้า (โหวต)
{
ถ้า((โหวต1 > โหวต2 && โหวต1 > โหวต3))
{
Serial.print("Can1 ชนะ");
ล่าช้า (2000);
}
ขั้นตอนที่ 4: ทดสอบระบบการลงคะแนนด้วยลายนิ้วมือโดยใช้ Arduino
ในการทดสอบโครงการ ให้เชื่อมต่อ Arduino Uno กับแล็ปท็อปและอัปโหลดรหัสที่กำหนด เมื่ออัปโหลดโค้ดแล้ว หน้าจอ TFT ควรแสดงชื่อผู้สมัคร เมื่อมีคนแตะที่ชื่อผู้สมัคร เครื่องจะขอให้สแกนเครื่องสแกนลายนิ้วมือ หากลายนิ้วมือถูกต้อง ระบบจะนับการโหวตของผู้ใช้ แต่ในกรณีที่รูปแบบไม่ตรงกับบันทึกของฐานข้อมูล การเข้าถึงการลงคะแนนจะถูกปฏิเสธ จำนวนโหวตทั้งหมดสำหรับผู้สมัครแต่ละคนจะถูกเก็บไว้ใน EEPROM และผู้สมัครที่มีจำนวนโหวตสูงสุดจะเป็นผู้ชนะ
ฉันหวังว่าคุณจะสนุกกับการกวดวิชาและเรียนรู้สิ่งที่มีประโยชน์ หากคุณมีคำถามใด ๆ โปรดแจ้งให้เราทราบในส่วนความคิดเห็นด้านล่างและติดตามเราที่ Instructable สำหรับโครงการที่น่าสนใจอื่น ๆ
แนะนำ:
อะแดปเตอร์ Arduino Nano เป็น Arduino Uno: 6 ขั้นตอน (พร้อมรูปภาพ)
อะแดปเตอร์ Arduino Nano เป็น Arduino Uno: Arduino Nano เป็นสมาชิกที่ดี ขนาดเล็ก และราคาถูกของตระกูล Arduino มันขึ้นอยู่กับชิป Atmega328 สิ่งที่ทำให้มีประสิทธิภาพเท่ากับ Arduino Uno พี่ชายที่ใหญ่ที่สุดของเขา แต่สามารถรับเงินน้อยกว่า ในอีเบย์ตอนนี้เวอร์ชั่นภาษาจีนสามารถข
Bolt - DIY Wireless Charging Night Clock (6 ขั้นตอน): 6 ขั้นตอน (พร้อมรูปภาพ)
Bolt - DIY Wireless Charging Night Clock (6 ขั้นตอน): การชาร์จแบบเหนี่ยวนำ (เรียกอีกอย่างว่าการชาร์จแบบไร้สายหรือการชาร์จแบบไร้สาย) เป็นการถ่ายโอนพลังงานแบบไร้สาย ใช้การเหนี่ยวนำแม่เหล็กไฟฟ้าเพื่อจ่ายกระแสไฟฟ้าให้กับอุปกรณ์พกพา แอปพลิเคชั่นที่พบบ่อยที่สุดคือ Qi Wireless Charging st
Arduino ที่ถูกที่สุด -- Arduino ที่เล็กที่สุด -- Arduino Pro Mini -- การเขียนโปรแกรม -- Arduino Neno: 6 ขั้นตอน (พร้อมรูปภาพ)
Arduino ที่ถูกที่สุด || Arduino ที่เล็กที่สุด || Arduino Pro Mini || การเขียนโปรแกรม || Arduino Neno:…………………………… โปรดสมัครสมาชิกช่อง YouTube ของฉันสำหรับวิดีโอเพิ่มเติม……. โปรเจ็กต์นี้เกี่ยวกับวิธีเชื่อมต่อ Arduino ที่เล็กที่สุดและถูกที่สุดเท่าที่เคยมีมา Arduino ที่เล็กที่สุดและถูกที่สุดคือ arduino pro mini คล้ายกับ Arduino
4 ขั้นตอน Digital Sequencer: 19 ขั้นตอน (พร้อมรูปภาพ)
4 ขั้นตอน Digital Sequencer: CPE 133, Cal Poly San Luis Obispo ผู้สร้างโปรเจ็กต์: Jayson Johnston และ Bjorn Nelson ในอุตสาหกรรมเพลงในปัจจุบัน ซึ่งเป็นหนึ่งใน “instruments” เป็นเครื่องสังเคราะห์เสียงดิจิตอล ดนตรีทุกประเภท ตั้งแต่ฮิปฮอป ป๊อป และอีฟ
ป้ายโฆษณาแบบพกพาราคาถูกเพียง 10 ขั้นตอน!!: 13 ขั้นตอน (พร้อมรูปภาพ)
ป้ายโฆษณาแบบพกพาราคาถูกเพียง 10 ขั้นตอน!!: ทำป้ายโฆษณาแบบพกพาราคาถูกด้วยตัวเอง ด้วยป้ายนี้ คุณสามารถแสดงข้อความหรือโลโก้ของคุณได้ทุกที่ทั่วทั้งเมือง คำแนะนำนี้เป็นการตอบสนองต่อ/ปรับปรุง/เปลี่ยนแปลงของ: https://www.instructables.com/id/Low-Cost-Illuminated-