विषयसूची:

Arduino UNO का उपयोग कर मौसम स्टेशन: 7 कदम
Arduino UNO का उपयोग कर मौसम स्टेशन: 7 कदम

वीडियो: Arduino UNO का उपयोग कर मौसम स्टेशन: 7 कदम

वीडियो: Arduino UNO का उपयोग कर मौसम स्टेशन: 7 कदम
वीडियो: Beyond the Basics: Automatic Gatekeeper With IR Sensor And ChatGPT Generated Arduino Code 2024, जुलाई
Anonim
Arduino UNO. का उपयोग करते हुए मौसम स्टेशन
Arduino UNO. का उपयोग करते हुए मौसम स्टेशन

के द्वारा बनाई गई: हेज़ल यांगो

यह प्रोजेक्ट डेटा प्रवाह को नियंत्रित करने के लिए Arduino UNO बोर्ड का उपयोग करने वाला एक मौसम स्टेशन है, डेटा एकत्र करने के लिए एक DHT22 सेंसर और डेटा दिखाने के लिए एक OLED स्क्रीन है।

चरण 1: आइटम सूची

सामान की सूची
सामान की सूची

1. स्क्रीन: OLED, 1.3 डिस्प्ले SH1106, I2C सफेद रंग ---- PID: 18283

2. सेंसर: डिजिटल आर्द्रता और तापमान सेंसर DHT22 ---- PID: 7375

3. जोड़ता है: जम्पर तार ---- पीआईडी: 10316 या 10318 या 10312 (लंबाई पर निर्भर करता है) या आप ठोस तार 22 एडब्ल्यूजी ---- पीआईडी: 22490 का उपयोग कर सकते हैं

ब्रेडबोर्ड ---- पीआईडी: 10686 या 10698 या 103142 (आकार पर निर्भर करता है)

4. पावर: यह केबल केवल कंप्यूटर यूएसबी पोर्ट से कनेक्ट हो सकती है और केबल का उपयोग आईडीई और Arduino बोर्ड के बीच डेटा ट्रांसफर के लिए भी किया जाता है। USB केबल, A से B, M/M, 0.5M (1.5FT) ---- PID: 29862

या आप इसका उपयोग बोर्ड को पावर देने के लिए कर सकते हैं: 5V 2A AC/DC अडैप्टर ---- PID: 10817।

चरण 2: सापेक्ष परिचय

सापेक्ष परिचय
सापेक्ष परिचय
सापेक्ष परिचय
सापेक्ष परिचय

स्क्रीन का परिचय: 1.3 ओएलईडी डिस्प्ले व्हाइट

1. आप मूल सेटअप और विवरण दिखाने वाला दस्तावेज़ पा सकते हैं:

सेंसर का परिचय: आर्द्रता और तापमान सेंसर DHT22 1. आप विवरण दिखाने वाला दस्तावेज़ पा सकते हैं:

चरण 3: सर्किट कनेक्ट करें

सर्किट कनेक्ट करें
सर्किट कनेक्ट करें

DHT22 सेंसर सीरियल डेटा को पिन 2 पर भेजता है। इसलिए, दूसरे पिन को बाईं ओर से कनेक्ट करें, "SDA" पिन को पिन 2 से जोड़ा जाना चाहिए।

SSH1106 डिस्प्ले के लिए, यह ट्रांसमिट करने के लिए एनालॉग पिन का उपयोग करता है। स्क्रीन की सर्किटरी Arduino के "A5" के लिए "SCL" पिन और Arduino के "A4" के लिए "SDA" पिन होगी। जबकि पिक्सेल स्थिति डेटा लगातार संचारित हो रहा है, प्रोग्राम में डिस्प्ले फ़ंक्शन केवल सेंसर से डेटा को पढ़ने पर हर बार कमांड को ट्रिगर करता है।

सेंसर और स्क्रीन दोनों Arduino पर DC पावर इनपुट के रूप में 3.3V को पावर देने के लिए उपयोग कर सकते हैं। सत्ता के लिए, हमें दोनों "वीसीसी" पिन को Arduino के "3.3V" से कनेक्ट करने की आवश्यकता है। और "GND" पिन को केवल Arduino बोर्ड पर "GND" पिन से जोड़ा जा सकता है।

USB A से B केबल का उपयोग करें, अरुडिनो को कंप्यूटर से कनेक्ट करें।

चरण 4: संकलन के लिए तैयार करें

Olikraus से SSH1106 स्क्रीन के लिए "u8glib"।

Adafruit के DHT22 सेंसर के लिए "DHT सेंसर लाइब्रेरी"। आपको दो लाइब्रेरी डाउनलोड करनी चाहिए: DHT22 सेंसर लाइब्रेरी:

U8glib:

और उन्हें अनज़िप करने के लिए IDE में "लाइब्रेरी प्रबंधित करें" का उपयोग करें। पुस्तकालयों के प्रबंधन का ऑनलाइन निर्देश:

चरण 5: DHT22 सेंसर सीरियल पोर्ट के लिए टेस्ट कोड

DHT22 सेंसर सीरियल पोर्ट के लिए टेस्ट कोइ (जो DHT22 लाइब्रेरी के अंदर है >> उदाहरण):

(आप इस भाग को छोड़ सकते हैं।)

यह सिर्फ DHT22 सेंसर का परीक्षण करने के लिए सामान्य रूप से डेटा पढ़ता है।

#शामिल

#शामिल

#शामिल

#शामिल

#शामिल

#DHTPIN 2 परिभाषित करें

#DHTTYPE DHT22 को परिभाषित करें

डीएचटी डीएचटी (डीएचटीपीआईएन, डीएचटीटीपीई);

व्यर्थ व्यवस्था() {

सीरियल.बेगिन (९६००);

Serial.println (एफ ("डीएचटी 22 टेस्ट!"));

dht.begin ();

}

शून्य लूप () {

// माप के बीच कुछ सेकंड प्रतीक्षा करें।

देरी (2000);

// तापमान या आर्द्रता पढ़ने में लगभग 250 मिलीसेकंड लगते हैं!

// सेंसर रीडिंग 2 सेकंड तक 'पुरानी' भी हो सकती है (यह बहुत धीमा सेंसर है)

फ्लोट एच = dht.readHumidity ();

// तापमान को सेल्सियस के रूप में पढ़ें (डिफ़ॉल्ट)

फ्लोट टी = dht.readTemperature ();

// तापमान को फ़ारेनहाइट के रूप में पढ़ें (फ़ारेनहाइट = सत्य है)

फ्लोट एफ = dht.readTemperature (सच);

// जांचें कि क्या कोई पठन विफल हुआ है और जल्दी से बाहर निकलें (फिर से प्रयास करने के लिए)।

अगर (इसन (एच) || इसान (टी) || इसान (एफ)) {

Serial.println (F ("DHT सेंसर से पढ़ने में विफल!"));

वापसी;

}

// फारेनहाइट में गर्मी सूचकांक की गणना करें (डिफ़ॉल्ट)

फ्लोट hif = dht.computeHeatIndex (f, h);

// सेल्सियस में गर्मी सूचकांक की गणना करें (isFahreheit = false)

फ्लोट hic = dht.computeHeatIndex(t, h, false);

सीरियल.प्रिंट (एफ ("आर्द्रता:"));

सीरियल.प्रिंट (एच);

सीरियल.प्रिंट (एफ ("% तापमान:"));

सीरियल.प्रिंट (टी);

सीरियल.प्रिंट (एफ ("डिग्री सेल्सियस"));

सीरियल.प्रिंट (एफ);

सीरियल.प्रिंट (एफ ("डिग्री फ़ारेनहाइट हीट इंडेक्स: "));

सीरियल.प्रिंट (एचआईसी);

सीरियल.प्रिंट (एफ ("डिग्री सेल्सियस"));

सीरियल.प्रिंट (एचआईएफ);

Serial.println(F("°F"));

}

// प्रोग्राम को संकलित करने के बाद, डेटा की जांच करने के लिए टूल्स >> सीरियल मॉनिटर पर क्लिक करें।

// परीक्षण कार्यक्रम का अंत।

चरण 6: परियोजना के लिए कोड

#शामिल

#शामिल

#शामिल

#शामिल

#शामिल

#DHTPIN 2 परिभाषित करें

#DHTTYPE DHT22 परिभाषित करें

#शामिल "U8glib.h"

U8GLIB_SH1106_128X64 u8g (U8G_I2C_OPT_NONE);

DHT सेंसर (DHTPIN, DHTTYPE);

शून्य ड्रा (शून्य) {

u8g.setFont (u8g_font_unifont);

फ्लोट एच = सेंसर। रीडह्यूमिडिटी ();

// तापमान को सेल्सियस के रूप में पढ़ें (डिफ़ॉल्ट)

फ्लोट टी = सेंसर। रीडटेम्परेचर ();

// जांचें कि क्या कोई पठन विफल हुआ है और जल्दी से बाहर निकलें (फिर से प्रयास करने के लिए)।

अगर (इस्नान (एच) || इसान (टी)) {

u8g.print ("त्रुटि।");

के लिये(;;);

वापसी;

}

u8g.setPrintPos(4, 10);

u8g.print ("तापमान (सी):");

u8g.setPrintPos(4, 25);

u8g.प्रिंट (टी);

u8g.setPrintPos(4, 40);

u8g.print ("आर्द्रता (%):");

u8g.setPrintPos(4, 55);

u8g.प्रिंट (एच);

}

शून्य सेटअप (शून्य) {

u8g.setRot180 ();

सीरियल.बेगिन (९६००);

सेंसर। शुरू ();

}

शून्य लूप (शून्य) {

// चित्र लूप

u8g.firstPage ();

करना {

खींचना();

} जबकि (u8g.nextPage ());

// कुछ देरी देरी (2000) के बाद चित्र का पुनर्निर्माण करें;

}

// मुख्य कार्यक्रम का अंत।

चरण 7: विवरण

विवरण
विवरण

फिर, Arduino बोर्ड के लिए पिन सर्किटरी को इनिशियलाइज़ करें। क्योंकि सेंसर लाइब्रेरी को ऑब्जेक्ट घोषित करने के लिए डेटा की आवश्यकता होती है।

और आप "सीरियल.प्रिंट ()" नामक फ़ंक्शन का उपयोग करके डिजिटल पिन 2 के माध्यम से आउटपुट डेटा की निगरानी करके सेंसर के डेटा का परीक्षण कर सकते हैं। क्योंकि डेटा ट्रांसमिशन की आवृत्ति लगभग हर 2 सेकंड (जो 0.5 हर्ट्ज है) को पढ़ने में लगभग 1 है, जब Arduino IDE में प्रोग्राम किया जाता है, तो हमें लूप फ़ंक्शन के अंदर देरी को 2 सेकंड से अधिक के लिए सेट करने की आवश्यकता होती है। तो लूप फ़ंक्शन के अंदर "देरी (2000)" है। यह सुनिश्चित करता है कि डेटा बार-बार ताज़ा किया जाएगा। फ़ंक्शन "ड्रा" में, सीरियल डेटा पोर्ट से डेटा प्राप्त करें और उन्हें "रीडह्यूमिडिटी" और "रीडटेम्परेचर" फ़ंक्शंस का उपयोग करके फ्लोट नंबरों में डाल दें।

"u8glib" फ़ाइल में प्रिंट फ़ंक्शन का उपयोग करके आर्द्रता और तापमान का प्रिंट आउट लें। आप "setPrintPos" फ़ंक्शन में नंबर बदलकर स्थिति को समायोजित कर सकते हैं। प्रिंट फ़ंक्शन सीधे टेक्स्ट और नंबर दिखा सकता है।

हार्डवेयर सेट करने के लिए, सीरियल पोर्ट को 10 सेकंड की देरी दें। फिर सेंसर के लिए स्टार्ट फंक्शन को कॉल करें। मेरे सर्किट के हिसाब से मेरी स्क्रीन उलटी थी। इसलिए मैंने डिस्प्ले को घुमाने के लिए "setRot180" फ़ंक्शन भी शामिल किया।

Arduino बोर्ड का लूप फ़ंक्शन मुख्य कार्य है। यह हर बार सेंसर के रिफ्रेश होने पर टेक्स्ट और डेटा को प्रदर्शित करने के लिए ड्रॉ फंक्शन को कॉल करता रहता है।

स्क्रीन इस तरह दिखती है:

आप अपने कंप्यूटर से Arduino UNO को डिस्कनेक्ट कर सकते हैं और इसके 2.1mm पावर जैक से कनेक्ट होने वाले 5V DC पावर एडॉप्टर का उपयोग करके इसे पावर कर सकते हैं। यह प्रोग्राम को अपने ड्राइव के अंदर स्टोर करता है और संचालित होने के बाद प्रोग्राम को लगातार चला सकता है।

सिफारिश की: