विषयसूची:

NexArdu: रोशनी स्मार्ट नियंत्रण: 5 कदम
NexArdu: रोशनी स्मार्ट नियंत्रण: 5 कदम

वीडियो: NexArdu: रोशनी स्मार्ट नियंत्रण: 5 कदम

वीडियो: NexArdu: रोशनी स्मार्ट नियंत्रण: 5 कदम
वीडियो: What is Cluster Development Scheme | Government Schemes & Subsidies | Business Pathshala 2024, जुलाई
Anonim
NexArdu: रोशनी स्मार्ट नियंत्रण
NexArdu: रोशनी स्मार्ट नियंत्रण

अद्यतन

यदि गृह सहायक का उपयोग करके समान कार्यक्षमता विकसित की है। गृह सहायक संभावनाओं की एक विशाल श्रृंखला प्रदान करता है। आप यहां विकास पा सकते हैं।

433.92 मेगाहर्ट्ज (उर्फ 433 मेगाहर्ट्ज) वायरलेस एक्स 10 जैसे उपकरणों के माध्यम से घर की रोशनी को स्मार्ट तरीके से नियंत्रित करने के लिए एक स्केच, उदा। नेक्सा।

पृष्ठभूमि

जब सजावटी रोशनी की बात आती है, तो यह मेरे लिए किसी भी तरह से थका देने वाला रहा है कि हर दूसरे या तीसरे सप्ताह में मुझे सीईटी के संबंध में सौर घंटे की शिफ्टिंग के कारण रोशनी को चालू करने वाले टाइमर को फिर से बदलना पड़ा। उसी समय, कुछ रातें हम दूसरे की तुलना में पहले सो जाते हैं। इस वजह से, कभी-कभी रोशनी या तो "बहुत देर से" या "बहुत जल्दी" बंद हो जाती है। उपरोक्त ने मुझे सोचने के लिए चुनौती दी: मैं चाहता हूं कि सजावटी रोशनी हमेशा परिवेश प्रकाश के समान स्तर पर स्विच करे और फिर निश्चित समय पर बंद हो जाए, इस पर निर्भर करता है कि हम जाग रहे हैं या नहीं।

उद्देश्य

यह निर्देश योग्य वायरलेस नियंत्रित उपकरणों की संभावनाओं का फायदा उठाता है जैसे सिस्टम नेक्सा 433.92 मेगाहर्ट्ज आवृत्ति पर काम कर रहा है। यहां हम फीचर करने जा रहे हैं:

  1. स्वचालित रोशनी नियंत्रण
  2. वेब नियंत्रण

वेब नियंत्रण। आंतरिक बनाम बाहरी वेब सर्वर

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

सामग्री के बिल

इस स्केच द्वारा दी गई संभावनाओं का पूरा लाभ उठाने के लिए, आपको चाहिए:

  1. एक Arduino Uno (R3 पर परीक्षण किया गया)
  2. एक Arduino ईथरनेट शील्ड
  3. 433.92 मेगाहर्ट्ज पर एक नेक्सा सेट या इसी तरह का संचालन
  4. एक पीआईआर (निष्क्रिय इन्फ्रारेड) सेंसर 433.92 मेगाहर्ट्ज पर काम कर रहा है
  5. एक 10KOhms रोकनेवाला
  6. एक एलडीआर
  7. एक RTC DS3231 (केवल बाहरी सर्वर संस्करण)
  8. एक 433.92 मेगाहर्ट्ज ट्रांसमीटर: XY-FST
  9. एक 433.92 मेगाहर्ट्ज रिसीवर: एमएक्स-जेएस-05 वी

न्यूनतम अनुशंसित है:

  1. एक Arduino Uno (R3 पर परीक्षण किया गया)
  2. 433.92 मेगाहर्ट्ज पर एक नेक्सा सेट या इसी तरह का संचालन
  3. एक 10KOhms रोकनेवाला
  4. एक एलडीआर
  5. एक 433.92 मेगाहर्ट्ज ट्रांसमीटर: XY-FST

(ईथरनेट शील्ड की चूक के लिए इस निर्देश के भीतर प्रदान नहीं किए गए स्केच के संशोधन की आवश्यकता होती है)

नेक्सा लॉजिक। एक संक्षिप्त विवरण

नेक्सा रिसीवर रिमोट कंट्रोल आईडी और बटन आईडी सीखता है। दूसरे शब्दों में, प्रत्येक रिमोट का अपना प्रेषक नंबर होता है और ऑन/ऑफ बटन के प्रत्येक जोड़े की अपनी बटन आईडी होती है। प्राप्तकर्ता को उन कोडों को सीखना होगा। कुछ नेक्सा दस्तावेज़ बताते हैं कि एक रिसीवर को छह रिमोट तक जोड़ा जा सकता है। नेक्सा पैरामीटर:

  • प्रेषक आईडी: रिमोट कंट्रोल की आईडी
  • ButtonID: बटन-जोड़ी संख्या (चालू/बंद)। यह नंबर 0. से शुरू होता है
  • समूह: हाँ/नहीं (उर्फ "ऑल ऑफ/ऑन" बटन)
  • कमांड: ऑन / ऑफ

निर्देश योग्य कदम। ध्यान दें

यहां वर्णित विभिन्न चरण उद्देश्य को प्राप्त करने के तरीके पर दो अलग-अलग स्वाद प्रदान करना है। अपनी सुविधानुसार एक को चुनने के लिए स्वतंत्र महसूस करें। यहाँ सूचकांक है:

चरण # 1: सर्किट

चरण # 2: आंतरिक वेब सर्वर के साथ नेक्सार्डु (एनटीपी की विशेषता)

चरण # 3: बाहरी सर्वर के साथ नेक्सार्डु

चरण # 4: मूल्यवान जानकारी

चरण 1: सर्किट …

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

चित्र में दिखाए अनुसार विविध घटकों को तार दें।

Arduino पिन#8 से RX (रिसीवर) मॉड्यूल पर डेटा पिन करने के लिएArduino पिन#2 से RX (रिसीवर) मॉड्यूल पर डेटा पिन को Arduino पिन#7 से TX (प्रेषक) मॉड्यूल पर डेटा पिन करने के लिएArduino पिन A0 से LDR

आरटीसी विन्यास। केवल बाहरी सर्वर कॉन्फ़िगरेशन पर आवश्यक है। आरटीसी मॉड्यूल पर Arduino पिन A4 से SDA पिन RTC मॉड्यूल पर Arduino पिन A5 से SCL पिन

चरण 2: आंतरिक वेब सर्वर के साथ नेक्सार्डु (एनटीपी की विशेषता)

पुस्तकालय

यह कोड बहुत सारे पुस्तकालयों का उपयोग करता है। उनमें से अधिकांश को Arduino IDE के "लाइब्रेरी मैनेजर" के माध्यम से पाया जा सकता है। क्या आपको सूचीबद्ध पुस्तकालय नहीं मिलना चाहिए, कृपया गूगल करें।

Wire.hSPI.h - इथरनेट शील्ड द्वारा आवश्यकNexaCtrl.h - Nexa डिवाइस कंट्रोलर ईथरनेट.h - इथरनेट शील्ड को सक्षम और फीचर करने के लिएRCSwitch.h - PIRTime.h के लिए आवश्यक - RTCTimeAlarms.h के लिए आवश्यक - टाइम अलार्म मैनेजमेंटEthernetUdp.h - के लिए आवश्यक एनटीपी क्लाइंट

स्केच

नीचे दिया गया कोड Arduino UNO बोर्ड का उपयोग न केवल Nexa उपकरणों को नियंत्रित करने के साधन के रूप में करने की संभावना का फायदा उठाता है, बल्कि इसमें एक आंतरिक वेब सर्वर भी है। जोड़ने के लिए एक टिप्पणी यह है कि आरटीसी (रियल टाइम क्लॉक) मॉड्यूल स्वचालित रूप से एनटीपी (नेटवर्क टाइम प्रोटोकॉल) के माध्यम से समायोजित हो जाता है।

इससे पहले कि आप Arduino पर कोड अपलोड करें, आपको निम्नलिखित को कॉन्फ़िगर करने की आवश्यकता हो सकती है:

  • SenderId: आपको पहले SenderId को सूंघना होगा, नीचे देखें
  • PIR_id: आपको पहले SenderId को सूंघना होगा, नीचे देखें
  • LAN IP पता: अपने LAN का IP अपने ईथरनेट Arduino शील्ड पर सेट करें। डिफ़ॉल्ट मान: 192.168.1.99
  • एनटीपी सर्वर: सख्ती से जरूरी नहीं है लेकिन आपके आस-पास के एनटीपी सर्वरों के लिए Google के लिए अच्छा हो सकता है। डिफ़ॉल्ट मान: 79.136.86.176
  • कोड सीईटी समय क्षेत्र के लिए समायोजित किया गया है। सही समय (NTP) प्रदर्शित करने के लिए इस मान को समायोजित करें - यदि आवश्यक हो, तो अपने समय क्षेत्र में

नेक्सा कोड को सूंघना

इसके लिए आपको सर्किट में दिखाए गए अनुसार Arduino को कम से कम, RX घटक को तार करने की आवश्यकता है।

Nexa_OK_3_RX.ino स्केच के नीचे खोजें, जो इसे लिखते समय Nexa डिवाइस NEYCT-705 और PET-910 के साथ संगत है।

अनुसरण करने के चरण हैं:

  1. नेक्सा रिसीवर को रिमोट कंट्रोल के साथ पेयर करें।
  2. Nexa_OK_3_RX.ino को Arduino पर लोड करें और "सीरियल मॉनिटर" खोलें।
  3. नेक्सा रिसीवर को नियंत्रित करने वाले रिमोट कंट्रोल बटन को दबाएं।
  4. "RemoteID" और "ButtonID" पर ध्यान दें।
  5. इन नंबरों को पिछले स्केच की परिवर्तनशील घोषणा पर SenderID और ButtonID के अंतर्गत सेट करें।

PIR की Id पढ़ने के लिए, बस इसी स्केच (Nexa_OK_3_RX.ino) का उपयोग करें और PIR गति का पता लगाने पर "सीरियल मॉनिटर" पर मान पढ़ें।

चरण 3: बाहरी सर्वर के साथ नेक्सार्डु

पुस्तकालय

यह कोड बहुत सारे पुस्तकालयों का उपयोग करता है। अधिकांश Arduino IDE के "लाइब्रेरी मैनेजर" के माध्यम से पाए जा सकते हैं। क्या आपको सूचीबद्ध पुस्तकालय नहीं मिलना चाहिए, कृपया गूगल करें।

Wire.hRTClib.h - यह https://github.com/MrAlvin/RTClibSPI.h से लाइब्रेरी है - ईथरनेट शील्ड द्वारा आवश्यकNexaCtrl.h - Nexa डिवाइस कंट्रोलरEthernet.h - ईथरनेट शील्ड को सक्षम और फीचर करने के लिएRCSwitch.h - के लिए आवश्यक PIRTime.h - RTCTimeAlarms.h के लिए आवश्यक - समय अलार्म प्रबंधनaREST.h - बाहरी सर्वरएयर/wdt.h द्वारा शोषित RESTful API सेवाओं के लिए - वॉचडॉग टाइमर हैंडलिंग

स्केच

नीचे दिए गए स्केच में उसी चीज़ का एक और स्वाद है, जो इस बार उन संभावनाओं को सशक्त बनाता है जो एक बाहरी वेब सर्वर दे सकता है। जैसा कि पहले ही परिचय में उल्लेख किया गया है, बाहरी सर्वर को बाहरी PHP वेब सर्वर के सेटअप की आवश्यकता होती है। यह सेटअप अधिक जटिल है और इस ट्यूटोरियल द्वारा समर्थित नहीं है, हालांकि, Arduino को जांचने और चलाने के लिए PHP कोड/पेज बुनियादी कार्यक्षमता के साथ प्रदान किया गया है।

इससे पहले कि आप Arduino पर कोड अपलोड करें, आपको निम्नलिखित को कॉन्फ़िगर करने की आवश्यकता हो सकती है:

  • SenderId: आपको पहले SenderId को सूंघना होगा, पिछले चरण पर Nexa कोड को सूँघना देखें
  • PIR_id: आपको पहले SenderId को सूंघना होगा, पिछले चरण पर Nexa कोड को सूँघना देखें
  • LAN IP पता: अपने LAN का IP अपने ईथरनेट Arduino शील्ड पर सेट करें। डिफ़ॉल्ट मान: 192.168.1.99

नेक्सा कोड सूँघने की प्रक्रिया के लिए, कृपया चरण # 1 देखें।

पूरक फ़ाइल

संलग्न nexardu4.txt फ़ाइल को अपने बाहरी PHP सर्वर पर अपलोड करें और इसका नाम बदलकर nexardu4.php करें

आरटीसी समय निर्धारित

आरटीसी पर समय/तिथि निर्धारित करने के लिए मैं स्केच सेटटाइम का उपयोग करता हूं जो पुस्तकालय DS1307RTC के साथ आता है।

चरण 4: मूल्यवान जानकारी

बहुमूल्य जानकारी
बहुमूल्य जानकारी
बहुमूल्य जानकारी
बहुमूल्य जानकारी

व्यवहार जानकर अच्छा लगा

  1. जब Arduino "लाइट ऑटोमैटिक कंट्रोल" के अधीन होता है, तो यह परिवेशी रोशनी और दिन के समय के संबंध में चार अलग-अलग राज्यों में जा सकता है:

    1. जाग्रत: Arduino रात आने का इंतजार करता है।
    2. सक्रिय: रात आ गई है और Arduino ने रोशनी चालू कर दी है।
    3. सोम्नोलेंट: लाइटें चालू हैं लेकिन उन्हें बंद करने का समय आ रहा है। यह "time_to_turn_off - PIR_time" से शुरू होता है, यानी अगर time_to_turn_off 22:30 पर सेट है और PIR_time 20 मिनट पर सेट है, तो Arduino 22:10 पर सोमेनोलेंट अवस्था में प्रवेश करेगा।
    4. निष्क्रिय: रात बीत जाती है, Arduino ने रोशनी बंद कर दी है और Arduino भोर के जागने की प्रतीक्षा कर रहा है।
  2. Arduino हमेशा रिमोट कंट्रोल द्वारा भेजे गए संकेतों को सुनता है। जब रिमोट कंट्रोल का उपयोग किया जाता है तो यह वेब पर रोशनी की स्थिति (चालू/बंद) दिखाने की संभावना को प्रदर्शित करता है।
  3. जबकि Arduino जाग रहा है, यह हर समय रोशनी बंद करने की कोशिश करता है, इसलिए रोशनी को स्विच करने के लिए रिमोट कंट्रोल द्वारा भेजे गए संकेतों पर Arduino द्वारा कब्जा कर लिया जा सकता है। क्या ऐसा होना चाहिए, Arduino फिर से लाइट बंद करने का प्रयास करेगा।
  4. जबकि Arduino सक्रिय है, यह हर समय रोशनी प्राप्त करने का प्रयास करता है, इसलिए रिमोट कंट्रोल द्वारा रोशनी को बंद करने के लिए भेजे गए संकेतों को Arduino द्वारा कैप्चर किया जा सकता है। क्या ऐसा होना चाहिए, Arduino फिर से रोशनी चालू करने का प्रयास करेगा।
  5. नींद की स्थिति में रोशनी को रिमोट कंट्रोल से चालू/बंद किया जा सकता है। Arduino प्रतिकार नहीं करेगा।
  6. सुस्त स्थिति में पीआईआर उलटी गिनती "time_to_turn_off - PIR_time" से रीसेट होना शुरू हो जाएगी और इसलिए जब भी पीआईआर गति का पता लगाता है तो समय_to_turn_off 20 मिनट तक बढ़ जाता है। एक "पीआईआर सिग्नल का पता चला!" ऐसा होने पर वेब ब्राउज़र पर संदेश दिखाया जाएगा।
  7. जबकि Arduino निष्क्रिय है, रिमोट कंट्रोल के माध्यम से रोशनी को चालू और बंद किया जा सकता है। Arduino प्रतिकार नहीं करेगा।
  8. Arduino का एक रीसेटिंग या पावर चक्र इसे सक्रिय मोड में लाएगा। इसका मतलब यह है कि अगर Arduino को time_turn_off के बाद रीसेट कर दिया गया है तो Arduino रोशनी को चालू कर देगा। इससे बचने के लिए Arduino को मैनुअल मोड ("लाइट ऑटोमैटिक कंट्रोल" पर टिक करें) में लाने की जरूरत है और इसे "लाइट ऑटोमैटिक कंट्रोल" पर वापस लाने के लिए सुबह तक प्रतीक्षा करें।
  9. जैसा कि पहले उल्लेख किया गया है, Arduino फिर से सक्रिय होने के लिए सुबह की प्रतीक्षा करता है। इस वजह से, प्रकाश संवेदक की ओर एक मजबूत पर्याप्त प्रकाश को निर्देशित करके सिस्टम को मूर्ख बनाया जा सकता है जो कि "न्यूनतम चमक" सीमा को पार करना है। क्या ऐसा होना चाहिए, तो Arduino को सक्रिय अवस्था में बदलना है।
  10. थ्रेशोल्ड मान न्यूनतम चमक के आसपास सिस्टम फ़्लैपिंग से बचने के लिए सहिष्णुता मूल्य उच्च महत्व का है। एलईडी लाइट्स, उनकी टिमटिमाती और उनकी उच्च प्रतिक्रिया के कारण, फड़फड़ाने वाले व्यवहार का स्रोत हो सकती हैं। यदि आप इस समस्या का अनुभव करते हैं तो सहिष्णुता मूल्य बढ़ाएँ। मैं मूल्य 7 का उपयोग करता हूं।

कोड के बारे में जानकर अच्छा लगा

  1. जैसा कि आप देख सकते हैं, कोड बहुत बड़ा है और काफी मात्रा में पुस्तकालयों का उपयोग करता है। यह ढेर के लिए आवश्यक मुक्त स्मृति की मात्रा से समझौता करता है। मैंने अतीत में अस्थिर व्यवहार देखा है जिसमें सिस्टम रुका हुआ है, खासकर वेब कॉल के बाद। इसलिए, मेरे लिए सबसे बड़ी चुनौती प्रणाली को स्थिर बनाने के लिए इसके आकार और विविध चरों के उपयोग को सीमित करने की रही है।
  2. कोड जो मेरे द्वारा घर पर उपयोग किए गए आंतरिक सर्वर का शोषण करता है, अब फरवरी 2016 से समस्या मुक्त चल रहा है।
  3. मैंने कोड को स्पष्टीकरण के साथ समृद्ध करने के लिए काफी प्रयास किए हैं। विभिन्न मापदंडों जैसे कि नेक्सा कोड भेजने की संख्या प्रति बर्स्ट, एनटीपी सिंक समय, आदि के साथ खेलने के लिए इसका लाभ उठाएं।
  4. कोड में डेलाइट सेविंग की सुविधा नहीं है। इसे लागू होने पर वेब ब्राउज़र के माध्यम से समायोजित करने की आवश्यकता होती है।

विचार करने के लिए कुछ बिंदु

  1. TX और RX रेडियो फ्रीक्वेंसी (RF) मॉड्यूल में एंटीना जोड़ें। यह आपको दो मुख्य बिंदुओं के बारे में शिकायत करने में समय बचाएगा: लचीलापन और आरएफ सिग्नल की सीमा। मैं 17.28cm (6.80in) लंबे 50Ohms तार का उपयोग करता हूं।
  2. उदाहरण के लिए, यह इंस्ट्रक्टेबल अन्य होम ऑटोमेशन सिस्टम के साथ भी काम कर सकता है, जैसे कि प्रोव। कई शर्तों को पूरा करने में से एक यह है कि उन्हें 433.92 मेगाहर्ट्ज आवृत्ति पर काम करना है।
  3. Arduino के साथ एक बड़ा सिरदर्द उन पुस्तकालयों से निपटना है जो समय के साथ अपडेट हो सकते हैं और अचानक आपके "पुराने" स्केच के साथ संगत नहीं हो सकते हैं; आपके Arduino IDE को अपग्रेड करते समय भी यही समस्या हो सकती है। सावधान रहें कि यहाँ हमारा मामला हो सकता है -हाँ, मेरी समस्या भी।
  4. विभिन्न प्रकाश मोड वाले एकाधिक समवर्ती वेब क्लाइंट एक "ब्लिंकिंग" स्थिति बनाते हैं।

स्क्रीनशॉट

ऊपर दिए गए चित्र हिंडोला में, जब आप अपने वेब ब्राउज़र के माध्यम से Arduino को कॉल करते हैं, तो आपको प्रदर्शित होने वाले वेब पेज का एक स्क्रीनशॉट मिलता है। कोड के डिफ़ॉल्ट आईपी कॉन्फ़िगरेशन को देखते हुए, URL होगा

एक पहलू जो सुधार का विषय हो सकता है वह है "सबमिट" बटन की स्थिति क्योंकि यह सभी इनपुट बॉक्स पर प्रभावी होता है, न कि केवल "लाइट ऑटोमैटिक कंट्रोल" पर, जैसा कि कोई सोच सकता है। दूसरे शब्दों में, यदि आप किसी भी संभावित मान को बदलना चाहते हैं, तो आपको हमेशा "सबमिट" बटन दबाना होगा।

विस्तृत/उन्नत दस्तावेज़ीकरण

मैंने निम्नलिखित फाइलें संलग्न की हैं ताकि वे विशेष रूप से समस्या निवारण और सुधार के लिए पूरे समाधान को समझने में आपकी सहायता कर सकें।

Arduino_NexaControl_IS.pdf आंतरिक सर्वर समाधान पर दस्तावेज़ीकरण प्रदान करता है।

Arduino_NexaControl_ES.pdf बाहरी सर्वर समाधान पर दस्तावेज़ीकरण प्रदान करता है।

बाहरी संदर्भ

नेक्सा सिस्टम (स्वीडिश)

चरण 5: समाप्त

ख़त्म होना!
ख़त्म होना!

वहां आपके पास यह सब समाप्त हो गया है और कार्रवाई में है!

Arduino Uno केस को Thingiverse में "Arduino Uno Rev3 with ईथरनेट Shield XL-case" के रूप में पाया जा सकता है।

सिफारिश की: