- प्रयुक्त घटक:
- कार्य स्पष्टीकरण:
- सर्किट विवरण:
- रास्पबेरी पाई में वायरिंगपाइ लाइब्रेरी स्थापित करना:
- प्रोग्रामिंग स्पष्टीकरण:
हमने पहले अपनी कई RFID परियोजनाओं में RFID का उपयोग किया है और पहले से ही 8051 का उपयोग करके RFID आधारित उपस्थिति प्रणाली का निर्माण किया है, यहाँ हम रास्पबेरी पाई का उपयोग करके RFID आधारित उपस्थिति प्रणाली का निर्माण करने जा रहे हैं ।
इस में आरएफआईडी आधारित उपस्थिति प्रणाली परियोजना, तो हम आपको बताएंगे कि हम कैसे को अधिकृत और आरएफआईडी कार्ड का उपयोग करके स्वचालित रूप से उपस्थिति भरोसा कर सकते हैं। आरएफआईडी प्रौद्योगिकी (रेडियो फ्रीक्वेंसी आइडेंटिफिकेशन एंड डिटेक्शन) का उपयोग आमतौर पर स्कूलों, कॉलेजों, कार्यालयों और स्टेशनों में विभिन्न प्रयोजनों के लिए स्वचालित रूप से लोगों का ध्यान रखने के लिए किया जाता है। यहां हम RFID का उपयोग करके किसी अधिकृत व्यक्ति की उपस्थिति की गणना करेंगे।
यदि आप रास्पबेरी पाई से परिचित नहीं हैं, तो हमने ट्यूटोरियल और रास्पबेरी पाई परियोजनाओं की एक श्रृंखला बनाई है, सभी बुनियादी घटकों और कुछ सरल परियोजनाओं के साथ इंटरफेसिंग के साथ शुरू करने के लिए जांच करते हैं।
प्रयुक्त घटक:
- रास्पबेरी पाई (बूट एसडी कार्ड के साथ)
- बटन दबाओ
- बजर
- 16x2 एलसीडी
- 10k पॉट
- 10 के रेसिस्टर
- एलईडी
- 1k रेसिस्टर
- ब्रेड बोर्ड
- आरएफआईडी रीडर
- पावर 5 वोल्ट
- आरएफआईडी टैग या कार्ड
- ईथरनेट केबल
- तारों को जोड़ना
आरएफआईडी रीडर और टैग:
RFID एक इलेक्ट्रॉनिक्स उपकरण है जिसके दो भाग हैं - एक RFID रीडर है और दूसरा RFID टैग या कार्ड है। जब हम RFID टैग को RFID रीडर के पास रखते हैं, तो यह टैग डेटा को क्रमिक रूप से पढ़ता है। RFID टैग में एक कॉइल में 12 अंकों का वर्ण कोड होता है। यह आरएफआईडी 9600 बीपीएस की बॉड दर पर काम कर रहा है। आरएफआईडी रीडर से टैग या टैग से डेटा को स्थानांतरित करने के लिए इलेक्ट्रोमैग्नेट का उपयोग करता है।
कार्य स्पष्टीकरण:
यहां रास्पबेरी पाई 3 इस परियोजना की पूरी प्रक्रिया को नियंत्रित कर रही है (उपयोगकर्ता किसी भी रास्पबेरी पाई बोर्ड का उपयोग कर सकता है)। आरएफआईडी रीडर आरएफआईडी कार्ड आईडी को पढ़ता है , यह डेटा रास्पबेरी पाई द्वारा यूएआरटी के माध्यम से प्राप्त किया जाता है, फिर आरपीआई कार्ड को मान्य करता है और एलसीडी स्क्रीन पर परिणाम दिखाता है।
जब एक व्यक्ति अपने आरएफआईडी टैग को स्कैन करने के लिए आरएफआईडी रीडर के पास रखता है, तो आरएफआईडी टैग के डेटा को पढ़ता है और इसे रास्पबेरी पाई को भेजता है। फिर रास्पबेरी पाई उस आरएफआईडी टैग की विशिष्ट पहचान संख्या को पढ़ती है और फिर इस डेटा की पूर्वनिर्धारित डेटा या जानकारी के साथ तुलना करती है। यदि डेटा पूर्वनिर्धारित डेटा के साथ मेल खाता है, तो रास्पबेरी पाई टैग के व्यक्ति की उपस्थिति को एक-एक करके बढ़ाती है और यदि मिलान नहीं किया जाता है, तो माइक्रोकंट्रोलर एलसीडी और बजर पर 'अमान्य कार्ड' संदेश दिखाता है जो कुछ समय से लगातार रो रहा है। और यहाँ हमने कुल संख्या को देखने के लिए एक पुश बटन भी जोड़ा है। सभी छात्रों की उपस्थिति। यहाँ हमने 4 RFID टैग लिए हैं जिसमें तीन का उपयोग तीन छात्रों की उपस्थिति को रिकॉर्ड करने के लिए किया जाता है और एक का उपयोग अमान्य कार्ड के रूप में किया जाता है।
सर्किट विवरण:
इस रास्पबेरी पाई अटेंडेंस सिस्टम प्रोजेक्ट के लिए सर्किट आरेख बहुत सरल है, जिसमें रास्पबेरी पाई 3, आरएफआईडी रीडर, आरएफआईडी टैग, बजर, एलईडी और एलसीडी शामिल हैं। यहां रास्पबेरी पाई रीडर से आने वाले डेटा को पढ़ना, पूर्वनिर्धारित डेटा के साथ डेटा की तुलना, बज़र ड्राइविंग, स्टेटस एलईडी ड्राइविंग और एलसीडी डिस्प्ले को स्थिति भेजने जैसी पूरी प्रक्रिया को नियंत्रित करती है । RFID रीडर का उपयोग RFID टैग पढ़ने के लिए किया जाता है। बजर का उपयोग संकेतों के लिए किया जाता है और इनबिल्ट एनपीएन ट्रांजिस्टर द्वारा संचालित होता है। एलसीडी का उपयोग स्थिति या उस पर संदेश प्रदर्शित करने के लिए किया जाता है।
कनेक्शन सरल हैं। एलसीडी 4-बिट मोड में रास्पबेरी पाई के साथ जुड़ा हुआ है। LCD का RS, RW, और EN पिन सीधे तारों के GPIO 11, gnd और 10. से जुड़ा होता है और डेटा पिन wiringPi GPIO 6, 5, 4 और 1. से जुड़ा होता है। LCD के विपरीत या चमक को सेट करने के लिए 10K पॉट का उपयोग किया जाता है। Buzzer जमीन के संबंध में wiringPi GPIO पिन 7 से जुड़ा है। तीन एलईडी संबंधित आरएफआईडी कार्ड के साथ छात्र संकेत के लिए जुड़े हुए हैं। और एक एलईडी का उपयोग यह दिखाने के लिए किया जाता है कि सिस्टम RFID कार्ड को स्कैन करने के लिए तैयार है। अटेंडेंस काउंट को प्रदर्शित करने के लिए एक पुश बटन वायरिंगपीआई GPIO पिन 12 पर भी जुड़ा हुआ है। RFID रीडर UART पिन (वायरिंग GPIO पिन 16) से जुड़ा है।
रास्पबेरी पाई में वायरिंगपाइ लाइब्रेरी स्थापित करना:
जैसे पायथन में हम रास्पबेरी पाई के GPIO पिन का उपयोग करने के लिए IO हेडर फ़ाइल के रूप में RPI.GPIO आयात करते हैं, यहाँ C भाषा में हमें अपने C प्रोग्राम में GPIO पिन का उपयोग करने के लिए wiringPi लाइब्रेरी का उपयोग करने की आवश्यकता है । हम इसे एक-एक करके नीचे कमांड का उपयोग करके स्थापित कर सकते हैं, आप इस कमांड को टर्मिनल से या कुछ एसएसएच क्लाइंट जैसे पुट्टी (यदि आप विंडोज का उपयोग कर रहे हैं) से चला सकते हैं। रास्पबेरी पाई को संभालने के बारे में अधिक जानने के लिए रास्पबेरी पाई ट्यूटोरियल के साथ शुरू होने वाले हमारे माध्यम से जाएं।
sudo apt-get install git-core sudo apt-get update sudo apt-get upgrade git क्लोन क्लोन git: //git.drogon.net/wiringPi cd wiringPi git पुल ओरिजिन सीडी सीडी wPPi//build
वायरिंगपाइ लाइब्रेरी की स्थापना का परीक्षण करें, नीचे दिए गए कमांड का उपयोग करें:
gpio -v gpio readall
प्रोग्रामिंग स्पष्टीकरण:
अब पहले हमने कुछ पुस्तकालयों को शामिल किया है और उन पिनों को परिभाषित किया है जिन्हें हमें इस कोड में उपयोग करने की आवश्यकता है।
#शामिल
इसके बाद, गणना और स्टोर वैल्यू और स्ट्रिंग्स के लिए कुछ चर और सरणी को परिभाषित करें।
int सपा; int count1 = 0, count2 = 0, count3 = 0; char ch; char rfid; int i = 0; char अस्थायी;
फिर पूरी प्रक्रिया को निष्पादित करने के लिए कार्य लिखे गए हैं। उनमें से कुछ नीचे दिए गए हैं:
यह देखते हुए कि एलसीडी को कमांड भेजने के लिए vcd lcdcmd फ़ंक्शन का उपयोग किया जाता है
शून्य lcdcmd (अहस्ताक्षरित int ch) {int temp = 0x80; digitalWrite (D4, अस्थायी और ch << 3); digitalWrite (D5, अस्थायी और ch << 2); digitalWrite (D6, अस्थायी और ch << 1); digitalWrite (D7, अस्थायी और ch); digitalWrite (RS, LOW); digitalWrite (EN, HIGH);…………….
यह देखते हुए शून्य लिखने समारोह एलसीडी को डाटा भेजने के लिए प्रयोग किया जाता है।
void लिखना (अहस्ताक्षरित int ch) {int temp = 0x80; digitalWrite (D4, अस्थायी और ch << 3); digitalWrite (D5, अस्थायी और ch << 2); digitalWrite (D6, अस्थायी और ch << 1); digitalWrite (D7, अस्थायी और ch); digitalWrite (RS, HIGH); digitalWrite (EN, HIGH);…………….
यह देखते हुए शून्य स्पष्ट () समारोह एलसीडी स्पष्ट करने के लिए प्रयोग किया जाता है, शून्य setCursor सेट कर्सर की स्थिति और करने के लिए प्रयोग किया जाता है शून्य प्रिंट एलसीडी करने के लिए स्ट्रिंग भेजने के लिए।
शून्य स्पष्ट () {lcdcmd (0x01); } void setCursor (int x, int y) {int set = 0; अगर (y == 0) सेट = 128 + x; if (y == 1) सेट = 192 + x; lcdcmd (सेट); } शून्य प्रिंट (चार * str) {जबकि (* str) {लिखना (* str); str ++; }}
4-बिट मोड में LCD को इनिशियलाइज़ करने के लिए void start फंक्शन का उपयोग किया जाता है।
शून्य प्रारंभ (इंट x, इंट y) {lcdcmd (0x02); lcdcmd (0x28); lcdcmd (0x06); lcdcmd (0x0e); lcdcmd (0x01); }
शून्य बजर () और शून्य प्रतीक्षा () फ़ंक्शन का उपयोग बजर को बीप करने और फिर से कार्ड रखने के लिए प्रतीक्षा करने के लिए किया जाता है। फंक्शन void serialbegin का उपयोग धारावाहिक संचार को आरंभ करने के लिए किया जाता है।
शून्य बजर () {डिजिटलवाइट (बज़, हाई); देरी (1000); digitalWrite (buzz, LOW); } शून्य प्रतीक्षा () {digitalWrite (led5, LOW); देरी (3000); } शून्य सीरियलबेगिन (int बॉड) {if ((sp = serialOpen ("/ dev / ttyS0", बॉड)) <0) {स्पष्ट (); प्रिंट ("खोलने में असमर्थ"); setCursor (0,1); प्रिंट ("सीरियल पोर्ट"); }}
में शून्य सेटअप () समारोह हम सभी GPIOs, एलसीडी और धारावाहिक UART initiaze।
शून्य सेटअप () {if (wiringPiSetup () == -1) {स्पष्ट (); प्रिंट ("शुरू करने में असमर्थ"); setCursor (0,1); प्रिंट ("वायरिंगपीआई"); } पिनमोड (led1, OUTPUT); पिनमोड (led2, OUTPUT);…………………..
शून्य get_card को देखते हुए ( आरएफआईडी रीडर से डेटा प्राप्त करने के लिए फ़ंक्शन का उपयोग किया जाता है।
में शून्य मुख्य () समारोह, हम एलसीडी पर कुछ संदेश से पता चला है और कोड नीचे के साथ कार्ड मान्य करने के लिए पूर्वनिर्धारित डेटा के साथ टैग डेटा की तुलना में है।
……………… अगर (strncmp (rfid, "0900711B6003", 12) == 0) {count1 ++; स्पष्ट(); प्रिंट ("Attd। पंजीकृत"); setCursor (0,1); प्रिंट ("स्टडनेट 1"); digitalWrite (led1, HIGH); बजर (); digitalWrite (led1, LOW); रुको(); } और अगर (strncmp (rfid, "090070FE6EE9", 12) == 0) {2} 2+; स्पष्ट(); प्रिंट ("Attd। पंजीकृत"); setCursor (0,1);………………
अंत में बटन चेक पर कुल उपस्थिति दिखाने के लिए void check_button () फ़ंक्शन का उपयोग किया जाता है।
void check_button () {if (digitalRead (in1) == 0) {digitalWrite (led5, LOW); स्पष्ट(); setCursor (0,0); प्रिंट ("std1 std2 std3");…………….
नीचे इस रास्पबेरी पाई उपस्थिति प्रणाली के लिए पूर्ण कोड की जाँच करें।