DIY घर जलवायु नियंत्रण

शुभ दिन, प्रिय Khabrovites। मैं TSOP, IR, DHT22 और फ्लोर-माउंटेड इलेक्ट्रोलक्स एयर कंडीशनर और कुछ अन्य घटकों का उपयोग करके एक Arduino बोर्ड पर आधारित एक वेब मुखबिर के साथ एक घर के जलवायु नियंत्रण बनाने में अपने छोटे से अनुभव को साझा करना चाहता हूं।



इसलिए, यदि आप मेरे कार्यान्वयन में रुचि रखते हैं, तो हैब्रकैट (वहां अपलोड करने के लिए तैयार स्केच) में आपका स्वागत है।

परिचय।


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

ट्यूबों को बाहर निकालने के लिए मुझे ज़रूरत थी:
• Plexiglas मेरी खिड़की के 1 सैश (डबल-घुटा हुआ खिड़कियां) ट्यूब के लिए प्लस छेद का आकार।
• plexiglass स्थापित करने के लिए 4 आरोह
• हवा वेंट के लिए ट्यूब (पन्नी ली गई) 2 पीसी।
• एयर कंडीशनिंग

लब्बोलुआब यह है कि हमारे ट्यूबों के लिए हमारे Plexiglas में 2 छेद हैं, जो हवा लेते हैं और निकालते हैं। ऐसा इसलिए किया गया ताकि हवा की कोई कमी न हो (मैंने इसके बारे में विभिन्न मंचों पर पढ़ा, लेकिन मैंने खुद इसे नोटिस नहीं किया, लेकिन यह बहुत बुरा था, मुझे लगता है)। मैंने एक छोटे कोण पर ऊपर और बाईं ओर हमारे Plexiglas में गर्म हवा के आउटलेट के साथ ट्यूब को ठीक किया, हवा का सेवन ट्यूब एक छोटे से कोण पर और दाईं ओर, ताकि हवा का प्रवाह न हो। मैंने खिड़की के बाहर plexiglass mounts बनाया, एक विचार आया कि खिड़की के अगले भाग में स्थापित मच्छर नेट को देखा जाए (निचले तल पर रहने वाले मच्छरों को परेशान करते हैं, साथ ही पोपलर के फूलों की अवधि के दौरान मेरा जाल बेरी हो गया, लेकिन अपार्टमेंट में कोई फुल नहीं था)।



ऊपर की तस्वीर में, यह स्पष्ट प्रतीत होता है कि यह कैसे जुड़ा हुआ है, जहां ट्यूब स्थित हैं, आदि। यदि आपके कोई प्रश्न हैं, तो टिप्पणियों में पूछें। और इसलिए, अब हमारे पास एक एयर कंडीशनर है, जो खिड़की के पास है, एयर कंडीशनर से ट्यूब को Plexiglas में डाला जाता है और सड़क पर बाहर ले जाया जाता है (केवल असुविधा लगातार खिड़की खुली रहती है, लेकिन यह Plexiglas द्वारा अवरुद्ध है, यह सौंदर्यवादी रूप से मनभावन नहीं है, लेकिन लोड-असर वाली दीवार को ड्रिल करने के लिए व्यास 20 सेमी हैं। सड़क पर 2 टुकड़े वहाँ कोई इच्छा नहीं है)। अब हम अपने सिस्टम के तर्क पर चलते हैं।

तार्किक हिस्सा





मेरे मामले में, इलेक्ट्रोलक्स ईएसीएम -14 ईज़ेड / एन 3 एयर कंडीशनर का उपयोग किया जाता है, जिसमें कई मोड + आईआर रिमोट होते हैं। पहला और मुख्य एक है, ज़ाहिर है, शीतलन (हैलो, कैप)। दूसरा, लेकिन कोई कम उपयोगी नहीं है हवा का निरार्द्रीकरण (आर्द्रीकरण नहीं, अर्थात् डीह्यूमिडिफिकेशन)। दूसरा बहुत उपयोगी हो सकता है, विशेष रूप से गर्मी में, क्योंकि गर्मी को ड्रायर हवा (ठंड के अलावा) में ले जाना आसान होता है, और हाल ही में अपार्टमेंट में मेरे पास 75-80% की आर्द्रता थी (कम से कम हाईग्रोमीटर ने मुझे काम पर दान दिया )। हवा को नम करने के लिए, मैं एक सस्ते ह्यूमिडिफायर का उपयोग करता हूं जो बस पानी को एक उबलते बिंदु तक गर्म करता है और यह सब, वहाँ अभी तक कोई कनेक्शन विवरण नहीं है, क्योंकि मैंने इसे अभी तक समाप्त नहीं किया है, लेकिन मैं इसे निश्चित रूप से प्रकाशित करूंगा, तथ्य यह है कि इसमें आईआर जैसे कोई इंटरफेस नहीं है, आदि। , इसलिए आपको इसे अलग करने की आवश्यकता है, एक रिले के साथ अपने नियंत्रक को मिलाप करें, लेकिन चलो मुख्य विषय पर लौटते हैं। मेरे और मेरी पत्नी के लिए, कमरे में तापमान आदर्श रूप से 22-24 डिग्री (अच्छी तरह से, चरम मामलों में, 25 लेकिन काफी कम आर्द्रता पर) था।



इसलिए, हम निम्नलिखित तर्क को उजागर करते हैं:
• t> 25 डिग्री के मामले में कूलिंग सिस्टम चालू करें
• t <22 डिग्री पर शीतलन प्रणाली को बंद करें
• h> 60% hhumidification मोड चालू करें
• h <40% पर नाली मोड को बंद करें
• यदि 22 <t <25 और 40 <h <60 - हम स्वचालित मोड को चालू करते हैं (कंडोम वैकल्पिक रूप से जल निकासी और ठंडा करने पर बदल जाता है, या हम नियंत्रक के माध्यम से शिफ्ट को नियंत्रित करते हैं, तो प्रत्येक प्रकार के लिए 5 मिनट कहते हैं)

कुल में, हमारे पास 4 IR टीमें हैं:
• अधिकतम शीतलन के लिए कॉन्डो को चालू करें (मॉडल के आधार पर अधिकतम, तापमान 16 या 18 डिग्री के लिए प्रशंसक)
• अधिकतम जल निकासी के लिए कोंडो को चालू करें (अधिकतम के लिए पंखा)
• स्वचालित मोड में कंडोस को चालू करें
• कॉन्डो को बंद कर दें

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

कार्यान्वयन की शुरुआत




ईथरनेट ढाल विधानसभा के साथ हमारे arduino।

आइए एयर कंडीशनर रिमोट कंट्रोल के कमांड को लिखें। इसके लिए, मैंने arduino के लिए एक तैयार पुस्तकालय का उपयोग किया, एक PSTN जो इससे जुड़ा था, और कोंडेय से रिमोट कंट्रोल। हम लाइब्रेरी को गितुब से डाउनलोड करते हैं (वैसे, नवीनतम संस्करण में उन्होंने एक लंबे पैकेज के साथ समस्या को हल किया, इसे बढ़ाकर 100 कर दिया गया, इससे पहले कुछ टीमें फिट नहीं हुई थीं, क्योंकि 50 की सीमा थी, और अक्सर बहुत सारे गुस्से की समीक्षा मिलती थी, हालांकि यह 2 सेकंड में तय किया गया था)। इस पुस्तकालय का लाभ यह है कि डेमो में हमारे पीएसटीएन के लिए आने वाले संकेतों के बजाय सुविधाजनक लॉगर है और आउटपुट सीरियल में है।


यहाँ TSOP ही है और इसके सामने एक IR LED है

Pinout TSOP22 (अन्य लोगों के लिए, जहां तक ​​मुझे पता है, सब कुछ समान है):



दोनों कच्चे डेटा (अर्थात संसाधित नहीं) और तैयार-टू-पार्स पैकेट को प्रकार से (उदाहरण के लिए, एनईसी, आरसी 5, आदि) आउटपुट हैं यदि उन्हें परिभाषित किया गया है, जो कि लघु रूप में लाइब्रेरी से सीधे भेजा जा सकता है। मेरे एयर कंडीशनर में आमतौर पर स्वीकृत मानक मानक नहीं होते हैं (वैसे, एक टीवी की तरह, लेकिन एनईसी प्रोटोकॉल कार्यों का उपयोग करके ऑनलाइन से उपसर्ग), इसलिए हम तथाकथित कच्चे डेटा का उपयोग करेंगे। सबसे पहले, हमारे पीएसटीएन सेंसर को नीचे दी गई तस्वीर में दिखाए गए अनुसार (एलईडी पर ध्यान न दें) से कनेक्ट करें और हमारे पेरुअर फर्मवेयर को अर्डिनो (IRrecvDump) पर डेमो लाइब्रेरी से भरें।


TSOP कनेक्शन आरेख

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

Raw periods: +2650 -2650 +750 -2000 +750 -700 +700 -700 +700 -700 +750 -700 +700 -700 +750 -650 +750 -700 +750 -700 +700 -700 +700 -700 +750 -700 +700 -700 +750 -650 +750 -700 +700 -700 +750 -700 +700 -700 +750 -700 +700 -700 +750 -650 +800 -700 +700 -750 +700 -650 +750 -700 +700 -700 +750 -650 +800 -650 +750 -700 +700 -2000 +750 -1950 +750 -2000 +750    : unsigned int TurnColdOn[68] = {2650,2650,750,2000,750,700,700,700,700,700,750,700,700,700,750,650,750,700,750,700,700,700,700,700,750,700,700,700,750,650,750,700,700,700,750,700,700,700,750,700,700,700,750,650,800,700,700,750,700,650,750,700,700,700,750,650,800,650,750,700,700,2000,750,1950,750,2000,750}; irsend.sendRaw(TurnColdOn,68,38); 


कच्चे अवधियों के बारे में - जहां "+" वहां हम माइक्रोसेकंड की इंगित संख्या को जलाते हैं, जहां "-" हम माइक्रोसेकंड की इंगित संख्या को नहीं जलाते हैं। उन लोगों के लिए, जो उदाहरण के लिए, एवीआर नियंत्रक जैसे कि टीनेक का उपयोग करते हैं, माइक्रोसेकंड के साथ एक देरी फ़ंक्शन है। इस तरह इस्तेमाल किया:

 #include <util/delay.h> _delay_us(  ); 


इस प्रकार, हम सभी आवश्यक कमांड एकत्र करते हैं। अब हम अपने DHT22 को arduino, IR LED से जोड़ेंगे और अपना स्केच लिखेंगे जो मुख्य तर्क देता है। इस संस्करण में, मैं, दुर्भाग्यवश, पूरी तरह से वायर्ड डेटा ट्रांसमिशन सिस्टम का उपयोग करता हूं, मैंने NF24L01 सेंसर का आदेश दिया, लेकिन यह ज्ञात नहीं है कि वे मेरे पसंदीदा चीन से कितने अधिक आएंगे, अधिक विवरण के लिए TODO अनुभाग में लेख के अंतिम भाग में अंतिम रूप देने की योजना की सूची देखें। इसके अलावा, प्रोजेक्ट को लागू करने के लिए एक ईथरनेट शील्ड का उपयोग किया गया था ($ 9-15 के क्षेत्र में मध्य साम्राज्य से एक एनालॉग (मैंने 9 के लिए लिया था)।


फोटो में, तापमान संवेदक को डीबग करना

संग्रह के परिणामस्वरूप, हमारे पास निम्नलिखित योजना होगी:



कुछ लोग Vcc और Data टर्मिनलों के बीच तापमान संवेदक को 10 kOhm के मान के साथ एक पुल-अप पुल-अप रोकनेवाला रखने की सलाह देते हैं, लेकिन यह इसके बिना काम करता है, और ईमानदार होने के लिए, ईमानदार होने के लिए, मैं इसे नहीं देखता, माप संतोषजनक नहीं है।

मुख्य कार्यान्वयन (कोड)




परीक्षण के दौरान पूरी प्रणाली को इकट्ठा किया जाता है।

हमारा DHT22 2 एनालॉग पिन, IR LED से 3 (pwm वाला एक) से जुड़ा है।
कोड
 #include <dht.h> #include <SPI.h> #include <Ethernet.h> #include <IRremote.h> #define DHT22_PIN 2 dht DHT; byte mac[] = {0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED }; byte gateway[] = {192, 168, 1, 1 }; byte subnet[] = {255, 255, 255, 0 }; IPAddress ip(192, 168, 1, 220); float MAX_TEMP = 25.0; float MIN_TEMP = 22.0; int MAX_HUMID = 60; int MIN_HUMID = 40; int last_condey_status = 0; unsigned int TurnCondeyOff[68] = {2700,2600,750,700,700,700,700,700,750,700,750,700,750,650,750,700,700,700,750,700,750,650,750,700,700,700,750,700,700,700,700,700,750,700,700,700,750,650,750,700,750,700,700,700,750,650,750,700,700,700,750,650,750,700,750,700,750,700,700,2000,750,2000,750,1950,750,2000,750}; unsigned int TurnCondeyMaxOn[68] = {2650,2650,750,2000,750,700,700,700,700,700,750,700,700,700,750,650,750,700,750,700,700,700,700,700,750,700,700,700,750,650,750,700,700,700,750,700,700,700,750,700,700,700,750,650,800,700,700,750,700,650,750,700,700,700,750,650,800,650,750,700,700,2000,750,1950,750,2000,750}; unsigned int TurnCondeyWaterOn[68] = {2650,2650,750,2000,750,700,700,700,700,700,750,700,700,700,750,650,750,700,750,700,700,700,700,700,750,700,700,700,750,650,750,700,700,700,750,700,700,700,750,700,700,700,750,650,800,700,700,750,700,650,750,700,700,700,750,650,800,650,750,700,700,2000,750,1950,750,2000,750}; unsigned int TurnCondeyAuto[68] = {2650,2650,750,2000,750,700,700,700,700,700,750,700,700,700,750,650,750,700,750,700,700,700,700,700,750,700,700,700,750,650,750,700,700,700,750,700,700,700,750,700,700,700,750,650,800,700,700,750,700,650,750,700,700,700,750,650,800,650,750,700,700,2000,750,1950,750,2000,750}; IRsend irsend; int dht_status = 0; char serverName[] = "myserver.ru"; byte server[] = {192, 168, 1, 5 }; EthernetClient client; void setup() { Serial.begin(9600); Serial.print("LIBRARY VERSION: "); Serial.println(DHT_LIB_VERSION); delay(1000); Serial.println("Try to configure Ethernet using DHCP..."); // start the Ethernet connection: if(Ethernet.begin(mac) == 0) { Serial.println("Failed to configure Ethernet using DHCP. Using manual config."); Ethernet.begin(mac, ip, gateway); } PrintIPtoSerial(); } void loop() { Serial.println("status,\tHumidity (%),\tTemperature (C)"); // READ DATA int chk = DHT.read22(DHT22_PIN); switch (chk) { case DHTLIB_OK: dht_status = 200; Serial.print("OK,\t"); break; case DHTLIB_ERROR_CHECKSUM: dht_status = 501; Serial.print("Checksum error,\t"); break; case DHTLIB_ERROR_TIMEOUT: dht_status = 504; Serial.print("Time out error,\t"); break; default: dht_status = 500; Serial.print("Unknown error,\t"); break; } // DISPLAY DATA Serial.print(DHT.humidity, 1); Serial.print(",\t"); Serial.println(DHT.temperature, 1); SendDataToServer(dht_status, DHT.temperature, DHT.humidity); WorkWithCondey(DHT.temperature, DHT.humidity); Serial.println(); delay(1000); } boolean SendDataToServer(int d_stat, float temp, int humidity) { if (client.connect(server, 80)) { char buf[80]; int temp1 = (temp - (int)temp) * 100; int humidityl = (humidity - (int)humidity) * 100; Serial.println("Sending information to weather server"); // Make a HTTP request: sprintf(buf, "GET /meteo.php?S=%d&T=%0d.%d&H=%0d.%d&CS=%d HTTP/1.1", (int)d_stat, (int)temp, abs(temp1), (int)humidity, abs(humidityl), last_condey_status); client.println(buf); client.println("Host: myserver.ru"); client.println("Connection: close"); client.println(); client.stop(); return true; } else { // if you didn't get a connection to the server: Serial.println("Connection to weather server failed"); client.stop(); return false; } } void WorkWithCondey(float temp, int humidity) { int status = 0; if(temp > MAX_TEMP) { status=1; } if(temp < MIN_TEMP) { status=0; } if(humidity > MAX_HUMID) { status = status+3; } if(humidity < MIN_HUMID) { status = status; } String condey_text_status = ""; if(status != last_condey_status) { last_condey_status = status; if(status == 0) { irsend.sendRaw(TurnCondeyOff,68,38); } if(status == 1) { irsend.sendRaw(TurnCondeyMaxOn,68,38); } if(status == 3) { irsend.sendRaw(TurnCondeyWaterOn,68,38); } if(status == 4) { irsend.sendRaw(TurnCondeyAuto,68,38); } } Serial.print("Condition status: "); Serial.println(status); } void PrintIPtoSerial() { Serial.print("My Local IP address: "); Serial.println(Ethernet.localIP()); } 


यह कोड तापमान संवेदक को देखता है, मेरे सर्वर को डेटा भेजता है (यह एयर कंडीशनर की अंतिम स्थिति भी भेजता है जब तक मैं इसे संसाधित नहीं करता लेकिन यह काम में आ सकता है), वर्कविंडकॉन्डे फ़ंक्शन को भी कहा जाता है, जो सेंसर डेटा की जांच करता है और कॉन्डो को चालू करता है या कौन से मोड को चालू करता है या नहीं। सर्वर की ओर, मेरे पास एक साधारण php स्क्रिप्ट है जो डेटा के साथ एक अनुरोध प्राप्त करता है (केवल अनुमत सूची से स्थानीय ips से)। वह इस डेटा को डेटाबेस में रखता है (जबकि mongodb), और डेटा को किसी फ़ाइल में लिखता है, यह फ़ाइल इंटरनेट पर उपलब्ध है, और मैंने C # में एक छोटा प्रोग्राम लिखा है जो इस डेटा को पढ़ता है और इसे ऑन स्क्रीन डिस्प्ले (OSD) मोड में प्रदर्शित करता है, अर्थात बिना किसी पृष्ठभूमि वाले सभी विंडो के शीर्ष पर पाठ। इस पूरी योजना में मैं जो अनुकूलन करने की योजना बना रहा हूँ, उसके लिए TUDU अनुभाग देखें। यदि आप मेरे कोड का उपयोग करेंगे, तो myserver.ru को अपने डेटा के साथ बदलना न भूलें।

स्केच में भरने के बाद जानकारी:
Binary sketch size: 22 034 bytes (of a 32 256 byte maximum) - 68% used

और यहाँ कॉम पोर्ट का आउटपुट क्या है
साहित्यिक संस्करण: 0.1.05
DHCP का उपयोग करके ईथरनेट को कॉन्फ़िगर करने का प्रयास करें ...
मेरा स्थानीय आईपी पता: 192.168.1.107
स्थिति, आर्द्रता (%), तापमान ©
ठीक है, 67.5, 26.2
मौसम सर्वर को जानकारी भेजना
स्थिति: 4

स्थिति, आर्द्रता (%), तापमान ©
ठीक है, 67.4, 26.3
मौसम सर्वर को जानकारी भेजना
स्थिति: 4

स्थिति, आर्द्रता (%), तापमान ©
ठीक है, 67.4, 26.3
मौसम सर्वर को जानकारी भेजना
स्थिति: 4

स्थिति, आर्द्रता (%), तापमान ©
ठीक है, 67.4, 26.3
मौसम सर्वर को जानकारी भेजना
स्थिति: 4

स्थिति, आर्द्रता (%), तापमान ©
ठीक है, 67.4, 26.4
मौसम सर्वर को जानकारी भेजना
स्थिति: 4

स्थिति, आर्द्रता (%), तापमान ©
ठीक है, 67.3, 26.3
मौसम सर्वर को जानकारी भेजना
स्थिति: 4

स्थिति, आर्द्रता (%), तापमान ©
ठीक है, 67.3, 26.4
मौसम सर्वर को जानकारी भेजना
स्थिति: 4

स्थिति, आर्द्रता (%), तापमान ©
ठीक है, ६ OK.२, २६.४
मौसम सर्वर को जानकारी भेजना
स्थिति: 4

जैसा कि आप लॉग से देख सकते हैं, हमारे पास एयर कंडीशनर की स्थिति "4" है। यदि आप स्रोत कोड को देखते हैं, तो स्थिति 4 के साथ - एयर कंडीशनर के स्वचालित मोड के लिए नियम चालू हो जाता है, जो समझ में आता है, क्योंकि लॉग के अनुसार आर्द्रता 67.2% है और तापमान 26.4 डिग्री है। यदि आप सेंसर को एयर कंडीशनर के एयरफ्लो में लाते हैं, तो स्थिति 0 में बदल जाती है, अर्थात। एयर कंडीशनर बंद है।

परिणाम



शेल्फ पर पूरा सिस्टम जहां यह एयर कंडीशनिंग को नियंत्रित करता है

हमारे पास arduino, ईथरनेट कवच, ir एलईडी, tsop सेंसर, एयर कंडीशनिंग है - और यह सब अपने आप काम करता है। जबकि मैंने इसे 2 दिनों (सप्ताहांत में) के लिए परीक्षण किया था, स्केच में कई कीड़े तय किए गए थे, जैसे कि अभी तक कोई दुर्घटना नहीं हुई है।

यह करें!


तो, जो लागू करने की योजना है उसकी एक सूची:
1. डेटा फ़ाइल को मेम्चे में बदलें, ताकि फाइल सिस्टम को पीड़ा न हो। केवल मामले में मेमकेच में अंतिम 5 प्रविष्टियां रखें
2. MongoDB से लेकर माईसक्ल (या कुछ और, यह सिर्फ इतना समझ में नहीं आता है, यह डेटाबेस बदल गया, यह खड़ा था, लेकिन कोई अन्य डेटाबेस नहीं थे, और यह स्थापित करने के लिए बहुत आलसी था)
3. डेटाबेस में लिखने के लिए, कतारों (या तो अपाचे एमक्यू या अन्य एनालॉग्स) का उपयोग करें।
4. सिस्टम को 3 भागों में विभाजित करें: एक ईथरनेट और RL24L01 के साथ Arduino, एक तापमान सेंसर (टिंका 2313) और RF24L01 के साथ एक बोर्ड, IR LED (टिंका 2313) और RF2L01 के साथ एक बोर्ड। यह आकार को कम करने के लिए आवश्यक है, ताकि यह केवल आर्डिनो से सब कुछ जोड़ने के लिए अनावश्यक हो, और हवा के माध्यम से काम करे।
5. एक और एयर एक्सचेंज के साथ आने के लिए, लेकिन अभी तक यह सोचा भी नहीं है कि इसे बेहतर कैसे बनाया जाए (टिप्पणियों में सलाह दें, मुझे बहुत खुशी होगी)।
6. एक बच्चे के जन्म के संबंध में (वह केवल एक महीने का था), उसने सेंसर (आईआर उपस्थिति डिटेक्टर) की दावत का आदेश दिया, मुझे नहीं पता कि यह कितना अच्छा काम करेगा। एक बच्चे के साथ (अच्छी तरह से, सामान्य रूप से, जब कोई व्यक्ति कमरे में होता है), तो आपको कोंडो को चालू करने की आवश्यकता नहीं है। साथ ही, उसी स्थिति को स्क्रिप्ट में भेजा जाएगा जो लोगों को घर के अंदर भेजती है।
7. इस सिस्टम से कनेक्ट करने के लिए एक सस्ते ह्यूमिडिफायर को संशोधित करें। NF24L01 के साथ एक बोर्ड, एक टिंका 2313 और एक साधारण रिले वहां जाएगा। क्योंकि इस ह्यूमिडिफायर के केवल दो मोड हैं: ऑन और ऑफ और फिर एक बटन से :)

NF24L01:


पीर सेंसर:


धन्यवाद


हबरू - एक ऐसे मंच के लिए जहां मैं व्यक्तिगत अनुभव साझा कर सकता हूं और ज्ञान को फिर से भर सकता हूं
DIHALT - दिलचस्प लेखों के लिए जिसके लिए मैं DIY में शामिल हुआ
Arduino खेल का मैदान - DHT सेंसर के साथ काम करने के लिए पुस्तकालय के लिए
शिरिफ - आईआर संकेतों के साथ काम करने के लिए पुस्तकालय के लिए
चीन - सस्ते घटकों और सेंसर के लिए
आप, प्रिय पाठक, अंत तक पढ़ने के लिए :)
और निश्चित रूप से बेटे के लिए मेरी पत्नी और इस विचार की प्राप्ति के लिए जादू गधा में मारता है।

फ़ाइलें


मेरा स्केच ऊपर (बस मामले में)
DHT22 के लिए पुस्तकालय (Arduino साइट)
DHT22 पर डेटशीट
TSOP31256 पर डेटाशीट जो मैं उपयोग करता हूं
IR (github) के साथ काम करने के लिए पुस्तकालय

Upd। जोड़ा तस्वीरें, जोड़ा और अद्यतन तारों आरेख। जोड़ा गया डेटशीट। अपडेटेड स्केच कोड (छोटा फिक्स)। DHT22 और DHT11 लाइब्रेरी के लिए लिंक को सही किया।
Upd। 2 - अंतिम arduino कनेक्शन आरेख अपडेट किया गया। (प्रतिरोधों को जोड़ा गया, साइरिनक्स टिप के लिए धन्यवाद)

मुझे उम्मीद है कि आपको लेख पसंद आया होगा, टिप्पणियों और सुझावों को टिप्पणियों में छोड़ दें। मुझे रचनात्मक आलोचना करने में खुशी होगी। और मैं तुरंत सहमत हूं, इस मामले में शुरुआती लोगों के लिए एक लेख। सप्ताहांत में मैं एक वीडियो शूट करूँगा कि यह सब कैसे पूरे विवरण और प्रदर्शन के साथ काम करता है।

Source: https://habr.com/ru/post/In184966/


All Articles