विषयसूची:

JAWS: बस एक और मौसम स्टेशन: 6 कदम
JAWS: बस एक और मौसम स्टेशन: 6 कदम

वीडियो: JAWS: बस एक और मौसम स्टेशन: 6 कदम

वीडियो: JAWS: बस एक और मौसम स्टेशन: 6 कदम
वीडियो: जानू मिलबा बुलायो बाडा में - बंदोरी खाडदी गाँवा मे | कुदकीयो ऊबी कोट मोरा मे पडगीया शोट | New Song 2024, नवंबर
Anonim
जबड़े: हमारा सामान तैयार करना।
जबड़े: हमारा सामान तैयार करना।
जबड़े: हमारा सामान तैयार करना।
जबड़े: हमारा सामान तैयार करना।
जबड़े: हमारा सामान तैयार करना।
जबड़े: हमारा सामान तैयार करना।

ऐसे JAWS बनाना काफी आसान है।

आप अपने सेंसर प्राप्त करते हैं, आप उन्हें बोर्डों पर एक साथ फेंक देते हैं, और आप उन पुस्तकालयों का उपयोग करना शुरू कर देते हैं जो सेंसर के साथ आते हैं।

चलो कार्यक्रम की स्थापना के साथ शुरू करते हैं।

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

हम JAWS से क्या चाहते हैं?

आसान: हम एक स्क्रीन देखना चाहते हैं जो हमें वास्तविक समय, तिथि, पंचांग (सूर्य उदय, सूर्यास्त, दिन की लंबाई और खगोलीय दोपहर) दिखाती है।

उसके आगे, अंदर और बाहर के तापमान, सापेक्षिक आर्द्रता और ओस बिंदु, और वायु दाब को देखना अच्छा होगा।

चीजों को आसान बनाने के लिए, मैं तापमान के लिए सेंटीग्रेड और दबाव के लिए hPa (=mBar) का उपयोग करता हूं। तो किसी को भी फ़ारेनहाइट या पाउंड प्रति वर्ग फ़र्लांग से वापस गणना करने की ज़रूरत नहीं है …

इस समय, केवल ये डेटा उपलब्ध हैं…

भविष्य में, मैं हवा की गति, हवा की दिशा और वर्षा जोड़ूंगा।

विचार यह है कि मेरे पास एक बाहरी मौसम झोपड़ी होगी और सभी डेटा 2.4GHz से अधिक इनडोर इकाई में भेजे जाएंगे।

चरण 3: जबड़े: सॉफ्टवेयर।

जबड़े: सॉफ्टवेयर।
जबड़े: सॉफ्टवेयर।

हमारे सॉफ़्टवेयर तक पहुंचने के लिए, अधिकांश मौजूदा पुस्तकालयों के साथ मिल सकते हैं।

JAWS में मैं निम्नलिखित का उपयोग करता हूं:

  1. SPI.h: 4 वायर प्रोटोकॉल के लिए Arduino से मूल पुस्तकालय। उसका उपयोग TFT-ढाल के लिए किया जाता है
  2. Adafruit_GFX.h और MCUfriend_kbv.h: दोनों का उपयोग ग्राफिक्स और स्क्रीन के लिए किया जाता है। ये TFT- स्क्रीन पर टेक्स्ट लिखना, रेखाएँ खींचना और बॉक्स बनाना बहुत आसान बनाते हैं।
  3. dht.h: हमारे DHT के लिए: इस लाइब्रेरी का उपयोग DHT11 (नीला वाला) और DHT22 के लिए किया जा सकता है।
  4. Wire.h: सीरियल संचार को आसान बनाने के लिए Arduino लाइब्रेरी। इसका उपयोग घड़ी और एसडी कार्ड के लिए किया जाता है।
  5. SD.h: एसडी कार्ड से लिखने और पढ़ने के लिए फिर से एक Arduino मूल।
  6. TimeLord.h: यह मैं समय रखने के लिए उपयोग करता हूं, किसी भी भौगोलिक स्थिति से सूर्यास्त या सूर्य उदय की गणना करता हूं। यह डीएसटी (गर्मी या सर्दियों के समय) के लिए घड़ी भी निर्धारित करता है।

चलो घड़ी से शुरू करते हैं।

घड़ी पढ़ते समय, आपको घड़ी मॉड्यूल के अंदर विभिन्न रजिस्टरों से प्राप्त होने वाले चर की आवश्यकता होती है। जब हम उन्हें केवल संख्याओं से अधिक बनाते हैं, तो हम निम्नलिखित पंक्तियों का उपयोग कर सकते हैं:

const int DS1307 = 0x68;const char* day = {"Zo.", "Ma.", "Di.", "Wo.", "Do.", "Vr.", "Za."};

कास्ट चार * महीने = {"01", "02", "03", "04", "05", "06", "07", "08", "09", "10", "11" ", "12"};

एन

TimeLord के साथ, हम इसे मेरे स्थान के लिए डेटा के रूप में प्राप्त करते हैं: (लोकेरेन, बेल्जियम)

टाइमलॉर्ड लोकेरेन; इसे लोकेरेन स्थापित करना। स्थिति (51.096, 3.99); अक्षांश और देशांतर

लोकेरेन। टाइमज़ोन (+1 * 60); जीएमटी +1 = +1 x 60मिनट

लोकेरेन। डीएसटी नियम (3, 4, 10, 4, 60); तीसरे महीने से डीएसटी, चौथे हफ्ते से 10वें महीने, चौथे हफ्ते, +60 मिनट

इंट जार = वर्ष +2000;

बाइट सनराइज = {0, 0, 12, महीने का दिन, महीना, साल}; हर दिन 00 घंटे से गणना करना शुरू करें

बाइट सूर्यास्त = {0, 0, 12, महीने का दिन, महीना, वर्ष}; ऊपर की तरह

बाइट मान = {0, 0, 12, महीने का दिन, महीना, साल}; ऊपर की तरह

फ्लोट चरण;

यहीं से हिसाब लगाया जाता है।

चरण = लोकेरेन। मूनफेज (मान);

लोकेरेन.सूर्योदय (सूर्योदय);

लोकेरेन.सनसेट (सूर्यसेट);

लोकेरेन.डीएसटी (सूर्योदय);

लोकेरेन.डीएसटी (सूर्यसेट);

int ZonOpUur=sunRise[tl_hour];

int ZonOpMin = सूर्योदय [tl_minute];

int ZonOnUur = सूर्यास्त [tl_hour];

इंट ज़ोनऑनमिन = सनसेट [tl_minute];

TimeLord में चीजों की गणना कैसे की जाती है, इसका यह उदाहरण है। इस पुस्तकालय के साथ, आपको सूर्यास्त और सूर्योदय का (सुंदर) सटीक समय मिलता है।

अंत में, मैं पूरे कार्यक्रम को इस निर्देश के साथ रखूंगा। यह काफी सीधा है।

चरण 4: अधिक सॉफ्टवेयर…

अधिक सॉफ्टवेयर…
अधिक सॉफ्टवेयर…
अधिक सॉफ्टवेयर…
अधिक सॉफ्टवेयर…

सॉफ्टवेयर के बारे में अधिक…

सॉफ्टवेयर में हमारे तीन बड़े हिस्से हैं।

1) हमें अपने विभिन्न सेंसरों से कुछ कच्चा डेटा मिलता है: हमारी घड़ी, DHTs और BMP180 से। वह हमारा इनपुट है।

2) हमें डेटा को (1 और 0) में अनुवाद करने की आवश्यकता है जो समझ में आता है। इसके लिए हम अपने पुस्तकालयों और चरों का उपयोग करते हैं।

3) हम अपने डेटा को पढ़ना और स्टोर करना चाहते हैं। वह हमारा आउटपुट है। तत्काल उपयोग के लिए, हमारे पास एलसीडी-टीएफटी है, बाद में उपयोग के लिए, हमारे पास हमारे एसडी कार्ड पर हमारा सहेजा गया डेटा है।

हमारे लूप () में, हमें बहुत सारे "GOTO" मिलते हैं: हम विभिन्न पुस्तकालयों में जाते हैं। हम अपना डेटा सेंसर में से एक से प्राप्त करते हैं, डेटा प्राप्त करते हैं और उन्हें (ज्यादातर) एक फ्लोटिंग डेटा वैरिएबल में स्टोर करते हैं। हम अपने चर-नामों को बुद्धिमानी से चुनते हैं, x या y के साथ नहीं बल्कि "tempOutside" या "दबाव" या इस तरह की चीजों के साथ। उन्हें और अधिक पठनीय बनाने के लिए। ठीक है, यह इसे चर-उपयोग और अधिक मेमोरी-खपत पर थोड़ा भारी बनाता है।

यहां ट्रिक आती है: जब हमारे वेरिएबल्स को स्क्रीन पर दिखाई देता है, तो यह उन्हें सही स्थिति में रखता है।

यहां इस्तेमाल किए गए दो पुस्तकालयों, Adafruit_GFX.h और MCUfriend_kbv.h में रंगों, फोंट और रेखाएं खींचने की क्षमता का उपयोग करने के लिए एक अच्छा काम है। पहले उदाहरण में, मैंने इन पुस्तकालयों के साथ 12864- स्क्रीन का उपयोग किया, बाद में मैंने इसे tft- स्क्रीन में बदल दिया। मुझे बस इतना करना है कि बॉक्स, आयत और रेखाएँ रखनी हैं और यह सुनिश्चित करना है कि डेटा सही जगह पर आया है। उसके लिए आप setCursor और tft. Write as कमांड का उपयोग कर सकते हैं। आराम से। रंगों को चर के रूप में भी सेट किया जा सकता है, उन पुस्तकालयों में कई उदाहरण हैं कि उन्हें कैसे चुनना है।

एसडी कार्ड पर लिखने के लिए हमें कुछ आसान ट्रिक्स की भी जरूरत होती है।

उदाहरण के लिए, हम घड़ी से अपने डेटा को अलग-अलग घंटे, मिनट और सेकंड के रूप में पढ़ते हैं। इनडोर या आउटडोर के बीच अंतर करने के लिए तापमान DHT.temperature और DHTT.temperature हैं।

जब हम उन्हें एसडी कार्ड पर रखना चाहते हैं, तो हम एक स्ट्रिंग का उपयोग करते हैं: हम प्रत्येक लूप को एक खाली स्ट्रिंग के रूप में शुरू करते हैं:

वैरिएबलस्ट्रिंग = ""; तब हम इसे अपने सभी डेटा से भर सकते हैं:

वेरिएबलस्ट्रिंग = वेरिएबलस्ट्रिंग + घंटे+":" + मिनट +":" + सेकंड। यह स्ट्रिंग को 12:00:00 की तरह देता है।

चूंकि हम इसे एक TXT-फ़ाइल के रूप में लिखते हैं (Arduino.cc पर SD.h देखें), अगले चर के लिए हम एक टैब जोड़ते हैं, इसलिए इसे एक्सेल में आयात करना आसान होता है।

तो हम यहां आते हैं: वेरिएबलस्ट्रिंग = वेरिएबलस्ट्रिंग +" \t " + DHT.temperature + " \t" + DHTT. Temperature।

और इसी तरह।

चरण 5: कुछ स्क्रीनशॉट…

कुछ स्क्रीनशॉट…
कुछ स्क्रीनशॉट…
कुछ स्क्रीनशॉट…
कुछ स्क्रीनशॉट…
कुछ स्क्रीनशॉट…
कुछ स्क्रीनशॉट…

यह सुनिश्चित करने के लिए कि हम अपने डेटासेट को "ओवरलोड" न करें, मैंने हर 10 मिनट में केवल एक बार डेटा लिखा। हमें प्रतिदिन १४४ प्रविष्टियाँ देना।बुरा नहीं, मुझे लगता है।

और निश्चित रूप से, आप उस डेटा को संसाधित करना जारी रख सकते हैं: आप औसत बना सकते हैं, आप मैक्सिमा और मिनिमा की तलाश कर सकते हैं, आप पिछले वर्षों की तुलना कर सकते हैं …

मौसम कार्यालय आमतौर पर तापमान के लिए दिन और रात का औसत बनाते हैं: दिन का समय सुबह 8 बजे शुरू होता है, और रात 8 बजे तक चलता है।

हवा, दबाव और वर्षा के लिए, औसत आधी रात से आधी रात तक लिया जाता है।

चरण 6: समाप्त हो गया?

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

ज़रुरी नहीं… जैसा कि मैंने कहा था कि मैं अंत में बाकी JAWS के साथ काम करने वाले विंड-स्पीड और विंड-डायरेक्शन सेंसर प्राप्त करना चाहता हूं।

मैंने जो छोटा निर्माण किया वह लगभग 4 मीटर ऊंचा है। मौसम विज्ञानियों को मिली 10 मीटर उंची से हवा की रफ्तार मेरे लिए कुछ ज्यादा ही…

मुझे आशा है कि आपको यह पढ़कर अच्छा लगा होगा!

एडफ्रूट-जीएफएक्स को यहां समझाया गया है:

MCUFRIEND_kbv.h यहां पाया जाना है:

बीएमपी 120 (बीएमपी085 के समान) के बारे में अधिक जानकारी: https://learn.sparkfun.com/tutorials/bmp180-barometric- pressure-sensor-hookup-/all

DHT22 के बारे में:

सिफारिश की: