- ส่วนประกอบที่จำเป็น:
- โมดูลเซ็นเซอร์ลายนิ้วมือในเครื่องลงคะแนน:
- คำอธิบายการทำงาน:
- คำอธิบายวงจร:
- คำอธิบายโปรแกรม:
เราทุกคนค่อนข้างคุ้นเคยกับเครื่องลงคะแนนแบบอิเล็กทรอนิกส์ซึ่งการลงคะแนนของคุณจะได้รับการลงทะเบียนทางอิเล็กทรอนิกส์และคุณไม่จำเป็นต้องใช้บัตรเลือกตั้งในการลงคะแนนเลือกตั้ง วันนี้ความปลอดภัยเป็นปัญหาหลักและต้องตรวจสอบให้แน่ใจว่ามีคนไม่สามารถลงคะแนนได้สองครั้งดังนั้นปัญหานี้สามารถแก้ไขได้โดยการแนะนำการลงคะแนนโดยใช้ลายนิ้วมือซึ่งบุคคลสามารถได้รับอนุญาตจากการพิมพ์ลายนิ้วมือของเขา นอกจากนี้ยังจะหยุดการลงคะแนนปลอม ดังนั้นวันนี้เราจะสร้างลายนิ้วมือตาม Biometric การออกเสียงลงคะแนนเครื่องใช้ Arduino
ตรวจสอบโครงการเครื่องลงคะแนนอิเล็กทรอนิกส์ก่อนหน้านี้ของเราโดยใช้ไมโครคอนโทรลเลอร์ที่แตกต่างกัน:
- เครื่องลงคะแนนอิเล็กทรอนิกส์โดยใช้ Raspberry Pi
- เครื่องลงคะแนนที่ใช้ RFID
- โครงการเครื่องลงคะแนนเสียงอิเล็กทรอนิกส์ที่ใช้ไมโครคอนโทรลเลอร์ AVR
- เครื่องลงคะแนนอิเล็กทรอนิกส์โดยใช้ Arduino
ส่วนประกอบที่จำเป็น:
- Arduino Uno
- โมดูลเซ็นเซอร์ลายนิ้วมือ
- ปุ่มกด
- ไฟ LED -2
- ตัวต้านทาน 1K -3
- ตัวต้านทาน 2.2K
- อำนาจ
- การเชื่อมต่อสายไฟ
- Buzzer
- 16x2 LCD
- คณะกรรมการขนมปัง
โมดูลเซ็นเซอร์ลายนิ้วมือในเครื่องลงคะแนน:
Finger Print Sensor Module หรือ Finger Print Scanner เป็นโมดูลที่จับภาพการพิมพ์ของนิ้วจากนั้นแปลงเป็นเทมเพลตที่เทียบเท่าและบันทึกลงในหน่วยความจำบน ID (ตำแหน่ง) ที่เลือกโดย Arduino ที่นี่กระบวนการทั้งหมดได้รับคำสั่งจาก Arduino เช่นการพิมพ์ภาพลายนิ้วมือแปลงเป็นเทมเพลตและจัดเก็บตำแหน่งเป็นต้น
ในวงจรเครื่องลงคะแนนเสียงลายนิ้วมือนี้เราได้ใช้โมดูลเซ็นเซอร์ลายนิ้วมือเพื่อตรวจสอบผู้มีสิทธิเลือกตั้งที่แท้จริงโดยการป้อนข้อมูลด้วยนิ้วมือในระบบ ที่นี่เราใช้ปุ่มกด 5 ปุ่มเพื่อจับคู่ลงทะเบียน / ย้อนกลับลบ / ตกลงขึ้นและลง คีย์การลงทะเบียนและเดลมีคุณสมบัติสองเท่าที่นี่ ปุ่มลงทะเบียน ใช้สำหรับการลงทะเบียนการแสดงนิ้วใหม่ในระบบและฟังก์ชันย้อนกลับด้วย หมายถึงเมื่อผู้ใช้ต้องการลงทะเบียนนิ้วใหม่เขา / เธอต้องกดปุ่มลงทะเบียนจากนั้น LCD จะถาม ID หรือตำแหน่งที่ผู้ใช้ต้องการจัดเก็บเอาต์พุตการพิมพ์ลายนิ้วมือ ตอนนี้หากในเวลานี้ผู้ใช้ไม่ต้องการดำเนินการต่อไปก็สามารถกดปุ่มลงทะเบียนอีกครั้งเพื่อย้อนกลับ (เวลานี้คีย์การลงทะเบียนจะทำงานเป็นปุ่มย้อนกลับ) คีย์การลงทะเบียนหมายถึงมีทั้งการลงทะเบียนและฟังก์ชันย้อนกลับ ปุ่ม DEL / OK ยังมีฟังก์ชั่นคู่เหมือนกันเช่นเมื่อผู้ใช้ลงทะเบียนนิ้วใหม่จากนั้นเขา / เธอต้องเลือก ID นิ้วหรือตำแหน่งโดยใช้อีกสองปุ่มคือขึ้นและลงตอนนี้ผู้ใช้ต้องกดปุ่ม DEL / OK (คราวนี้ปุ่มนี้จะทำงานเหมือนตกลง) เพื่อ ดำเนินการกับ ID หรือตำแหน่งที่เลือก คีย์การจับคู่ใช้สำหรับเมื่อใดก็ตามที่ผู้มีสิทธิเลือกตั้งต้องการลงคะแนนผู้มีสิทธิเลือกตั้งจะต้องตรวจสอบสิทธิ์ก่อนสำหรับผู้มีสิทธิเลือกตั้งที่แท้จริงโดยวางนิ้วไว้ที่ Finger Print Sensor หากผ่านการรับรองความถูกต้องนี้ก็สามารถลงคะแนนได้
หากต้องการเรียนรู้เพิ่มเติมเกี่ยวกับการลงทะเบียนลายนิ้วมือและสิ่งอื่น ๆ โปรดดูบทช่วยสอนก่อนหน้าของเราเกี่ยวกับการเชื่อมต่อ Finger Print Sensor กับ Arduino และดูวิดีโอสาธิตของเราในตอนท้ายของบทช่วยสอนนี้
คำอธิบายการทำงาน:
การทำงานของระบบการลงคะแนนไบโอเมตริกซ์สำหรับการเลือกตั้ง ค่อนข้างซับซ้อนสำหรับผู้เริ่มต้น ก่อนอื่นผู้ใช้ต้องลงทะเบียนนิ้วหรือผู้มีสิทธิเลือกตั้ง (ในรหัสนี้ขีด จำกัด สูงสุดของผู้มีสิทธิเลือกตั้งคือ 25) ด้วยความช่วยเหลือของปุ่ม / ปุ่มกด ในการทำเช่นนี้ผู้ใช้ต้องกดปุ่ม ENROLL จากนั้น LCD ขอให้ป้อนตำแหน่ง / ID ที่นิ้วจะเป็นร้านค้า ตอนนี้ผู้ใช้ต้องป้อน ID (ตำแหน่ง) โดยใช้ปุ่มขึ้น / ลง หลังจากเลือก Location / ID แล้วผู้ใช้ต้องกดปุ่ม OK (ปุ่ม DEL) ตอนนี้ LCD จะขอให้วางนิ้วบนโมดูลพิมพ์ลายนิ้วมือ ตอนนี้ผู้ใช้ต้องวางนิ้วของเขาเหนือโมดูลการพิมพ์ลายนิ้วมือ จากนั้น LCD จะขอให้นำนิ้วออกจากโมดูลการพิมพ์ลายนิ้วมือและขอให้วางนิ้วอีกครั้ง ตอนนี้ผู้ใช้ต้องวางนิ้วอีกครั้งบนโมดูลพิมพ์ลายนิ้วมือ ตอนนี้โมดูลการพิมพ์ลายนิ้วมือจะถ่ายภาพและแปลงเป็นเทมเพลตและจัดเก็บโดยใช้ ID ที่เลือกไว้ในหน่วยความจำของโมดูลการพิมพ์ลายนิ้วมือตอนนี้ผู้มีสิทธิเลือกตั้งจะได้รับการลงทะเบียนและสามารถลงคะแนนได้ ด้วยวิธีการเดียวกันผู้มีสิทธิเลือกตั้งทุกคนสามารถลงทะเบียนในระบบได้
ตอนนี้หากผู้ใช้ต้องการลบหรือลบ ID ใด ๆ ที่เก็บไว้เขา / เธอจะต้องกดปุ่ม DEL หลังจากกดปุ่ม DEL LCD จะถามตำแหน่งที่เลือกหมายถึงเลือก ID ที่จะลบ ตอนนี้ผู้ใช้ต้องเลือก ID และกดปุ่ม OK (ปุ่ม DEL เดียวกัน) ตอนนี้ LCD จะแจ้งให้คุณทราบว่านิ้วนั้นถูกลบเรียบร้อยแล้ว
ขั้นตอนการลงคะแนน:
ตอนนี้เมื่อผู้ใช้ต้องการลงคะแนนเขา / เธอต้องกดปุ่มจับคู่จากนั้นเสียงสัญญาณเตือนจะดังขึ้นและไฟ LED จะติดสว่างและ LCD จะขอให้วางนิ้วบนโมดูลลายนิ้วมือ ตอนนี้ Arduino จะให้คุณลองใส่นิ้วของคุณสามครั้ง หลังจากวางนิ้วบนโมดูลลายนิ้วมือโมดูลลายนิ้วมือจับภาพลายนิ้วมือพบว่ามีรหัสอยู่ในระบบ หากตรวจพบรหัสนิ้ว LCD จะแสดงผู้มีสิทธิเลือกตั้งที่ได้รับอนุญาต หมายความว่าผู้ใช้มีสิทธิ์ลงคะแนน จากนั้นระบบจะย้ายไปยังขั้นตอนถัดไปสำหรับการลงคะแนน ตอนนี้ไฟ LED สีเขียวจะสว่างขึ้นหมายความว่าตอนนี้ผู้มีสิทธิเลือกตั้งสามารถลงคะแนนให้กับผู้สมัครของตนได้โดยการกดปุ่มที่เลือก (จากกระดานขนมปังสีแดงในการสาธิตนี้) ตอนนี้หากผู้มีสิทธิเลือกตั้งคนเดิมต้องการลงคะแนนอีกครั้งระบบจะแสดงข้อความว่า 'โหวตแล้ว' . หมายความว่าผู้มีสิทธิเลือกตั้งคนเดียวกันจะไม่สามารถลงคะแนนได้อีกและเสียงสัญญาณจะดังเป็นเวลา 5 วินาที หากผู้ใช้ไม่ลงทะเบียนต้องการที่จะลงคะแนนเสียงแล้วโมดูลลายนิ้วมือจะไม่ตรวจสอบรหัสเข้าสู่ระบบและจอแอลซีดีจะแสดง ' ไม่พบลายนิ้วมือ'
CAN1, CAN2, CAN3 ในที่นี้หมายถึง Candidate 1, Candidate 2 และ Candidate 3 ที่ลงสมัครรับเลือกตั้ง
คำอธิบายวงจร:
วงจรของโครงการเครื่องลงคะแนนเสียงที่ใช้ลายนิ้วมือนี้ง่ายมากซึ่งมี Arduino สำหรับควบคุมกระบวนการทั้งหมดของโครงการปุ่มกดสำหรับการลงทะเบียนการลบการเลือก ID และวัตถุประสงค์ในการลงคะแนนเสียงสัญญาณเตือนไฟ LED สำหรับการบ่งชี้และ LCD 16x2 สำหรับคำแนะนำ ผู้มีสิทธิเลือกตั้งและแสดงผลด้วย LED สีเหลืองแสดงว่าโมดูลลายนิ้วมือพร้อมที่จะถ่ายรูปนิ้วและไฟ LED สีเขียวแสดงว่าระบบพร้อมที่จะโหวตหรือดูผลลัพธ์
ปุ่มกดเชื่อมต่อโดยตรงกับพิน A0 (ENROLL), A1 (DEL), A2 (UP), A3 (DOWN) และ A4 (Match), D5 (Can1), D4 (Can2), D3 (Can3), D2 (ผลลัพธ์) ของ Arduino เทียบกับกราวด์ LED สีเหลืองเชื่อมต่อที่ Digital pin D7 ของ Arduino โดยเทียบกับกราวด์ผ่านตัวต้านทาน 1k และ LED สีเขียวเชื่อมต่อกับ D6 ของ Arduino ด้วยวิธีการเดียวกัน Rx และ Tx ของโมดูลลายนิ้วมือเชื่อมต่อโดยตรงที่ Serial pin Tx และ Rx ของ Arduino แหล่งจ่ายไฟ 5v ใช้สำหรับเปิดโมดูลการพิมพ์ลายนิ้วมือที่นำมาจากบอร์ด Arduino ออดยังเชื่อมต่อที่ A5 LCD 16x2 ได้รับการกำหนดค่าในโหมด 4 บิตและ RS, EN, D4, D5, D6 และ D7 เชื่อมต่อโดยตรงที่ Digital pin D13, D12, D11, D10, D9 และ D8 ของ Arduino
คำอธิบายโปรแกรม:
ในโปรแกรมที่เราได้ใช้ลายนิ้วมือ Adafruit เซนเซอร์ห้องสมุดสำหรับ การเชื่อมต่อโมดูลลายนิ้วมือกับคณะกรรมการ Arduino คุณสามารถตรวจสอบ Code ทั้งหมดด้านล่าง เรากำลังอธิบายหน้าที่หลักของโปรแกรม Arduino
ในฟังก์ชั่นการตั้งค่าเราได้กำหนดทิศทางไปยังหมุดที่กำหนดไว้และได้เริ่มโมดูล LCD และ Fingerprint
หลังจากนั้นในฟังก์ชัน void loop () เราได้รอคีย์ตรวจสอบและกดปุ่ม Match เพื่อเริ่มพิมพ์ลายนิ้วมือเพื่อป้อนข้อมูลและเปรียบเทียบ ID ภาพที่ถ่ายกับ ID ที่เก็บไว้ หากการแข่งขันเกิดขึ้นให้ดำเนินการขั้นตอนต่อไป
ห่วงเป็นโมฆะ () {lcd.setCursor (0,0); lcd.print ("กด Match Key"); lcd.setCursor (0,1); lcd.print ("เพื่อเริ่มระบบ"); digitalWrite (indVote, LOW); digitalWrite (indFinger, LOW); ถ้า (digitalRead (จับคู่) == 0) {digitalWrite (กริ่งสูง); ล่าช้า (200); digitalWrite (เสียงกริ่งต่ำ); digitalWrite (indFinger, สูง); สำหรับ (int i = 0; i <3; i ++)…………………
ระบุ ฟังก์ชัน โมฆะ checkKeys () ใช้สำหรับตรวจสอบการกดปุ่ม Enroll หรือ DEL หรือไม่และจะทำอย่างไรหากกด ถ้าปุ่ม ENROLL กด ฟังก์ชัน Enroll () ถูกเรียกและกดปุ่ม DEL จากนั้น ฟังก์ชัน Delete () จะถูกเรียก
โมฆะ checkKeys () {if (digitalRead (enroll) == 0) {lcd.clear (); lcd.print ("กรุณารอสักครู่"); ล่าช้า (1,000); ในขณะที่ (digitalRead (ลงทะเบียน) == 0); ลงทะเบียน (); } else if (digitalRead (del) == 0) {lcd.clear (); lcd.print ("กรุณารอสักครู่"); ล่าช้า (1,000); ลบ (); }}
ฟังก์ชัน Given ใช้สำหรับป้อน ID ที่จะลบและเรียก ฟังก์ชัน uint8_t deleteFingerprint (uint8_t id) ที่จะลบนิ้วออกจากบันทึก
ลบโมฆะ () {int count = 0; lcd.clear (); lcd.print ("ลบนิ้ว"); lcd.setCursor (0,1); lcd.print ("ที่ตั้ง:"); ในขณะที่ (1) {lcd.setCursor (9,1); lcd.print (นับ); ถ้า (digitalRead (ขึ้น) == 0) {count ++; ถ้า (นับ> 25) นับ = 0; ล่าช้า (500); }……………….
ฟังก์ชัน Given ใช้สำหรับลบลายนิ้วมือจากบันทึกของ ID ที่เลือก
uint8_t deleteFingerprint (รหัส uint8_t) {uint8_t p = -1; lcd.clear (); lcd.print ("โปรดรอสักครู่"); p = finger.deleteModel (id); ถ้า (p == FINGERPRINT_OK) {Serial.println ("ถูกลบ!"); lcd.clear (); lcd.print ("Figer Deleted"); lcd.setCursor (0,1); lcd.print ("สำเร็จ"); ล่าช้า (1,000); } else {Serial.print ("ผิดพลาด"); lcd.clear (); lcd.print ("มีบางอย่างผิดปกติ"); lcd.setCursor (0,1); lcd.print ("ลองอีกครั้งในภายหลัง"); ล่าช้า (2000); กลับ p; }}
ฟังก์ชัน Given ใช้ในการถ่ายภาพพิมพ์ลายนิ้วมือและแปลงเป็นเทมเพลตและบันทึกโดยใช้ ID ที่เลือกลงในหน่วยความจำโมดูลการพิมพ์ลายนิ้วมือ
uint8_t getFingerprintEnroll () {int p = -1; lcd.clear (); lcd.print ("รหัสนิ้ว:"); lcd.print (id); lcd.setCursor (0,1); lcd.print ("วางนิ้ว"); ล่าช้า (2000); ในขณะที่ (p! = FINGERPRINT_OK) {p = finger.getImage (); ปล…………….
ฟังก์ชัน Given ใช้สำหรับการลงคะแนนและแสดงผลลัพธ์:
เป็นโมฆะ Vote () {lcd.clear (); lcd.print ("กรุณาวาง"); lcd.setCursor (0,1); lcd.print ("การโหวตของคุณ"); digitalWrite (indVote, สูง); digitalWrite (indFinger, LOW); digitalWrite (กริ่งสูง); ล่าช้า (500); digitalWrite (เสียงกริ่งต่ำ); ล่าช้า (1,000); ในขณะที่ (1) {if (digitalRead (sw1) == 0)…………………
ตรวจสอบโค้ดฉบับเต็มและวิดีโอสาธิตด้านล่าง