สารบัญ:

เครื่องลงคะแนนไบโอเมตริกซ์โดยใช้ลายนิ้วมือโดยใช้ Arduino: 4 ขั้นตอน (พร้อมรูปภาพ)
เครื่องลงคะแนนไบโอเมตริกซ์โดยใช้ลายนิ้วมือโดยใช้ Arduino: 4 ขั้นตอน (พร้อมรูปภาพ)

วีดีโอ: เครื่องลงคะแนนไบโอเมตริกซ์โดยใช้ลายนิ้วมือโดยใช้ Arduino: 4 ขั้นตอน (พร้อมรูปภาพ)

วีดีโอ: เครื่องลงคะแนนไบโอเมตริกซ์โดยใช้ลายนิ้วมือโดยใช้ Arduino: 4 ขั้นตอน (พร้อมรูปภาพ)
วีดีโอ: สอนใช้งาน Arduino Fingerprint Sensor เซ็นเซอร์สแกนลายนิ้วมือ AS608 JM-101B สำหรับ Arduino V2.0 2024, กรกฎาคม
Anonim
เครื่องลงคะแนนไบโอเมตริกซ์โดยใช้ลายนิ้วมือโดยใช้ Arduino
เครื่องลงคะแนนไบโอเมตริกซ์โดยใช้ลายนิ้วมือโดยใช้ Arduino

เราทุกคนต่างตระหนักถึงเครื่องลงคะแนนอิเล็กทรอนิกส์ที่มีอยู่ซึ่งผู้ใช้ต้องกดปุ่มเพื่อลงคะแนน แต่เครื่องจักรเหล่านี้ถูกวิพากษ์วิจารณ์ว่าเป็นเพราะการแบ่งเบาบรรเทาตั้งแต่ต้น ดังนั้น รัฐบาลจึงวางแผนที่จะเปิดตัวเครื่องลงคะแนนเสียงด้วยลายนิ้วมือ ซึ่งผู้ใช้สามารถลงคะแนนเสียงโดยอิงจากการพิมพ์ลายนิ้วมือของเขา/เธอ ระบบนี้จะไม่เพียงแต่ลบความเป็นไปได้ของการโหวตซ้ำ แต่ยังป้องกันการยักย้ายใดๆ

ดังนั้นในโครงการนี้ เราจะสร้างต้นแบบของเครื่องลงคะแนนเสียงแบบไบโอเมตริกซ์โดยใช้ Arduino Uno, จอแสดงผล TFT และเซ็นเซอร์ลายนิ้วมือ ก่อนหน้านี้เราใช้เซ็นเซอร์ลายนิ้วมือ R305 กับ NodeMCU เพื่อสร้างระบบการเข้างานแบบไบโอเมตริกซ์ แต่ในที่นี้ เราจะใช้เซ็นเซอร์ลายนิ้วมือขั้นสูง GT-511C3 กับ Arduino

ขั้นตอนที่ 1: ส่วนประกอบที่จำเป็นในการสร้างเครื่องลงคะแนนไบโอเมตริกซ์

  • Arduino Uno
  • โล่จอแสดงผล TFT LCD 2.4”
  • เซ็นเซอร์ลายนิ้วมือ GT-511C3

ก่อนหน้านี้จอแสดงผล TFT ขนาด 2.4 นิ้วนี้เคยใช้กับ Arduino เพื่อสร้างระบบสั่งเมนูร้านอาหารตาม IoT

ขั้นตอนที่ 2: แผนภาพวงจรสำหรับเครื่องลงคะแนนไบโอเมตริกซ์โดยใช้ Arduino

แผนภาพวงจรสำหรับเครื่องลงคะแนนไบโอเมตริกซ์โดยใช้ Arduino
แผนภาพวงจรสำหรับเครื่องลงคะแนนไบโอเมตริกซ์โดยใช้ 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 สำหรับโครงการที่น่าสนใจอื่น ๆ

แนะนำ: