विषयसूची:

बैटरी से चलने वाला वाटर कलेक्टर लेवल सेंसर: 7 कदम (चित्रों के साथ)
बैटरी से चलने वाला वाटर कलेक्टर लेवल सेंसर: 7 कदम (चित्रों के साथ)

वीडियो: बैटरी से चलने वाला वाटर कलेक्टर लेवल सेंसर: 7 कदम (चित्रों के साथ)

वीडियो: बैटरी से चलने वाला वाटर कलेक्टर लेवल सेंसर: 7 कदम (चित्रों के साथ)
वीडियो: Battery motor science experiment project / hw battery connected dc motor under water test 2024, नवंबर
Anonim
बैटरी चालित जल कलेक्टर स्तर सेंसर
बैटरी चालित जल कलेक्टर स्तर सेंसर
बैटरी चालित जल कलेक्टर स्तर सेंसर
बैटरी चालित जल कलेक्टर स्तर सेंसर

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

यह वह जगह है जहां यह परियोजना आती है। विचार टैंक के शीर्ष पर एक अल्ट्रासोनिक दूरी सेंसर संलग्न करना है। यह सेंसर ध्वनि तरंगों का उत्सर्जन करने वाले सोनार के रूप में काम करता है, जो तब पानी की सतह से परावर्तित होते हैं। लहरों के वापस आने में लगने वाले समय और ध्वनि की गति से, आप पानी की सतह से दूरी की गणना कर सकते हैं और यह निर्धारित कर सकते हैं कि टैंक कितना भरा हुआ है।

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

बिजली बचाने के लिए मैं ज्यादातर समय ESP8266 को गहरी नींद में रखूंगा और हर घंटे एक माप लूंगा। जल स्तर का अनुसरण करने के मेरे उद्देश्य के लिए यह पर्याप्त से अधिक है। डेटा थिंगस्पीक को भेजा जाएगा और फिर एक ऐप के माध्यम से स्मार्टफोन पर पढ़ा जा सकता है।

एक और विवरण! ध्वनि की गति, दूरी माप के लिए आवश्यक, तापमान पर और कुछ हद तक आर्द्रता पर निर्भर करती है। मौसमों पर सटीक बाहरी माप के लिए हम एक BME280 सेंसर में फेंक देंगे, जो तापमान, आर्द्रता और दबाव को मापता है। एक बोनस के रूप में यह हमारे जल स्तर सेंसर से एक मिनी मौसम स्टेशन भी बनाता है।

भाग:

  • 1x ESP8266 ESP-12F।
  • 1x ESP-12F एडेप्टर प्लेट।
  • 1x FT232RL FTDI: USB से सीरियल एडॉप्टर।
  • 1x HC-SR04-P: अल्ट्रासोनिक दूरी माप मॉड्यूल। ध्यान दें कि पी महत्वपूर्ण है, क्योंकि यह वह संस्करण है जिसमें न्यूनतम न्यूनतम ऑपरेटिंग वोल्टेज 3V है।
  • 1x BME280 3.3V संस्करण: तापमान, दबाव और आर्द्रता सेंसर।
  • 1x IRL2203N: एन-चैनल MOSFET ट्रांजिस्टर।
  • 1x MCP1700-3302E 3.3V संस्करण: वोल्टेज नियामक।
  • 3x रिचार्जेबल AA बैटरी, उदा। 2600 एमएएच।
  • 3 बैटरी के लिए 1x बैटरी धारक।
  • 1 एक्स ब्रेडबोर्ड।
  • प्रतिरोधक: 1x 470K, 1x 100K, 4x 10K।
  • कैपेसिटर: 2x सिरेमिक 1uF।
  • 3x टॉगल स्विच।
  • यू-आकार के ब्रेडबोर्ड तार।
  • जम्पर तार।
  • प्लास्टिक सूप कंटेनर 1 एल।
  • कंटेनर के लिए अटैचमेंट रिंग।

मैंने GitHub पर कोड उपलब्ध कराया।

चरण 1: अल्ट्रासोनिक दूरी सेंसर को जानना

अल्ट्रासोनिक दूरी सेंसर को जानना
अल्ट्रासोनिक दूरी सेंसर को जानना
अल्ट्रासोनिक दूरी सेंसर को जानना
अल्ट्रासोनिक दूरी सेंसर को जानना

हम एक अल्ट्रासोनिक सेंसर, HC-SR04-P के साथ पानी की सतह की दूरी को मापेंगे। बल्ले की तरह, यह सेंसर सोनार का उपयोग करता है: यह मानव कान के लिए बहुत अधिक आवृत्ति के साथ एक ध्वनि नाड़ी भेजता है, इसलिए अल्ट्रासोनिक, और किसी वस्तु से टकराने, प्रतिबिंबित करने और वापस आने की प्रतीक्षा करता है। तब दूरी की गणना प्रतिध्वनि और ध्वनि की गति प्राप्त करने में लगने वाले समय से की जा सकती है।

सीधे तौर पर, यदि ट्रिग पिन को कम से कम १० μs के लिए ऊंचा खींचा जाता है, तो सेंसर ४० हर्ट्ज की आवृत्ति के साथ ८ दालों का एक विस्फोट भेजता है। उत्तर तब इको पिन पर एक पल्स के रूप में प्राप्त होता है जिसकी अवधि अल्ट्रासोनिक पल्स भेजने और प्राप्त करने के बीच के समय के बराबर होती है। फिर हमें 2 से विभाजित करना होगा, क्योंकि अल्ट्रासोनिक पल्स आगे और पीछे जा रहा है और हमें एकतरफा यात्रा समय की आवश्यकता है, और ध्वनि की गति से गुणा करें, जो लगभग 340 मीटर/सेकेंड है।

लेकिन एक मिनट रुकिए! वास्तव में, ध्वनि की गति तापमान पर और कुछ हद तक आर्द्रता पर निर्भर करती है। क्या मैं नाइटपिकिंग कर रहा हूं या यह प्रासंगिक है? एक गणना उपकरण का उपयोग करके हम पाते हैं कि सर्दियों में (-5 डिग्री सेल्सियस लेते हुए) हमारे पास 328.5 मीटर/सेकेंड हो सकता है, और गर्मियों में (25 डिग्री सेल्सियस लेने पर) 347.1 मीटर/सेकेंड हो सकता है। तो मान लीजिए कि हम 3 एमएस का एकतरफा यात्रा समय पाते हैं। सर्दियों में, इसका मतलब 98.55 सेमी और गर्मियों में 104.13 सेमी होगा। यह काफी अंतर है! इसलिए पूरे मौसम में और यहां तक कि दिन और रात में पर्याप्त सटीकता प्राप्त करने के लिए हमें अपने सेटअप में एक थर्मामीटर जोड़ना होगा। मैंने BME280 को शामिल करने का निर्णय लिया, जो तापमान, आर्द्रता और दबाव को मापता है। कोड में मैंने स्पीडऑफसाउंड फ़ंक्शन में उपयोग किया था जो एक सूत्र है जो तीनों मापदंडों के संदर्भ में ध्वनि की गति की गणना करता है, हालांकि तापमान वास्तव में सबसे महत्वपूर्ण कारक है। आर्द्रता का प्रभाव अभी भी कम है, लेकिन दबाव का प्रभाव नगण्य है। हम केवल उस तापमान को ध्यान में रखते हुए एक सरल सूत्र का उपयोग कर सकते हैं जिसे मैंने speedOfSoundSimple में लागू किया था।

HC-SR04 पर एक और महत्वपूर्ण बिंदु है। दो संस्करण उपलब्ध हैं: मानक संस्करण 5V पर संचालित होता है, जबकि HC-SR04-P 3V से 5V तक वोल्टेज की एक सीमा पर काम कर सकता है। चूंकि 3 रिचार्जेबल एए बैटरी लगभग 3x1.25V = 3.75V प्रदान करती हैं, इसलिए पी-संस्करण प्राप्त करना महत्वपूर्ण है। कुछ विक्रेता गलत भेज सकते हैं। तो अगर आप एक खरीदते हैं तो तस्वीरों पर एक नज़र डालें। जैसा कि इस पृष्ठ पर बताया गया है, दोनों संस्करण पीछे और आगे दोनों तरफ अलग-अलग दिखते हैं। पी-संस्करण के पीछे सभी तीन चिप्स क्षैतिज हैं जबकि मानक संस्करण पर एक लंबवत है। मोर्चे पर मानक संस्करण में एक अतिरिक्त चांदी का घटक होता है।

इलेक्ट्रॉनिक सर्किट में हम अल्ट्रासोनिक सेंसर को बिजली बंद करने के लिए स्विच के रूप में एक ट्रांजिस्टर का उपयोग करेंगे जब हमारा सेटअप बैटरी जीवन को बचाने के लिए गहरी नींद में चला जाता है। अन्यथा, यह अभी भी लगभग 2mA की खपत करेगा। दूसरी ओर BME280 निष्क्रिय होने पर केवल 5 μ की खपत करता है, इसलिए इसे ट्रांजिस्टर से बंद करना आवश्यक नहीं है।

चरण 2: ESP8266 बोर्ड का चुनाव

ESP8266 बोर्ड की पसंद
ESP8266 बोर्ड की पसंद

बैटरी पर यथासंभव लंबे समय तक सेंसर को संचालित करने के लिए हमें बिजली की खपत को कम करना होगा। जबकि ESP8266 का Wifi हमारे सेंसर को क्लाउड से जोड़ने का एक बहुत ही सुविधाजनक तरीका प्रदान करता है, यह काफी शक्ति-भूख भी है। ऑपरेशन में ESP8266 लगभग 80mA की खपत करता है। इसलिए 2600 एमएएच की बैटरी के साथ हम अपने डिवाइस को खाली होने से पहले अधिकतम 32 घंटे तक ही चला पाएंगे। व्यवहार में, यह कम होगा क्योंकि वोल्टेज बहुत कम स्तर तक गिरने से पहले हम पूरी 2600 एमएएच क्षमता का उपयोग नहीं कर पाएंगे।

सौभाग्य से ESP8266 में एक डीप-स्लीप मोड भी है, जिसमें लगभग सब कुछ बंद है। इसलिए योजना है कि ज्यादातर समय ESP8266 को गहरी नींद में रखा जाए और माप करने के लिए इसे इतनी बार जगाया जाए और Wifi पर डेटा को ThingSpeak पर भेजा जाए। इस पृष्ठ के अनुसार अधिकतम गहरी नींद का समय लगभग 71 मिनट हुआ करता था, लेकिन ESP8266 Arduino core 2.4.1 के बाद से यह बढ़कर लगभग 3.5 घंटे हो गया है। मेरे कोड में मैं एक घंटे के लिए बस गया।

मैंने पहली बार सुविधाजनक NodeMCU विकास बोर्ड की कोशिश की, लेकिन गहरी नींद में यह अभी भी लगभग 9 mA की खपत करता है, जो हमें जागने के अंतराल पर विचार किए बिना अधिकतम 12 दिनों की शुद्ध गहरी नींद देता है। एक महत्वपूर्ण अपराधी AMS1117 वोल्टेज नियामक है, जो बिजली का उपयोग करता है, भले ही आप बैटरी को सीधे 3.3V पिन से जोड़कर इसे बायपास करने का प्रयास करें। यह पृष्ठ बताता है कि वोल्टेज नियामक और USB UART को कैसे हटाया जाए। हालांकि, मैं अपने बोर्ड को नष्ट किए बिना ऐसा करने में कभी कामयाब नहीं हुआ। इसके अलावा, USB UART को हटाने के बाद आप ESP8266 से कनेक्ट नहीं कर सकते हैं यह पता लगाने के लिए कि क्या गलत हुआ।

अधिकांश ESP8266 विकास बोर्ड बेकार AMS1117 वोल्टेज नियामक का उपयोग करते प्रतीत होते हैं। एक अपवाद WEMOS D1 मिनी (बाईं ओर की तस्वीर) है जो अधिक किफायती ME6211 के साथ आता है। वास्तव में, मैंने पाया कि WEMOS D1 मिनी गहरी नींद में लगभग 150 μA का उपयोग करता है, जो इसे अधिक पसंद करता है। इसमें से अधिकांश शायद USB UART के कारण है। इस बोर्ड के साथ आपको हेडर को पिन के लिए खुद ही मिलाप करना होगा।

हालाँकि, हम ESP-12F (दाईं ओर चित्र) जैसे नंगे-हड्डियों वाले बोर्ड का उपयोग करके बहुत बेहतर कर सकते हैं, जिसमें USB UART या वोल्टेज नियामक नहीं है। 3.3V पिन खिलाकर मुझे केवल 22 μA की गहरी नींद की खपत मिली!

लेकिन ईएसपी -12 एफ को काम करने के लिए कुछ सोल्डरिंग के लिए तैयार करें और इसे प्रोग्रामिंग करने में थोड़ी अधिक परेशानी हो! इसके अलावा जब तक बैटरी सीधे सही वोल्टेज नहीं देती है, जो कि 3V और 3.6V के बीच है, हमें अपना स्वयं का वोल्टेज नियामक प्रदान करने की आवश्यकता है। व्यवहार में, एक बैटरी सिस्टम को ढूंढना मुश्किल हो जाता है जो इस श्रेणी में अपने पूर्ण निर्वहन चक्र पर वोल्टेज प्रदान करता है। याद रखें कि हमें HC-SR04-P सेंसर को भी पावर देने की आवश्यकता है, जो सैद्धांतिक रूप से 3V जितना कम वोल्टेज के साथ कार्य कर सकता है, लेकिन वोल्टेज अधिक होने पर अधिक सटीक रूप से कार्य करता है। इसके अलावा मेरे आरेख में HC-SR04-P को एक ट्रांजिस्टर द्वारा चालू किया जाता है, जो एक छोटे से अतिरिक्त वोल्टेज ड्रॉप को प्रेरित करता है। हम MCP1700-3302E वोल्टेज नियामक का उपयोग करेंगे। अधिकतम इनपुट वोल्टेज 6V है इसलिए हम इसे 4 AA बैटरी तक खिलाते हैं। मैंने 3 AA बैटरी का उपयोग करने का निर्णय लिया।

चरण 3: एक थिंगस्पीक चैनल बनाएं

हम अपने डेटा को स्टोर करने के लिए एक IoT क्लाउड सेवा, ThingSpeak का उपयोग करेंगे। https://thingspeak.com/ पर जाएं और अकाउंट बनाएं। एक बार जब आप लॉग इन हो जाते हैं तो चैनल बनाने के लिए न्यू चैनल बटन पर क्लिक करें। चैनल सेटिंग्स में आप जैसे चाहें नाम और विवरण भरें। आगे हम चैनल फ़ील्ड को नाम देते हैं और दाईं ओर स्थित चेकबॉक्स पर क्लिक करके उन्हें सक्रिय करते हैं। यदि आप अपरिवर्तित मेरे कोड का उपयोग करते हैं तो फ़ील्ड इस प्रकार हैं:

  • फ़ील्ड 1: जल स्तर (सेमी)
  • फ़ील्ड 2: बैटरी स्तर (V)
  • फ़ील्ड 3: तापमान (डिग्री सेल्सियस)
  • फ़ील्ड 4: आर्द्रता (%)
  • फ़ील्ड 5: दबाव (पीए)

भविष्य के संदर्भ के लिए चैनल आईडी, रीड एपीआई कुंजी और एपीआई कुंजी लिखें, जो मेनू एपीआई कुंजी में पाया जा सकता है।

आप एक ऐप का उपयोग करके अपने स्मार्टफोन पर थिंगस्पीक डेटा को पढ़ सकते हैं। अपने एंड्रॉइड फोन पर मैं IoT ThingSpeak Monitor विजेट का उपयोग करता हूं। आपको इसे चैनल आईडी और रीड एपीआई कुंजी के साथ कॉन्फ़िगर करना होगा।

चरण 4: ESP-12F को कैसे प्रोग्राम करें

ESP-12F कैसे प्रोग्राम करें
ESP-12F कैसे प्रोग्राम करें
ESP-12F कैसे प्रोग्राम करें
ESP-12F कैसे प्रोग्राम करें

बैटरी जीवन को बचाने के लिए हमें एक नंगे हड्डियों वाले बोर्ड की आवश्यकता है, लेकिन नकारात्मक पक्ष यह है कि अंतर्निहित यूएसबी यूएआरटी के साथ विकास बोर्ड की तुलना में प्रोग्राम करना थोड़ा अधिक कठिन है।

हम Arduino IDE का उपयोग करेंगे। इसका उपयोग करने के तरीके के बारे में बताने वाले अन्य निर्देश हैं इसलिए मैं यहाँ संक्षिप्त हूँ। इसे ESP8266 के लिए तैयार करने के चरण हैं:

  • Arduino IDE डाउनलोड करें।
  • ESP8266 बोर्ड के लिए समर्थन स्थापित करें। मेनू में फ़ाइल - वरीयताएँ - सेटिंग्स अतिरिक्त बोर्ड प्रबंधक यूआरएल में यूआरएल https://arduino.esp8266.com/stable/package_esp8266com_index.json जोड़ें। मेनू में अगला उपकरण - बोर्ड - बोर्ड प्रबंधक esp8266 समुदाय द्वारा esp8266 स्थापित करें।
  • बोर्ड के रूप में चयन करें: जेनेरिक ESP8266 मॉड्यूल।

ईएसपी -12 एफ को संभालने के लिए मैंने एक एडेप्टर प्लेट का इस्तेमाल किया, जो आमतौर पर ऑनलाइन दुकानों में उपलब्ध होता है। मैंने चिप को प्लेट में मिलाया और फिर हेडर को प्लेट में मिलाया। तभी मुझे पता चला कि मानक ब्रेडबोर्ड के लिए एडेप्टर प्लेट बहुत चौड़ी है! यह आपके कनेक्शन बनाने के लिए किनारे पर कोई मुफ्त पिन नहीं छोड़ता है।

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

इसके बाद, आपके कंप्यूटर के यूएसबी-पोर्ट के माध्यम से ईएसपी -12 एफ को प्रोग्राम करने के लिए हमें यूएसबी से सीरियल एडेप्टर की आवश्यकता होती है। मैंने FT232RL FTDI प्रोग्रामर का उपयोग किया। प्रोग्रामर के पास 3.3V या 5V के बीच चयन करने के लिए एक जम्पर है। इसे ESP8266 के लिए 3.3V पर रखा जाना चाहिए। इसे न भूलें क्योंकि 5V आपकी चिप को फ्राई कर सकता है! ड्राइवरों की स्थापना स्वचालित होनी चाहिए, लेकिन यदि प्रोग्रामिंग काम नहीं करती है, तो आप उन्हें इस पृष्ठ से मैन्युअल रूप से स्थापित करने का प्रयास कर सकते हैं।

ESP8266 में फ्लैश में नया फर्मवेयर अपलोड करने के लिए एक प्रोग्रामिंग मोड और फ्लैश मेमोरी से वर्तमान फर्मवेयर चलाने के लिए एक फ्लैश मोड है। इन मोड के बीच चयन करने के लिए कुछ पिनों को बूट समय पर एक निश्चित मान लेना चाहिए:

  • प्रोग्रामिंग: GPIO0: निम्न, CH-PD: उच्च, GPIO2: उच्च, GPIO15: निम्न
  • फ्लैश: GPIO0: उच्च, CH-PD: उच्च, GPIO2: उच्च, GPIO15: निम्न

एडेप्टर प्लेट पहले से ही CH-PD को ऊपर खींचने और GPIO15 को 10K प्रतिरोधों के साथ नीचे खींचने का ध्यान रखती है।

इसलिए हमारे इलेक्ट्रॉनिक सर्किट में हमें अभी भी GPIO2 को पुल-अप करने की आवश्यकता है। हम ESP8266 को प्रोग्रामिंग या फ्लैश मोड में डालने के लिए एक स्विच और इसे रीसेट करने के लिए एक स्विच भी प्रदान करते हैं, जो RST को जमीन से जोड़कर किया जाता है। इसके अलावा सुनिश्चित करें कि आप FT232RL के TX पिन को ESP8266 के RXD पिन से कनेक्ट करते हैं और इसके विपरीत।

प्रोग्रामिंग अनुक्रम इस प्रकार है:

  • प्रोग्रामिंग स्विच को बंद करके GPIO2 को निम्न पर सेट करें।
  • ESP8266 को बंद करके और फिर रीसेट स्विच को फिर से खोलकर रीसेट करें। ESP8266 अब प्रोग्रामिंग मोड में बूट होता है।
  • प्रोग्रामिंग स्विच खोलकर GPIO2 को वापस उच्च पर सेट करें।
  • Arduino IDE से नया फर्मवेयर अपलोड करें।
  • रीसेट स्विच को बंद और फिर से खोलकर ESP8266 को फिर से रीसेट करें। ESP8266 अब फ्लैश मोड में बूट होता है और नया फर्मवेयर चलाता है।

अब आप प्रसिद्ध ब्लिंक स्केच को अपलोड करके परीक्षण कर सकते हैं कि प्रोग्रामिंग काम करती है या नहीं।

यदि यह सब काम करता है तो कम से कम GND, VCC, GPIO2, RST, TXD और RXD पिन सही ढंग से मिलाप और जुड़े हुए हैं। जान में जान आई! लेकिन आगे बढ़ने से पहले मैं आपके मल्टीमीटर के साथ अन्य पिनों का भी परीक्षण करने की सलाह दूंगा। मुझे खुद एक पिन की समस्या थी। आप इस स्केच का उपयोग कर सकते हैं, जो 5 सेकंड के लिए सभी पिनों को एक-एक करके उच्च पर सेट करता है, और बाद में ESP8266 को 20 सेकंड के लिए गहरी नींद में रखता है। ESP8266 को गहरी नींद के बाद जागने के लिए सक्षम करने के लिए आपको RST को GPIO16 से जोड़ना होगा, जो वेक सिग्नल देता है।

चरण 5: स्केच अपलोड करना

मैंने GitHub पर कोड उपलब्ध कराया है, यह सिर्फ एक फ़ाइल है: Level-Sensor-Deepsleep.ino। बस इसे डाउनलोड करें और इसे Arduino IDE में खोलें। या आप फ़ाइल - नया का चयन कर सकते हैं और कोड को कॉपी/पेस्ट कर सकते हैं।

फ़ाइल की शुरुआत में आपको कुछ जानकारी भरनी होगी: उपयोग करने के लिए WLAN का नाम और पासवर्ड, स्थिर IP विवरण और चैनल आईडी और ThingSpeak चैनल की API कुंजी लिखें।

इस ब्लॉग पर टिप के बाद, डीएचसीपी के बजाय जहां राउटर गतिशील रूप से एक आईपी निर्दिष्ट करता है, हम स्थिर आईपी का उपयोग करते हैं, जहां हम स्वयं ईएसपी 8266 का आईपी पता सेट करते हैं। यह बहुत तेज़ हो जाता है, इसलिए हम सक्रिय समय और इस प्रकार बैटरी ऊर्जा की बचत करते हैं। इसलिए हमें एक उपलब्ध स्थिर आईपी पता और साथ ही राउटर (गेटवे), सबनेट मास्क और एक डीएनएस सर्वर का आईपी प्रदान करना होगा। यदि आप सुनिश्चित नहीं हैं कि क्या भरना है, तो अपने राउटर के मैनुअल में एक स्थिर आईपी सेट करने के बारे में पढ़ें। Wifi के माध्यम से आपके राउटर से जुड़े विंडोज कंप्यूटर पर, एक शेल (विंडोज बटन-आर, सीएमडी) शुरू करें और ipconfig /all दर्ज करें। आपको अधिकांश जानकारी वाई-फाई अनुभाग के अंतर्गत मिल जाएगी।

कोड की जांच करने पर आप देखते हैं कि अन्य Arduino कोड के विपरीत अधिकांश क्रिया लूप फ़ंक्शन के बजाय सेटअप फ़ंक्शन में होती है। ऐसा इसलिए है क्योंकि ESP8266 सेटअप फ़ंक्शन को पूरा करने के बाद गहरी नींद में चला जाता है (जब तक कि हम OTA मोड में शुरू नहीं करते)। जागने के बाद, यह एक नए पुनरारंभ की तरह है और यह फिर से सेटअप चलाता है।

यहाँ कोड की मुख्य विशेषताएं हैं:

  • वेक-अप के बाद कोड स्विचपिन (डिफ़ॉल्ट GPIO15) को उच्च पर सेट करता है। यह ट्रांजिस्टर को चालू करता है, जो बदले में HC-SR04-P सेंसर को चालू करता है। गहरी नींद में जाने से पहले यह ट्रांजिस्टर और HC-SR04-P को बंद करके पिन को कम पर सेट करता है, यह सुनिश्चित करता है कि यह किसी भी अधिक कीमती बैटरी की खपत नहीं करता है।
  • यदि मोडपिन (डिफ़ॉल्ट GPIO14) कम है तो कोड माप मोड के बजाय OTA मोड में चला जाता है। OTA (ओवर-द-एयर अपडेट) से हम फर्मवेयर को सीरियल पोर्ट के बजाय Wifi पर अपडेट कर सकते हैं। हमारे मामले में यह काफी सुविधाजनक है क्योंकि हमें आगे के अपडेट के लिए सीरियल को यूएसबी एडॉप्टर से कनेक्ट करने की आवश्यकता नहीं है। बस GPIO14 को निम्न पर सेट करें (इलेक्ट्रॉनिक सर्किट में OTA स्विच के साथ), ESP8266 (रीसेट स्विच के साथ) को रीसेट करें और इसे अपलोड करने के लिए Arduino IDE में उपलब्ध होना चाहिए।
  • एनालॉग पिन (A0) पर, हम बैटरी के वोल्टेज को मापते हैं। बैटरी को ओवर-डिस्चार्ज से बचाने के लिए, अगर वोल्टेज बहुत कम हो जाता है, तो यह हमें अपने डिवाइस, उर्फ स्थायी गहरी नींद को बंद करने की अनुमति देता है। एनालॉग माप बहुत सटीक नहीं है, हम numMeasuresBattery (डिफ़ॉल्ट 10) उपाय करते हैं और सटीकता में सुधार के लिए औसत लेते हैं।
  • एचसी-एसआर04-पी सेंसर की दूरी माप समारोह दूरी माप में किया जाता है। सटीकता में सुधार के लिए माप को numMeasureDistance (डिफ़ॉल्ट 3) बार दोहराया जाता है।
  • बीएमई२८० सेंसर द्वारा तापमान, आर्द्रता और दबाव माप से स्पीडऑफसाउंड की गणना करने का एक कार्य है। BME280 का डिफ़ॉल्ट I2C पता 0x76 है, लेकिन अगर यह काम नहीं करता है तो आपको इसे 0x77 में बदलने की आवश्यकता हो सकती है: bool bme280Started=bme280.begin(0x77);
  • हम BME280 को फ़ोर्स्ड मोड में उपयोग करेंगे, जिसका अर्थ है कि यह एक माप लेता है और बिजली बचाने के लिए वापस सो जाता है।
  • यदि आप क्षमता (एल), पूर्ण दूरी (सेमी) और क्षेत्र (एम 2) सेट करते हैं, तो कोड दूरी माप से पानी की टंकी की शेष मात्रा की गणना करता है: डबल शेष मात्रा = क्षमता + 10.0 * (पूर्ण दूरी-दूरी) * क्षेत्र; और इसे ThingSpeak पर अपलोड करें। यदि आप डिफ़ॉल्ट मान रखते हैं तो यह पानी की सतह से दूरी को सेमी में अपलोड करता है।

चरण 6: इलेक्ट्रॉनिक सर्किट का निर्माण

इलेक्ट्रॉनिक सर्किट का निर्माण
इलेक्ट्रॉनिक सर्किट का निर्माण

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

यहाँ सर्किट की महत्वपूर्ण विशेषताएं हैं:

  • दो वोल्टेज हैं जो एक भूमिका निभाते हैं: बैटरी से इनपुट वोल्टेज (लगभग 3.75V) और 3.3V जो ESP8266 और BME280 को खिलाता है। मैंने 3.3V को ब्रेकबोर्ड की बाईं रेल पर और 3.75V को दाईं रेल पर रखा। वोल्टेज नियामक 3.75V को 3.3V में परिवर्तित करता है। डेटाशीट में दिए गए निर्देशों का पालन करते हुए मैंने स्थिरता बढ़ाने के लिए वोल्टेज नियामक के इनपुट और आउटपुट में 1 μF कैपेसिटर जोड़े।
  • ESP8266 का GPIO15 ट्रांजिस्टर के गेट से जुड़ा होता है। यह ESP8266 को ट्रांजिस्टर चालू करने की अनुमति देता है और इस प्रकार अल्ट्रासोनिक सेंसर सक्रिय होने पर और गहरी नींद में जाने पर इसे बंद कर देता है।
  • GPIO14 एक स्विच, OTA स्विच से जुड़ा है। स्विच को बंद करने से ESP8266 को संकेत मिलता है जिसे हम अगले OTA मोड में शुरू करना चाहते हैं, यानी जब हम RESET स्विच को दबाते हैं (बंद करते हैं और खोलते हैं), और एक नया स्केच ओवर-द-एयर अपलोड करते हैं।
  • RST और GPIO2 पिन प्रोग्रामिंग डायग्राम की तरह जुड़े हुए हैं। ESP8266 को गहरी नींद से जगाने की अनुमति देने के लिए RST पिन अब GPIO16 से भी जुड़ा है।
  • अल्ट्रासोनिक सेंसर के पिन TRIG और ECHO GPIO12 और GPIO13 से जुड़े हैं, जबकि BME280 के पिन SCL और SDA GPIO5 और GPIO4 से जुड़े हैं।
  • अंत में, एनालॉग पिन एडीसी इनपुट वोल्टेज से जुड़े वोल्टेज विभक्त के माध्यम से होता है। यह बैटरी के चार्ज की जांच करने के लिए इनपुट वोल्टेज को मापने की अनुमति देता है। ADC पिन 0V और 1V के बीच वोल्टेज को माप सकता है। वोल्टेज डिवाइडर के लिए हमने 100K और 470K के रेसिस्टर्स को चुना। इसका मतलब है कि एडीसी पिन पर वोल्टेज किसके द्वारा दिया जाता है: V_ADC = 100K/(100K+470K) V_in।V_ADC=1V लेने का मतलब है कि हम इनपुट वोल्टेज को V_in=570/100 V_ADC = 5.7V तक माप सकते हैं। बिजली की खपत के लिए वोल्टेज डिवाइडर के माध्यम से कुछ करंट भी लीक हो रहा है। बैटरी से V_in=3.75V के साथ हम I_leak = 3.75V/570K=6.6 μA पाते हैं।

यहां तक कि जब सर्किट बैटरी से चल रहा हो, तब भी यूएसबी को सीरियल एडॉप्टर से कनेक्ट करना संभव है। बस एडॉप्टर के वीसीसी को अनप्लग करना सुनिश्चित करें और प्रोग्रामिंग आरेख के अनुसार जीएनडी, आरएक्स और TX को कनेक्ट करें। यह डिबगिंग संदेशों को पढ़ने के लिए Arduino IDE में सीरियल मॉनिटर को खोलना संभव बनाता है और सुनिश्चित करता है कि सब कुछ अपेक्षित रूप से काम कर रहा है।

पूरे सर्किट के लिए मैंने बैटरी से चलते समय गहरी नींद में 50 μA की वर्तमान खपत को मापा। इसमें ESP8266, BME280, अल्ट्रासोनिक सेंसर (ट्रांजिस्टर द्वारा बंद) और वोल्टेज डिवाइडर के माध्यम से रिसाव और शायद अन्य रिसाव शामिल हैं। तो यह बहुत बुरा नहीं है!

मैंने पाया कि कुल सक्रिय समय लगभग 7 सेकंड है, जिसमें से 4.25 सेकंड वाईफाई से कनेक्ट करने के लिए और 1.25 सेकंड थिंगस्पीक को डेटा भेजने के लिए है। तो 80mA के एक सक्रिय प्रवाह के साथ मुझे सक्रिय समय के लिए प्रति घंटे 160 μAh मिला। गहरी नींद की स्थिति के लिए प्रति घंटे ५० μAh जोड़ने पर हमारे पास कुल २१० μAh प्रति घंटा है। इसका मतलब है कि 2600 एमएएच की बैटरी सैद्धांतिक रूप से 12400 घंटे = 515 दिनों तक चलती है। यह पूर्ण अधिकतम है यदि हम बैटरियों की पूरी क्षमता का उपयोग कर सकते हैं (जो कि ऐसा नहीं है) और कोई रिसाव नहीं है जो मुझे अपने वर्तमान मापों के साथ नहीं मिला। इसलिए मुझे अभी यह देखना बाकी है कि क्या यह वास्तव में समाप्त होता है।

चरण 7: सेंसर को खत्म करना

सेंसर खत्म करना
सेंसर खत्म करना
सेंसर खत्म करना
सेंसर खत्म करना
सेंसर खत्म करना
सेंसर खत्म करना

मैंने सेंसर को प्लास्टिक के 1 लीटर कंटेनर में रखा, जिसमें सूप हुआ करता था। नीचे मैंने HC-SR04-P सेंसर की "आंखों" को फिट करने के लिए दो छेद किए। छेद के अलावा कंटेनर वाटरप्रूफ होना चाहिए। इसके बाद इसे पानी की टंकी की दीवार से एक गोलाकार रिंग से जोड़ा जाता है जिसका उपयोग आमतौर पर वर्षा जल निकासी पाइप के लिए किया जाता है।

परियोजना के साथ मज़े करो!

सिफारिश की: