विषयसूची:

होम नेटवर्क तापमान सेंसर: 7 कदम
होम नेटवर्क तापमान सेंसर: 7 कदम

वीडियो: होम नेटवर्क तापमान सेंसर: 7 कदम

वीडियो: होम नेटवर्क तापमान सेंसर: 7 कदम
वीडियो: simple circuit wireless sensor project / science project / hw 9v battery LED bc547 transistor 2024, नवंबर
Anonim
होम नेटवर्क तापमान सेंसर
होम नेटवर्क तापमान सेंसर

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

आपको इसके बारे में जानने की जरूरत है: - कुछ इलेक्ट्रॉनिक्स कौशल (सोल्डरिंग)

- लिनक्स

- अरुडिनो आईडीई

(आपको IDE में अतिरिक्त बोर्ड अपडेट करने होंगे:

- Arduino IDE के माध्यम से एक ESP बोर्ड को अपडेट/प्रोग्रामिंग करना।

(वेब पर कुछ अच्छे ट्यूटोरियल उपलब्ध हैं)

यह एक Arduino Uno का उपयोग करके या FTDI (USB से सीरियल एडेप्टर) का उपयोग करके किया जा सकता है।

मैंने अपने Uno का उपयोग किया क्योंकि मेरे पास मेरे पीसी पर कोई सीरियल पोर्ट नहीं था और न ही मेरे पास FTDI था

चरण 1: खरीदारी के लिए जाएं

खरीदारी के लिए जाओ
खरीदारी के लिए जाओ

ऐसा करने के लिए आपको क्या करने की आवश्यकता होगी?

डिजिटल तापमान और आर्द्रता सेंसर के लिए:

- या तो ब्रेडबोर्ड या प्रोटोटाइप पीसीबी, सोल्डर, सोल्डरिंग आयरन जैसे विकल्प …

- कुछ तार

- दो जंपर्स

- एक 10k ओम रोकनेवाला

- एक ESP12F (अन्य मॉडल भी काम कर सकते हैं…)

- एक DHT22 (DHT11 की तुलना में थोड़ा अधिक महंगा लेकिन अधिक सटीक)

- 3 AA रिचार्जेबल बैटरी और एक बैटरी होल्डर

- अपना प्रोजेक्ट डालने के लिए एक छोटा प्लास्टिक बॉक्स

- बाद के चरण में मैं बैटरी पैक और ESP के बीच दो 10uF कैपेसिटर के साथ HT7333 जोड़ने की योजना बना रहा हूं

इनपुट वोल्टेज (VCC) को अनुशंसित 3.3V पर स्थिर करने के लिए, लेकिन ESP को ओवरवॉल्टेज से बचाने के लिए भी।

नेटवर्क भाग के लिए:

- आपका घर वाईफाई नेटवर्क

सर्वर भाग के लिए:

- कोई भी लिनक्स आधारित प्रणाली (हमेशा चालू!)

मैंने रास्पबेरी पाई का उपयोग किया (जिसे मैं अपने आउटडोर आईपी कैमरों के लिए सर्वर के रूप में भी उपयोग करता हूं।)

- आपके सर्वर कोड को संकलित करने के लिए जीसीसी कंपाइलर

- rrdtool पैकेज डेटा स्टोर करने और ग्राफ उत्पन्न करने के लिए

- अपाचे (या कोई अन्य वेबसर्वर)

आपका पसंदीदा पीसी या लैपटॉप जिस पर Arduino IDE है।

चरण 2: सेटअप और पृष्ठभूमि

सेटअप और पृष्ठभूमि
सेटअप और पृष्ठभूमि

वाईफाई से जुड़े इस संस्करण में - IOT - तापमान और आर्द्रता सेंसर नहीं कहने के लिए मैंने एक ESP12F, एक DHT22 और एक 3 AA बैटरी धारक का उपयोग रिचार्ज करने योग्य बैटरी के साथ किया।

हर 20 मिनट में ESP DHT22 से एक माप लेता है और इसे मेरे होम वाईफाई नेटवर्क पर UDP पर एक सर्वर (एक रास्पबेरी पाई) को भेजता है। माप भेजे जाने के बाद, ईएसपी गहरी नींद में चला जाता है। इसका मतलब है कि मॉड्यूल की केवल रीयल टाइम क्लॉक ही संचालित रहती है, जिसके परिणामस्वरूप एक अविश्वसनीय बिजली की बचत होती है। लगभग 5 सेकंड के लिए, मॉड्यूल को लगभग 100mA की आवश्यकता होती है, फिर 20 मिनट की गहरी नींद के दौरान केवल 150uA की आवश्यकता होती है।

मैं किसी भी इंटरनेट आधारित सेवा का उपयोग नहीं करना चाहता था क्योंकि मेरे पास मेरी रास्पबेरी पाई है जो हमेशा वैसे भी रहती है और इस तरह मुझे सर्वर पार्ट भी लिखने का आनंद मिला।

सर्वर पर (एक रास्पबेरी पाई रास्पियन चल रहा है) मैंने एक साधारण यूडीपी श्रोता (सर्वर) लिखा है जो मूल्यों को एक साधारण आरआरडी में संग्रहीत करता है। (टोबियास ओटिकर द्वारा आरआरडीटूल का उपयोग करते हुए राउंड रॉबिन डेटाबेस।)

RRDtool का लाभ यह है कि आप अपना डेटाबेस एक बार बना लेते हैं और आकार वही रहता है। इसके अलावा आपको पृष्ठभूमि में चलने वाले डेटाबेस सर्वर (जैसे mySQLd) की आवश्यकता नहीं है। RRDtool आपको डेटाबेस बनाने और ग्राफ़ बनाने के लिए टूल देता है।

मेरा सर्वर समय-समय पर ग्राफ बनाता है और सब कुछ एक बहुत ही सरल http पृष्ठ में प्रदर्शित करता है। मैं रास्पबेरी पाई पर Apache2 वेबसर्वर से कनेक्ट करके एक साधारण ब्राउज़र के साथ अपने रीडिंग की जांच कर सकता हूं!

अंत में, मेरे पास FTDI (USB से सीरियल) नहीं था इसलिए मैंने अपने Arduino UNO का उपयोग किया। आपको TX और RX और ESP और UNO के GND को जोड़ने की आवश्यकता है। (मुझे पता है, आपकी वृत्ति आपको RX और TX को पार करने के लिए कह सकती है … इसे भी आजमाया, काम नहीं करता।)

मैंने एक स्तर रूपांतरण नहीं किया (यूएनओ: उच्च = 5 वी लेकिन ईएसपी मूल रूप से एक 3.3V डिवाइस है … बाजार में कुछ अच्छे एफटीडीआई हैं जहां आप अपने उच्च स्तर को 5 या 3.3V होने के लिए भी चुन सकते हैं।

मेरा सर्किट 3 AA रिचार्जेबल बैटरी द्वारा संचालित है - इसलिए वास्तव में 3 X 1.2V। बाद के चरण में मैं बैटरी पैक और सुरक्षा के लिए सर्किट के बीच HT7333 लगाने का इरादा रखता हूं; नई चार्ज की गई बैटरियों में 1.2V से अधिक हो सकता है और ESP को मिनट के साथ संचालित किया जाना चाहिए। 3 वी और अधिकतम। 3.6 वी। इसके अलावा अगर मैं तय करता हूं - कमजोरी के क्षण में - क्षारीय बैटरी (3 X 1.5V = 4.5V) में डालने के लिए मेरा ESP तला हुआ नहीं होगा!

मैंने 10cm x 10cm सोलर पैनल का उपयोग करने पर भी विचार किया, लेकिन यह परेशानी के लायक नहीं था। प्रति घंटे 3 माप (मूल रूप से 3x 5 सेकंड @ 100mA अधिकतम और शेष समय @ 100uA) करके, मैं उसी रिचार्जेबल बैटरी पर 1 वर्ष के लिए अपने सर्किट को पावर देने की उम्मीद करता हूं।

चरण 3: Arduino - ESP12 भाग

Arduino - ESP12 भाग
Arduino - ESP12 भाग
Arduino - ESP12 भाग
Arduino - ESP12 भाग

मैंने यह प्रोजेक्ट अलग-अलग चरणों में किया।

कई लिंक हैं जो आपको ESP12 (उर्फ। ESP8266) को Arduino IDE में आयात करने में मदद करते हैं। (मुझे एक बग के कारण नवीनतम संस्करण के बजाय संस्करण 2.3.0 का उपयोग करना पड़ा जो इस बीच हल हो सकता था …)

मैंने अपने Arduino UNO (केवल USB से सीरियल के माध्यम से मेरे पीसी के बीच एक पुल के रूप में उपयोग किया जाता है) पर ESP सीरियल इंटरफ़ेस पर ESP को हुक करके शुरू किया। इसे समझाने वाले अलग-अलग इंस्ट्रक्शंस हैं।

मेरे समाप्त प्रोजेक्ट में मैंने सीरियल से कनेक्ट करने के लिए तारों को छोड़ दिया था, अगर मुझे कभी भी समस्या निवारण की आवश्यकता होती है। RX

फिर आपको अपने ESP12 को निम्नानुसार वायर करना होगा:

ईएसपी पिन…

जीएनडी यूएनओ जीएनडी

आरएक्स यूएनओ आरएक्स

TX यूएनओ TX

एन वीसीसी

GPIO15 GND

शुरू में मैंने अपने ESP को UNO पर 3.3V से पावर देने की कोशिश की, लेकिन मैं जल्दी से अपने ESP को बेंच पावर सप्लाई के साथ पावर देने के लिए आगे बढ़ा, लेकिन आप अपने बैटरी पैक का भी उपयोग कर सकते हैं।

GPIO0 मैंने ईएसपी को फ्लैशिंग (= प्रोग्रामिंग) सक्षम करने के लिए इसे एक जम्पर के साथ जीएनडी से जोड़ा।

पहला परीक्षण: जम्पर को खुला छोड़ दें और Arduino IDE (115200 बॉड पर!) में एक सीरियल मॉनिटर शुरू करें।

पावर साइकिल ईएसपी, आपको कुछ बकवास अक्षर और फिर एक संदेश देखना चाहिए जैसे:

एआई-थिंकर टेक्नोलॉजी कंपनी लिमिटेड तैयार

इस मोड में, ESP एक पुराने जमाने के मॉडेम की तरह काम करता है। आपको एटी कमांड का उपयोग करने की आवश्यकता है।

निम्न आदेशों का प्रयास करें:

एटी+आरएसटी

और निम्नलिखित दो आदेश

एटी+सीडब्ल्यूएमओडीई=3

ठीक है

एटी+सीडब्ल्यूएलएपी

यह आपको क्षेत्र के सभी वाईफाई नेटवर्क की एक सूची देनी चाहिए।

यदि यह काम कर रहा है तो आप अगले चरण के लिए तैयार हैं।

चरण 4: नेटवर्क टाइम प्रोटोकॉल (एनटीपी) क्लाइंट के रूप में ईएसपी का परीक्षण करना।

नेटवर्क टाइम प्रोटोकॉल (NTP) क्लाइंट के रूप में ESP का परीक्षण करना।
नेटवर्क टाइम प्रोटोकॉल (NTP) क्लाइंट के रूप में ESP का परीक्षण करना।
नेटवर्क टाइम प्रोटोकॉल (NTP) क्लाइंट के रूप में ESP का परीक्षण करना।
नेटवर्क टाइम प्रोटोकॉल (NTP) क्लाइंट के रूप में ESP का परीक्षण करना।

Arduino IDE में, फ़ाइल, उदाहरण, ESP8266WiFi के अंतर्गत, NTPClient लोड करें।

इसे काम करने के लिए मामूली बदलाव की जरूरत है; आपको अपना SSID और अपने वाईफाई नेटवर्क का पासवर्ड डालना होगा।

अब जम्पर लगाएं, GPIO0 को छोटा करके GND करें।

ESP को पावर साइकिल करें और स्केच को ESP पर अपलोड करें।

संकलन के बाद, ईएसपी पर अपलोड शुरू होना चाहिए। कोड डाउनलोड होते ही ईएसपी पर नीली एलईडी तेजी से झपकेगी।

मैंने देखा कि मुझे IDE को पुनरारंभ करने के साथ थोड़ा सा खेलना था, अपलोड करने से पहले ESP को पुनरारंभ करना।

इससे पहले कि आप स्केच को संकलित / अपलोड करना शुरू करें, सीरियल कंसोल (= सीरियल मॉनिटर) को बंद करना सुनिश्चित करें क्योंकि यह आपको अपलोड करने से रोकेगा।

एक बार अपलोड सफल हो जाने के बाद, आप ईएसपी को प्रभावी ढंग से इंटरनेट से समय प्राप्त करने के लिए सीरियल मॉनिटर को फिर से खोल सकते हैं।

बढ़िया, आपने अपना ईएसपी प्रोग्राम किया है, अपने वाईफाई से कनेक्ट किया है और इंटरनेट से समय प्राप्त किया है।

अगला कदम हम DHT22 का परीक्षण करेंगे।

चरण 5: DHT22 सेंसर का परीक्षण

DHT22 सेंसर का परीक्षण
DHT22 सेंसर का परीक्षण

अब कुछ अतिरिक्त तारों की आवश्यकता है।

DHT पिन… सेंसर के पिन 1 (बाईं ओर) को VCC (3.3V) से कनेक्ट करें

पिन 2 ESP GPIO5 कनेक्ट करें (स्केच में DHTPIN)

सेंसर के पिन 4 (दाईं ओर) को ग्राउंड से कनेक्ट करें

सेंसर के पिन 2 (डेटा) से पिन 1 (पावर) से 10K रोकनेवाला कनेक्ट करें।

NTP परीक्षण के समान, DHTtester स्केच ढूंढें, और इसे निम्न तरीके से ट्वीक करें:

#define DHTPIN 5 // हमने सेंसर से कनेक्ट करने के लिए GPIO5 का चयन किया#DHTTYPE DHT22 को परिभाषित करें // क्योंकि हम DHT22 का उपयोग कर रहे हैं लेकिन यह कोड/लाइब्रेरी DHT11 के लिए भी उपयुक्त है

फिर से, सीरियल मॉनिटर को बंद करें, ईएसपी को पावर साइकिल करें और ईएसपी को संकलित और फ्लैश करें।

यदि सब ठीक हो जाता है तो आपको सीरियल मॉनीटर में माप दिखाई देना चाहिए।

आप सेंसर के साथ थोड़ा खेल सकते हैं। यदि आप उस पर सांस लेते हैं, तो आप देखेंगे कि नमी ऊपर जा रही है।

यदि आपके पास एक (गैर एलईडी) डेस्क लैंप है, तो आप इसे थोड़ा गर्म करने के लिए सेंसर पर चमक सकते हैं।

महान! सेंसर के दो बड़े हिस्से अब काम कर रहे हैं।

अगले चरण में मैं अंतिम कोड पर टिप्पणी करूंगा।

चरण 6: इसे एक साथ रखना …

एक साथ रखते हुए…
एक साथ रखते हुए…

फिर से कुछ अतिरिक्त वायरिंग … यह डीपस्लीप को संभव बनाने के लिए है।

याद रखें, आईओटी उपकरणों के लिए डीपस्लीप एक अविश्वसनीय कार्य है।

हालाँकि, यदि आपका सेंसर डीपस्लीप के लिए हार्डवेअर है, तो ईएसपी को फिर से शुरू करना मुश्किल हो सकता है, इसलिए हम बीच में एक और जम्पर कनेक्शन बनाने जा रहे हैं।

GPIO16-आरएसटी।

हाँ यह GPIO16 होना चाहिए, क्योंकि यह GPIO है जो डिवाइस को जगाने के लिए हार्डवायर्ड है जब डीप स्लीप के बाद रियल टाइम क्लॉक बंद हो जाता है!

जब आप परीक्षण कर रहे हों, तो आप 15 सेकंड की डीपस्लीप करने का निर्णय ले सकते हैं।

जब मैं डिबगिंग कर रहा था, तो मैं जम्पर को GPIO0 पर ले जाऊंगा ताकि मैं अपना प्रोग्राम फ्लैश कर सकूं।

डाउनलोड पूरा होने पर, मैं जम्पर को GPIO16 में ले जाऊंगा ताकि डीपस्लीप काम करे।

ESP के लिए कोड को TnHclient.c. कहा जाता है

आपको अपना SSID, पासवर्ड और अपने सर्वर का IP पता बदलना होगा।

कोड की अतिरिक्त पंक्तियाँ हैं जिनका उपयोग आप अपने सेटअप के समस्या निवारण या परीक्षण के लिए कर सकते हैं।

चरण 7: सर्वर साइड ऑफ थिंग्स।

सर्वर साइड ऑफ थिंग्स।
सर्वर साइड ऑफ थिंग्स।
सर्वर साइड ऑफ थिंग्स।
सर्वर साइड ऑफ थिंग्स।

यह एक आम गलतफहमी है कि यूडीपी अविश्वसनीय है और टीसीपी…

यह उतना ही मूर्खतापूर्ण है जितना कि यह कहना कि एक पेचकश की तुलना में एक हथौड़ा अधिक उपयोगी है। वे बस अलग-अलग बहुत उपयोगी उपकरण हैं और उन दोनों के अपने उपयोग हैं।

वैसे यूडीपी के बिना इंटरनेट काम नहीं करेगा… डीएनएस यूडीपी पर आधारित है।

इसलिए, मैंने यूडीपी को चुना क्योंकि यह बहुत हल्का, आसान और तेज़ है।

मुझे लगता है कि मेरा वाईफाई बहुत विश्वसनीय है इसलिए ग्राहक अधिकतम 3 यूडीपी पैकेट भेजेगा यदि पावती "ओके!" प्राप्त नहीं होता है।

TnHserver के लिए C-कोड TnHServer.c फ़ाइल में है।

कोड में इसे समझाते हुए कई टिप्पणियां हैं।

हमें सर्वर पर कुछ अतिरिक्त टूल की आवश्यकता होगी: rrdtool, apache और शायद tcpdump।

रास्पियन पर rrdtool स्थापित करने के लिए आप बस इस तरह से पैकेज स्थापित कर सकते हैं: apt-get install rrdtool

यदि आपको नेटवर्क ट्रैफ़िक को डीबग करने की आवश्यकता है, तो tcpdump काम में आता है apt-get install tcpdump

ग्राफ़ से परामर्श करने के लिए मुझे ब्राउज़र का उपयोग करने में सक्षम होने के लिए एक वेबसर्वर की आवश्यकता है: apt-get install apache2

राउंड रॉबिन डेटाबेस बनाने के लिए कमांड प्राप्त करने के लिए मैंने इस टूल का उपयोग किया: https://rrdwizard.appspot.com/index.php। आपको इसे केवल एक बार चलाने की आवश्यकता है (यदि आप इसे पहली बार सही पाते हैं)।

rrdtool TnHdatabase.rrd बनाएँ -- अभी शुरू करें-10s

--चरण '1200'

'डीएस: तापमान: गेज: 1200: -20.5: 45.5'

'डीएस: आर्द्रता: गेज:1200:0:100.0'

'आरआरए: औसत: 0.5:1:720'

'आरआरए: औसत: 0.5:3:960'

'आरआरए: औसत: 0.5:18:1600'

अंत में, मैं हर दिन आधी रात को अपने TnHserver को पुनरारंभ करने के लिए एक crontab प्रविष्टि का उपयोग करता हूं। मैं सुरक्षा एहतियात के तौर पर TnHserver को एक सामान्य उपयोगकर्ता (यानी रूट नहीं) के रूप में चलाता हूं।

0 0 * * * /usr/bin/pkill TnHserver; /होम/उपयोगकर्ता/बिन/TnHserver >/dev/null 2>&1

आप जाँच कर सकते हैं कि TnHserver किसके द्वारा चल रहा है

$ पीएस -एल्फ | ग्रेप टीएनएचसर्वर

और आप सत्यापित कर सकते हैं कि यह पोर्ट 7777 पर पैकेट के लिए सुन रहा है

$ नेटस्टैट -अनु

सक्रिय इंटरनेट कनेक्शन (सर्वर और स्थापित)

प्रोटो आरईवी-क्यू सेंड-क्यू स्थानीय पता विदेशी पता राज्य

यूडीपी 0 0 0.0.0.0:7777 0.0.0.0:*

अंत में CreateTnH_Graphs.sh.txt ग्राफ़ बनाने के लिए एक उदाहरण स्क्रिप्ट है। (मैं स्क्रिप्ट को रूट के रूप में जेनरेट करता हूं, हो सकता है कि आप ऐसा नहीं करना चाहें।)

एक बहुत ही सरल वेबपेज का उपयोग करके आप अपने होम नेटवर्क पर किसी भी ब्राउज़र से ग्राफ़ देख सकते हैं।

सिफारिश की: