- ส่วนประกอบที่จำเป็น
- รายละเอียดโครงการ:
- โมดูล FingerPrint:
- การทำงานของระบบการเข้าร่วมด้วยลายนิ้วมือ
- แผนภาพวงจรและคำอธิบายสำหรับโครงการระบบลายนิ้วมือ
- คำอธิบายรหัส:
ระบบการเข้าร่วมเป็นระบบที่ใช้กันทั่วไปเพื่อแสดงสถานะในสำนักงานและโรงเรียน ตั้งแต่การทำเครื่องหมายการเข้าร่วมด้วยตนเองในการลงทะเบียนการเข้าร่วมไปจนถึงการใช้แอพพลิเคชั่นไฮเทคและระบบไบโอเมตริกซ์ระบบเหล่านี้ได้รับการปรับปรุงอย่างมีนัยสำคัญ ในโครงการก่อนหน้านี้เราได้กล่าวถึงโครงการระบบการเข้าร่วมทางอิเล็กทรอนิกส์อื่น ๆ อีกสองสามโครงการโดยใช้ไมโครคอนโทรลเลอร์ RFID และ AVR, 8051 และราสเบอร์รี่ Pi ในโครงการนี้เราใช้โมดูลลายนิ้วมือและ Arduino เพื่อรับและเก็บข้อมูลและบันทึกการเข้างาน ด้วยการใช้เซ็นเซอร์ลายนิ้วมือระบบจะมีความปลอดภัยมากขึ้นสำหรับผู้ใช้ ส่วนต่อไปนี้จะอธิบายรายละเอียดทางเทคนิคในการทำระบบการเข้าร่วมตามลายนิ้วมือตรวจสอบทางชีวภาพโดยใช้ Arduino
ส่วนประกอบที่จำเป็น
- Arduino -1
- โมดูลพิมพ์ลายนิ้วมือ -1
- ปุ่มกด - 4
- ไฟ LED -1
- ตัวต้านทาน 1K -2
- 2.2K ตัวต้านทาน -1
- อำนาจ
- การเชื่อมต่อสายไฟ
- กล่อง
- Buzzer -1
- 16x2 LCD -1
- กระดานขนมปัง -1
- โมดูล RTC -1
รายละเอียดโครงการ:
ในวงจรระบบบันทึกลายนิ้วมือนี้เราใช้โมดูลเซ็นเซอร์ลายนิ้วมือเพื่อรับรองความถูกต้องของบุคคลหรือพนักงานที่แท้จริงโดยการป้อนข้อมูลด้วยนิ้วในระบบ ที่นี่เรากำลังใช้ปุ่มกด 4 ปุ่มเพื่อลงทะเบียนลบขึ้น / ลง ปุ่ม ENROLL และ DEL มีคุณสมบัติสามประการ คีย์ ENROLL ใช้สำหรับการลงทะเบียนบุคคลใหม่เข้าสู่ระบบ ดังนั้นเมื่อผู้ใช้ต้องการลงทะเบียนนิ้วใหม่ก็ต้องกดปุ่ม ENROLL แล้ว LCD จะถาม ID ซึ่งผู้ใช้ต้องการเก็บภาพพิมพ์ลายนิ้วมือ ตอนนี้หากผู้ใช้ไม่ต้องการดำเนินการต่อในเวลานี้เขา / เธอสามารถกดปุ่ม ENROLL อีกครั้งเพื่อย้อนกลับ คีย์ ENROLL ในครั้งนี้จะทำงานเป็นปุ่มย้อนกลับกล่าวคือคีย์ ENROLL มีทั้งการลงทะเบียนและฟังก์ชันย้อนกลับ นอกจากนี้รหัสการลงทะเบียนยังใช้เพื่อดาวน์โหลดข้อมูลการเข้างานผ่านจอภาพแบบอนุกรม ในทำนองเดียวกันปุ่ม DEL / OK ยังมีฟังก์ชันคู่เหมือนกันเช่นเมื่อผู้ใช้ลงทะเบียนนิ้วใหม่จากนั้นเขา / เธอต้องเลือก ID นิ้วโดยใช้อีกสองปุ่มคือขึ้นและลง ตอนนี้ผู้ใช้ต้องกดปุ่ม DEL / OK (คราวนี้ปุ่มนี้จะทำงานเหมือน OK) เพื่อดำเนินการกับ ID ที่เลือก และปุ่ม Del ใช้สำหรับรีเซ็ตหรือลบข้อมูลจาก EEPROM ของ Arduino
โมดูล FingerPrint:
โมดูลเซ็นเซอร์ลายนิ้วมือจะจับภาพการพิมพ์ของนิ้วจากนั้นแปลงเป็นเทมเพลตที่เทียบเท่าและบันทึกลงในหน่วยความจำตาม ID ที่ Arduino เลือก กระบวนการทั้งหมดได้รับคำสั่งจาก Arduino เช่นการพิมพ์ภาพลายนิ้วมือแปลงเป็นเทมเพลตและจัดเก็บเป็น ID เป็นต้นคุณสามารถตรวจสอบโครงการเพิ่มเติมได้โดยใช้โมดูลลายนิ้วมือ:
ระบบรักษาความปลอดภัยด้วยลายนิ้วมือ
เครื่องลงคะแนนไบโอเมตริกซ์ที่ใช้ลายนิ้วมือ
ที่นี่เราได้เพิ่มไฟ LED สีเหลืองซึ่งแสดงว่าโมดูลลายนิ้วมือพร้อมที่จะถ่ายภาพนิ้ว นอกจากนี้ยังใช้ออดเพื่อบ่งชี้ต่างๆ Arduino เป็นส่วนประกอบหลักของระบบนี้มีหน้าที่ควบคุมทั้งระบบ
การทำงานของระบบการเข้าร่วมด้วยลายนิ้วมือ
การทำงานของโครงการระบบการเข้าร่วมด้วยลายนิ้วมือนี้ค่อนข้างง่าย ก่อนอื่นผู้ใช้ต้องลงทะเบียนลายนิ้วมือของผู้ใช้ด้วยความช่วยเหลือของปุ่มกด ในการดำเนินการนี้ผู้ใช้ต้องกดปุ่ม ENROLL จากนั้น LCD ขอให้ป้อน ID สำหรับลายนิ้วมือเพื่อบันทึกในหน่วยความจำโดยใช้ชื่อ ID ดังนั้นตอนนี้ผู้ใช้ต้องป้อน ID โดยใช้ปุ่มขึ้น / ลง หลังจากเลือก ID ผู้ใช้ต้องกดปุ่ม OK (ปุ่ม DEL) ตอนนี้ LCD จะขอให้วางนิ้วบนโมดูลลายนิ้วมือ ตอนนี้ผู้ใช้ต้องวางนิ้วของเขาบนโมดูลการพิมพ์ลายนิ้วมือจากนั้นโมดูลจะใช้ภาพนิ้ว ตอนนี้ LCD จะบอกให้เอานิ้วออกจากโมดูลลายนิ้วมือและขอให้วางนิ้วอีกครั้ง ตอนนี้ผู้ใช้ต้องวางนิ้วอีกครั้งและโมดูลจะถ่ายภาพและแปลงเป็นเทมเพลตและจัดเก็บโดยใช้ ID ที่เลือกไว้ในหน่วยความจำของโมดูลการพิมพ์ลายนิ้วมือตอนนี้ผู้ใช้จะได้รับการลงทะเบียนและเขา / เธอสามารถป้อนการเข้าร่วมได้โดยการวางนิ้วบนโมดูลลายนิ้วมือโดยวิธีการเดียวกันผู้ใช้ทั้งหมดจะได้รับการลงทะเบียนในระบบ
ตอนนี้หากผู้ใช้ต้องการลบหรือลบ ID หรือลายนิ้วมือที่เก็บไว้ใด ๆ เขา / เธอจะต้องกดปุ่ม DEL เมื่อกดปุ่มลบแล้ว LCD จะขอให้เลือก ID ที่ต้องการลบ ตอนนี้ผู้ใช้ต้องเลือก ID และกดปุ่ม OK (ปุ่ม DEL เดียวกัน) ตอนนี้ LCD จะแจ้งให้คุณทราบว่าได้ลบลายนิ้วมือเรียบร้อยแล้ว
การเข้าร่วมทำงานอย่างไรในโครงการระบบการเข้าร่วมด้วยลายนิ้วมือนี้:
เมื่อใดก็ตามที่ผู้ใช้วางนิ้วบนโมดูลลายนิ้วมือโมดูลลายนิ้วมือจะจับภาพลายนิ้วมือและค้นหาว่า ID ใดเชื่อมโยงกับลายนิ้วมือนี้ในระบบ หากตรวจพบรหัสลายนิ้วมือ LCD จะแสดงการลงทะเบียนผู้เข้าร่วมและในเวลาเดียวกันเสียงกริ่งจะส่งเสียงบี๊บหนึ่งครั้งและไฟ LED จะดับลงจนกว่าระบบจะพร้อมรับข้อมูลอีกครั้ง
พร้อมกับโมดูลลายนิ้วมือเรายังได้ใช้โมดูล RTC สำหรับเวลาและวันที่ เวลาและวันที่ทำงานอย่างต่อเนื่องในระบบ ดังนั้น Arduino จึงใช้เวลาและวันที่เมื่อใดก็ตามที่ผู้ใช้จริงวางนิ้วบนลายนิ้วมือและบันทึกไว้ใน EEPROM ที่ช่องหน่วยความจำที่กำหนด
ที่นี่เราได้สร้างพื้นที่ผู้ใช้ 5 คนในระบบนี้เป็นเวลา 30 วัน การกดปุ่ม RESET ใน Arduino จากนั้นกดปุ่มลงทะเบียนทันทีจะรับผิดชอบในการดาวน์โหลดข้อมูลการเข้าร่วมผ่านจอภาพอนุกรมจากหน่วยความจำ Arduino EEPROM
การจัดการหน่วยความจำ:
เรามีหน่วยความจำ 1023 ไบต์ใน Arduino UNO ซึ่งเรามี 1018 ไบต์ในการจัดเก็บข้อมูลและเราได้รับข้อมูลการเข้าร่วมของผู้ใช้ 5 คนเป็นเวลา 30 วัน และทุกการเข้าร่วมจะบันทึกเวลาและวันที่ดังนั้นจึงกลายเป็นข้อมูลขนาด 7 ไบต์
ดังนั้นหน่วยความจำทั้งหมดที่ต้องการคือ
5 * 30 * 7 = 1,050 ดังนั้นที่นี่เราต้องการ 32 ไบต์มากขึ้น
แต่ถ้าเราจะใช้ผู้ใช้ 4 คนเราจำเป็นต้องใช้
4 * 30 * 7 = 840
ที่นี่เราได้ทำการสาธิตโครงการนี้โดยใช้หน่วยความจำผู้ใช้ 5 คน จากนี้เราจะไม่สามารถที่จะเก็บ 32 ไบต์หรือ 5 เข้าร่วมบันทึกใน 5 วันของผู้ใช้
คุณสามารถลองใช้ได้โดยผู้ใช้ 4 คนโดยเปลี่ยนบรรทัดในโค้ด ฉันได้แสดงความคิดเห็นในรหัสที่จำเป็นต้องมีการเปลี่ยนแปลง
แผนภาพวงจรและคำอธิบายสำหรับโครงการระบบลายนิ้วมือ
วงจรของโครงการระบบการเข้าร่วมโดยใช้ลายนิ้วมือดังที่แสดงในแผนภาพด้านบนนั้นค่อนข้างง่าย มี Arduino สำหรับควบคุมกระบวนการทั้งหมดของโครงการปุ่มกดสำหรับการลงทะเบียนลบเลือก ID และสำหรับการเข้าร่วมเสียงสัญญาณเตือนไฟ LED สำหรับการบ่งชี้และ LCD เพื่อสั่งให้ผู้ใช้และแสดงข้อความที่เป็นผลลัพธ์
ดังแสดงในแผนภาพวงจรปุ่มกดจะเชื่อมต่อโดยตรงกับพิน A0 (ENROLL), A1 (DEL), A2 (UP), A3 (DOWN) ของ Arduino ที่เกี่ยวกับกราวด์และ LED สีเหลืองเชื่อมต่อที่พินดิจิตอล D7 ของ Arduino เทียบกับกราวด์ผ่านตัวต้านทาน 1k Rx และ Tx ของโมดูลลายนิ้วมือเชื่อมต่อโดยตรงที่ Serial pin D2 และ D3 (Software Serial) ของ Arduino แหล่งจ่ายไฟ 5v ใช้สำหรับเปิดโมดูลการพิมพ์ลายนิ้วมือที่นำมาจากบอร์ด Arduino ออดยังเชื่อมต่อที่พิน A5 LCD 16x2 ได้รับการกำหนดค่าในโหมด 4 บิตและ RS, EN, D4, D5, D6 และ D7 เชื่อมต่อโดยตรงที่ Digital pin D13, D12, D11, D10, D9 และ D8 ของ Arduino
คำอธิบายรหัส:
รหัสเข้าระบบลายนิ้วมือสำหรับ Arduinoจะได้รับในส่วนที่ตามมา แม้ว่าโค้ดจะอธิบายได้ดีพร้อมกับความคิดเห็น แต่เรากำลังพูดถึงส่วนสำคัญบางส่วนของโค้ดนี้ เราใช้ห้องสมุดลายนิ้วมือสำหรับการเชื่อมต่อโมดูลลายนิ้วมือกับคณะกรรมการ Arduino
ก่อนอื่นเรารวมไฟล์ส่วนหัวและกำหนดพินอินพุตและเอาต์พุตและกำหนดมาโครและตัวแปรที่ประกาศ หลังจากนี้ในฟังก์ชั่นการตั้งค่าเราจะกำหนดทิศทางไปยังพินที่กำหนดและเริ่มโมดูล LCD และการพิมพ์ลายนิ้วมือ
หลังจากนั้นเราต้องเขียนโค้ดสำหรับดาวน์โหลดข้อมูลการเข้าร่วม
การตั้งค่าเป็นโมฆะ () {ล่าช้า (1000); lcd.begin (16,2); Serial.begin (9600); pinMode (ลงทะเบียน INPUT_PULLUP); pinMode (ขึ้น, INPUT_PULLUP); pinMode (ลง INPUT_PULLUP); pinMode (เดล, INPUT_PULLUP); pinMode (จับคู่ INPUT_PULLUP); pinMode (เสียงกริ่งเอาท์พุท); pinMode (indFinger, เอาท์พุท); digitalWrite (เสียงกริ่งต่ำ); ถ้า (digitalRead (ลงทะเบียน) == 0) {digitalWrite (กริ่งสูง); ล่าช้า (500); digitalWrite (เสียงกริ่งต่ำ); lcd.clear (); lcd.print ("โปรดรอสักครู่"); lcd.setCursor (0,1); lcd.print ("Downloding Data");
หลังจากนั้นเราต้องเขียนโค้ดสำหรับล้างข้อมูลการเข้าร่วมจาก EEPROM
ถ้า (digitalRead (del) == 0) {lcd.clear (); lcd.print ("กรุณารอสักครู่"); lcd.setCursor (0,1); lcd.print ("กำลังรีเซ็ต….. "); สำหรับ (int i = 1000; i <1005; i ++) EEPROM.write (i, 0); สำหรับ (int i = 0; i <841; i ++) EEPROM.write (i, 0xff); lcd.clear (); lcd.print ("รีเซ็ตระบบ"); ล่าช้า (1,000); }
หลังจากนั้นเราจะเริ่มต้นโมดูลการพิมพ์ลายนิ้วมือโดยแสดงข้อความต้อนรับบน LCD และโมดูล RTC ที่ไม่ได้ตั้งใจ
หลังจากนั้นในฟังก์ชันลูปเราได้อ่านเวลา RTC และแสดงบน LCD
โมฆะ loop () {now = rtc.now (); lcd.setCursor (0,0); lcd.print ("เวลา ->"); lcd.print (now.hour (), ธันวาคม); lcd.print (':'); lcd.print (now.minute (), ธันวาคม); lcd.print (':'); lcd.print (ตอนนี้วินาที (), ธันวาคม); lcd.print (""); lcd.setCursor (0,1); lcd.print ("วันที่ ->"); lcd.print (now.day (), ธันวาคม); lcd.print ('/'); lcd.print (now.month (), ธันวาคม); lcd.print ('/'); lcd.print (now.year (), ธันวาคม);
หลังจากนั้นรอให้ลายนิ้วมือป้อนข้อมูลและเปรียบเทียบ ID ภาพที่ถ่ายกับ ID ที่จัดเก็บไว้ หาก amatch เกิดขึ้นให้ดำเนินการขั้นตอนต่อไป และตรวจสอบ enroll del คีย์ด้วย
int ผลลัพธ์ = getFingerprintIDez (); ถ้า (ผลลัพธ์> 0) {digitalWrite (indFinger, LOW); digitalWrite (กริ่งสูง); ล่าช้า (100); digitalWrite (เสียงกริ่งต่ำ); lcd.clear (); lcd.print ("ID:"); lcd.print (ผลลัพธ์); lcd.setCursor (0,1); lcd.print ("โปรดรอ…. "); ล่าช้า (1,000); การเข้าร่วม (ผล); lcd.clear (); lcd.print ("ผู้เข้าร่วม"); lcd.setCursor (0,1); lcd.print ("ลงทะเบียน"); ล่าช้า (1,000); digitalWrite (indFinger, สูง); กลับ; }
ระบุ ฟังก์ชัน โมฆะ checkKeys () ใช้สำหรับตรวจสอบการกดปุ่ม Enroll หรือ DEL หรือไม่และจะทำอย่างไรหากกด ถ้าปุ่ม ENROLL กดฟังก์ชัน Enroll () ถูกเรียกและกดปุ่ม DEL จากนั้นฟังก์ชัน Delete () จะถูกเรียก
ฟังก์ชัน ลบ () เป็นโมฆะ ใช้สำหรับป้อน ID ที่จะลบและเรียกใช้ ฟังก์ชัน uint8_t deleteFingerprint (uint8_t id) ที่จะลบนิ้วออกจากบันทึก
ฟังก์ชัน 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 ใช้สำหรับจัดเก็บเวลาและวันที่เข้างานในช่องที่กำหนดของ EEPROM
การเข้าร่วมเป็นโมฆะ (int id) {int user = 0, eepLoc = 0; ถ้า (id == 1) {eepLoc = 0; ผู้ใช้ = user1 ++; } else if (id == 2) {eepLoc = 210; ผู้ใช้ = user2 ++; } else if (id == 3)………….
ฟังก์ชัน Given ใช้เพื่อดึงข้อมูลจาก EEPROM และส่งไปยังมอนิเตอร์แบบอนุกรม
ดาวน์โหลดเป็นโมฆะ (int eepIndex) {if (EEPROM.read (eepIndex)! = 0xff) {Serial.print ("T->"); ถ้า (EEPROM.read (eepIndex) <10) Serial.print ('0'); Serial.print (EEPROM.read (eepIndex ++)); Serial.print (':'); ถ้า (EEPROM.read (eepIndex) <10) Serial.print ('0'); Serial.print (EEPROM.read (eepIndex ++));………….