विषयसूची:

Cryptap: एक ताल आधारित दरवाज़ा बंद: 5 कदम
Cryptap: एक ताल आधारित दरवाज़ा बंद: 5 कदम

वीडियो: Cryptap: एक ताल आधारित दरवाज़ा बंद: 5 कदम

वीडियो: Cryptap: एक ताल आधारित दरवाज़ा बंद: 5 कदम
वीडियो: पुराने ट्यूल को नहीं फेंका और परिवार का बजट अच्छी तरह से बचा लिया! 4 कूल ट्यूल आइडिया! 2024, जुलाई
Anonim
Cryptap: एक ताल आधारित दरवाज़ा बंद
Cryptap: एक ताल आधारित दरवाज़ा बंद
Cryptap: एक ताल आधारित दरवाज़ा बंद
Cryptap: एक ताल आधारित दरवाज़ा बंद
Cryptap: एक ताल आधारित दरवाज़ा बंद
Cryptap: एक ताल आधारित दरवाज़ा बंद

मैंने hackaday.com पर कई डोर-अनलॉकिंग मैकेनिज्म देखे हैं, जिनसे प्रेरित होकर मैंने अपने दम पर एक बनाने का फैसला किया। इसमें दो-बटन इंटरफ़ेस है; एक पासवर्ड सबमिशन शुरू करने और समाप्त करने के लिए, और दूसरा वास्तव में उस लय में टैप करने के लिए जो आपका पासवर्ड है। एक स्टेटस लाइट भी है। पिछले कुछ महीनों में मैंने जिन हिस्सों को मैला किया था, उनका उपयोग करके मैं इसे वास्तव में सस्ते में बनाने में सक्षम था। मुझे केवल माइक्रोकंट्रोलर के लिए भुगतान करना था, जो कि $21 (https://www.pjrc.com/teensy/) था, और कुछ पिक्चर हैंगिंग वायर जो मेरे पास पहले से थे।

स्टार वार्स थीम या मेरे कमरे में प्रवेश करने के लिए कुछ टैप करने में बहुत मज़ा आता है। अब, मुझे अपने आप को फिर से अपने कमरे से बाहर बंद करने के बारे में चिंता करने की ज़रूरत नहीं है! इसके अलावा, यह अच्छा और geeky लगता है।

चरण 1: पुर्जे और उपकरण

पार्ट्स और टूल्स
पार्ट्स और टूल्स
पार्ट्स और टूल्स
पार्ट्स और टूल्स

मैंने टेन्सी को चुना क्योंकि यह मेरा पहला माइक्रोकंट्रोलर है, और मेरे पास अभी तक कोई प्रोग्रामर नहीं है। टेन्सी को मैक/विंडोज/लिनक्स के साथ संगत स्थापित करने के लिए केवल ए-मिनीबी यूएसबी केबल और मुफ्त सॉफ्टवेयर की आवश्यकता होती है। साथ ही, हेक्स फ़ाइल को अपलोड करना वाकई आसान है; बस संकलित करें, और Teensy पर बटन दबाएं।

मेरे लिए इस परियोजना की लागत $ 21 थी, साथ ही पिक्चर-हैंगिंग वायर। सड़क के हिस्से एक कॉफी पेरकोलेटर (रिले, एलईडी, कैपेसिटर) और एक राउटर (एलईडी, मॉड्यूलर जैक, पावर जैक, कैपेसिटर) से आए थे। नि: शुल्क नमूने 7805 5-वोल्ट नियामक, बटन और स्विच थे। मुझे अपने ईई लैब में "टूटे हुए हिस्से" बॉक्स में बहुत सारी चीज़ें मिलीं: केला कनेक्टर और केबल, तार, sn754410 ड्राइवर, चार-पिन हेडर और प्रतिरोधक। मेरे पास एक अतिरिक्त लैपटॉप चार्जर पड़ा था जिसका उपयोग मैं बिजली के लिए करता था, और एक Apple मॉडेम केबल जिसका टैब टूट गया था। अन्य हार्डवेयर: एक दीवार प्लेट। मैंने एक हॉट ग्लू गन, एक सोल्डरिंग आयरन, एक सुई फाइल और एक पावर ड्रिल का इस्तेमाल किया, जो काफी मानक हैं। मैंने जो सबसे असामान्य चीज इस्तेमाल की वह एक लंबा, लचीला धरनेवाला उपकरण था।

चरण 2: पहले से मौजूद हार्डवेयर

पहले से मौजूद हार्डवेयर
पहले से मौजूद हार्डवेयर
पहले से मौजूद हार्डवेयर
पहले से मौजूद हार्डवेयर
पहले से मौजूद हार्डवेयर
पहले से मौजूद हार्डवेयर
पहले से मौजूद हार्डवेयर
पहले से मौजूद हार्डवेयर

मैं बहुत भाग्यशाली था कि पहले से ही इतना स्थापित था। मेरा कमरा एडीए-सुलभ है, और विभिन्न पाइप, बिजली के बक्से और एक बिजली के दरवाजे की हड़ताल पहले से ही स्थापित थी। जिज्ञासावश डोर स्ट्राइक हटाने पर मैंने पाया कि वह जुड़ा नहीं था। मेरे कमरे के अंदर दरवाजे की हड़ताल से एक खाली दीवार प्लेट तक एक पाइप था, और वहां से एक और पाइप बाहर एक खाली दीवार प्लेट में था।

दरवाजे की हड़ताल कहती है कि इसे संचालित करने के लिए 24V@3A की आवश्यकता है, लेकिन मेरे पास 19V, 7.9A बिजली की आपूर्ति के साथ मैं प्राप्त करने में सक्षम था। दरवाजे की हड़ताल ध्रुवीकृत थी, इसलिए सुनिश्चित करें कि आपके पास ध्रुवीयता सही है!

चरण 3: सर्किट

सर्किट
सर्किट
सर्किट
सर्किट
सर्किट
सर्किट
सर्किट
सर्किट

दरवाजे की हड़ताल को नियंत्रित करने के लिए, मैंने कॉफी परकोलेटर में मिली रिले का इस्तेमाल किया। इस रिले को इसे चलाने के लिए 5V से अधिक TTL की आवश्यकता थी, इसलिए sn754410 का उपयोग TTL को 19V में अनुवाद करने के लिए किया गया, जिसने रिले को चलाया। Sn754410 वास्तव में एक क्वाड हाफ-एच ड्राइवर है, इसलिए मैं चिप का 3/4 हिस्सा बर्बाद कर रहा था, लेकिन मेरे पास कोई पावर ट्रांजिस्टर नहीं था, इसलिए मैंने यही इस्तेमाल किया।

Sn754410 चिप में दो VCC पिन हैं, एक 5V के लिए, दूसरा जो भी वोल्टेज आप बाहर आना चाहते हैं, जो मेरे लिए 19V था। यह वास्तव में बहुत अच्छी चिप है। आप इसका उपयोग मोटर्स और रिले को सीधे चलाने के लिए कर सकते हैं, क्योंकि यह 1A प्रति तिमाही चिप स्विच कर सकता है और इसमें अंतर्निहित सुरक्षा डायोड हैं। डेटाशीट पर एक नज़र डालें। अपने सर्किट में, मैंने sn754410 को सीधे अपने टेन्सी के आउटपुट पिन से जोड़ा। बटन सक्रिय-निम्न के रूप में जुड़े हुए हैं, जो माइक्रोकंट्रोलर के लिए बहुत आम है। वे सीधे टेनेसी से जुड़े हुए हैं, जिसका अर्थ है कि मुझे सॉफ्टवेयर में डिबगिंग करना है। स्थिति प्रकाश एक 1K ओम रोकनेवाला के माध्यम से Teensy से जुड़ा है; कुछ भी खास नहीं। सर्किट कैपेसिटर के बिना काम करता था, लेकिन मैंने उन्हें वैसे भी बस मामले में डाल दिया। 19V और 5V दोनों पावर रेल पर जमीन पर सुरक्षा कैप हैं। टेनेसी की प्रोग्रामिंग करते समय, 5V USB से आया था, लेकिन जब यह अपने आप चल रहा होता है, तो पावर लैपटॉप पावर ब्रिक से आती है। जब मैंने 7805 नियामक को सीधे 19V से जोड़ा, तो यह वास्तव में गर्म हो गया, इसलिए मैंने इनपुट वोल्टेज और करंट को नियामक तक सीमित करने के लिए प्रतिरोधों के एक नेटवर्क में डाल दिया। यह एक कीचड़ था, लेकिन अब सब कुछ एक प्रबंधनीय तापमान पर है।

चरण 4: इसे एक साथ तार करना

इसे एक साथ तारों
इसे एक साथ तारों
इसे एक साथ तारों
इसे एक साथ तारों

Teensy कोई समस्या नहीं थी। यह पिन के साथ आता है, जिससे आप इसे सीधे ब्रेडबोर्ड में प्लग कर सकते हैं।

मैंने लैब के टूटे हिस्से बॉक्स से लाल (+) और काले (-) केले केबल्स के साथ तारों को रंग-कोड करने का फैसला किया। उनके तारों से कुछ प्लग कटे हुए थे, इसलिए मैंने सोल्डर पॉइंट को बेनकाब करने के लिए कुछ प्लास्टिक को हटा दिया। मुझे वास्तव में पसंद है कि कैसे लैब केले के प्लग एक दूसरे में प्लग कर सकते हैं। मैंने ऐप्पल के फोन केबल का इस्तेमाल कमरे के बाहर बटन और स्टेटस लाइट को टेन्सी के अंदर से जोड़ने के लिए किया। चूंकि एक तरफ टूट गया था, मैंने उस छोर को काट दिया और चार-पिन हेडर में मिलाप किया, इसे गर्म गोंद से सील कर दिया। यह मेरे ब्रेडबोर्ड में अच्छी तरह से प्लग हो गया। जिस तरफ मैंने प्लग छोड़ा था वह राउटर से बचाए गए मॉड्यूलर जैक में चला गया। सभी चार तारों का उपयोग किया गया था (जीएनडी, स्टेटस लाइट, स्टार्ट / स्टॉप बटन, कोड बटन)। यदि आपने ध्यान नहीं दिया है, तो मुझे प्लग और कनेक्टर पसंद हैं। पावर जैक से जुड़ा पावर ब्रिक जिसे मैंने राउटर से स्वाइप किया था। लचीली ग्रैबर चीज़ के कारण, दीवार के पाइप के माध्यम से तारों को फैलाना बहुत मुश्किल नहीं था। इसने वास्तव में मेरा दिन बचा लिया।

चरण 5: कोड

कोड
कोड
कोड
कोड

मैंने अपना कोड टिप्पणी करने का प्रयास किया है। ध्यान रखें कि यह 1.0 सॉफ्टवेयर है, जिसका अर्थ है कि यह बग-मुक्त नहीं है। ## ऑपरेशन ## 1. यह संकेत देने के लिए स्टार्ट/स्टॉप बटन दबाएं कि आप कोड इनपुट शुरू करने के लिए तैयार हैं। स्थिति प्रकाश धीरे-धीरे चमकने लगता है। 2. कोड बटन पर अपने कोड में टैप करें। स्थिति प्रकाश 120 बीपीएम पर झपकाएगा, इसलिए यदि आप चाहें तो इसे अपने मेट्रोनोम के रूप में उपयोग कर सकते हैं। हालाँकि, क्रिप्टैप प्रोग्राम आनुपातिक रूप से एक दूसरे के सापेक्ष नाड़ी की लंबाई को मापेगा, इसलिए आप अपने स्वयं के टेम्पो का भी उपयोग कर सकते हैं। बस सुनिश्चित करें कि आप काफी सटीक हैं! 3. जब कोड इनपुट हो जाए, तो स्टार्ट/स्टॉप बटन को फिर से दबाएं। कार्यक्रम तब तय करेगा कि आपको अंदर जाने देना है या नहीं। चूंकि मनुष्य बहुत सटीक समय रखने वाले नहीं हैं (आपका वास्तव में नहीं है), मैंने सहिष्णुता अनुपात +/- 30% पर सेट किया है। इसका मतलब है कि बीट की लंबाई उस राशि से गलत हो सकती है, और फिर भी मस्टर पास कर सकती है। यह काफी समान धुनों के बीच अंतर बताने के लिए पर्याप्त है। डबल और ट्रिपल-लेंथ बीट्स के बीच हार्ड-टू-पहुंच ओवरलैप की एक छोटी राशि है, लेकिन कोड को तोड़ना अभी भी बहुत कठिन है। दरवाजे को अनलॉक करने के लिए, बीट्स एक दूसरे के लिए सही अनुपात में होनी चाहिए (+/- सहिष्णुता अनुपात), और बीट्स की संख्या सही होनी चाहिए। यदि कोई अमान्य पासवर्ड दर्ज किया जाता है, तो प्रोग्राम किसी भी उपयोगकर्ता इनपुट को अनदेखा करते हुए कुछ सेकंड के लिए प्रतीक्षा करता है। यह स्टेटस लाइट को भी जल्दी से फ्लैश करेगा। यदि सही कोड दर्ज किया गया है, तो स्थिति प्रकाश स्थिर रूप से चालू हो जाएगा और दरवाजा 8 सेकंड के लिए अनलॉक हो जाएगा। ## उपयोगकर्ता कॉन्फ़िगरेशन ## कुंजी को इस तरह से एक सरणी में संग्रहीत किया जाता है: # कुंजी लम्बाई 5 const int कुंजी परिभाषित करें = { 2, 1, 3, 3, 3}; // "आपको जन्मदिन मुबारक हो" सरणी बीट्स के बीच होने वाले समय की मात्रा को संग्रहीत करती है। इसलिए यदि आपके पासवर्ड में "हैप्पी बर्थडे टू यू" जैसे छह नोट हैं, तो एरे में पांच तत्व होने चाहिए। यदि आपका पासवर्ड वास्तव में लंबा है और इसमें 16 से अधिक बीट्स हैं, (वास्तव में कठिन, मैं इसकी अनुशंसा नहीं करता), तो आपको इस पंक्ति में परिभाषित संख्या बढ़ानी होगी: #define inputCodeLength 16## बाकी कोड # # मैं इंटरप्ट के बारे में उत्सुक था, इसलिए मेरे पास मेरे बटन ट्रिगर इंटरप्ट थे। इन व्यवधानों का उपयोग करना आसान बनाने के लिए, मैंने अपने इंटरप्ट हैंडलर को कुछ फ़ंक्शन पॉइंटर्स की जांच करने के लिए कहा था। यदि सूचक NULL पर सेट नहीं है, तो वह जिस फ़ंक्शन को इंगित करता है उसे लागू किया जाता है। ये cryptap.c के अंदर विभिन्न "मोड-सेटिंग" फ़ंक्शन के साथ सेट किए गए हैं। मैंने इनपुट दालों की अधिकतम संख्या निर्धारित करके बफर ओवरफ्लो से बचने का प्रयास किया। यदि दालों की अधिकतम संख्या इनपुट है, तो प्रोग्राम तुरंत पासवर्ड विश्लेषण शुरू करता है और यह तय करता है कि दरवाजे को अनलॉक करना है या नहीं। मुझे उम्मीद है कि कोड में मेरी टिप्पणियां मदद करेंगी। ## बग्स ## मैंने यूएसबी डिबगिंग कोड को हटाने की कोशिश की, लेकिन अगर मैं करता हूं तो कोड काम नहीं करेगा। इसलिए, मैंने usb_init () और विभिन्न प्रिंट () स्टेटमेंट्स को छोड़ दिया। मैं इसकी सराहना करता हूं अगर कोई उन्हें हटा सकता है और अभी भी कार्यक्रम काम कर रहा है। इससे भी बेहतर अगर वे समझा सकते हैं कि यह मेरे लिए काम क्यों नहीं करता। प्रोग्राम किए जाने के तुरंत बाद, टेन्सी कभी-कभी कोड इनपुट स्वीकार नहीं करता है। इसे हल करने के लिए, सर्किट को पावर-साइकिल करें।

सिफारिश की: