- आवश्यक घटक:
- वोटिंग मशीन में फिंगर प्रिंट सेंसर मॉड्यूल:
- कार्य स्पष्टीकरण:
- सर्किट स्पष्टीकरण:
- कार्यक्रम की व्याख्या:
हम सभी इलेक्ट्रॉनिक वोटिंग मशीनों से काफी परिचित हैं, जहाँ आपका वोट इलेक्ट्रॉनिक रूप से पंजीकृत हो जाता है और आपको चुनाव में मतदान करने के लिए बैलेट पेपर का उपयोग करने की आवश्यकता नहीं होती है। आज सुरक्षा एक प्रमुख चिंता का विषय है और यह भी सुनिश्चित करने की आवश्यकता है कि कोई व्यक्ति दो बार मतदान नहीं कर सकता है, इसलिए इस समस्या का समाधान फिंगर प्रिंट आधारित मतदान के द्वारा किया जा सकता है, जहाँ व्यक्ति अपनी फिंगर प्रिंट के आधार पर अधिकृत हो सकता है। इससे फर्जी वोटिंग भी रुकेगी। इसलिए आज हम Arduino का उपयोग करके FingerPrint आधारित Biometric Voting Machine बना रहे हैं ।
विभिन्न माइक्रोकंट्रोलर्स का उपयोग करके हमारी पिछली इलेक्ट्रॉनिक वोटिंग मशीन परियोजनाओं की भी जाँच करें:
- रास्पबेरी पाई का उपयोग कर इलेक्ट्रॉनिक वोटिंग मशीन
- आरएफआईडी आधारित मतदान मशीन
- AVR माइक्रोकंट्रोलर आधारित इलेक्ट्रॉनिक वोटिंग मशीन प्रोजेक्ट
- Arduino का उपयोग करके इलेक्ट्रॉनिक वोटिंग मशीन
आवश्यक घटक:
- अरुडिनो उनो
- फिंगर प्रिंट सेंसर मॉड्यूल
- पुश बटन
- एलईडी -2
- 1K रोकनेवाला -3
- 2.2K रोकनेवाला
- शक्ति
- तारों को जोड़ना
- बजर
- 16x2 एलसीडी
- ब्रेड बोर्ड
वोटिंग मशीन में फिंगर प्रिंट सेंसर मॉड्यूल:
फिंगर प्रिंट सेंसर मॉड्यूल या फिंगर प्रिंट स्कैनर एक ऐसा मॉड्यूल है जो उंगली की प्रिंट छवि को कैप्चर करता है और फिर इसे समतुल्य टेम्पलेट में परिवर्तित करता है और Arduino द्वारा चयनित आईडी (स्थान) पर उनकी मेमोरी में सहेजता है। यहाँ सभी प्रक्रिया को Arduino द्वारा कमांड किया जाता है जैसे फिंगर प्रिंट की एक छवि लेना, इसे टेम्प्लेट और स्टोरिंग स्थान आदि में बदलना।
इस FingerPrint वोटिंग मशीन सर्किट में, हमने सिस्टम में उनके फिंगर इनपुट लेकर सच्चे मतदाता को प्रमाणित करने के लिए फिंगर प्रिंट सेंसर मॉड्यूल का उपयोग किया है। यहां हम 5 पुश बटन का उपयोग मैच, एनरोल / बैक, डिलीट / ओके, यूपी और डाउन के लिए कर रहे हैं। एनरोल और डेल की यहां दोहरी विशेषताएं हैं। एनरोल कुंजी का उपयोग सिस्टम और बैक फ़ंक्शन में नई फिंगर इंप्रेशन को दर्ज करने के लिए किया जाता है। इसका मतलब है कि जब उपयोगकर्ता नई उंगली का नामांकन करना चाहता है, तो उसे नामांकन कुंजी दबाने की आवश्यकता होती है, तो एलसीडी उस आईडी या स्थान के लिए पूछता है जहां उपयोगकर्ता फिंगर प्रिंट आउटपुट स्टोर करना चाहता है। अब यदि इस समय उपयोगकर्ता आगे नहीं बढ़ना चाहता है तो वह वापस जाने के लिए नामांकन कुंजी को फिर से दबा सकता है (इस बार नामांकन कुंजी को वापस कुंजी के रूप में व्यवहार करता है)। मतलब नामांकन कुंजी में नामांकन और बैक फ़ंक्शन दोनों हैं। DEL / ओके की इसका भी एक ही दोहरा कार्य है जैसे जब उपयोगकर्ता नई उंगली का नामांकन करता है तो उसे एक और दो कुंजी अर्थात् UP और DOWN का उपयोग करके फिंगर आईडी या स्थान का चयन करने की आवश्यकता होती है। चयनित आईडी या स्थान के साथ आगे बढ़ें। जब भी मतदाता मतदान करना चाहता है तो उसके लिए मिलान कुंजी का उपयोग किया जाता है, उसे फिंगर प्रिंट सेंसर पर उंगली रखकर पहले मतदाता को प्रमाणित करने की आवश्यकता होती है, यदि वह इस प्रमाणीकरण में पास हो गया है तो वह मतदान कर सकता है।
फिंगर प्रिंट और अन्य चीजों के नामांकन के बारे में अधिक जानने के लिए, Arduino के साथ फिंगर प्रिंट सेंसर को इंटर करने पर हमारे पिछले ट्यूटोरियल की जांच करें, और इस ट्यूटोरियल के अंत में हमारे डेमो वीडियो की भी जांच करें ।
कार्य स्पष्टीकरण:
चुनाव के लिए इस बायोमेट्रिक वोटिंग सिस्टम का कार्य करना शुरुआती लोगों के लिए थोड़ा जटिल है। सबसे पहले, उपयोगकर्ता को पुश बटन या कुंजियों की मदद से उंगली या मतदाता (इस कोड की अधिकतम सीमा 25 में है) को दर्ज करने की आवश्यकता है। ऐसा करने के लिए उपयोगकर्ता को ENROLL कुंजी दबानी होगी और फिर LCD स्थान / आईडी दर्ज करने के लिए कहता है जहां उंगली एक स्टोर होगी। इसलिए अब उपयोगकर्ता को UP / DOWN कुंजियों का उपयोग करके ID (स्थान) दर्ज करना होगा। स्थान / आईडी का चयन करने के बाद उपयोगकर्ता को एक OK कुंजी (DEL कुंजी) दबाना होगा। अब एलसीडी फिंगर प्रिंट मॉड्यूल पर उंगली रखने के लिए कहेंगे। अब उपयोगकर्ता को अपनी उंगली को फिंगर प्रिंट मॉड्यूल पर रखने की आवश्यकता है। फिर एलसीडी फिंगर प्रिंट मॉड्यूल से उंगली को हटाने के लिए कहेंगे और फिर से उंगली रखने के लिए कहेंगे। अब उपयोगकर्ता को अपनी उंगली को फिर से फिंगर प्रिंट मॉड्यूल पर रखना होगा। अब फिंगर प्रिंट मॉड्यूल एक छवि लेता है और इसे टेम्प्लेट में परिवर्तित करता है और इसे चयनित आईडी द्वारा फिंगर प्रिंट मॉड्यूल की मेमोरी में संग्रहीत करता है।अब मतदाता पंजीकृत होगा और वह मतदान कर सकता है। इसी पद्धति से सभी मतदाता प्रणाली में पंजीकृत हो सकते हैं।
अब यदि उपयोगकर्ता किसी भी संग्रहीत आईडी को हटाना या हटाना चाहता है, तो उसे DEL कुंजी दबाने की आवश्यकता है, DEL कुंजी दबाने के बाद, LCD चयन स्थान का चयन करेगा जिसका अर्थ है कि हटाए जाने वाली ID का चयन करें। अब यूजर को आईडी सेलेक्ट करना होगा और ओके की (उसी DEL की) को प्रेस करना होगा। अब एलसीडी आपको बताएगा कि उंगली सफलतापूर्वक हटा दी गई है।
मतदान प्रक्रिया:
अब जब उपयोगकर्ता मतदान करना चाहता है, तो उसे मैच कुंजी दबाने की जरूरत है और फिर बजर बीप होगा और एलईडी भी चमक जाएगी और एलसीडी फिंगरप्रिंट मॉड्यूल पर उंगली रखने के लिए कहेंगे। अब Arduino आपको अपनी उंगली डालने के तीन प्रयास देगा। फिंगरप्रिंट मॉड्यूल पर उंगली रखने के बाद फिंगरप्रिंट मॉड्यूल कैप्चर करता है उंगली छवि को पता चलता है कि इसकी आईडी सिस्टम में मौजूद है। अगर फिंगर आईडी का पता चला है तो एलसीडी अधिकृत वोटर दिखाएगा। इसका मतलब है कि उपयोगकर्ता वोट करने के लिए अधिकृत है। और फिर मतदान के लिए सिस्टम अगले चरण में चला जाता है। अब ग्रीन एलईडी चमक जाएगी इसका मतलब है कि अब मतदाता अपने उम्मीदवारों के लिए एक relected कुंजी (इस प्रदर्शन में RED ब्रेड बोर्ड से) दबाकर वोट कर सकता है। अब अगर वही मतदाता फिर से मतदान करना चाहता है, तो सिस्टम इसे 'पहले से ही वोट' दिखाएगा । एक ही मतदाता फिर से वोट नहीं कर सकता है और बजर 5 सेकंड के लिए बीप करेगा। यदि कोई भी गैर-पंजीकृत उपयोगकर्ता मतदान करना चाहता है, तो फिंगर प्रिंट मॉड्यूल सिस्टम में इसकी आईडी का पता नहीं लगाएगा और एलसीडी ' नो फ़िंगरप्रिंट फाउंड' दिखाएगा ।
CAN1, CAN2, CAN3 यहां उम्मीदवार 1, उम्मीदवार 2 और उम्मीदवार 3 का प्रतिनिधित्व करते हैं, जो चुनाव के लिए खड़े हुए हैं।
सर्किट स्पष्टीकरण:
इस FingerPrint आधारित वोटिंग मशीन प्रोजेक्ट का सर्किट बहुत सरल है जिसमें Arduino में प्रोजेक्ट की पूरी प्रक्रिया को नियंत्रित करने, नामांकन के लिए पुश बटन, हटाने, आईडी और मतदान उद्देश्य का चयन करने, अलर्ट के लिए बजर, संकेत के लिए LED और निर्देश के लिए 16x2 LCD शामिल हैं। मतदाता और परिणाम भी दिखा रहा है। येलो एलईडी इंगित करता है कि फिंगरप्रिंट मॉड्यूल उंगली की एक छवि लेने के लिए तैयार है और ग्रीन एलईडी इंगित करता है कि सिस्टम वोट लेने या परिणाम देखने के लिए तैयार है।
पुश बटन सीधे पिन A0 (ENROLL), A1 (DEL), A2 (UP), A3 (DOWN) और A4 (मैच), D5 (Can1), D4 (Can2), D3 (Can3), D2 () से जुड़ा है जमीन के संबंध में Arduino का परिणाम)। पीली एलईडी 1k रोकनेवाला के माध्यम से जमीन के संबंध में Arduino के डिजिटल पिन D7 पर जुड़ा हुआ है और ग्रीन एलईडी एक ही विधि के साथ Arduino के D6 से जुड़ा है। फिंगरप्रिंट मॉड्यूल का Rx और Tx सीधे Arduino के सीरियल पिन Tx और Rx से जुड़ा है। 5v सप्लाई का उपयोग Arduino Board से लिए गए फिंगर प्रिंट मॉड्यूल को पावर करने के लिए किया जाता है। A बजर A5 पर भी जुड़ा हुआ है। एक 16x2 एलसीडी 4-बिट मोड में कॉन्फ़िगर किया गया है और इसका RS, EN, D4, D5, D6 और D7 डिजिटल पिन D13, D12, D11, D10, D9, और Ar8ino के D8 से सीधे जुड़ा हुआ है।
कार्यक्रम की व्याख्या:
एक कार्यक्रम में, हमने Arduino Board के साथ फ़िंगरप्रिंट मॉड्यूल को बदलने के लिए Adafruit Fingerprint Sensor Library का उपयोग किया है । आप नीचे पूरा कोड देख सकते हैं। यहाँ हम Arduino Program के मुख्य कार्यों की व्याख्या कर रहे हैं।
सेटअप फ़ंक्शन में, हमने परिभाषित पिनों को दिशा-निर्देश दिए हैं और एलसीडी और फ़िंगरप्रिंट मॉड्यूल की शुरुआत की है।
इसके बाद, शून्य लूप () फ़ंक्शन में, हमने चेक की के लिए प्रतीक्षा की है और इनपुट लेने के लिए फिंगर प्रिंट शुरू करने के लिए मिलान कुंजी दबाएं और संग्रहीत आईडी के साथ कैप्चर की गई छवि आईडी की तुलना करें। यदि कोई मैच होता है तो अगले चरण के साथ आगे बढ़ें।
शून्य लूप () {lcd.setCursor (0,0); lcd.print ("प्रेस मिलान कुंजी"); lcd.setCursor (0,1); lcd.print ("सिस्टम शुरू करने के लिए"); digitalWrite (indVote, LOW); digitalWrite (indFinger, LOW); if (digitalRead (match) == 0) {digitalWrite (बजर, हाई); देरी (200); digitalWrite (बजर, LOW); digitalWrite (indFinger, HIGH); for (int i = 0; i <3; i ++)…………………
शून्य चेक को देखते हुए () फ़ंक्शन का उपयोग एनरोल या DEL कुंजी को चेक करने के लिए किया जाता है या नहीं और यदि दबाया जाता है तो क्या करना है। यदि ENROLL कुंजी ने एनरोल () फ़ंक्शन को दबाया और DEL कुंजी दबाया तो डिलीट () फ़ंक्शन को कहा जाता है।
void checkKeys () {if (digitalRead (नामांकन) == 0) {lcd.clear (); lcd.print ("कृपया प्रतीक्षा करें"); देरी (1000); जबकि (digitalRead (नामांकन) == 0); दाखिला (); } और यदि (digitalRead (del) == 0) {lcd.clear (); lcd.print ("कृपया प्रतीक्षा करें"); देरी (1000); हटाना (); }}
दिए गए फ़ंक्शन का उपयोग हटाए जाने के लिए आईडी दर्ज करने और 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 (गिनती); if (digitalRead (up) == 0) {count ++; if (गिनती> 25) count = 0; देरी (500); }……………….
दिए गए फ़ंक्शन का उपयोग चयनित आईडी के रिकॉर्ड से फिंगर प्रिंट को हटाने के लिए किया जाता है।
uint8_t deleteFingerprint (uint8_t id) {uint8_t p = -1; lcd.clear (); lcd.print ("कृपया प्रतीक्षा करें"); p = finger.deleteModel (id); if (p == FINGERPRINT_OK) {Serial.println ("हटा दिया गया!"); lcd.clear (); lcd.print ("Figer Deleted"); lcd.setCursor (0,1); lcd.print ("सफलतापूर्वक"); देरी (1000); } और {Serial.print ("कुछ गलत"); lcd.clear (); lcd.print ("कुछ गलत"); lcd.setCursor (0,1); lcd.print ("बाद में फिर कोशिश करें"); देरी (2000); वापसी पी; }}
दिया गया फंक्शन का उपयोग फिंगर प्रिंट इमेज लेने और उन्हें टेम्प्लेट में बदलने और फिंगर प्रिंट मॉड्यूल मेमोरी में चयनित आईडी द्वारा इसे बचाने के लिए किया जाता है।
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 ();…………………
दिए गए फ़ंक्शन का उपयोग वोटिंग और प्रदर्शन परिणामों के लिए किया जाता है:
शून्य वोट () {lcd.clear (); lcd.print ("कृपया प्लेस"); lcd.setCursor (0,1); lcd.print ("आपका वोट"); digitalWrite (indVote, HIGH); digitalWrite (indFinger, LOW); digitalWrite (बजर, हाई); देरी (500); digitalWrite (बजर, LOW); देरी (1000); जबकि (1) {अगर (digitalRead (sw1) == 0)…………………
चेक पूर्ण संहिता और प्रदर्शन वीडियो के नीचे।