इंजीनियर्स / डेवलपर्स के रूप में हम हमेशा सिस्टम को डिज़ाइन या बेहतर बनाने के लिए एकत्र किए गए डेटा पर भरोसा करते हैं। डेटा रिकॉर्ड करना और उनका विश्लेषण करना अधिकांश उद्योगों में एक आम बात है, यहाँ हम Arduino Data Logger Project का निर्माण कर रहे हैं जहाँ हम जानेंगे कि हम समय के एक विशिष्ट अंतराल पर कैसे डेटा लॉग कर सकते हैं। हम कुछ डेटा (यहां तापमान, आर्द्रता, दिनांक और समय) को पढ़ने के लिए और उन्हें एक साथ एसडी कार्ड और कंप्यूटर पर सहेजने के लिए एक Arduino बोर्ड का उपयोग करेंगे।
सहेजे गए डेटा को और अधिक विश्लेषण के लिए आसानी से एक्सेल शीट में खोला जा सकता है। दिनांक और समय को बनाए रखने के लिए हम प्रसिद्ध RTC मॉड्यूल DS3231 का उपयोग करेंगे और तापमान और आर्द्रता प्राप्त करने के लिए हम DHT11 सेंसर का उपयोग करेंगे । परियोजना के अंत में आप सीखेंगे
- दिनांक, समय और सेंसर मूल्यों के साथ एसडी कार्ड में डेटा कैसे लॉग इन करें।
- धारावाहिक संचार के माध्यम से पीसी पर सीधे एक्सेल शीट पर डेटा कैसे लिखें।
सामग्री की आवश्यकता:
- ब्रेड बोर्ड
- Arduino UNO (कोई भी Arduino बोर्ड)
- DHT11 तापमान संवेदक
- DS3231 RTC मॉड्यूल
- एसडी कार्ड मॉड्यूल
- एसडी कार्ड
- तारों को जोड़ना
- कंप्यूटर / लैपटॉप
सर्किट आरेख:
इस Arduino तापमान लकड़हारा परियोजना के लिए सर्किट आरेख नीचे दिखाया गया है।
जैसा कि सर्किट आरेख में दिखाया गया है कनेक्शन बहुत सरल हैं क्योंकि हमने उन्हें मॉड्यूल के रूप में उपयोग किया है हम सीधे उन्हें ब्रेडबोर्ड पर बना सकते हैं। कनेक्शन को नीचे दी गई तालिका में वर्गीकृत किया गया है
अरुडिनो पिन |
मॉड्यूल पिन |
तापमान संवेदक - DHT11 |
|
Vcc |
5 वी |
गाण्ड |
गाण्ड |
एनसी |
एनसी |
बाहर |
पिन 7 |
आरटीसी मॉड्यूल DS3231 |
|
Vcc |
5 वी |
गाण्ड |
गाण्ड |
एससीएल |
पिन A5 |
एसडीए |
पिन A4 |
एसडी कार्ड मॉड्यूल |
|
Vcc |
5 वी |
गाण्ड |
गाण्ड |
मीसो |
पिन १२ |
MOSI |
पिन ११ |
SCK |
पिन १३ |
सीएस |
पिन ४ |
आप अपने किसी भी सेंसर से DHT11 तापमान सेंसर को बदल सकते हैं, जिसमें से आपको मूल्यों को लॉग इन करना होगा। तापमान को पढ़ने के लिए आप Arduino के साथ LM35 की जांच कर सकते हैं।
RTC मॉड्यूल DS3231 I2C संचार (SCL, SDA) का उपयोग करके Arduino के साथ हस्तक्षेप किया जाता है और SD कार्ड मॉड्यूल SPI संचार (MISO, MOSI, SCK, CS) का उपयोग करके हस्तक्षेप किया जाता है। पिन 4 और 7 को Arduino प्रोग्राम द्वारा CS पिन और आउटपुट पिन के रूप में परिभाषित किया गया है, यदि आवश्यक हो तो आप उन्हें किसी अन्य पिन में बदल सकते हैं। हमने पहले म्यूजिक प्लेयर प्रोजेक्ट में Arduino के साथ SD कार्ड को इंटर किया।
Arduino कार्यक्रम स्पष्टीकरण:
हमें Arduino प्रोग्राम लिखना होगा जो निम्नलिखित कार्य कर सकता है।
- DTH11 सेंसर (या कोई अन्य डेटा जिसे आप लॉग इन करना चाहते हैं) से डेटा पढ़ें।
- RTC मॉड्यूल से डेटा पढ़ने के लिए I2C बस शुरू करें।
- Arduino के साथ SD कार्ड मॉड्यूल को इंटरफ़ेस करने के लिए SPI बस को प्रारंभ करें।
- एसडी कार्ड में दिनांक, समय, तापमान और आर्द्रता स्टोर करें।
- कंप्यूटर / लैपटॉप पर चलने वाली एक्सेल शीट पर दिनांक, समय, तापमान और आर्द्रता स्टोर करें।
उपरोक्त कदम जटिल लग सकते हैं, लेकिन वे बहुत आसान हैं क्योंकि हमारे पास हमारे लिए कठिन काम करने के लिए पुस्तकालय हैं। आपको निम्नलिखित दो पुस्तकालयों को डाउनलोड करना होगा
- GHTHub से DHT11 सेंसर लाइब्रेरी
- रिंकी-डिंक इलेक्ट्रॉनिक्स से DS3231 RTC मॉड्यूल लाइब्रेरी
एक बार जब आप पुस्तकालय डाउनलोड कर लेते हैं, तो उन्हें अपने Arduino IDE में जोड़ दें
स्केच-> लाइब्रेरी शामिल करें ->.ZIP लाइब्रेरी जोड़ें
कंप्यूटर पर Arduino से डेटा को एक एक्सेल शीट में जीवंत रूप से फीड करने के लिए, हमें सॉफ्टवेयर की स्थापना करनी होगी, जिसे Parallax Inc. द्वारा प्रदान किया गया PLX-DAQ नामक सॉफ्टवेयर इंस्टॉल करना होगा, फ़ाइल को डाउनलोड करने के लिए लिंक का पालन करें और उन्हें अपने ऑपरेटिंग सिस्टम के आधार पर इंस्टॉल करें। यह आपके डेस्कटॉप पर PLS-DAQ नाम का एक फ़ोल्डर बनाना चाहिए था। हम अपने कामकाजी अनुभाग में बाद में इसका ध्यान रखेंगे।
अब दोनों पुस्तकालयों को जोड़ने और सॉफ़्टवेयर स्थापित करने के बाद, आप पूर्ण कोड (ट्यूटोरियल के नीचे दिए गए) का उपयोग कर सकते हैं और उन्हें अपने डूडिनो में अपलोड कर सकते हैं। मैंने पूरी कोशिश की है कि कोड को यथासंभव सरल रखा जाए और स्पष्टीकरण भी टिप्पणी अनुभागों के माध्यम से दिए गए हैं। आगे, मैं नीचे महत्वपूर्ण खंडों की व्याख्या करूँगा।
1. DS3231 से डेटा पढ़ना:
DS3231 एक RTC (रियल टाइम क्लॉक) मॉड्यूल है। इसका उपयोग अधिकांश इलेक्ट्रॉनिक्स परियोजनाओं के लिए तारीख और समय बनाए रखने के लिए किया जाता है। इस मॉड्यूल की अपनी सिक्का सेल बिजली की आपूर्ति है, जिसके उपयोग से यह मुख्य पावर हटाए जाने पर भी दिनांक और समय को बनाए रखता है या MCU हालांकि एक हार्ड रीसेट हो गया है। इसलिए एक बार जब हम इस मॉड्यूल में दिनांक और समय निर्धारित करते हैं तो यह हमेशा इसका ट्रैक रखेगा।
Arduino द्वारा प्रदान की गई लाइब्रेरी के कारण इस मॉड्यूल का उपयोग करना बहुत आसान है।
// हार्डवेयर इंटरफ़ेस DS3231 rtc (SDA, SCL) का उपयोग कर DS3231 को सम्मिलित करें; void initialize_RTC () {// rtc ऑब्जेक्ट आरटीएम आदिबेगिन को प्रारंभ करें (); // #### पहली बार ### / * rtc.setDOW (FRIDAY) के लिए दिनांक और समय निर्धारित करने के लिए निम्नलिखित पंक्तियों को अनियंत्रित किया जा सकता है; // सेट करने के लिए सप्ताह का सप्ताह SUNDAY rtc.setTime (18, 46, 45); // 12:00:00 (210 प्रारूप) rtc.setDate (6, 30, 2017) के लिए समय निर्धारित करें; // दिनांक 1 जनवरी 2014 को निर्धारित करें * /}
नोट: पहली बार इस मॉड्यूल का उपयोग करते समय आपको तारीख और समय निर्धारित करना होगा। यह केवल ऊपर वर्णित टिप्पणियों को हटाकर और दिनांक और समय लिखकर किया जा सकता है। सुनिश्चित करें कि आप उन्हें वापस टिप्पणी करते हैं और इसे अपलोड करते हैं, अन्यथा हर बार जब आप बोर्ड चलाते हैं तो तारीख और समय फिर से सेट हो जाएगा। आप Arduino के साथ समय पढ़ने के लिए RTC IC DS1307 का भी उपयोग कर सकते हैं।
2. DHT11 से डेटा पढ़ना:
DHT11 एक टेम्परेचर ह्यूमिडिटी सेंसर है। यह मॉड्यूल के आउटपुट पिन के माध्यम से 8-बिट डेटा के रूप में तापमान और आर्द्रता के मूल्यों को भेजता है। पुस्तकालय Arduino के सॉफ़्टवेयर सीरियल फ़ंक्शन का उपयोग करके इस डेटा को पढ़ता है।
#define DHT11_PIN 7 // सेंसर आउटपुट पिन पिन से जुड़ा हुआ है 7 dht DHT; // सेंसर ऑब्जेक्ट जिसे DHT void Read_DHT11 नाम दिया गया है () {int chk = DHT.read11 (DHT11_PIN); }
यहां मैंने आउटपुट पिन को पिन 7 से जोड़ा है उदाहरण के लिए आप सॉफ्टवेयर सीरियल का समर्थन करने वाले किसी भी पिन को चुन सकते हैं। DHT.read (पिन नंबर) पर कॉल करना; तापमान और आर्द्रता के मूल्य को पढ़ेंगे और इसे क्रमशः DHT.temper और DHT.Humidity के पैरामीटर में संग्रहीत करेंगे । इसके अलावा इस DHT11 आधारित Arduino तापमान मापन की जाँच करें।
3. SC कार्ड मॉड्यूल को प्रारंभ करना:
void Initialize_SDcard () {// देखें कि क्या कार्ड मौजूद है और इसे इनिशियलाइज़ किया जा सकता है: अगर (? (SD.begin (चिपसलेक्ट))) {Serial.println ("कार्ड फेल हुआ है, या मौजूद नहीं है"); // अधिक कुछ न करें: वापसी; } // फ़ाइल खोलें। ध्यान दें कि एक समय में केवल एक ही फ़ाइल खुली हो सकती है, // इसलिए आपको दूसरे को खोलने से पहले इसे बंद करना होगा। फ़ाइल डेटा फ़ाइल = SD.open ("LoggerCD.txt", FILE_WRITE); // यदि फ़ाइल उपलब्ध है, तो उसे लिखें: if (dataFile) {dataFile.println ("दिनांक, समय, तापमान, आर्द्रता"); // एक्सेल फ़ाइल dataFile.close () की पहली पंक्ति लिखें; }}
Arduino के साथ SD कार्ड का उपयोग करना SD कार्ड लाइब्रेरी के कारण आसान है, जो डिफ़ॉल्ट रूप से Arduino IDE में जोड़ा जाएगा। एसडी कार्ड इनिशियलाइज़ फंक्शन में हम “LoggerCD.txt” नामक एक टेक्स्ट फ़ाइल बनाएंगे और अपनी सामग्री की पहली पंक्ति लिखेंगे। यहाँ हम एक “,” को एक सीमांकक के रूप में उपयोग करके मूल्यों को अलग करते हैं। जब एक अल्पविराम रखा जाता है तो इसका मतलब है कि हमें एक्सेल शीट में अगली सेल में जाना है।
4. एसडी कार्ड को डेटा लिखना
void Write_SDcard () {// फ़ाइल खोलें। ध्यान दें कि एक समय में केवल एक ही फ़ाइल खुली हो सकती है, // इसलिए आपको दूसरे को खोलने से पहले इसे बंद करना होगा। फ़ाइल डेटा फ़ाइल = SD.open ("LoggerCD.txt", FILE_WRITE); // यदि फ़ाइल उपलब्ध है, तो उसे लिखें: if (dataFile) {dataFile.print (rtc.getDateStr ()); // एसडी कार्ड dataFile.print (",") पर स्टोर की तारीख; // "," dataFile.print (rtc.getTimeStr ()) का उपयोग करके अगले कॉलम पर जाएं; // एसडी कार्ड dataFile.print (",") पर स्टोर की तारीख; // "," dataFile.print (DHT.temper) का उपयोग करके अगले कॉलम पर जाएं; // एसडी कार्ड dataFile.print (",") पर स्टोर की तारीख; // "," dataFile.print (DHT.humidity) का उपयोग करके अगले कॉलम पर जाएं; // एसडी कार्ड dataFile.print (",") पर स्टोर की तारीख; // "," dataFile.println () का उपयोग करके अगले कॉलम पर जाएं; // पंक्ति के अंत में अगली पंक्ति dataFile.close () पर जाएं;// फ़ाइल को बंद करें} और Serial.println ("OOPS !! SD कार्ड लेखन विफल"); }
जैसा कि पहले कहा गया था कि हमारा इरादा अपने एसडी कार्ड में दिनांक, समय, तापमान और आर्द्रता को बचाने का है । DS3231 पुस्तकालय और DHT11 पुस्तकालय की मदद से हमारा Arduino इन सभी चार मापदंडों को पढ़ने और उन्हें निम्नलिखित मापदंडों में संग्रहीत करने में सक्षम होगा जैसा कि नीचे दी गई तालिका में दिखाया गया है।
दिनांक |
rtc.getDateStr ()); |
समय |
rtc.getTimeStr ()); |
तापमान |
DHT |
नमी |
DHT.humidity |
अब हम इन मापदंडों को सीधे प्रिंट लाइन का उपयोग करके एसडी कार्ड पर संग्रहीत करने के लिए उपयोग कर सकते हैं
dataFile.print (पैरामीटर);
आप देख सकते हैं कि प्रत्येक पैरामीटर को सुपाठ्य बनाने के लिए एक अल्पविराम द्वारा अलग किया जाता है और एक dataFile.println (); लाइन के अंत को इंगित करने के लिए उपयोग किया जाता है।
5. पीएलएक्स-डीएक्यू को डेटा लिखना
PLX-DAQ Microsoft Excel प्लग-इन सॉफ़्टवेयर है जो हमें हमारे लैपटॉप या पीसी पर सीधे एक Excel फ़ाइल में Arduino से मान लिखने में मदद करता है। यह दो कारणों से मेरा व्यक्तिगत पसंदीदा है:
1. आप एक ही समय में डेटा को लिख और उसकी निगरानी कर सकते हैं और उन्हें ग्राफ़ के रूप में प्लॉट करने का तरीका प्रदान करते हैं।
2. आपको तारीख और समय का ध्यान रखने के लिए DS3231 जैसे RTC मॉड्यूल की आवश्यकता नहीं है। आप बस अपने लैपटॉप / कंप्यूटर पर चलने की तारीख और समय का उपयोग कर सकते हैं और उन्हें सीधे एक्सेल पर सहेज सकते हैं।
Arduino के साथ इस सॉफ़्टवेयर का उपयोग करने के लिए हमें धारावाहिक मॉनीटर पर मान प्रदर्शित करने की तरह एक विशिष्ट पैटर्न में क्रमिक रूप से डेटा भेजना होगा। मुख्य लाइनों को नीचे समझाया गया है:
void Initialize_PlxDaq () {Serial.println ("CLEARDATA"); // पिछली परियोजनाओं से छोड़ा गया कोई भी डेटा Serial.println ("LABEL, दिनांक, समय, तापमान, आर्द्रता"); // हमेशा LABEL लिखें, इसे पहली पंक्ति के रूप में इंगित करने के लिए} void Write_PlxDaq () {Serial.print ("DATA"); // हमेशा डेटा सीरियल के रूप में निम्नलिखित को सूचित करने के लिए "डेटा" लिखें। (","); // "," Serial.print ("DATE") का उपयोग करके अगले कॉलम पर जाएं; // Excel Serial.print (",") पर स्टोर की तारीख; // "," Serial.print ("TIME") का उपयोग करके अगले कॉलम पर जाएं; // Excel Serial.print (",") पर स्टोर की तारीख; // "," Serial.print (DHT.temper) का उपयोग करके अगले कॉलम पर जाएं; // Excel Serial.print (",") पर स्टोर की तारीख; // "," Serial.print (DHT.humidity) का उपयोग करके अगले कॉलम पर जाएं;// Excel Serial.print (",") पर स्टोर की तारीख; // "," Serial.println () का उपयोग करके अगले कॉलम पर जाएं; // अगली पंक्ति में पंक्ति की समाप्ति}
सॉफ्टवेयर LABEL, DATA, TIME, DATE आदि कीवर्ड्स को पहचान सकता है। जैसा कि इनिशियलाइज़ फंक्शन में दिखाया गया है कि “LABEL” कीवर्ड का उपयोग एक्सेल शीट के पहले ROW को लिखने के लिए किया जाता है। बाद में लिखें फ़ंक्शन में हम संकेत देने के लिए कीवर्ड "DATA" का उपयोग करते हैं कि निम्नलिखित जानकारी को DATA के रूप में माना जाना चाहिए। यह इंगित करने के लिए कि हमें अगली पंक्ति में जाना है, हमें अल्पविराम (",") का उपयोग करना होगा। पंक्ति के अंत को इंगित करने के लिए हमें एक Serial.println () भेजना होगा ;
जैसा कि पहले कहा गया था कि हम ऊपर दिखाए गए अनुसार क्रमशः “DATE” और “TIME” कीवर्ड भेजकर सिस्टम की तारीख और समय लिख सकते हैं।
नोट: इस PLX_DAQ सॉफ़्टवेयर का उपयोग करते समय धारावाहिक मॉनिटर का उपयोग न करें।
कार्य स्पष्टीकरण:
के कार्य Arduino डाटा लॉगर सरल है। एक बार हार्डवेयर और सॉफ्टवेयर तैयार हो जाने के बाद यह आपके Arduino Board में प्रोग्राम को जलाने का समय है। जैसे ही आपका प्रोग्राम अपलोड होगा, आपके तापमान और आर्द्रता के मान आपके एसडी कार्ड में जमा होने लगेंगे। आपको कंप्यूटर में एक्सेल शीट में लॉग इन करने के लिए PLX-DAQ को सक्षम करने के लिए नीचे दिए गए चरणों का पालन करना होगा।
चरण 1: स्थापना के दौरान अपने डेस्कटॉप पर बनाई गई "Plx-Daq स्प्रेडशीट" फ़ाइल खोलें।
चरण 2: यदि कोई सुरक्षा ब्लॉक है, तो विकल्प पर क्लिक करें-> सामग्री को सक्षम करें -> समाप्त -> निम्न स्क्रीन प्राप्त करने के लिए ठीक है।
चरण 3: अब बॉड दर को "9600" के रूप में चुनें और जिस पोर्ट पर आपका Arduino जुड़ा हुआ है और कनेक्ट पर क्लिक करें। आपके मूल्यों को नीचे दी गई तस्वीर में दिखाए गए अनुसार लॉग इन करना शुरू करना चाहिए।
आप इस एक्सेल शीट को खुला छोड़ सकते हैं और मानों की निगरानी कर सकते हैं जैसे वे लॉग इन हैं। जैसा कि यह हो रहा है कि हमारा एसडी कार्ड भी उन्हीं मूल्यों को बचा सकता है। यह जांचने के लिए कि एसडी कार्ड को हटा दें और इसे अपने कंप्यूटर पर खोलें। आपको इसमें "LoggerCD.txt" नामक एक टेक्स्ट फ़ाइल मिलनी चाहिए । जब इसे खोला जाता है तो यह कुछ इस तरह दिखाई देता है।
इस फ़ाइल में डेटा है, लेकिन नोटपैड पर उनका विश्लेषण करना कठिन होगा। इसलिए हम इसे एक्सेल पर सीएसवी (कोमा सेपरेटेड वैल्यूज) फाइल के रूप में खोल सकते हैं, इस प्रकार यह अधिक प्रभावी है। एक्सेल में खोलने के लिए
1.ऑपन एक्सेल। फ़ाइल पर क्लिक करें-> खोलें और नीचे दाएं कोने पर "सभी फ़ाइल" चुनें और एसडी कार्ड से "लकड़हारा" फ़ाइल चुनें। यह एक पाठ आयात विज़ार्ड खोलेगा।
2. "अगला" पर क्लिक करें और अल्पविराम के रूप में अल्पविराम का चयन करें। फिर से "अगला" पर क्लिक करें। फिर समाप्त करें।
3.अब आपके मान एक्सेल फ़ाइल में खोले जाएंगे जैसा कि नीचे दिखाया गया है
मैंने हर 5 सेकंड के लिए मानों को लॉग किया है; आप कार्यक्रम में देरी फ़ंक्शन को बदलकर उन्हें किसी भी वांछित समय के लिए लॉग इन कर सकते हैं। काम की विस्तृत समझ के लिए कृपया नीचे दिया गया वीडियो देखें।
आशा है कि आपको यह परियोजना पसंद आई होगी, यदि आपको कोई संदेह है तो उन्हें नीचे टिप्पणी अनुभाग में लिखें और मैं आपकी सहायता करूंगा।
बोनस में सुधार- Arduino का उपयोग कर वायरलेस डेटा लॉगिंग:
एक बार जब आप इस बिंदु तक सफल हो जाते हैं, तो कुछ प्रगति के साथ और कोड की कुछ पंक्तियों को जोड़कर आप डेटा को वायरलेस तरीके से लॉग इन कर सकते हैं।
बस HC-05 जैसे ब्लूटूथ डिवाइस को कनेक्ट करें और सीरियल के बजाय ब्लूटूथ के माध्यम से PLX-DAQ को डेटा लिखें। यह Serial.print (पैरामीटर) की जगह है ; साथ BluetoothName.print (पैरामीटर); और अपने लैपटॉप को अपने ब्लूटूथ से कनेक्ट करें मॉड्यूल का चयन करें COM पोर्ट जिसके लिए आपका लैपटॉप ब्लूटूथ जुड़ा हुआ है और ताड़ासा…… आपके पास कुछ समय में एक वायरलेस डेटा लॉगिंग सिस्टम काम कर रहा है।