वायरलेस सेन्सरसह arduino वर हवामान स्टेशन. Arduino वर होम वेदर स्टेशन आणि "पीपल्स मॉनिटरिंग" ला डेटा पाठवत आहे

Viber बाहेर 06.06.2019
Viber बाहेर
बऱ्याच काम करणाऱ्या लोकांप्रमाणे, तुमच्या स्वतःच्या प्रकल्पांचा पाठपुरावा करण्यासाठी तुम्ही सोडलेला मोकळा वेळ लागतो. म्हणूनच मी बर्याच काळापासून काहीही तयार केले नाही आणि मला काहीतरी करण्याची खाज सुटली. विचित्रपणे, ही संधी विद्यापीठात दिसून आली. हे खिडकीच्या बाहेर सप्टेंबर आहे, चौथे वर्ष आणि सर्किट डिझाइनवर आगामी अभ्यासक्रम. पेपर आणि हार्डवेअर या दोन प्रकारांमध्ये कोर्सवर्क केले जाऊ शकते असे आम्हाला सांगण्यात आले.

5 वर्षांपासून, आमच्या विद्यापीठात पेपर कोर्सवर्क "जुने घ्या आणि त्यांना एकत्र करा" या तत्त्वानुसार केले गेले. हा दृष्टीकोन त्याच्या दिनचर्येमुळे मला अनुकूल नव्हता, म्हणून मी लगेच हार्डवेअरमधील अभ्यासक्रम निवडला. अर्डिनो मायक्रोकंट्रोलरला त्याच्या शिकण्याच्या सुलभतेमुळे कोर्सवर्कचे हृदय म्हणून प्रस्तावित केले गेले. कोर्सवर्कचा प्रकार ठरवल्यानंतर, आणखी एक प्रश्न राहिला: नक्की काय केले पाहिजे. मला प्रोग्रॅमिंग मायक्रोकंट्रोलरचा अनुभव नसल्यामुळे, मी ताबडतोब Google उघडले आणि विद्यमान प्रकल्पांचा अभ्यास करण्यास सुरुवात केली. बरेच प्रकल्प आहेत, त्यापैकी काही अगदी साधे आहेत, काही कल्पक आहेत (उदाहरणार्थ 3D स्कॅनर), परंतु बहुसंख्यांकडे व्यावहारिक अनुप्रयोग नव्हते. आणि मला फक्त काहीतरी हवे होते जे शेल्फवर पडून धूळ गोळा करणार नाही. Arduino च्या जगात अर्ध्या तासाच्या सहलीनंतर, मला घरातील हवामान स्थानकांच्या विषयात रस वाटू लागला आणि प्रकल्पांची अंमलबजावणी करणे फारसे अवघड वाटले नाही (जे मुख्यतः नवोदितांना आकर्षित करते).

अशा प्रकारे कोर्सवर्कसाठी विषय निवडला गेला आणि कालांतराने कोणतीही अडचण आली नाही.

घटक निवड

वेगवेगळ्या प्रकल्पांमधून पाहिल्यावर, मला जाणवले की माझ्यासाठी एक नॅनो किंवा अगदी एक प्रो मिनी पुरेसे आहे, परंतु तरीही मला Arduino साठी प्रोग्रामिंग करायला आवडेल आणि भविष्यात आणखी काही प्रकल्प राबवतील या आशेने मी Arduino Uno निवडले. मी यापूर्वी कधीही माझ्या हातात सोल्डरिंग लोह धरले नव्हते, त्यामुळे सुलभ विकासासाठी मी सेन्सर शील्ड v4 देखील खरेदी करण्याचा निर्णय घेतला.

अधिक माहितीसाठी

बोर्ड सेन्सर्स, मॉड्यूल्स, सर्वो मोटर्स, सिरीयल आणि I2C इंटरफेसचे द्रुत कनेक्शन सुलभ करते आणि ड्यूमिलानोव्हा/युनो फॉर्म फॅक्टरच्या कंट्रोलरचे सर्व पोर्ट देखील प्रदर्शित करते (मेगा सिरीजशी देखील कनेक्ट केले जाऊ शकते, परंतु मर्यादा आणि परिणामी परिणामांसह) . स्वतः वर इतर ढाल समर्थन.


मी हवामानविषयक डेटासाठी स्रोत म्हणून खालील सेन्सर निवडले:


मी सेन्सर्सवर निर्णय घेतला आहे. पण सेन्सर्समधून येणाऱ्या डेटाचे काय करायचे? मी ते प्रदर्शित करण्याचा निर्णय घेतला. मला रंगीत चित्र हवे होते, म्हणून मी ताबडतोब मोनोक्रोम सोल्यूशन्स टाकून दिले. काही मिनिटांच्या शोधानंतर, ST7735 1.8-इंच TFT डिस्प्ले निवडला गेला.

अधिक माहितीसाठी

डिस्प्ले संवादासाठी 4-वायर SPI प्रोटोकॉल वापरत असल्याने आणि त्याचे स्वतःचे पिक्सेल-ॲड्रेसेबल फ्रेम बफर असल्याने, ते कोणत्याही प्रकारच्या मायक्रोकंट्रोलरसह वापरले जाऊ शकते. 1.8-इंच डिस्प्लेमध्ये 128x160 कलर पिक्सेल आहे. एक मायक्रोएसडी कार्ड स्लॉट देखील आहे, म्हणून, तुम्ही FAT16/FAT32 मायक्रोएसडी कार्ड फाइल सिस्टमवरून पूर्ण-रंगीत बिटमॅप प्रतिमा सहजपणे लोड करू शकता.

वैशिष्ट्ये:

  • डिस्प्ले कर्ण - 1.8 इंच, रिझोल्यूशन 128x160 पिक्सेल, 18-बिट रंग (262,144 रंग)
  • व्हिडिओ मेमरी बफरच्या बिल्ट-इन पिक्सेल ॲड्रेसिंगसह कंट्रोलर
  • अंगभूत microSD स्लॉट - 2 पेक्षा जास्त डिजिटल ओळी वापरते
  • 3.3 आणि 5V सह सुसंगत
  • परिमाणे: 34 मिमी x 56 मिमी x 6.5 मी


Arduino कंट्रोलर प्रोग्रामिंग

आम्ही हवामान स्टेशनसाठी घटक निश्चित केल्यानंतर, आम्ही नियंत्रक प्रोग्रामिंग सुरू करू. Arduino IDE चा वापर Arduino फर्मवेअर फ्लॅश करण्यासाठी केला गेला. Adafruit मधील लायब्ररी देखील वापरली.

स्केचवर जाण्यापूर्वी, कार्यक्षमता पाहू:

  • दर 10 सेकंदांनी सेन्सरमधून वाचन घेतले जाते आणि फक्त तेच निर्देशक जे मागील मोजमापाच्या तुलनेत बदलले आहेत ते स्क्रीनवर अपडेट केले जातात.
  • COM पोर्टद्वारे डेटा हस्तांतरण लागू केले

स्केच

#समाविष्ट करा // I2C उपकरणांसह संप्रेषणासाठी लायब्ररी # समावेश // सर्व सेन्सर्ससाठी कोर लायब्ररी #समाविष्ट करा // BMP180 साठी लायब्ररी # समावेश // कोर ग्राफिक्स लायब्ररी # समावेश // हार्डवेअर-विशिष्ट लायब्ररी #समाविष्ट करा // SPI उपकरणांसह संप्रेषणासाठी लायब्ररी # "dht.h" समाविष्ट करा // DHT साठी लायब्ररी # परिभाषित करा DHT22_PIN 2 // DHT22 ते 2 डिजिटल पिन कनेक्ट करा #TFT_CS 10 परिभाषित करा // TFT चा CS पिन 10 डिजिटल पिनशी कनेक्ट करा #define TFT_RST 9 // TFT चा RST पिन 9 डिजिटल पिनशी कनेक्ट करा // तुम्ही हे Arduino रीसेटशी देखील कनेक्ट करू शकता // अशा परिस्थितीत, ही #define पिन 0 वर सेट करा! #define TFT_DC 8 // TFT च्या DC पिनला 8 डिजिटल पिनशी कनेक्ट करा Adafruit_ST7735 tft = Adafruit_ST7735(TFT_CS, TFT_DC, TFT_RST); // TFT #define TFT_SCLK 13 // TFT चा SCLK पिन 13 डिजिटल पिनशी कनेक्ट करा #TFT_MOSI 11 परिभाषित करा // TFT च्या MOSI पिनला 11 डिजिटल पिन dht DHT ला कनेक्ट करा; Adafruit_BMP085_Unified bmp = Adafruit_BMP085_Unified(10085); //BMP180 int bmpFlag = 0 आरंभ करा; रचना ( uint32_t एकूण; uint32_t ठीक आहे; uint32_t crc_error; uint32_t time_out; uint32_t कनेक्ट; uint32_t ack_l; uint32_t ack_h; uint32_t अज्ञात; ) stat = ( 0,0,0,0,0,0,0); // dht स्थिती शून्यता सेटअप (void) साठी संरचना ( Serial.begin(9600); Serial.println("Meteo Test"); Serial.println(""); if(!bmp.begin()) // कनेक्शन तपासा BMP180 साठी ( Serial.print("अरेरे, BMP180 आढळले नाही... तुमचे वायरिंग किंवा I2C ADDR तपासा!"); bmpFlag = 1; ) tft.initR(INITR_BLACKTAB) // TFT सुरू करा आणि काळ्या रंगाने भरा tft.fillScreen; ST7735_BLACK); oldPressure = 0, oldDHTHumidity = 0, oldDHTT तापमान; bool wasUpdate = असत्य; void loop(void) ( if(Serial.available() > 0) // आमच्याकडे डेटा आहे सिरीयल पोर्ट ( Serial.read(); // सिरीयल पोर्ट वरून बाइट वाचा आणि शेवटचा मोजलेला डेटा पाठवा printValue("प्रेशर", oldPressure , " hPa", false printValue("Temperature", oldTemperature, "C", false printValue("उंची", "m", असत्य); असत्य); // डेटा प्राप्त करा BMP180 जर (event.pressure) ( bmp.getTemperature(&temperature); फ्लोट seaLevelPressure = SENSORS_PRESSURE_SEALEVELHPA; उंची = bmp.pressureToAltitude(seaLevelPressure, event.pressure, तापमान); ) इतर (सीरियल")") .एरर uint32_t start = micros(); int chk = DHT.read22(DHT22_PIN); // DHT22 uint32_t stop = micros(chk) // DHT22 ची स्थिती तपासा. ठीक आहे++; खंडित; केस DHTLIB_ERROR_CHECKSUM: stat.crc_error++; Serial.print("चेकसम एरर,\t"); खंडित; केस DHTLIB_ERROR_TIMEOUT: stat.time_out++; Serial.print("टाइम आउट एरर,\t"); खंडित; केस DHTLIB_ERROR_CONNECT: stat.connect++; Serial.print("कनेक्ट एरर,\t"); खंडित; केस DHTLIB_ERROR_ACK_L: stat.ack_l++; Serial.print("Ack Low error,\t"); खंडित; केस DHTLIB_ERROR_ACK_H: stat.ack_h++; Serial.print("Ack उच्च त्रुटी,\t"); खंडित; डीफॉल्ट: stat.unknown++; Serial.print("अज्ञात त्रुटी,\t"); खंडित; ) if(bmpFlag ! = 0 || !event.pressure) // डेटा अपडेट करा ( tft.fillRect(0, 30, 160, 6, ST7735_BLACK); tft.setCursor(0, 30); tft.setTextColor(ST7735_RED); printValue("ERROR BMP प्रारंभ", 0 , "", खरे ) बाकी ( if(event.pressure != oldPressure) ( tft.fillRect(0, 30, 160, 7, ST7735_BLACK); tft.setCursor(0, 30); tft.setTextColor(ST7735_RED) ; printValue ("प्रेशर", event.pressure, "hPa", true); oldPressure = event.pressure = true ) if(temperature != oldTemperature) ( tft.fillRect(0, 38, 160, 7, ST7735_BLACK); tft.setCursor (0, 38); (0, 46) tft.setTextColor(ST7735_BLUE); 54, 160, 7, ST7735_BLACK tft.setCursor(0, 54); tft.setTextColor(ST7735_GREEN); printValue("आर्द्रता", DHT. humidity, "%", true); oldDHTHumidity = DHT.humidity; wasUpdate = खरे; ) if(DHT.temperature != oldDHTTtemperature) ( tft.fillRect(0, 80, 160, 7, ST7735_BLACK); tft.setCursor(0, 80); tft.setTextColor(ST7735_YELLOW) तापमान, "C", oldDHTTtemperature = DHT.temperature; if(wasUpdate) ( Serial.println("END_TRANSMISSION"); ) wasUpdate = false; विलंब(10000); ) void printValue(char* शीर्षक, दुहेरी मूल्य, char* मापन, bool tftPrint) ( if(tftPrint) // प्रिंट डेटा TFT ( tft.print(title); tft.print(": "); tft.print( व्हॅल्यू;

शरीर एकत्र करण्याची वेळ आली आहे

कोर्सवर्कची मुख्य अट सादर करण्यायोग्य स्वरूपात कार्यरत प्रोटोटाइप होती. म्हणून, मला एक घर खरेदी करावे लागले आणि, फाईलसह सशस्त्र, कोणत्याही प्रकारे गृहनिर्माणमध्ये हवामान स्टेशन घाला.

हे प्रकरण स्थानिक रेडिओ इलेक्ट्रॉनिक्स दुकानातून विकत घेतले होते.

फ्रेम

(फोटोमधली केस थोडी वेगळी आहे. माझ्याकडे पारदर्शक झाकण आहे)



नंतर, फाईल वापरुन, सेन्सर आउटपुट करण्यासाठी आणि वीज पुरवठा करण्यासाठी छिद्र केले गेले. मी सेन्सर बाहेर हलवण्याचा निर्णय घेतला, कारण केसशिवाय सिस्टमची चाचणी करताना, माझ्या लक्षात आले की स्क्रीनचा मागील भाग खूप गरम झाला आहे, ज्यामुळे केसमधील तापमानावर परिणाम होईल.

सेन्सर्स आणि पॉवरसाठी खुली असलेली गृहनिर्माण



मला पाय 2 सेन्सर्सवर सोल्डर करावे लागले आणि मी त्यापैकी एकावर ट्रॅक जाळला, मी नशिबाचा मोह न ठेवण्याचा आणि सेन्सरला वायर सोल्डर न करण्याचा निर्णय घेतला (मी दुसऱ्या कशावर तरी सराव करेन), परंतु कनेक्शनसाठी अधिक किंवा कमी विश्वासार्ह होण्यासाठी, मी इलेक्ट्रिकल टेप रिवाइंड करण्याचा निर्णय घेतला.

गृहनिर्माण मध्ये "स्टफड" करण्यापूर्वी प्रणाली



केस Arduino पेक्षा खूप मोठा असल्याने (कोणतेही लहान नव्हते), मला एक आधार द्यावा लागला जेणेकरून बोर्ड केसच्या आत जाऊ नये. तसेच, फोममधून एक आकृती कापली गेली होती आणि त्यामध्ये केसची आतील बाजू लपविण्यासाठी स्क्रीनसाठी एक आयत होता. माझ्या हातात सुपरग्लू नव्हता, म्हणून मला दुहेरी बाजू असलेला टेप वापरावा लागला.

चमत्कार-युडा मासे-व्हेल



झाकण स्क्रू करा, पॉवर कनेक्ट करा आणि प्रतीक्षा करा.

इमारतीतील हवामान केंद्र पूर्ण झाले



स्क्रीनवर परिणाम प्रदर्शित केल्यानंतर, आम्ही आर्द्रता मोजण्यात एक अप्रिय त्रुटी ओळखतो: DHT22 परिश्रमपूर्वक 99.90% (1.00% अत्यंत दुर्मिळ) आकृती तयार करते. चला समस्या काय आहे हे शोधण्यास प्रारंभ करूया. पहिली गोष्ट जी आम्ही करतो ती म्हणजे COM पोर्टवरील मूल्यांचे आउटपुट पाहणे. बरं वाटतं. केसचे अनेक रिफिल, डिससेम्बल आणि पुन्हा एकत्र केल्यानंतर, Google वर उत्तर शोधण्याची कल्पना मनात येते. अपेक्षेप्रमाणे, रशियन Google ने काहीही उपयुक्त सांगितले नाही. ठीक आहे. आम्ही इंग्रजीमध्ये शोधण्यास सुरुवात करतो आणि एका मंचावर आम्हाला अशीच समस्या असल्याचे लोक आढळतात. चर्चेची पहिली चार पाने काहीही उपयुक्त देत नाहीत, परंतु पाचव्या पानावर आम्हाला आमच्या प्रश्नाचे उत्तर सापडते:
आर्द्रता सेन्सर चुकीच्या वायूंमुळे किंवा उच्च आर्द्रता IIRC च्या दीर्घकाळ संपर्कामुळे सहजपणे प्रभावित होऊ शकतात. डेटाशीटमध्ये सेन्सर "रीसेट" कसा करायचा याची एक प्रक्रिया आहे, तुम्ही ते वापरून पाहू शकता.

मी DHT22 चे नुकसान कधी आणि कसे केले हा एकच प्रश्न राहिला. पण अभ्यासक्रम घेण्याची वेळ जवळ येत होती आणि म्हणून मी या समस्येचे निराकरण नंतरसाठी सोडले.

नंतरचे शब्द

अभ्यासक्रम उत्तीर्ण झाला. विद्यापीठातील सर्व टेलिंग बंद होईपर्यंत हवामान केंद्र अनिश्चित काळासाठी पुढे ढकलण्यात आले आहे. तथापि, मला वाटले त्यापेक्षा लवकर आम्हाला हवामान केंद्रावर परतावे लागले. असे घडले की नोव्हेंबरच्या मध्यभागी मी माझे कामाचे ठिकाण बदलले आणि नवीन कार्यसंघामध्ये मी अशा लोकांना भेटलो ज्यांना Arduino प्लॅटफॉर्म आणि यासारख्या गोष्टींमध्ये रस आहे. त्यामुळे या प्लॅटफॉर्मबद्दलची माझी आवड, थंड होण्यास वेळ न देता, पुन्हा भडकली. मी माझे हवामान स्टेशन काढले, ते संगणकाशी जोडले आणि लक्षात ठेवले की मी COM पोर्टद्वारे Arduino वरून डेटा ट्रान्सफर लागू केला आहे. आणि मग मला एक प्रोग्राम लिहिण्याची कल्पना आली जो Arduino कडून COM पोर्टद्वारे डेटा प्राप्त करतो आणि हा डेटा सार्वजनिक देखरेखीसाठी प्रसारित करतो.
  • अर्डिनो
  • टॅग जोडाबऱ्याच काम करणाऱ्या लोकांप्रमाणे, तुमच्या स्वतःच्या प्रकल्पांचा पाठपुरावा करण्यासाठी तुम्ही सोडलेला मोकळा वेळ लागतो. म्हणूनच मी बर्याच काळापासून काहीही तयार केले नाही आणि मला काहीतरी करण्याची खाज सुटली. विचित्रपणे, ही संधी विद्यापीठात दिसून आली. हे खिडकीच्या बाहेर सप्टेंबर आहे, चौथे वर्ष आणि सर्किट डिझाइनवर आगामी अभ्यासक्रम. आम्हाला सांगण्यात आले होते की पेपर आणि हार्डवेअर या दोन प्रकारांमध्ये कोर्सवर्क केले जाऊ शकते.

    5 वर्षांपासून, आमच्या विद्यापीठात पेपर कोर्सवर्क "जुने घ्या आणि त्यांना एकत्र करा" या तत्त्वानुसार केले गेले. हा दृष्टीकोन त्याच्या दिनचर्येमुळे मला अनुकूल नव्हता, म्हणून मी लगेच हार्डवेअरमधील अभ्यासक्रम निवडला. अर्डिनो मायक्रोकंट्रोलरला त्याच्या शिकण्याच्या सुलभतेमुळे कोर्सवर्कचे हृदय म्हणून प्रस्तावित केले गेले. कोर्सवर्कचा प्रकार ठरवल्यानंतर, आणखी एक प्रश्न राहिला: नक्की काय केले पाहिजे. मला प्रोग्रॅमिंग मायक्रोकंट्रोलरचा अनुभव नसल्यामुळे, मी ताबडतोब Google उघडले आणि विद्यमान प्रकल्पांचा अभ्यास करण्यास सुरुवात केली. बरेच प्रकल्प आहेत, त्यापैकी काही अगदी साधे आहेत, काही कल्पक आहेत (उदाहरणार्थ 3D स्कॅनर), परंतु बहुसंख्यांकडे व्यावहारिक अनुप्रयोग नव्हते. आणि मला फक्त काहीतरी हवे होते जे शेल्फवर पडून धूळ गोळा करणार नाही. Arduino च्या जगात अर्ध्या तासाच्या सहलीनंतर, मला घरातील हवामान स्थानकांच्या विषयात रस वाटू लागला आणि प्रकल्पांची अंमलबजावणी करणे फारसे अवघड वाटले नाही (जे मुख्यतः नवोदितांना आकर्षित करते).

    अशा प्रकारे कोर्सवर्कसाठी विषय निवडला गेला आणि कालांतराने कोणतीही अडचण आली नाही.

    घटक निवड

    वेगवेगळ्या प्रकल्पांमधून पाहिल्यावर, मला जाणवले की माझ्यासाठी एक नॅनो किंवा अगदी एक प्रो मिनी पुरेसे आहे, परंतु तरीही मला Arduino साठी प्रोग्रामिंग करायला आवडेल आणि भविष्यात आणखी काही प्रकल्प राबवतील या आशेने मी Arduino Uno निवडले. मी यापूर्वी कधीही माझ्या हातात सोल्डरिंग लोह धरले नव्हते, त्यामुळे सुलभ विकासासाठी मी सेन्सर शील्ड v4 देखील खरेदी करण्याचा निर्णय घेतला.

    अधिक माहितीसाठी

    बोर्ड सेन्सर्स, मॉड्यूल्स, सर्वो मोटर्स, सिरीयल आणि I2C इंटरफेसचे द्रुत कनेक्शन सुलभ करते आणि ड्यूमिलानोव्हा/युनो फॉर्म फॅक्टरच्या कंट्रोलरचे सर्व पोर्ट देखील प्रदर्शित करते (मेगा सिरीजशी देखील कनेक्ट केले जाऊ शकते, परंतु मर्यादा आणि परिणामी परिणामांसह) . स्वतः वर इतर ढाल समर्थन.


    मी हवामानविषयक डेटासाठी स्रोत म्हणून खालील सेन्सर निवडले:


    मी सेन्सर्सवर निर्णय घेतला आहे. पण सेन्सर्समधून येणाऱ्या डेटाचे काय करायचे? मी ते प्रदर्शित करण्याचा निर्णय घेतला. मला रंगीत चित्र हवे होते, म्हणून मी ताबडतोब मोनोक्रोम सोल्यूशन्स टाकून दिले. काही मिनिटांच्या शोधानंतर, ST7735 1.8-इंच TFT डिस्प्ले निवडला गेला.

    अधिक माहितीसाठी

    डिस्प्ले संवादासाठी 4-वायर SPI प्रोटोकॉल वापरत असल्याने आणि त्याचे स्वतःचे पिक्सेल-ॲड्रेसेबल फ्रेम बफर असल्याने, ते कोणत्याही प्रकारच्या मायक्रोकंट्रोलरसह वापरले जाऊ शकते. 1.8-इंच डिस्प्लेमध्ये 128x160 कलर पिक्सेल आहे. एक मायक्रोएसडी कार्ड स्लॉट देखील आहे, म्हणून, तुम्ही FAT16/FAT32 मायक्रोएसडी कार्ड फाइल सिस्टमवरून पूर्ण-रंगीत बिटमॅप प्रतिमा सहजपणे लोड करू शकता.

    वैशिष्ट्ये:

    • डिस्प्ले कर्ण - 1.8 इंच, रिझोल्यूशन 128x160 पिक्सेल, 18-बिट रंग (262,144 रंग)
    • व्हिडिओ मेमरी बफरच्या बिल्ट-इन पिक्सेल ॲड्रेसिंगसह कंट्रोलर
    • अंगभूत microSD स्लॉट - 2 पेक्षा जास्त डिजिटल ओळी वापरते
    • 3.3 आणि 5V सह सुसंगत
    • परिमाणे: 34 मिमी x 56 मिमी x 6.5 मी


    Arduino कंट्रोलर प्रोग्रामिंग

    आम्ही हवामान स्टेशनसाठी घटक निश्चित केल्यानंतर, आम्ही नियंत्रक प्रोग्रामिंग सुरू करू. Arduino IDE चा वापर Arduino फर्मवेअर फ्लॅश करण्यासाठी केला गेला. Adafruit मधील लायब्ररी देखील वापरली.

    स्केचवर जाण्यापूर्वी, कार्यक्षमता पाहू:

    • दर 10 सेकंदांनी सेन्सरमधून वाचन घेतले जाते आणि फक्त तेच निर्देशक जे मागील मोजमापाच्या तुलनेत बदलले आहेत ते स्क्रीनवर अपडेट केले जातात.
    • COM पोर्टद्वारे डेटा हस्तांतरण लागू केले

    स्केच

    #समाविष्ट करा // I2C उपकरणांसह संप्रेषणासाठी लायब्ररी # समावेश // सर्व सेन्सर्ससाठी कोर लायब्ररी #समाविष्ट करा // BMP180 साठी लायब्ररी # समावेश // कोर ग्राफिक्स लायब्ररी # समावेश // हार्डवेअर-विशिष्ट लायब्ररी #समाविष्ट करा // SPI उपकरणांसह संप्रेषणासाठी लायब्ररी # "dht.h" समाविष्ट करा // DHT साठी लायब्ररी # परिभाषित करा DHT22_PIN 2 // DHT22 ते 2 डिजिटल पिन कनेक्ट करा #TFT_CS 10 परिभाषित करा // TFT चा CS पिन 10 डिजिटल पिनशी कनेक्ट करा #define TFT_RST 9 // TFT चा RST पिन 9 डिजिटल पिनशी कनेक्ट करा // तुम्ही हे Arduino रीसेटशी देखील कनेक्ट करू शकता // अशा परिस्थितीत, ही #define पिन 0 वर सेट करा! #define TFT_DC 8 // TFT च्या DC पिनला 8 डिजिटल पिनशी कनेक्ट करा Adafruit_ST7735 tft = Adafruit_ST7735(TFT_CS, TFT_DC, TFT_RST); // TFT #define TFT_SCLK 13 // TFT चा SCLK पिन 13 डिजिटल पिनशी कनेक्ट करा #TFT_MOSI 11 परिभाषित करा // TFT च्या MOSI पिनला 11 डिजिटल पिन dht DHT ला कनेक्ट करा; Adafruit_BMP085_Unified bmp = Adafruit_BMP085_Unified(10085); //BMP180 int bmpFlag = 0 आरंभ करा; रचना ( uint32_t एकूण; uint32_t ठीक आहे; uint32_t crc_error; uint32_t time_out; uint32_t कनेक्ट; uint32_t ack_l; uint32_t ack_h; uint32_t अज्ञात; ) stat = ( 0,0,0,0,0,0,0); // dht स्थिती शून्यता सेटअप (void) साठी संरचना ( Serial.begin(9600); Serial.println("Meteo Test"); Serial.println(""); if(!bmp.begin()) // कनेक्शन तपासा BMP180 साठी ( Serial.print("अरेरे, BMP180 आढळले नाही... तुमचे वायरिंग किंवा I2C ADDR तपासा!"); bmpFlag = 1; ) tft.initR(INITR_BLACKTAB) // TFT सुरू करा आणि काळ्या रंगाने भरा tft.fillScreen; ST7735_BLACK); oldPressure = 0, oldDHTHumidity = 0, oldDHTT तापमान; bool wasUpdate = असत्य; void loop(void) ( if(Serial.available() > 0) // आमच्याकडे डेटा आहे सिरीयल पोर्ट ( Serial.read(); // सिरीयल पोर्ट वरून बाइट वाचा आणि शेवटचा मोजलेला डेटा पाठवा printValue("प्रेशर", oldPressure , " hPa", false printValue("Temperature", oldTemperature, "C", false printValue("उंची", "m", असत्य); असत्य); // डेटा प्राप्त करा BMP180 जर (event.pressure) ( bmp.getTemperature(&temperature); फ्लोट seaLevelPressure = SENSORS_PRESSURE_SEALEVELHPA; उंची = bmp.pressureToAltitude(seaLevelPressure, event.pressure, तापमान); ) इतर (सीरियल")") .एरर uint32_t start = micros(); int chk = DHT.read22(DHT22_PIN); // DHT22 uint32_t stop = micros(chk) // DHT22 ची स्थिती तपासा. ठीक आहे++; खंडित; केस DHTLIB_ERROR_CHECKSUM: stat.crc_error++; Serial.print("चेकसम एरर,\t"); खंडित; केस DHTLIB_ERROR_TIMEOUT: stat.time_out++; Serial.print("टाइम आउट एरर,\t"); खंडित; केस DHTLIB_ERROR_CONNECT: stat.connect++; Serial.print("कनेक्ट एरर,\t"); खंडित; केस DHTLIB_ERROR_ACK_L: stat.ack_l++; Serial.print("Ack Low error,\t"); खंडित; केस DHTLIB_ERROR_ACK_H: stat.ack_h++; Serial.print("Ack उच्च त्रुटी,\t"); खंडित; डीफॉल्ट: stat.unknown++; Serial.print("अज्ञात त्रुटी,\t"); खंडित; ) if(bmpFlag ! = 0 || !event.pressure) // डेटा अपडेट करा ( tft.fillRect(0, 30, 160, 6, ST7735_BLACK); tft.setCursor(0, 30); tft.setTextColor(ST7735_RED); printValue("ERROR BMP प्रारंभ", 0 , "", खरे ) बाकी ( if(event.pressure != oldPressure) ( tft.fillRect(0, 30, 160, 7, ST7735_BLACK); tft.setCursor(0, 30); tft.setTextColor(ST7735_RED) ; printValue ("प्रेशर", event.pressure, "hPa", true); oldPressure = event.pressure = true ) if(temperature != oldTemperature) ( tft.fillRect(0, 38, 160, 7, ST7735_BLACK); tft.setCursor (0, 38); (0, 46) tft.setTextColor(ST7735_BLUE); 54, 160, 7, ST7735_BLACK tft.setCursor(0, 54); tft.setTextColor(ST7735_GREEN); printValue("आर्द्रता", DHT. humidity, "%", true); oldDHTHumidity = DHT.humidity; wasUpdate = खरे; ) if(DHT.temperature != oldDHTTtemperature) ( tft.fillRect(0, 80, 160, 7, ST7735_BLACK); tft.setCursor(0, 80); tft.setTextColor(ST7735_YELLOW) तापमान, "C", oldDHTTtemperature = DHT.temperature; if(wasUpdate) ( Serial.println("END_TRANSMISSION"); ) wasUpdate = false; विलंब(10000); ) void printValue(char* शीर्षक, दुहेरी मूल्य, char* मापन, bool tftPrint) ( if(tftPrint) // प्रिंट डेटा TFT ( tft.print(title); tft.print(": "); tft.print( व्हॅल्यू;

    शरीर एकत्र करण्याची वेळ आली आहे

    कोर्सवर्कची मुख्य अट सादर करण्यायोग्य स्वरूपात कार्यरत प्रोटोटाइप होती. म्हणून, मला एक घर खरेदी करावे लागले आणि, फाईलसह सशस्त्र, कोणत्याही प्रकारे गृहनिर्माणमध्ये हवामान स्टेशन घाला.

    हे प्रकरण स्थानिक रेडिओ इलेक्ट्रॉनिक्स दुकानातून विकत घेतले होते.

    फ्रेम

    (फोटोमधली केस थोडी वेगळी आहे. माझ्याकडे पारदर्शक झाकण आहे)



    नंतर, फाईल वापरुन, सेन्सर आउटपुट करण्यासाठी आणि वीज पुरवठा करण्यासाठी छिद्र केले गेले. मी सेन्सर बाहेर हलवण्याचा निर्णय घेतला, कारण केसशिवाय सिस्टमची चाचणी करताना, माझ्या लक्षात आले की स्क्रीनचा मागील भाग खूप गरम झाला आहे, ज्यामुळे केसमधील तापमानावर परिणाम होईल.

    सेन्सर्स आणि पॉवरसाठी खुली असलेली गृहनिर्माण



    मला पाय 2 सेन्सर्सवर सोल्डर करावे लागले आणि मी त्यापैकी एकावर ट्रॅक जाळला, मी नशिबाचा मोह न ठेवण्याचा आणि सेन्सरला वायर सोल्डर न करण्याचा निर्णय घेतला (मी दुसऱ्या कशावर तरी सराव करेन), परंतु कनेक्शनसाठी अधिक किंवा कमी विश्वासार्ह होण्यासाठी, मी इलेक्ट्रिकल टेप रिवाइंड करण्याचा निर्णय घेतला.

    गृहनिर्माण मध्ये "स्टफड" करण्यापूर्वी प्रणाली



    केस Arduino पेक्षा खूप मोठा असल्याने (कोणतेही लहान नव्हते), मला एक आधार द्यावा लागला जेणेकरून बोर्ड केसच्या आत जाऊ नये. तसेच, फोममधून एक आकृती कापली गेली होती आणि त्यामध्ये केसची आतील बाजू लपविण्यासाठी स्क्रीनसाठी एक आयत होता. माझ्या हातात सुपरग्लू नव्हता, म्हणून मला दुहेरी बाजू असलेला टेप वापरावा लागला.

    चमत्कार-युडा मासे-व्हेल



    झाकण स्क्रू करा, पॉवर कनेक्ट करा आणि प्रतीक्षा करा.

    इमारतीतील हवामान केंद्र पूर्ण झाले



    स्क्रीनवर परिणाम प्रदर्शित केल्यानंतर, आम्ही आर्द्रता मोजण्यात एक अप्रिय त्रुटी ओळखतो: DHT22 परिश्रमपूर्वक 99.90% (1.00% अत्यंत दुर्मिळ) आकृती तयार करते. चला समस्या काय आहे हे शोधण्यास प्रारंभ करूया. पहिली गोष्ट जी आम्ही करतो ती म्हणजे COM पोर्टवरील मूल्यांचे आउटपुट पाहणे. बरं वाटतं. केसचे अनेक रिफिल, डिससेम्बल आणि पुन्हा एकत्र केल्यानंतर, Google वर उत्तर शोधण्याची कल्पना मनात येते. अपेक्षेप्रमाणे, रशियन Google ने काहीही उपयुक्त सांगितले नाही. ठीक आहे. आम्ही इंग्रजीमध्ये शोधण्यास सुरुवात करतो आणि एका मंचावर आम्हाला अशीच समस्या असल्याचे लोक आढळतात. चर्चेची पहिली चार पाने काहीही उपयुक्त देत नाहीत, परंतु पाचव्या पानावर आम्हाला आमच्या प्रश्नाचे उत्तर सापडते:
    आर्द्रता सेन्सर चुकीच्या वायूंमुळे किंवा उच्च आर्द्रता IIRC च्या दीर्घकाळ संपर्कामुळे सहजपणे प्रभावित होऊ शकतात. डेटाशीटमध्ये सेन्सर "रीसेट" कसा करायचा याची एक प्रक्रिया आहे, तुम्ही ते वापरून पाहू शकता.

    मी DHT22 चे नुकसान कधी आणि कसे केले हा एकच प्रश्न राहिला. पण अभ्यासक्रम घेण्याची वेळ जवळ येत होती आणि म्हणून मी या समस्येचे निराकरण नंतरसाठी सोडले.

    नंतरचे शब्द

    अभ्यासक्रम उत्तीर्ण झाला. विद्यापीठातील सर्व टेलिंग बंद होईपर्यंत हवामान केंद्र अनिश्चित काळासाठी पुढे ढकलण्यात आले आहे. तथापि, मला वाटले त्यापेक्षा लवकर आम्हाला हवामान केंद्रावर परतावे लागले. असे घडले की नोव्हेंबरच्या मध्यभागी मी माझे कामाचे ठिकाण बदलले आणि नवीन कार्यसंघामध्ये मी अशा लोकांना भेटलो ज्यांना Arduino प्लॅटफॉर्म आणि यासारख्या गोष्टींमध्ये रस आहे. त्यामुळे या प्लॅटफॉर्मबद्दलची माझी आवड, थंडावण्यास वेळ न देता, पुन्हा भडकली. मी माझे हवामान स्टेशन काढले, ते संगणकाशी जोडले आणि लक्षात ठेवले की मी COM पोर्टद्वारे Arduino वरून डेटा ट्रान्सफर लागू केला आहे. आणि मग मला एक प्रोग्राम लिहिण्याची कल्पना आली जो Arduino कडून COM पोर्टद्वारे डेटा प्राप्त करतो आणि हा डेटा सार्वजनिक देखरेखीसाठी प्रसारित करतो, परंतु ही एक पूर्णपणे वेगळी कथा आहे.

    मला वायरलेस सेन्सर्स हवे आहेत आणि तरीही मला Arduino Pro Mini वर हवामान स्टेशन लागू करायचे आहे. म्हणून, मी 3.3V पॉवर सप्लायसह 4 Arduino Pro Minis, 4 nRF24L01+ रेडिओ मॉड्यूल्स आणि काही अतिरिक्त सेन्सर ऑर्डर केले आहेत, ज्याबद्दल मी पुढच्या वेळी बोलण्याचा प्रयत्न करेन. दरम्यान, मी पार्सलची वाट पाहत आहे, रीअल-टाइम घड्याळाचे कनेक्शन लागू करण्याची योजना आहे जेणेकरुन डेटा अपडेट वेळ आणि डेटा स्वतः मायक्रोएसडी कार्डवर वाचवता येईल, जर पार्सलशी कोणतेही कनेक्शन नसेल. COM पोर्टद्वारे क्लायंट.

    साइटच्या विकासासाठी आपण मदत करू शकता आणि काही निधी हस्तांतरित करू शकता

    

    एके दिवशी, शहरात फिरत असताना, मला एक नवीन रेडिओ इलेक्ट्रॉनिक्सचे दुकान उघडलेले दिसले. त्यात प्रवेश केल्यावर, मला Arduino साठी मोठ्या प्रमाणात ढाल सापडल्या कारण... माझ्या घरी एक Arduino Uno आणि एक Arduino Nano होती आणि लगेचच काही अंतरावर सिग्नल ट्रान्समीटर खेळण्याची कल्पना सुचली. मी सर्वात स्वस्त ट्रान्समीटर आणि रिसीव्हर 433 MHz वर विकत घेण्याचे ठरवले:

    सिग्नल ट्रान्समीटर.


    सिग्नल रिसीव्हर.

    साधे डेटा ट्रान्समिशन स्केच (येथून घेतलेले उदाहरण) रेकॉर्ड केल्यावर, असे दिसून आले की तापमान, आर्द्रता यासारख्या साध्या डेटा प्रसारित करण्यासाठी ट्रान्समिटिंग डिव्हाइस योग्य असू शकतात.

    ट्रान्समीटरमध्ये खालील वैशिष्ट्ये आहेत:
    1. मॉडेल: MX-FS - 03V
    2. श्रेणी (ब्लॉकिंग ऑब्जेक्ट्सच्या उपस्थितीवर अवलंबून): 20-200 मीटर
    3. ऑपरेटिंग व्होल्टेज: 3.5 -12V
    4. मॉड्यूलचे परिमाण: 19 * 19 मिमी
    5. सिग्नल मॉड्युलेशन: एएम
    6. ट्रान्समीटर पॉवर: 10mW
    7. वारंवारता: 433 MHz
    8. बाह्य अँटेनाची आवश्यक लांबी: 25cm
    9. जोडण्यास सोपे (केवळ तीन वायर): डेटा ; VCC; पृथ्वी.

    प्राप्त मॉड्यूल वैशिष्ट्ये:
    1. ऑपरेटिंग व्होल्टेज: DC 5V
    2. वर्तमान: 4mA
    3. ऑपरेटिंग वारंवारता: 433.92 MHz
    4. संवेदनशीलता: - 105dB
    5. मॉड्यूलचे परिमाण: 30 * 14 * 7 मिमी
    6. बाह्य अँटेना आवश्यक: 32 सें.मी.

    इंटरनेट म्हणते की 2Kb/सेकंद मधील माहितीचे प्रसारण श्रेणी 150m पर्यंत पोहोचू शकते. मी ते स्वतः तपासले नाही, परंतु दोन खोल्यांच्या अपार्टमेंटमध्ये ते सर्वत्र स्वीकारले जाते.

    होम वेदर स्टेशन हार्डवेअर

    अनेक प्रयोगांनंतर, मी आर्डिनो नॅनोला तापमान, आर्द्रता सेन्सर आणि ट्रान्समीटर जोडण्याचा निर्णय घेतला.


    DS18D20 तापमान सेन्सर खालीलप्रमाणे Arduino शी जोडलेले आहे:

    1) मायक्रोकंट्रोलरच्या वजापर्यंत GND.
    २) पुल-अप रेझिस्टरद्वारे जमिनीवर आणि Arduino च्या D2 पिन करण्यासाठी DQ
    3) Vdd ते +5V.

    MX-FS - 03V ट्रान्समीटर मॉड्यूल 5 व्होल्टद्वारे समर्थित आहे, डेटा आउटपुट (ADATA) पिन D13 शी जोडलेला आहे.

    मी Arduino Uno ला LCD डिस्प्ले आणि BMP085 बॅरोमीटर जोडला.


    Arduino Uno ला कनेक्शन आकृती

    सिग्नल रिसीव्हर पिन D10 शी जोडलेला आहे.

    मॉड्यूल BMP085 - डिजिटल वायुमंडलीय दाब सेन्सर. सेन्सर आपल्याला तापमान, दाब आणि समुद्रसपाटीपासूनची उंची मोजण्याची परवानगी देतो. कनेक्शन इंटरफेस: I2C. सेन्सर पुरवठा व्होल्टेज 1.8-3.6 व्ही

    मॉड्यूल इतर I2C उपकरणांप्रमाणेच Arduino शी जोडलेले आहे:

    • VCC - VCC (3.3 V);
    • GND - GND;
    • एससीएल - ॲनालॉग पिन 5 पर्यंत;
    • एसडीए - ॲनालॉग पिन 4 पर्यंत.
    • खूप कमी खर्च
    • पॉवर आणि I/O 3-5 V
    • 5% अचूकतेसह आर्द्रता 20-80% निर्धारित करणे
    • तापमान ओळख 0-50 अंश. 2% अचूकतेसह
    • मतदान वारंवारता 1 Hz पेक्षा जास्त नाही (दर 1 सेकंदात एकदा पेक्षा जास्त नाही)
    • परिमाण 15.5 मिमी x 12 मिमी x 5.5 मिमी
    • 0.1" पिन अंतरासह 4 पिन

    DHT मध्ये 4 पिन आहेत:

    1. Vcc (3-5V वीज पुरवठा)
    2. डेटा आउट - डेटा आउटपुट
    3. न वापरलेले
    4. सामान्य

    Arduino च्या D8 शी जोडते.

    घरगुती हवामान स्टेशनचा सॉफ्टवेअर भाग

    ट्रान्समिटिंग मॉड्यूल दर 10 मिनिटांनी तापमान मोजतो आणि प्रसारित करतो.

    खाली कार्यक्रम आहे:

    /* स्केच आवृत्ती 1.0 दर 10 मिनिटांनी तापमान पाठवा. */ #include #include #include #define ONE_WIRE_BUS 2 //डॅलस वनवायर सेन्सर oneWire(ONE_WIRE_BUS) कनेक्ट करण्यासाठी पिन; डॅलस टेम्परेचर सेन्सर्स(&oneWire); थर्मोमीटरच्या आत डिव्हाइसचा पत्ता; void सेटअप(void) ( //Serial.begin(9600); vw_set_ptt_inverted(true); // DR3100 vw_setup(2000) साठी आवश्यक; // बॉड रेट (बिट/s) सेन्सर्स सेट करा.begin(); जर (!) sensors .getAddress(insideThermometer, 0)); printAddress(insideThermometer), void printTemperature(DeviceAddress deviceAddress) : "); //Serial.println(tempC); //int number = tempC पाठवण्यासाठी डेटाची निर्मिती; char प्रतीक = "c"; //हे सेन्सर स्ट्रिंग strMsg = "z" आहे हे निर्धारित करण्यासाठी सेवा चिन्ह; strMsg += ""; strMsg.toCharArray(msg, 255) विलंब (200) पर्यंत थांबा; j<= 6; j++) { sensors.requestTemperatures(); printTemperature(insideThermometer); delay(600000); } } //Определение адреса void printAddress(DeviceAddress deviceAddress) { for (uint8_t i = 0; i < 8; i++) { if (deviceAddress[i] < 16); //Serial.print("0"); //Serial.print(deviceAddress[i], HEX); } }

    प्राप्त करणारे उपकरण डेटा प्राप्त करते, खोलीतील दाब आणि तापमान मोजते आणि ते डिस्प्लेवर प्रसारित करते.

    #include #include LiquidCrystal lcd(12, 10, 5, 4, 3, 2); # dht11 सेन्सर समाविष्ट करा; #DHT11PIN 8 परिभाषित करा #include #include BMP085 dps = BMP085(); लांब तापमान = 0, दाब = 0, उंची = 0; void setup() ( Serial.begin(9600); vw_set_ptt_inverted(true); // DR3100 vw_setup(2000) साठी आवश्यक; // रिसेप्शन गती सेट करा vw_rx_start(); // प्रसारण निरीक्षण सुरू करा lcd.begin(16, 2) ; Wire.begin(); //lcd.setCursor(14,0); ( uint8_t buf; // संदेशासाठी बफर ; // बफरची लांबी जर (vw_get_message(buf, &buflen)) // संदेश प्राप्त झाला तर ( // int parsing प्रारंभ करा; // संदेश आम्हाला संबोधित नसल्यास, बाहेर पडा जर (buf != "z") (return; ) char command = buf; // निर्देशांक 2 वर अंकीय पॅरामीटर सुरू होतो i = 4; वर्णांची संख्या (buf[i] != "") (संख्या *= 10; संख्या += buf[i] - "0"; i++; ) dps.getPressure(&Alttitude); getTemperature(&Temperature) //Serial.print(command); lcd.print("T="); lcd.setCursor(2,0); lcd.print(संख्या); lcd.setCursor(5,0); lcd.print("P="); lcd.print(प्रेशर/133.3); lcd.print("mmH"); lcd.setCursor(0,1); lcd.print("T="); lcd.print(तापमान*0.1); lcd.print("H="); lcd.print(sensor.humidity); lcd.home(); //विलंब(2000); int chk = sensor.read(DHT11PIN); स्विच (chk) ( केस DHTLIB_OK: //Serial.println("OK"); ब्रेक; केस DHTLIB_ERROR_CHECKSUM: //Serial.println("चेकसम एरर"); खंडित; केस DHTLIB_ERROR_TIMEOUT: //Serial"nlprintln त्रुटी"); खंडित; डीफॉल्ट: //Serial.println("अज्ञात त्रुटी"); खंडित; ) ) )

    P.S. भविष्यात मी पुढील गोष्टी जोडण्याची योजना आखत आहे:
    - ट्रान्समीटरला आर्द्रता सेन्सर, डेटा ट्रान्समिशन अल्गोरिदम पुन्हा कार्य करा
    - वाऱ्याचा वेग आणि दिशा मोजण्यासाठी सेन्सर.
    - प्राप्त करणाऱ्या उपकरणावर दुसरा डिस्प्ले जोडा.
    - रिसीव्हर आणि ट्रान्समीटर वेगळ्या मायक्रोकंट्रोलरमध्ये हस्तांतरित करा.

    खाली काय घडले याचा फोटो आहे:

    रेडिओ घटकांची यादी

    पदनाम प्रकार संप्रदाय प्रमाण नोंददुकानमाझे नोटपॅड
    प्रसारित करणारा भाग.
    अर्डिनो बोर्ड

    Arduino Nano 3.0

    1 नोटपॅडवर
    तापमान संवेदक

    DS18B20

    1 नोटपॅडवर
    रेझिस्टर

    220 ओम

    1 नोटपॅडवर
    ट्रान्समीटर मॉड्यूलMX-FS-03V (433 MHz)1 नोटपॅडवर
    रेडिओ प्राप्त करणारा भाग.
    अर्डिनो बोर्ड

    Arduino Uno

    1 नोटपॅडवर
    ट्रिमर प्रतिरोधक 1 नोटपॅडवर
    रेझिस्टर

    मी Arduino UNO वर प्रणालीच्या वैयक्तिक भागांची चाचणी केली. त्या. मी ईएसपी मॉड्यूल युनोशी कनेक्ट केले आणि त्याचा अभ्यास केला, तो डिस्कनेक्ट केला, नंतर nRF24 कनेक्ट केला, इ. विंडो सेन्सरच्या अंतिम अंमलबजावणीसाठी, मी युनोच्या सर्वात जवळचे लघुचित्र म्हणून Arduino Pro Mini निवडले.



    वीज वापराच्या बाबतीत, Arduino Pro Mini देखील चांगले दिसते:

    • यूएसबी-टीटीएल कन्व्हर्टर नाही, जो स्वतः खूप "खातो",
    • LED 10k रेझिस्टरद्वारे जोडलेले आहे.

    प्रगत ऊर्जा बचतीसाठी हे नियोजित होते:

    • Arduino Pro Mini वरील LED - पॉवर इंडिकेटर काढा (मला याबद्दल खेद वाटला, मी बोर्ड खराब केला नाही)
    • किंवा Atmel ATmega328 मायक्रोप्रोसेसरवर "बेअर" असेंब्ली वापरा (वापरले नाही)
    • लो पॉवर लायब्ररी किंवा JeeLib वापरा.

    लायब्ररींमधून मी लो पॉवर लायब्ररी निवडली, ती सोपी आहे आणि त्यात फक्त आवश्यक आहे.


    मध्यवर्ती युनिटसाठी, त्याच्याशी असंख्य गौण उपकरणे जोडण्याचे नियोजित असल्याने, Arduino मेगा बोर्ड निवडला गेला. याव्यतिरिक्त, हे UNO शी पूर्णपणे सुसंगत आहे आणि अधिक मेमरी आहे. पुढे पाहताना, मी म्हणेन की ही निवड पूर्णपणे न्याय्य होती.


    तुम्ही सुमारे $8 मध्ये Arduino मेगा खरेदी करू शकता.

    उर्जा आणि उर्जा वापर

    आता उर्जा आणि उर्जेच्या वापराबद्दल.


    Arduino Pro Mini दोन प्रकारात येते:

    • पुरवठा व्होल्टेज 5V आणि वारंवारता 16MHz साठी
    • 3.3V च्या पुरवठा व्होल्टेजसाठी आणि 8MHz च्या वारंवारतेसाठी.

    nRF24L01+ रेडिओ मॉड्यूलला वीज पुरवठ्यासाठी 3.3 V आवश्यक असल्याने आणि वेग येथे महत्त्वाचा नाही, तर 8 MHz आणि 3.3 V सह Arduino Pro Mini खरेदी करा.


    या प्रकरणात, Arduino Pro Mini ची पुरवठा व्होल्टेज श्रेणी आहे:

    • 3.3V मॉडेलसाठी 3.35-12V
    • 5V मॉडेलसाठी 5-12V.

    माझ्याकडे आधीपासून 5V वर Arduino Pro Mini होते, म्हणूनच मी ते वापरले. तुम्ही सुमारे $4 मध्ये Arduino Pro Mini खरेदी करू शकता.


    मध्यवर्ती युनिटला 220 V नेटवर्कवरून 12 V, 450 mA, 5 W चे आउटपुट प्रदान करणाऱ्या छोट्या वीज पुरवठ्याद्वारे चालविले जाईल. $5 साठी हे लाइक करा. एक वेगळा 5V पिन देखील आहे.



    आणि हे पुरेसे नसल्यास, आपण काहीतरी अधिक शक्तिशाली स्थापित करू शकता. दुसऱ्या शब्दांत, केंद्रीय युनिटसाठी वीज बचत करणे फारसा अर्थ नाही. परंतु रिमोट वायरलेस सेन्सरसाठी, ऊर्जा बचत हा सर्वात महत्वाचा भाग आहे. पण मी कार्यक्षमता गमावू इच्छित नाही.


    त्यामुळे, Arduino Pro Mini आणि nRF24 रेडिओ मॉड्युल 4 Ni-Mh बॅटरीजद्वारे समर्थित असेल.


    आणि लक्षात ठेवा आधुनिक बॅटरीची कमाल क्षमताअंदाजे 2500-2700mAh, आणखी काहीही म्हणजे एकतर मार्केटिंग गिमिक्स (Ansmann 2850) किंवा फसवणूक (UltraFire 3500).


    मी अनेक कारणांसाठी ली-आयन बॅटरी वापरत नाही:

    • खूप महागडे
    • जेव्हा सभोवतालचे तापमान 0 डिग्री सेल्सियसपेक्षा कमी होते तेव्हा लिथियम-आयन बॅटरीची शक्ती 40-50% पर्यंत कमी होते
    • जे स्वस्त आहेत ते संरक्षणाशिवाय तयार केले जातात आणि ते असुरक्षित असतात (शॉर्ट सर्किट किंवा डिस्चार्ज दरम्यान ते स्फोट होऊ शकतात आणि जळू शकतात, YouTube वर व्हिडिओंचा समूह पहा)
    • त्यांचे वय, जरी ते वापरले जात नसले तरीही (तथापि, हे सर्व रासायनिक घटकांबद्दल सांगितले जाऊ शकते), 2 वर्षांनंतर ली-आयन बॅटरी त्याच्या क्षमतेच्या सुमारे 20% गमावते.

    प्रोटोटाइपसाठी, उच्च-गुणवत्तेच्या Ni-MH AA किंवा AAA बॅटरीसह मिळणे शक्य आहे. शिवाय, आम्हाला मोठ्या प्रवाहांची आवश्यकता नाही. Ni-MH बॅटरीचा एकमात्र तोटा म्हणजे त्यांचा दीर्घकाळ चार्ज होण्याचा कालावधी.

    हवामान केंद्राचे सामान्य आकृती

    चला सारांश द्या. हे सर्व कसे कार्य करते याचे एक सामान्य आकृती येथे आहे.



    पुढे चालू.

    टॅग: टॅग जोडा



    आम्ही वाचण्याची शिफारस करतो

    वर