विषयसूची:

Arduino हाई टेक सेफ: 6 कदम
Arduino हाई टेक सेफ: 6 कदम

वीडियो: Arduino हाई टेक सेफ: 6 कदम

वीडियो: Arduino हाई टेक सेफ: 6 कदम
वीडियो: Beyond the Basics: Automatic Gatekeeper With IR Sensor And ChatGPT Generated Arduino Code 2024, जुलाई
Anonim
Arduino हाई टेक सेफ
Arduino हाई टेक सेफ

यह मेरा arduino हाई टेक सेफ है। आपको अपनी उंगली को स्कैन करना होगा, अपना कार्ड स्कैन करना होगा, फिर दराज को अनलॉक करने के लिए 4 अंकों का पासवर्ड दर्ज करना होगा। यह परियोजना शुरुआती लोगों के लिए अनुशंसित नहीं है क्योंकि यह बहुत उन्नत है। कोड लंबा है, लेकिन मैं इसे इस प्रोजेक्ट में साझा करूंगा। यदि आप मेरे जैसी तिजोरी का निर्माण करते हैं तो लागत लगभग $ 75 है। इस प्रोजेक्ट को भी पूरा होने में 1-3 दिन लग सकते हैं। तो चलो शुरू हो जाओ!

आपूर्ति

मेरे जैसी ही तिजोरी बनाने के लिए आपको आवश्यकता होगी:

Arduino (Uno की सिफारिश की गई है क्योंकि मेरे पास arduino mega या nano के लिए चरण नहीं हैं। लेकिन आप अभी भी उनका उपयोग कर सकते हैं)

ब्रेड बोर्ड

इमदादी

जम्पर तार

जोस्टिक

20*4 (आप 16*4 का उपयोग कर सकते हैं, लेकिन आपको कोड बदलना होगा)

अंगुली - छाप परीक्षण यंत्र

mfrc522 आरएफआईडी कार्ड स्कैनर

लेगोस की एक बाल्टी

चरण 1: एक बॉक्स बनाना

एक बॉक्स का निर्माण
एक बॉक्स का निर्माण

सबसे पहले आपको अपने इलेक्ट्रॉनिक्स को अंदर रखने के लिए एक बॉक्स की आवश्यकता होगी। आप लेगो, एक 3 डी प्रिंटेड बॉक्स या कार्डबोर्ड का उपयोग कर सकते हैं! (हालांकि यह कठिन हो सकता है) एक दराज, और अपने इलेक्ट्रॉनिक्स के लिए इसमें छेद करना न भूलें। यदि आप आरएफआईडी कार्ड स्कैनर का उपयोग कर रहे हैं, तो आपको उसके लिए छेद करने की आवश्यकता नहीं है यदि आपकी दीवारें पतली हैं। कार्ड अभी भी काम करते हैं, लेकिन आपको चाबी का गुच्छा बंद रखना होगा ताकि आरएफआईडी कार्ड सेनर उन्हें पढ़ सके। इसके अलावा अपने arduino और तारों के लिए जगह छोड़ दें। नोट: जब आप दराज का निर्माण करते हैं, तो उसमें एक छेद छोड़ दें ताकि आपका सर्वो मोड़ सके और दराज को लॉक कर सके।

चरण 2: वायरिंग अप

वायरिंग अप!
वायरिंग अप!

यह चरण जटिल हो सकता है क्योंकि आपको तारों को सटीक स्थान पर प्लग करने की आवश्यकता है या इलेक्ट्रॉनिक्स काम नहीं करेगा। मेरे पास वायरिंग आरेख नहीं है, लेकिन मैं आपको बताऊंगा कि हर एक जाएगा। वायरिंग केवल arduino uno के लिए है। यदि आप एक आर्डिनो मेगा या नैनो का उपयोग कर रहे हैं तो आपको तारों को लगाना होगा। यदि आप मेरे पास मौजूद सभी इलेक्ट्रॉनिक्स का उपयोग नहीं कर रहे हैं, तो आप बस उस वायरिंग को छोड़ सकते हैं।

फिंगर प्रिंट स्कैनर: ग्रीन वायर: D2 व्हाइट वायर: D3 ब्लैक वायर: GND रेड वायर: 5V

जॉयस्टिक: 5V = 3.3V GND = GND X = A2 Y = A3 स्विच = D4

आरएफआईडी कार्ड स्कैनर: 3.3V = 3.3V rst = D9 GND = GND मिसो = D12 mosi = D11 sck = D13 sda = D10

एलसीडी स्क्रीन: 5V = 5V GND = GND sda = A4 sck = A5

सर्वो: लाल तार: 5V भूरा तार: GND पीला तार: D6

नोट: RFID कार्ड स्कैनर को 5V में प्लग न करें। अगर आप करते हैं, तो यह टूट जाएगा !!!

आप सोच रहे होंगे कि मैंने जॉयस्टिक पावर को 3.3V पर प्लग करने के लिए क्यों कहा जब यह 5V को साइड में कहता है। ऐसा इसलिए है क्योंकि सर्वो, स्क्रीन और फ़िंगरप्रिंट स्कैनर को 5V की आवश्यकता होती है। यदि आप उसमें जॉयस्टिक जोड़ते हैं, तो हो सकता है कि इलेक्ट्रॉनिक्स काम न करें क्योंकि हर चीज में 5V की जरूरत होती है। जॉयस्टिक अभी भी 3.3V के साथ काम करेगा। यह सिर्फ अधिकतम मूल्य 1023 नहीं होगा, यह ~ 670 होगा।

चरण 3: पुस्तकालय डाउनलोड करना

इस परियोजना में, आपको सभी इलेक्ट्रॉनिक्स का उपयोग करने के लिए 6 पुस्तकालयों की आवश्यकता होगी। 1 सर्वो के लिए, 1 फिंगरप्रिंट सेंसर के लिए, 2 आरएफआईडी कार्ड स्कैनर के लिए, और 2 स्क्रीन के लिए। जॉयस्टिक को पुस्तकालय की आवश्यकता नहीं है। अब, पुस्तकालय क्या है? यह मूल रूप से एक फाइल है जिसमें बहुत सारे कोड होते हैं जिनका उपयोग आप अपने प्रोजेक्ट में सरल कमांड के साथ कर सकते हैं। इन पुस्तकालयों को प्राप्त करने के लिए, आपको गिटहब नामक स्थान पर जाना होगा। यदि आप पुस्तकालयों को डाउनलोड और अनज़िप करना जानते हैं, तो डाउनलोड के लिए नीचे दिए गए लिंक पर जाएँ। यदि आप नहीं जानते कि कैसे, आप मेरे निर्देश पर जा सकते हैं जो चरण 3 में एक पुस्तकालय डाउनलोड करने के बारे में बात करता है:

या GitHub से एक arduino लाइब्रेरी डाउनलोड करने के तरीके पर एक youtube वीडियो खोजें

पुस्तकालयों के लिए लिंक:

सर्वो

फिंगरप्रिंट सेंसर:

spi

आरएफआईडी कार्ड सेंसर

स्क्रीन लाइब्रेरी 1

स्क्रीन लाइब्रेरी 2

चरण 4: फ़िंगरप्रिंट सेंसर और आरएफआईडी कार्ड सेंसर सेट करना

यह चरण फिंगरप्रिंट सेंसर और आरएफआईडी कार्ड सेंसर को सेट करने के तरीके के बारे में बात करता है। जब तक आप पहले से ही अपने फ़िंगरप्रिंट सेंसर का उपयोग नहीं कर चुके हैं, तब तक आपको यह दिखाना होगा कि आपका फ़िंगरप्रिंट कैसा दिखता है ताकि वह इसे अपनी मेमोरी में सहेज सके। भले ही आपने इसे पहले इस्तेमाल किया हो, फिर भी आपको शायद यह कदम उठाना चाहिए। मैं आपको बताऊंगा कि इसे संक्षेप में कैसे करना है, लेकिन अगर इसका कोई मतलब नहीं है तो अंतिम चरण में उसी निर्देश योग्य लिंक पर जाएं। यह बहुत अच्छी तरह से चला जाता है। बेसिक जस्ट ओपन arduino ide। फ़ाइल > उदाहरण > एडफ्रूट फ़िंगरप्रिंट सेंसर > नामांकन पर जाएँ। Arduino पर कोड अपलोड करें, सीरियल मॉनिटर खोलें, और इसके द्वारा बताए गए चरणों का पालन करें। जब यह आपको एक नंबर देने के लिए कहता है। 1# टाइप करें।

अब आरएफआईडी कार्ड के लिए, यह कदम बहुत आसान है। arduino ide खोलें। फ़ाइल > उदाहरण > mfrc522 > व्यक्तिगत डेटा पढ़ें पर जाएं। Arduino पर अपलोड करें और सीरियल मॉनिटर खोलें। उस कार्ड या चाबी का गुच्छा स्कैन करें जिसका आप उपयोग करना चाहते हैं जो आपके सेंसर के साथ आया है। फिर यह आपको कुछ जानकारी देगा। कार्ड की आईडी देखें यह 2 अंकों के 4 सेट होंगे। कुछ इस तरह: AB 45 2Y 45 लेकिन आपका कोड अलग होगा। इसे एक कागज के टुकड़े पर लिख लें। आपको बाद में फिर से इसकी आवश्यकता होगी। इस कदम के लिए बस इतना ही।

चरण 5: कोड

यह आप में से अधिकांश के लिए सबसे कठिन कदम होगा, लेकिन यह बहुत आसान है। सबसे पहले कोड को नीचे से arduino ide में कॉपी और पेस्ट करें। दूसरा, 2 अनुभागों को संपादित करें जहां कोड संपादित करें। 1 खंड कार्ड स्कैनर के लिए है, 1 जॉयस्टिक के लिए है। इन चरणों को छोड़ा नहीं जा सकता। एक बार हो जाने के बाद, कोड को arduino पर अपलोड करें!

#include #Fingerprint.h>. शामिल करें

#शामिल

#शामिल

#शामिल

#शामिल

लिक्विड क्रिस्टल_आई2सी एलसीडी (0x27, 2, 1, 0, 4, 5, 6, 7, 3, पॉज़िटिव);

#RST_पिन 9 परिभाषित करें

#SS_पिन 10 परिभाषित करें

एमएफआरसी 522 एमएफआरसी 522 (एसएस_पिन, आरएसटी_पिन);

SoftwareSerial mySerial(2, 3);

Adafruit_Fingerprint उंगली = Adafruit_Fingerprint(&mySerial);

सर्वो सर्वो;

चार d1;

चार d2;

चार d3;

चार d4;

व्यर्थ व्यवस्था(){

सर्वो.अटैच(6);

सर्वो.लिखें(१७०);

LCD.begin(20, 4);

सीरियल.बेगिन (९६००);

जबकि (! सीरियल);

एसपीआई। शुरू ();

mfrc522. PCD_Init ();

देरी(४);

mfrc522. PCD_DumpVersionToSerial ();

देरी (100);

Serial.println ("\ n / n एडफ्रूट फिंगर डिटेक्ट टेस्ट");

उंगली। शुरू (57600);

देरी(५);

अगर (finger.verifyPassword ()) {

Serial.println ("सभी सिस्टम काम कर रहे हैं,");

एलसीडी.क्लियर ();

LCD.setCursor(1, 0);

LCD.print ("कृपया उंगली स्कैन करें");

} अन्यथा {

Serial.println ("त्रुटि: फ़िंगर प्रिंट सेंसर नहीं मिला!");

LCD.setCursor(0, 0);

LCD.print ("त्रुटि: फ़िंगर प्रिंट");

LCD.setCursor(1, 1);

LCD.print ("सेंसर नहीं मिला!");

जबकि (1) {देरी(1); }

}

फिंगर.गेटटेम्पलेटकाउंट ();

Serial.print ("सेंसर में शामिल है"); सीरियल.प्रिंट (फिंगर.टेम्पलेटकाउंट); Serial.println ("टेम्पलेट्स"); Serial.println ("वैध उंगली की प्रतीक्षा कर रहा है …"); }

शून्य (* रीसेटफनक) (शून्य) = 0;

शून्य लूप () {

getFingerprintIDez ();

देरी (50);

}

uint8_t getFingerprintID() {

uint8_t p = फिंगर.गेटइमेज ();

स्विच (पी) {

मामला FINGERPRINT_OK:

Serial.println ("छवि ली गई");

टूटना;

मामला FINGERPRINT_NOFINGER:

Serial.println ("कोई उंगली नहीं मिली");

वापसी पी;

मामला FINGERPRINT_PACKETRECIEVEERR:

Serial.println ("संचार त्रुटि");

वापसी पी;

मामला FINGERPRINT_IMAGEFAIL:

Serial.println ("इमेजिंग त्रुटि");

वापसी पी;

चूक जाना:

Serial.println ("अज्ञात त्रुटि");

वापसी पी;

}

पी = उंगली। इमेज 2 टीजेड ();

स्विच (पी) {

मामला FINGERPRINT_OK:

Serial.println ("छवि परिवर्तित");

टूटना;

मामला FINGERPRINT_IMAGEMESS:

Serial.println ("छवि बहुत गन्दा है");

वापसी पी;

मामला FINGERPRINT_PACKETRECIEVEERR:

Serial.println ("संचार त्रुटि");

वापसी पी;

मामला FINGERPRINT_FEATUREFAIL:

Serial.println ("फिंगरप्रिंट सुविधाओं को नहीं ढूंढ सका");

वापसी पी;

मामला FINGERPRINT_INVALIDIMAGE:

Serial.println ("फिंगरप्रिंट सुविधाओं को नहीं ढूंढ सका");

वापसी पी;

चूक जाना:

Serial.println ("अज्ञात त्रुटि");

वापसी पी;

}

पी = फिंगर।फिंगरफास्टसर्च ();

अगर (पी == FINGERPRINT_OK) {

Serial.println ("एक प्रिंट मैच मिला!");

} और अगर (p == FINGERPRINT_PACKETRECIEVEERR) { Serial.println ("संचार त्रुटि");

वापसी पी;

} और अगर (पी == FINGERPRINT_NOTFOUND) {

Serial.println ("एक मैच नहीं मिला");

वापसी पी;

} अन्यथा {

Serial.println ("अज्ञात त्रुटि");

वापसी पी;

}

Serial.print ("आईडी # मिला"); सीरियल.प्रिंट (फिंगर.फिंगरआईडी);

सीरियल.प्रिंट ("के विश्वास के साथ"); Serial.println (उंगली। आत्मविश्वास);

वापस उंगली.फिंगरआईडी;

}

int getFingerprintIDez () {

uint8_t पी = फिंगर.गेटइमेज ();

अगर (पी! = FINGERPRINT_OK) वापसी -1;

पी = उंगली। इमेज 2 टीजेड ();

अगर (पी! = FINGERPRINT_OK) वापसी -1;

पी = फिंगर।फिंगरफास्टसर्च ();

अगर (पी! = FINGERPRINT_OK) वापसी -1;

Serial.print ("आईडी # मिला"); सीरियल.प्रिंट (फिंगर.फिंगरआईडी);

Serial.print ("के विश्वास के साथ"); Serial.println (उंगली। आत्मविश्वास);

अगर (finger.fingerID == 1){

एलसीडी.क्लियर ();

LCD.setCursor(2, 0);

LCD.print ("फिंगर स्वीकृत,");

LCD.setCursor(2, 0);

LCD.print ("अब कार्ड स्कैन करें …");

LCD.setCursor(0, 3);

एलसीडी.प्रिंट ("====================>");

जबकि (! mfrc522. PICC_IsNewCardPresent ());

जबकि (! mfrc522. PICC_ReadCardSerial ());

अगर (mfrc522.uid.uidByte[0] == 0x92 && //=================== संपादित कोड ======= ==============

mfrc522.uid.uidByte[1] == 0xAB && // उस कागज के टुकड़े को लें जिस पर आईडी है, 2 अंकों के 4 सेट थे

mfrc522.uid.uidByte[2] == 0x90 && // कोड से देखें, देखें कि यह 0x92, 0xAB, 0x90, 0x1c कहां है? प्रत्येक दर्ज करें

mfrc522.uid.uidByte[3] == 0x1C) {//0x के बाद 2 अंकों के खंड का। उदाहरण के लिए, आईडी का अनुभाग कहता है

एलसीडी.क्लियर (); // 3E, फिर 0x3E बनाने के लिए 0x के बाद 3E दर्ज करें। प्रत्येक अनुभाग के लिए ऐसा करें

LCD.setCursor(3, 0);

LCD.print ("अंत में, दर्ज करें");

LCD.setCursor(1, 1);

LCD.print ("जॉयस्टिक पासवर्ड");

जबकि(एनालॉगरीड(ए2)>= 100 &&

एनालॉग रीड (ए 2) <= 670 &&

एनालॉग रीड (A3) >= १०० &&

एनालॉग रीड (ए 3) <= 670) {

}

LCD.setCursor (8, 4);

एलसीडी.प्रिंट ("*"); अगर (एनालॉगरीड (ए 2) <= 100) {

d1 = एल;

}

अगर (एनालॉगरीड (ए 2)> = 670) {

d1 = आर;

}

अगर (एनालॉगरीड (ए 3) <= 100) {

d1 = यू;

}

अगर (एनालॉगरीड (ए 3)> = 670) {

d1 = डी;

}

देरी (500);

जबकि(एनालॉगरीड(ए2)>= 100 &&

एनालॉग रीड (ए 2) <= 670 &&

एनालॉग रीड (A3) >= १०० &&

एनालॉग रीड (ए 3) <= 670) {

}

एलसीडी.प्रिंट ("*");

अगर (एनालॉगरीड (ए 2) <= 100) {

d2 = एल;

}

अगर (एनालॉगरीड (ए 2)> = 670) {

d2 = आर;

}

अगर (एनालॉगरीड (ए 3) <= 100) {

d2 = यू;

}

अगर (एनालॉगरीड (ए 3)> = 670) {

d2 = डी;

}

देरी (500);

जबकि(एनालॉगरीड(ए2)>= 100 &&

एनालॉग रीड (ए 2) <= 670 &&

एनालॉग रीड (A3) >= १०० &&

एनालॉग रीड (ए 3) <= 670) {

}

एलसीडी.प्रिंट ("*");

अगर (एनालॉगरीड (ए 2) <= 100) {

d3 = एल;

}

अगर (एनालॉगरीड (ए 2)> = 670) {

d3 = आर;

}

अगर (एनालॉगरीड (ए 3) <= 100) {

d3 = यू;

}

अगर (एनालॉगरीड (ए 3)> = 670) {

d3 = डी;

}

देरी (500);

जबकि(एनालॉगरीड(ए2)>= 10 &&

एनालॉग रीड (ए 2) <= 670 &&

एनालॉग रीड (A3) >= १०० &&

एनालॉग रीड (ए 3) <= 670) {

}

एलसीडी.प्रिंट ("*");

अगर (एनालॉगरीड (ए 2) <= 100) {

d4 = एल;

}

अगर (एनालॉगरीड (ए 2)> = 670) {

d4 = आर;

}

अगर (एनालॉगरीड (ए 3) <= 100) {

d4 = यू;

}

अगर (एनालॉगरीड (ए 3)> = 670) {

d4 = डी;

}

देरी (500);

if(d1 == L && d2 == U && d3 == L && d4 == R) {//============= संपादित कोड ====== ================

एलसीडी.क्लियर (); // यह खंड है कि आप जॉयस्टिक के साथ पासवर्ड संपादित कर सकते हैं

LCD.setCursor(2, 0); // पासवर्ड बाएँ, ऊपर बाएँ, दाएँ पर सेट है। अगर आप बदलना चाहते हैं

LCD.print ("एक्सेस दी गई!"); // यह, बाएँ के लिए L, दाएँ के लिए R, ऊपर के लिए U, या किसी भी में नीचे के लिए D लगाएँ

LCD.setCursor(2, 1); // 4 खंड == संकेतों के बाद एक पत्र के साथ।

LCD.print ("ड्रावर अनलॉक किया गया।");

LCD.setCursor(2, 2);

LCD.print ("जब हो जाए, आगे बढ़ें");

LCD.setCursor(1, 3);

LCD.print ("जॉयस्टिक टू रिलॉक");

सर्वो.लिखें (९०);

जबकि(एनालॉगरीड(ए2)>= 100 &&

एनालॉग रीड (ए 2) <= 670 &&

एनालॉग रीड (A3) >= १०० &&

एनालॉग रीड (ए 3) <= 670);

सर्वो.लिखें(१७०);

LCD.setCursor(3, 0);

LCD.print ("ड्रावर लॉक");

देरी (3000);

रीसेटफंक ();

}अन्यथा{

एलसीडी.क्लियर ();

LCD.setCursor(2, 0);

LCD.print ("प्रवेश निषेध !!!");

LCD.setCursor(0, 2);

LCD.print ("सिस्टम पुनरारंभ हो रहा है …");

देरी (3000);

रीसेटफंक ();

}

}अन्यथा{

एलसीडी.क्लियर ();

LCD.setCursor(2, 0);

LCD.print ("प्रवेश निषेध !!!");

LCD.setCursor(0, 2);

LCD.print ("सिस्टम पुनरारंभ हो रहा है …");

देरी (3000);

रीसेटफंक ();

}

}अन्यथा{

एलसीडी.क्लियर ();

LCD.setCursor(2, 0);

LCD.print ("प्रवेश निषेध !!!");

LCD.setCursor(0, 2);

LCD.print ("सिस्टम पुनरारंभ हो रहा है …");

देरी (3000);

रीसेटफंक ();

}

वापस उंगली.फिंगरआईडी; }

चरण 6: समाप्त करें

एक बात जो मैं आपको बताना भूल गया, ठीक है 2 चीजें यह है कि मैंने इसे चित्र लेने से पहले बनाया था, इसलिए मैं आपको यह नहीं दिखा सका कि मैंने बॉक्स कैसे बनाया। दूसरा यह है कि सर्वो भाग को उस हिस्से पर पेंच करने की सिफारिश की जाती है जो मुड़ता है। यदि आप ऐसा नहीं करते हैं, तो कोई व्यक्ति दराज के लॉक होने पर उसे खींच सकता है और टुकड़े को खींच सकता है। लेकिन इससे पहले कि आप इसे पेंच करें, सही जगह ढूंढें जहां इसे लगाया जाए क्योंकि सर्वो एक निश्चित डिग्री में बदल जाता है। या आप इसे कोड में बदल सकते हैं। यदि कुछ इलेक्ट्रॉनिक्स मजाकिया अभिनय कर रहे हैं, तो आप उनमें से कुछ के लिए 5V प्राप्त करने का एक अलग तरीका खोजना चाह सकते हैं। मैंने देखा कि जब मेरा फिंगरप्रिंट स्कैनर फ्लैश होता है, तो स्क्रीन इसके साथ थोड़ी फ्लैश होती है, और सर्वो शोर करता है। जब सर्वो चलता था, तो स्क्रीन मंद हो जाती थी। मुझे आशा है कि आपने परियोजना का आनंद लिया! यदि आपके कोई प्रश्न हैं, तो उन्हें टिप्पणियों में छोड़ दें। मैं अनुदेशकों पर बहुत अधिक नहीं हूं, लेकिन मैं उन्हें जल्द से जल्द जवाब दूंगा!

सिफारिश की: