- आवश्यक घटक
- परियोजना विवरण:
- फ़िंगरप्रिंट मॉड्यूल:
- फिंगरप्रिंट आधारित उपस्थिति प्रणाली का कार्य करना
- फ़िंगरप्रिंट अटेंडेंस सिस्टम प्रोजेक्ट के लिए सर्किट आरेख और विवरण
- कोड स्पष्टीकरण:
उपस्थिति प्रणाली आमतौर पर कार्यालयों और स्कूलों में उपस्थिति को चिह्नित करने के लिए उपयोग की जाने वाली प्रणाली है। उच्च-तकनीकी अनुप्रयोगों और बायोमेट्रिक सिस्टम का उपयोग करने के लिए उपस्थिति रजिस्टर में उपस्थिति को मैन्युअल रूप से चिह्नित करने से, इन प्रणालियों में काफी सुधार हुआ है। हमारी पिछली परियोजनाओं में, हमने आरएफआईडी और एवीआर माइक्रोकंट्रोलर, 8051 और रास्पबेरी पाई का उपयोग करके कुछ अन्य इलेक्ट्रॉनिक उपस्थिति प्रणाली परियोजनाओं को कवर किया है। इस परियोजना में, हमने उपस्थिति डेटा और रिकॉर्ड लेने और रखने के लिए फिंगरप्रिंट मॉड्यूल और Arduino का उपयोग किया। फिंगरप्रिंट सेंसर का उपयोग करने से, सिस्टम उपयोगकर्ताओं के लिए अधिक सुरक्षित हो जाएगा। निम्नलिखित अनुभाग Arduino का उपयोग करके फिंगरप्रिंट आधारित बायोमेट्रिक उपस्थिति प्रणाली बनाने के तकनीकी विवरण की व्याख्या करते हैं ।
आवश्यक घटक
- अरुडिनो -1
- फिंगर प्रिंट मॉड्यूल -1
- पुश बटन - 4
- एलईडी -1
- 1K रेसिस्टर -2
- २.२ के अवरोधक -1
- शक्ति
- तारों को जोड़ना
- डिब्बा
- बजर -1
- 16x2 एलसीडी -1
- ब्रेड बोर्ड -1
- RTC मॉड्यूल -1
परियोजना विवरण:
इस फिंगरप्रिंट अटेंडेंस सिस्टम सर्किट में, हमने फिंगरप्रिंट सेंसर मॉड्यूल का उपयोग कियाएक सच्चे व्यक्ति या कर्मचारी को सिस्टम में उनके फिंगर इनपुट को प्रमाणित करने के लिए प्रमाणित करना। यहाँ हम 4 पुश बटन का उपयोग नामांकन, डिलीट, यूपी / डाउन के लिए कर रहे हैं। ENROLL और DEL कुंजी में ट्रिपल विशेषताएं हैं। एनरोल कुंजी का उपयोग सिस्टम में एक नए व्यक्ति के नामांकन के लिए किया जाता है। इसलिए जब उपयोगकर्ता नई उंगली का नामांकन करना चाहता है, तो उसे ENROLL कुंजी दबाना होगा तब एलसीडी आईडी मांगता है, जहां उपयोगकर्ता फिंगर प्रिंट छवि को संग्रहीत करना चाहता है। अब यदि इस समय उपयोगकर्ता आगे नहीं बढ़ना चाहता है तो वह वापस जाने के लिए फिर से ENROLL कुंजी दबा सकता है। इस बार ENROLL कुंजी बैक कुंजी के रूप में व्यवहार करती है, अर्थात ENROLL कुंजी में नामांकन और बैक फ़ंक्शन दोनों होते हैं। इसके अलावा नामांकन कुंजी का उपयोग सीरियल मॉनीटर पर उपस्थिति डेटा डाउनलोड करने के लिए भी किया जाता है। इसी तरह, DEL / OK कुंजी में भी एक ही दोहरा कार्य होता है जैसे उपयोगकर्ता नई उंगली का नामांकन करता है,उसके बाद उसे एक और दो कुंजी अर्थात् UP और DOWN का उपयोग करके फिंगर आईडी का चयन करना होगा। अब उपयोगकर्ता को चयनित आईडी के साथ आगे बढ़ने के लिए DEL / OK कुंजी (इस बार यह कुंजी OK की तरह व्यवहार करता है) को दबाने की आवश्यकता है। और डेल की का उपयोग EEPROM के Arduino से डेटा को रीसेट करने या हटाने के लिए किया जाता है।
फ़िंगरप्रिंट मॉड्यूल:
फ़िंगरप्रिंट सेंसर मॉड्यूल उंगली की प्रिंट छवि को कैप्चर करता है और फिर इसे समतुल्य टेम्पलेट में परिवर्तित करता है और उन्हें अपनी मेमोरी में ल्यूडिनो द्वारा चयनित आईडी के अनुसार बचाता है। सभी प्रक्रिया को Arduino द्वारा निर्देशित किया जाता है जैसे कि फिंगर प्रिंट की एक छवि लेना, इसे टेम्प्लेट में बदलना और आईडी आदि के रूप में संग्रहीत करना। आप फिंगरप्रिंट मॉड्यूल का उपयोग करके कुछ और परियोजनाओं की जांच कर सकते हैं:
फिंगरप्रिंट आधारित सुरक्षा प्रणाली
फिंगरप्रिंट आधारित बायोमेट्रिक वोटिंग मशीन
यहां हमने एक येलो एलईडी जोड़ा है जो इंगित करता है कि फिंगरप्रिंट मॉड्यूल उंगली की एक छवि लेने के लिए तैयार है। एक बजर का उपयोग विभिन्न संकेतों के लिए भी किया जाता है। Arduino इस प्रणाली का मुख्य घटक है जो पूरे सिस्टम के नियंत्रण के लिए जिम्मेदार है।
फिंगरप्रिंट आधारित उपस्थिति प्रणाली का कार्य करना
इस फिंगरप्रिंट अटेंडेंस सिस्टम प्रोजेक्ट का कार्य करनाकाफी सरल है। सबसे पहले, उपयोगकर्ता को पुश बटन की मदद से उपयोगकर्ता के उंगलियों के निशान को दर्ज करना होगा। ऐसा करने के लिए, उपयोगकर्ता को एनरोल कुंजी को दबाने की आवश्यकता होती है और फिर एलसीडी आईडी नाम से मेमोरी में सहेजने के लिए फिंगरप्रिंट के लिए आईडी दर्ज करने के लिए कहता है। इसलिए अब उपयोगकर्ता को UP / DOWN कुंजियों का उपयोग करके ID दर्ज करना होगा। आईडी का चयन करने के बाद, उपयोगकर्ता को ओके की (DEL कुंजी) को प्रेस करना होगा। अब एलसीडी फिंगरप्रिंट मॉड्यूल पर उंगली रखने के लिए कहेगा। अब उपयोगकर्ता को अपनी उंगली को फिंगर प्रिंट मॉड्यूल पर रखने की आवश्यकता है और फिर मॉड्यूल उंगली की छवि लेता है। अब एलसीडी फिंगरप्रिंट मॉड्यूल से उंगली हटाने के लिए कहेगा, और फिर से उंगली को फिर से रखने के लिए कहेंगे। अब उपयोगकर्ता को फिर से अपनी उंगली डालने की जरूरत है और मॉड्यूल एक छवि लेता है और इसे टेम्पलेट्स में परिवर्तित करता है और इसे चयनित आईडी द्वारा फिंगर प्रिंट मॉड्यूल की मेमोरी में संग्रहीत करता है।अब उपयोगकर्ता पंजीकृत हो जाएगा और वह अपनी उंगली को फिंगरप्रिंट मॉड्यूल पर डालकर उपस्थिति दर्ज कर सकता है। उसी विधि से, सभी उपयोगकर्ताओं को सिस्टम में पंजीकृत किया जाएगा।
अब अगर यूजर किसी भी स्टोर की गई आईडी या फिंगरप्रिंट को हटाना या हटाना चाहता है, तो उसे DEL कुंजी दबाने की जरूरत है। एक बार डिलीट की को दबाए जाने के बाद एलसीडी उस आईडी को सेलेक्ट करने को कहेगी जिसे डिलीट करने की जरूरत है। अब यूजर को आईडी सेलेक्ट करना होगा और ओके की (उसी DEL की) को प्रेस करना होगा। अब एलसीडी आपको बताएगा कि फिंगरप्रिंट सफलतापूर्वक हटा दिया गया है।
इस फिंगरप्रिंट उपस्थिति प्रणाली परियोजना में उपस्थिति कैसे काम करती है:
जब भी यूजर अपनी उंगली को फिंगरप्रिंट मॉड्यूल पर रखता है तो फिंगरप्रिंट मॉड्यूल उंगली की छवि को कैप्चर करता है, और यह खोज करता है कि सिस्टम में कोई आईडी इस फिंगरप्रिंट के साथ जुड़ा हुआ है या नहीं। यदि फिंगरप्रिंट आईडी का पता चला है तो एलसीडी उपस्थिति दर्ज करेगा और उसी समय बजर एक बार बीप करेगा और तब तक बंद रहेगा जब तक सिस्टम फिर से इनपुट लेने के लिए तैयार नहीं हो जाता।
फिंगरप्रिंट मॉड्यूल के साथ, हमने समय और तारीख के लिए RTC मॉड्यूल का भी उपयोग किया है । सिस्टम में समय और तारीख लगातार चल रही है। इसलिए Arduino समय और तारीख लेता है जब भी कोई सच्चा उपयोगकर्ता अपनी उंगली को फिंगरप्रिंट पर रखता है और मेमोरी के आवंटित स्लॉट में उन्हें EEPROM में बचाता है।
यहां हमने 30 दिनों के लिए इस प्रणाली में 5 उपयोगकर्ता स्थान बनाए हैं। Arduino में RESET बटन दबाकर और फिर तुरंत नामांकित कुंजी Arduino EEPROM मेमोरी से सीरियल मॉनिटर पर उपस्थिति डेटा डाउनलोड करने के लिए जिम्मेदार होगा।
स्मृति प्रबंधन:
Arduino UNO में हमारे पास 1023 बाइट मेमोरी है जिसमें से डेटा स्टोर करने के लिए हमारे पास 1018 बाइट है और हमने 30 दिनों के लिए 5 यूजर अटेंडेंस डेटा लिया है। और हर उपस्थिति समय और तारीख दर्ज करेगी ताकि यह 7-बाइट डेटा बन जाए।
तो कुल मेमोरी आवश्यक है
5 * 30 * 7 = 1050 इसलिए यहां हमें 32 बाइट्स की आवश्यकता है
लेकिन अगर हम 4 उपयोगकर्ताओं का उपयोग करेंगे तो हमें आवश्यकता होगी
4 * 30 * 7 = 840
यहां हमने 5 उपयोगकर्ताओं की मेमोरी लेकर इस प्रोजेक्ट का प्रदर्शन किया है। इसके द्वारा हम 5 वें उपयोगकर्ता के 32 बाइट या 5 अटेंडेंस रिकॉर्ड को स्टोर नहीं कर पाएंगे ।
आप कोड में कुछ पंक्तियों को बदलकर इसे 4 उपयोगकर्ताओं द्वारा आज़मा सकते हैं। मैंने उस कोड में टिप्पणी की है जहां परिवर्तनों की आवश्यकता है।
फ़िंगरप्रिंट अटेंडेंस सिस्टम प्रोजेक्ट के लिए सर्किट आरेख और विवरण
इस फिंगरप्रिंट आधारित उपस्थिति प्रणाली परियोजना का सर्किट, जैसा कि ऊपर चित्र में दिखाया गया है, काफी सरल है। इसमें प्रोजेक्ट की सभी प्रक्रिया को नियंत्रित करने, नामांकन के लिए पुश बटन, हटाने, आईडी का चयन करने और उपस्थिति के लिए एक बजर, अलर्ट करने के लिए एक बजर और उपयोगकर्ता को निर्देश देने के लिए एलसीडी और परिणामी संदेश दिखाने के लिए Arduino है।
जैसा कि सर्किट आरेख में दिखाया गया है, एक पुश बटन सीधे पिन A0 (ENROLL), A1 (DEL), A2 (UP), A3 (DOWN) से जुड़ा होता है और साथ में Arduino का ग्राउंड और पीली एलईडी डिजिटल पिन 77 से जुड़ा होता है। 1k रोकनेवाला के माध्यम से जमीन के संबंध में Arduino का। फिंगरप्रिंट मॉड्यूल का Rx और Tx सीधे Arduino के सीरियल पिन D2 और D3 (सॉफ्टवेयर सीरियल) से जुड़ा है। 5v सप्लाई का उपयोग Arduino Board से लिए गए फिंगर प्रिंट मॉड्यूल को पावर करने के लिए किया जाता है। एक बजर पिन A5 पर भी जुड़ा हुआ है। एक 16x2 एलसीडी 4-बिट मोड में कॉन्फ़िगर किया गया है और इसका RS, EN, D4, D5, D6 और D7 डिजिटल पिन D13, D12, D11, D10, D9, और Ar8ino के D8 से सीधे जुड़ा हुआ है।
कोड स्पष्टीकरण:
Arduino के लिए फिंगरप्रिंट उपस्थिति प्रणाली कोड बाद वर्गों में दिया जाता है। यद्यपि कोड को टिप्पणियों के साथ अच्छी तरह से समझाया गया है, हम यहां कोड के कुछ महत्वपूर्ण भागों पर चर्चा कर रहे हैं। हमने Arduino Board के साथ फिंगर प्रिंट मॉड्यूल को बदलने के लिए फिंगरप्रिंट लाइब्रेरी का उपयोग किया ।
सबसे पहले, हम हेडर फ़ाइल को शामिल करते हैं और इनपुट और आउटपुट पिन को परिभाषित करते हैं और मैक्रो और घोषित चर को परिभाषित करते हैं। इसके बाद, सेटअप फ़ंक्शन में, हम परिभाषित पिन को दिशा देते हैं और एलसीडी और फिंगर प्रिंट मॉड्यूल शुरू करते हैं
इसके बाद, हमें उपस्थिति डेटा डाउनलोड करने के लिए कोड लिखना होगा।
शून्य सेटअप () {विलंब (1000); lcd.begin (16,2); सीरियल.बेगिन (9600); pinMode (नामांकन, INPUT_PULLUP); pinMode (अप, INPUT_PULLUP); pinMode (नीचे, INPUT_PULLUP); pinMode (डेल, INPUT_PULLUP); पिनमोड (मिलान, INPUT_PULLUP); पिनमोड (बजर, OUTPUT); पिनमोड (इंडिफ़िंगर, आउटपुट); digitalWrite (बजर, LOW); अगर (digitalRead (नामांकन) == 0) {digitalWrite (बजर, हाई); देरी (500); digitalWrite (बजर, LOW); lcd.clear (); lcd.print ("कृपया प्रतीक्षा करें"); lcd.setCursor (0,1); lcd.print ("डाउनलोडिंग डेटा");
बाद में, हमें EEPROM से उपस्थिति डेटा को साफ़ करने के लिए कोड लिखना होगा।
if (digitalRead (del) == 0) {lcd.clear (); lcd.print ("कृपया प्रतीक्षा करें"); lcd.setCursor (0,1); lcd.print ("रीसेटिंग….."); for (int i = 1000; मैं <1005; i ++) EEPROM.write (i, 0); for (int i = 0; i <841; i ++) EEPROM.write (i, 0xff); lcd.clear (); lcd.print ("सिस्टम रीसेट"); देरी (1000); }
इसके बाद, हम फिंगर प्रिंट मॉड्यूल शुरू करते हैं, एलसीडी पर स्वागत संदेश दिखाते हैं और आरटीसी मॉड्यूल को भी प्रेरित करते हैं।
इसके बाद, लूप फ़ंक्शन में, हमने आरटीसी समय पढ़ा है और इसे एलसीडी पर प्रदर्शित किया है
शून्य पाश () {अब = rtc.now (); lcd.setCursor (0,0); lcd.print ("समय->"); lcd.print (now.hour (), DEC); lcd.print (':'); lcd.print (now.minute (), DEC); lcd.print (':'); lcd.print (now.second (), DEC); lcd.print (""); lcd.setCursor (0,1); lcd.print ("दिनांक->"); lcd.print (now.day (), DEC); lcd.print ('/'); lcd.print (now.month (), DEC); lcd.print ('/'); lcd.print (now.year (), DEC);
इसके बाद, इनपुट लेने के लिए फिंगर प्रिंट की प्रतीक्षा करना और संग्रहीत आईडी के साथ कैप्चर की गई छवि आईडी की तुलना करना। यदि एमाच होता है, तो अगले चरण के साथ आगे बढ़ें। और एनरोल डेल कीज को भी चेक करें
int result = getFingerprintIDez (); if (परिणाम> 0) {digitalWrite (indFinger, LOW); digitalWrite (बजर, हाई); देरी (100); digitalWrite (बजर, LOW); lcd.clear (); lcd.print ("ID:"); lcd.print (परिणाम); lcd.setCursor (0,1); lcd.print ("कृपया प्रतीक्षा करें…."); देरी (1000); उपस्थिति (परिणाम); lcd.clear (); lcd.print ("उपस्थिति"); lcd.setCursor (0,1); lcd.print ("विनियमित"); देरी (1000); digitalWrite (indFinger, HIGH); वापसी; }
शून्य चेक को देखते हुए () फ़ंक्शन का उपयोग एनरोल या DEL कुंजी को चेक करने के लिए किया जाता है या नहीं और यदि दबाया जाता है तो क्या करना है। यदि ENROLL कुंजी ने एनरोल () फ़ंक्शन को दबाया और DEL कुंजी दबाया तो डिलीट () फ़ंक्शन को कहा जाता है।
void डिलीट () फंक्शन को डिलीट करने के लिए ID एंटर करने के लिए और uint8_t deleteFingerprint (uint8_t id) फंक्शन को कॉल करने के लिए उपयोग किया जाता है जो रिकॉर्ड से उंगली को हटा देगा।
गिवेन फंक्शन का उपयोग फिंगर प्रिंट इमेज लेने के लिए किया जाता है और उन्हें टेम्पलेट में परिवर्तित किया जाता है और चयनित आईडी द्वारा फिंगर प्रिंट मॉड्यूल मेमोरी में सेव किया जाता है।
uint8_t getFingerprintEnroll () {int p = -1; lcd.clear (); lcd.print ("फिंगर आईडी:"); lcd.print (id); lcd.setCursor (0,1); lcd.print ("प्लेस फिंगर"); देरी (2000); जबकि (पी! = FINGERPRINT_OK) {p = finger.getImage ();…………………
दिए गए फ़ंक्शन का उपयोग EEPROM के आवंटित स्लॉट में उपस्थिति समय और तारीख को संग्रहीत करने के लिए किया जाता है
शून्य उपस्थिति (int id) {int user = 0, eepLoc = 0; if (id == 1) {eepLoc = 0; उपयोगकर्ता = user1 ++; } और अगर (id == 2) {eepLoc = 210; उपयोगकर्ता = user2 ++; } और अगर (id == 3)…………
दिए गए फ़ंक्शन का उपयोग EEPROM से डेटा प्राप्त करने और सीरियल मॉनिटर को भेजने के लिए किया जाता है
void डाउनलोड (int eepIndex) {if (EEPROM.read (eepIndex); = 0xff) {Serial.print ("T->"); if (EEPROM.read (eepIndex) <10) Serial.print ('0'); Serial.print (EEPROM.read (eepIndex ++)); सीरियल.प्रिंट (':'); if (EEPROM.read (eepIndex) <10) Serial.print ('0'); Serial.print (EEPROM.read (eepIndex ++));………….