विज्ञापन
आंदोलन का पता लगाएं, फिर एक उच्च पिच अलार्म ध्वनियों और चमकती रोशनी के साथ एक घुसपैठिए से बिल्ली को डरा दें। क्या वह आवाज मजेदार है? बिलकुल यह करता है। यह आज के Arduino प्रोजेक्ट का लक्ष्य है, जो शुरुआती लोगों के लिए उपयुक्त है। हम पूरी तरह से स्क्रैच और परीक्षण से लिख रहे हैं, क्योंकि हम साथ चलते हैं ताकि आप उम्मीद कर सकें कि यह सब कुछ हो सकता है कि मैं केवल पहले से ही बनाई गई किसी चीज को स्थापित करने के बजाय यह कैसे कर रहा हूं।
अस्वीकरण: यह वास्तव में आपके घर की रक्षा करने वाला नहीं है। यह हो सकता है जब वह आपके कमरे में बोलती है तो अपनी बहन को एक बुरा झटका दें।
आपको ज़रूरत होगी:
- एक अरुडुइनो
- अल्ट्रासोनिक "पिंग" सेंसर, मैं उपयोग कर रहा हूं कोर्ट-SR04 एक पीआईआर बेहतर होगा, लेकिन वे महंगे हैं। एक पिंग सेंसर को एक डोरवे में विशेष रूप से रखा जा सकता है और अभी भी उसी मूल काम को पूरा कर सकता है, और यह केवल $ 5 है
- एक पीजो बजर
- एलईडी स्ट्रिप लाइट, उसी वायरिंग के साथ जिसका हमने इस्तेमाल किया इस परियोजना में वापस एक मीडिया सेंटर के लिए अपनी खुद की गतिशील परिवेश प्रकाश व्यवस्था बनाएँयदि आप अपने पीसी या मीडिया सेंटर पर बहुत सारी फिल्में देखते हैं, तो मुझे यकीन है कि आपने लाइटिंग दुविधा का सामना किया है; क्या आप पूरी तरह से सभी लाइट बंद कर देते हैं? क्या आप उन्हें पूर्ण विस्फोट पर रखते हैं? या ... अधिक पढ़ें .
जैसा कि आप इस परियोजना को पूरा कर रहे हैं, हर बार सब कुछ न हटाएं - बस अंतिम ब्लॉक पर निर्माण रखें। जब तक आपको "कोडिंग द अलार्म सिस्टम" अनुभाग प्राप्त होता है, तब तक आपको सभी बिट्स और टुकड़ों को तार-तार कर देना चाहिए, जैसे कुछ देखना:
चमकती रोशनी
वायरिंग आरेख का उपयोग करें इस परियोजना से एक मीडिया सेंटर के लिए अपनी खुद की गतिशील परिवेश प्रकाश व्यवस्था बनाएँयदि आप अपने पीसी या मीडिया सेंटर पर बहुत सारी फिल्में देखते हैं, तो मुझे यकीन है कि आपने लाइटिंग दुविधा का सामना किया है; क्या आप पूरी तरह से सभी लाइट बंद कर देते हैं? क्या आप उन्हें पूर्ण विस्फोट पर रखते हैं? या ... अधिक पढ़ें अपनी एलईडी पट्टी को हुक करने के लिए; जैसे कि हमें PWM आउटपुट की आवश्यकता है, वैसे ही पिन न बदलें। उपयोग यह कोड जल्दी से अपने तारों का परीक्षण करने के लिए। यदि सब ठीक हो जाए, तो आपके पास यह होना चाहिए:
दूरी सेंसर
SR04 मॉड्यूल पर, आपको 4 पिन मिलेंगे। VCC तथा GND क्रमशः 5 वी रेल और जमीन पर जाएं; TRIG पिन का उपयोग सोनार सिग्नल भेजने के लिए किया जाता है, इसे पिन 6 पर रखें; ECHO का उपयोग सिग्नल को पढ़ने के लिए किया जाता है (और इसलिए दूरी की गणना करें) - इसे 7 पर रखें।
चीजों को अविश्वसनीय रूप से सरल बनाने के लिए, एक पुस्तकालय है जिसे हम उपयोग कर सकते हैं NewPing. अपने Arduino में डाउनलोड करें और रखें पुस्तकालय फ़ोल्डर और जारी रखने से पहले आईडीई को पुनरारंभ करें। परीक्षण का उपयोग कर यह कोड; सीरियल मॉनिटर खोलें और सुनिश्चित करें कि गति 115200 बॉड पर सेट है। किसी भी भाग्य के साथ, आपको कुछ दूरी मापनी चाहिए जो आपको एक उच्च गति पर वापस भेजती है। आपको 1 या 2 सेंटीमीटर का विचरण मिल सकता है, लेकिन यह ठीक है। बदलते रीडिंग का निरीक्षण करने के लिए, अपना हाथ सेंसर के सामने चलाने की कोशिश करें, इसे ऊपर और नीचे ले जाएं।
कोड को समझने के लिए काफी होना चाहिए। प्रारंभ में प्रासंगिक पिनों की कुछ घोषणा की गई है, जिसमें अधिकतम दूरी भी शामिल है - इसके अनुसार भिन्न हो सकते हैं आपके पास जो सटीक सेंसर है, लेकिन जब तक आप 1 मीटर से कम रीडिंग लेने में सक्षम हैं, तब तक आपको होना चाहिए ठीक।
इस परीक्षण एप्लिकेशन के पाश में, हम का उपयोग करें पिंग () एक सोनार पिंग को भेजने के लिए फ़ंक्शन, मिलीसेकंड में एक मान वापस पाने में कितना समय लगा जब वापसी के लिए मान लिया गया। इसका बोध कराने के लिए, हम न्यूपिंग लाइब्रेरी का उपयोग निरंतर रूप से करते हैं US_ROUNDTRIP_CM, जो एक सेंटीमीटर जाने के लिए कितने माइक्रोसेकंड को परिभाषित करता है। सेंसर को ओवरलोड करने से बचने के लिए पिंग्स के बीच 50 एमएस की देरी भी है।
पीजो अलार्म
पीजो क्रिस्टल सेंसर एक सरल और सस्ता बजर है, और हम अलग-अलग टोन बनाने के लिए पीडब्लूएम पिन 3 का उपयोग कर सकते हैं। एक तार को पिन 3 से, एक को ग्राउंड रेल से कनेक्ट करें - यह महत्वपूर्ण नहीं है जो
उपयोग यह कोड मापना।
बल्कि अप्रिय और जोर से अलार्म को मारने का एकमात्र तरीका प्लग खींचना है। कोड समझाने के लिए थोड़ा जटिल है, लेकिन इसमें एक विशिष्ट ध्वनि उत्पन्न करने के लिए साइन तरंगों का उपयोग करना शामिल है। अलग-अलग टोन के साथ खेलने के लिए संख्याओं को घुमाएं।
अलार्म सिस्टम कोडिंग
अब जब हमारे पास इस पहेली के सभी टुकड़े हैं, तो उन्हें एक साथ जोड़ दें।
आगे बढ़ो और एक नया स्केच बनाओ, जिसे कहा जाता है अलार्म. अब तक के सभी उदाहरणों और पिन परिभाषाओं को मिलाकर हम परीक्षण के उदाहरणों में शुरू करें।
#शामिल // चुनें कि पीडब्लूएम-सक्षम पिंस का उपयोग किया जाए। #define RED_PIN 10 #define GREEN_PIN 11 #define BLUE_PIN 9 #define TRIGGER_PIN 6 // Arduino पिन अल्ट्रासोनिक सेंसर पर पिन को ट्रिगर करने के लिए बंधा हुआ। #define ECHO_PIN 7 // अल्ट्रासोनिक सेंसर पर इको पिन से बंधा हुआ Arduino पिन। #define MAX_DISTANCE 100 // अधिकतम दूरी जिसे हम (सेंटीमीटर में) पिंग करना चाहते हैं। # अल्पाइन अलार्म 3 फ्लोट सिनवैल; int टोनवैल;
एक मूल लिखने से शुरू करें सेट अप() फ़ंक्शन - हम केवल अब के लिए रोशनी से निपटेंगे मुख्य लूप शुरू होने से पहले मुझे 5 सेकंड की देरी से जोड़ा गया है ताकि जरूरत पड़ने पर हमें बाहर निकलने के लिए कुछ समय मिल सके।
void सेटअप () {// सेट पिनकोड आरजीबी स्ट्रिप पिनकोड (RED_PIN, OUTPUT) के लिए; पिनमोड (BLUE_PIN, OUTPUT); पिनमोड (GREEN_PIN, OUTPUT); // रीसेट लाइट एनालॉगवर्इट (RED_PIN, 0); analogWrite (BLUE_PIN, 0); एनालॉगवर्ट (RED_PIN, 0); देरी (5000); }
आइए एक सहायक फ़ंक्शन का उपयोग करें जो हमें रोशनी के लिए एक एकल आरजीबी मूल्य को जल्दी से लिखने की अनुमति देता है।
// हेल्पर फ़ंक्शन हमें एक कमांड में एक रंग भेजने के लिए सक्षम करता है। शून्य रंग (अहस्ताक्षरित चार लाल, अहस्ताक्षरित चार हरे, अहस्ताक्षरित चार नीले) // रंग पैदा करने का कार्य। {एनालॉगवर्ट (RED_PIN, लाल); analogWrite (BLUE_PIN, नीला); एनालॉगवर्इट (GREEN_PIN, हरा); }
अंत में, अब के लिए हमारा लूप लाल और पीले रंग के बीच एक साधारण रंग फ्लैश से मिलकर जा रहा है (या, जो भी आप चाहते हैं कि आपका अलार्म हो - बस आरजीबी मान बदलें)।
शून्य लूप () {रंग (255,0,0); // लाल देरी (100); रंग (255,255,0); // पीला विलंब (100); }
अपलोड करें और परीक्षण करें कि आप सही रास्ते पर हैं।
अब, डिस्टेंस सेंसर को उन लाइट्स को ट्रिगर करने के लिए इंटीग्रेट करें, जब कोई चीज़ अंदर आती है, तो कहें, 50 सेमी (एक डोर फ्रेम की चौड़ाई से कम)। हमने पहले से ही सही पिनों को परिभाषित किया है और लाइब्रेरी को आयात किया है, इसलिए आपके समक्ष सेट अप() फ़ंक्शन इसे तत्काल करने के लिए निम्न पंक्ति जोड़ें:
न्यूपिंग सोनार (TRIGGER_PIN, ECHO_PIN, MAX_DISTANCE); // पिन और अधिकतम दूरी का न्यूपिंग सेटअप।
इसके विपरीत, अलार्म की स्थिति को ट्रिगर करने के लिए वैरिएबल जोड़ें या नहीं, निश्चित रूप से गलत के लिए डिफ़ॉल्ट।
बूलियन ट्रिगर = गलत;
में एक पंक्ति जोड़ें सेट अप() फ़ंक्शन इसलिए हम सीरियल और डीबग पर आउटपुट की निगरानी कर सकते हैं।
सीरियल.बेगिन (115200); // पिंग परिणाम देखने के लिए 115200 बॉड पर ओपन सीरियल मॉनिटर।
इसके बाद, वर्तमान लूप को फिर से नाम दें अलार्म() - अलार्म के ट्रिप होने पर इसे ही कहा जाएगा।
शून्य अलार्म () {रंग (255,0,0); // लाल देरी (100); रंग (255,255,0); // येल्लो डिले (100); }
अब एक नया बनाएँ पाश () फ़ंक्शन, एक जिसमें हम एक नया पिंग लाते हैं, परिणाम पढ़ते हैं, और मीटर रेंज के भीतर कुछ पता चलने पर अलार्म को ट्रिगर करते हैं।
शून्य पाश () {अगर (ट्रिगर == सच) {अलार्म (); } और {देरी (50); // पिंग्स के बीच 50ms प्रतीक्षा करें (लगभग 20 पिंग्स / सेकंड)। पिंग के बीच 29ms सबसे कम देरी होनी चाहिए। अहस्ताक्षरित int uS = sonar.ping (); // पिंग भेजें, माइक्रोसेकंड (यूएस) में पिंग का समय प्राप्त करें। अहस्ताक्षरित अंतर दूरी = uS / US_ROUNDTRIP_CM; सीरीयल.प्रिंट (दूरी); if (दूरी <100) {ट्रिगर = सत्य; } } }
मुझे कोड को संक्षेप में समझाएं:
- यह देखने के लिए जांचें कि क्या अलार्म चालू हो गया है, और यदि ऐसा है, तो अलार्म फ़ंक्शन को बंद कर दें (बस पल में रोशनी चमकती है)।
- यदि यह अभी तक ट्रिगर नहीं हुआ है, तो सेंसर से वर्तमान रीडिंग प्राप्त करें।
- यदि सेंसर <100 सेमी पढ़ रहा है, तो कुछ ने बीम को पेड कर दिया है (इस मान को समायोजित करें यदि यह आपके लिए बहुत जल्दी शुरू हो रहा है, तो जाहिर है)।
अब इसे ट्रायल रन दें, इससे पहले कि हम कष्टप्रद पीजो बजर को जोड़ते हैं।
काम कर रहे? महान। अब उस बजर को वापस जोड़ दें। जोड़ना pinMode को सेट अप() दिनचर्या।
पिनमोड (ALARM, OUTPUT);
फिर अलार्म में पाईजो बजर लूप जोड़ें () फ़ंक्शन:
के लिए (इंट x = 0; x <180; x ++) {// डिग्रियों को रेडियन में परिवर्तित करें तो sin value sinal प्राप्त करें (sin (x * (3.1412 / 180))); // पाप मूल्य टोनवैल = 2000+ (int (sinVal * 1000)) से एक आवृत्ति उत्पन्न करता है; टोन (अलार्म, टोनवैल); }
यदि आप इस बिंदु पर संकलन करने का प्रयास करते हैं, तो आप एक त्रुटि में चले जा रहे हैं - मैंने इसे जानबूझकर छोड़ दिया है ताकि आप कुछ सामान्य मुद्दों को देख सकें। इस मामले में, न्यूपिंग और मानक टोन लाइब्रेरी दोनों समान व्यवधान का उपयोग करते हैं - वे मूल रूप से परस्पर विरोधी हैं, और इसे ठीक करने के लिए आप बहुत कुछ नहीं कर सकते हैं। हरे बाबा।
हालांकि कोई चिंता नहीं। यह एक आम समस्या है, और किसी के पास पहले से ही एक समाधान है - इसे डाउनलोड करें और जोड़ें NEWTONE अपने Arduino लाइब्रेरी फ़ोल्डर में। इसे शामिल करने के लिए अपने कार्यक्रम की शुरुआत को समायोजित करें:
#शामिल
और लाइन समायोजित करें:
टोन (अलार्म, टोनवैल);
सेवा
न्यूटोन (अलार्म, टोनवैल);
बजाय।
बस। अगली बार के लिए अपने बेडरूम के दरवाजे के दरवाजे पर अपना अलार्म सेट करें।
या, एक डोपी कुत्ता, जो अलार्म से पूरी तरह से हैरान था।
कोड से परेशानी हो रही है? यहाँ है पूरा ऐप. यदि आपको यादृच्छिक त्रुटियां हो रही हैं, तो उन्हें नीचे चिपकाने का प्रयास करें और मैं देख सकता हूं कि क्या मैं मदद कर सकता हूं।
छवि क्रेडिट: फायर अलार्म फ़्लिकर के माध्यम से
जेम्स के पास आर्टिफिशियल इंटेलिजेंस में बीएससी है, और कॉम्पिटिया ए + और नेटवर्क + प्रमाणित है। वह MakeUseOf के प्रमुख डेवलपर हैं, और अपना खाली समय वीआर पेंटबॉल और बोर्डगेम खेलने में बिताते हैं। वह पीसी का निर्माण कर रहा है क्योंकि वह एक बच्चा था।