विषयसूची:
- चरण 1: Arduino मिलीसेकंड टाइमस्टैम्प का उपयोग करना, मिलिस ()
- चरण 2: मेनू में चार्ट जोड़ना
- चरण 3: प्लॉट स्रोत और लेबल का संपादन
- चरण 4: दिनांक/समय प्रारूप चुनना
- चरण 5: Arduino स्केच उत्पन्न करें और उसका परीक्षण करें
- चरण 6: PfodApp प्लॉट दिनांक/समय Millis से () कैसे करता है?
- चरण 7: अपने कंप्यूटर पर दिनांक/समय भूखंडों को पुन: प्रस्तुत करना
- चरण 8: 49.7 दिन की मिलिस () सीमा से कैसे बचें और आपको क्यों नहीं करना चाहिए
- चरण 9: RTC (रियल टाइम क्लॉक) का उपयोग करना
- चरण 10: GPS मॉड्यूल का उपयोग करना
- चरण 11: निष्कर्ष
वीडियो: Arduino दिनांक/समय प्लॉटिंग/मिलिस () और PfodApp का उपयोग करके लॉगिंग: 11 चरण
2024 लेखक: John Day | [email protected]. अंतिम बार संशोधित: 2024-01-30 09:21
कोई Arduino या Android प्रोग्रामिंग की आवश्यकता नहीं है। RTC और GPS मॉड्यूल भी समर्थित हैं। टाइमज़ोन के लिए स्वचालित सुधार, RTC बहाव और GPS लापता लीप सेकंड
परिचय
यह ट्यूटोरियल आपको दिखाता है कि pfodApp का उपयोग करके अपने Android मोबाइल पर दिनांक और समय के विरुद्ध डेटा प्लॉट करने के लिए अपने Arduino मिलिस () टाइमस्टैम्प का उपयोग कैसे करें।
कोई Arduino या Android प्रोग्रामिंग की आवश्यकता नहीं है। pfodApp पर्याप्त डेटा भी लॉग करता है ताकि आप बाद में स्प्रेडशीट में दिनांक/समय प्लॉट को पुन: पेश कर सकें।
कोई RTC या GPS मॉड्यूल की आवश्यकता नहीं है, हालाँकि यदि आपके Arduino प्रोजेक्ट में RTC (रियल टाइम क्लॉक) या GPS मॉड्यूल है, तो उनका उपयोग भी किया जा सकता है। उन मामलों में pfodApp प्लॉट टाइमज़ोन, आरटीसी ड्रिफ्ट और जीपीएस लापता लीप सेकंड के लिए स्वचालित रूप से सही होंगे। इन सुधारों के लिए किसी विशेष Arduino कोड की आवश्यकता नहीं है। हमेशा की तरह pfodApp के साथ, प्राप्त डेटा को ठीक वैसे ही लॉग किया जाता है, जिसे ठीक नहीं किया जाता है, हालाँकि लॉग फ़ाइल में पर्याप्त जानकारी भी होती है जिससे आप अपने कंप्यूटर पर लॉग डाउनलोड करते समय इन सुधारों को स्वयं लागू कर सकते हैं। इस पोस्ट-प्रोसेसिंग के उदाहरणों के लिए नीचे देखें।
एक्स-अक्ष स्वरूपण की एक विस्तृत विविधता समर्थित है, जो सभी आपके Arduino स्केच में छोटे टेक्स्ट स्ट्रिंग्स द्वारा पूरी तरह से नियंत्रित हैं। कोई Android प्रोग्रामिंग की आवश्यकता नहीं है।
pfodApp वाईफाई, ब्लूटूथ क्लासिक, बीएलई और एसएमएस के जरिए कनेक्ट होगा। मुफ्त pfodDesigner विभिन्न प्रकार के बोर्डों से जुड़ने के लिए दिनांक/समय प्लॉटिंग/लॉगिंग के लिए पूर्ण Arduino स्केच उत्पन्न करता है। कोई Arduino प्रोग्रामिंग की आवश्यकता नहीं है।
यह निर्देशयोग्य एक Adafruit Feather52 का उपयोग उदाहरण Arduino बोर्ड के रूप में करेगा, जो BLE के माध्यम से जुड़ता है।
यह निर्देश योग्य तीन मामलों को कवर करता है: - 1) आपके माइक्रोप्रोसेसर प्रोजेक्ट में केवल मिलीसेकंड टाइमस्टैम्प है - मिलिस () 2) आपके माइक्रोप्रोसेसर प्रोजेक्ट में एक रियल टाइम क्लॉक (RTC) है - pfodApp स्वचालित रूप से बहाव के लिए सही करता है। 3) आपके माइक्रोप्रोसेसर प्रोजेक्ट में एक जीपीएस मॉड्यूल है - pfodApp स्वचालित रूप से लीप सेकंड के लिए ठीक हो जाता है (वर्तमान में 2018 के अनुसार 18 सेकंड)।
चरण 1: Arduino मिलीसेकंड टाइमस्टैम्प का उपयोग करना, मिलिस ()
दिनांक और समय के लिए मिलीसेकंड का उपयोग करने के दो भाग हैं। एक डेटा को बीता हुआ समय या दिनांक/समय के विरुद्ध प्लॉट करने के लिए है और दूसरा भाग लॉग किए गए रॉडेटा मिलीसेकंड टाइमस्टैम्प से दिनांक और समय को फिर से बना रहा है। pfodApp pfodDevice (Arduino micro) से प्राप्त कच्चे डेटा को संशोधित नहीं करता है। यह सिर्फ प्राप्त बाइट्स को लॉग करता है।
पहले अपने माइक्रो के लिए एक Arduino स्केच बनाने के लिए मुफ्त pfodDesigner का उपयोग करें जो प्लॉटिंग/लॉगिंग के लिए pfodApp को मिलीसेकंड और डेटा माप भेजेगा। यह उदाहरण एडफ्रूट फेदर 52 बीएलई बोर्ड के लिए एक मेनू बनाता है जो ए0 पढ़ता है। Adafruit Feather nRF52 LE - pfodApp के साथ कस्टम नियंत्रण पर ट्यूटोरियल, फेदर nRF52 के लिए एक मेनू बनाने के लिए pfodDesigner चरणों के माध्यम से जाता है जिसमें एक चार्ट बटन शामिल है, इसलिए अधिक विवरण के लिए इसे देखें। इस ट्यूटोरियल में हम केवल एक चार्ट बटन जोड़ेंगे और बीता हुआ समय और दिनांक/समय के विरुद्ध A0 रीडिंग को प्लॉट करने के लिए नए X-अक्ष प्रारूप विकल्पों का उपयोग करेंगे।
इस ट्यूटोरियल का पहला भाग आपके Android मोबाइल पर एक नमूना दिनांक/समय चार्ट बनाने के लिए निःशुल्क pfodDesigner का उपयोग करेगा। जब आप डिस्प्ले से संतुष्ट हो जाते हैं तो आप Arduino स्केच उत्पन्न कर सकते हैं जो कि जब आप pfodApp से जुड़ते हैं तो इसे पुन: पेश करेंगे। किसी एंड्रॉइड प्रोग्रामिंग की आवश्यकता नहीं है और चूंकि pfodDesigner विभिन्न प्रकार के Arduino बोर्डों के लिए पूर्ण Arduino स्केच तैयार करता है, इसलिए किसी Arduino प्रोग्रामिंग की भी आवश्यकता नहीं होती है।
चरण 2: मेनू में चार्ट जोड़ना
Google Play से pfodDesigner ऐप डाउनलोड करें, इसे खोलें और "नया मेनू प्रारंभ करें" पर क्लिक करें।
कुछ 11 बीएलई बोर्डों की सूची प्रदर्शित करने के लिए "टारगेट सीरियल" और फिर "ब्लूटूथ लो एनर्जी" बटन पर क्लिक करें (अन्य विकल्पों को देखने के लिए नीचे स्क्रॉल करें)। एडफ्रूट ब्लूफ्रूट फेदर52 पर चयन करें।
संपादन मेनू पर वापस जाएं और "संकेत संपादित करें" पर क्लिक करें और इस मेनू के लिए उपयुक्त संकेत सेट करें, उदा। "पंख 52" और टेक्स्ट बोल्ड और आकार +7। पृष्ठभूमि का रंग 'डिफ़ॉल्ट' सफेद के रूप में छोड़ दिया गया था
वापस जाएं और "मेनू आइटम जोड़ें" पर क्लिक करें, नीचे स्क्रॉल करें और "चार्ट बटन" चुनें जो चार्ट बटन संपादित स्क्रीन खोलता है। आप यहां बटन के स्वरूप में कोई भी परिवर्तन कर सकते हैं। इस मामले में बटन का टेक्स्ट "A0 का दिनांक/समय प्लॉट" में बदल दिया गया था और अन्य डिफ़ॉल्ट को वैसे ही छोड़ दिया गया था।
यह आपको मेनू पर एक बटन देता है जो चार्ट स्क्रीन को खोलेगा।
चरण 3: प्लॉट स्रोत और लेबल का संपादन
एडिटिंग प्लॉट्स स्क्रीन खोलने के लिए "ए0 का दिनांक/समय प्लॉट" बटन पर क्लिक करें, जहां आप चार्ट लेबल, एक्स-एक्सिस फॉर्मेट, प्लॉट डेटा अंतराल और (नीचे स्क्रॉल करके) प्लॉट सेटिंग्स को स्वयं एक्सेस कर सकते हैं। चार्ट लेबल को कुछ उपयुक्त करने के लिए संपादित करें, उदा। "ए0 वोल्ट"।
नीचे स्क्रॉल करें और प्लॉट 2 और 3 के लिए प्लॉट संपादित करें खोलें और चार्ट डिस्प्ले से उन्हें हटाने के लिए प्लॉट छुपाएं पर क्लिक करें।
फिर "प्लॉट 1 संपादित करें" पर क्लिक करें और एक प्लॉट लेबल (जैसे A0) सेट करें, yAxis इकाइयाँ (जैसे वोल्ट), अधिकतम 3.6V प्रदर्शित करें और I/O पिन A0 से कनेक्ट करें।
बैक अप स्क्रॉल करें और "चार्ट पूर्वावलोकन" पर क्लिक करके सबसे हाल के 0 नमूना डेटा बिंदुओं पर, 1 सेकंड के अंतराल पर, मिनट: सेकंड में बीता हुआ समय के विरुद्ध प्लॉट किया गया।
सभी बीता हुआ समय के लिए शून्य इकाइयों वाले भूखंडों को प्रदर्शित नहीं किया जाता है, इसलिए इस भूखंड में केवल उन समय> 1 मिनट में अग्रणी मिनट दिखाए गए हैं।
चरण 4: दिनांक/समय प्रारूप चुनना
बीता हुआ समय भूखंडों के लिए अग्रणी इकाई समय के साथ बढ़ती रहती है। इसका एक उदाहरण देखने के लिए "एडिटिंग प्लॉट्स" स्क्रीन पर वापस जाएं और प्लॉट डेटा अंतराल को 15 मिनट तक बढ़ाएं (इस स्क्रीन के नीचे)
फिर समान नमूना डेटा दिखाने के लिए चार्ट पूर्वावलोकन पर क्लिक करें लेकिन अब नमूनों के बीच 15 मिनट के अंतराल के साथ। जैसा कि आप देख सकते हैं कि मिनट का हिस्सा मिमी: ss बस बढ़ता रहता है।
अब वापस जाएं और सभी संभावित एक्स-अक्ष डेटा/समय प्रारूपों का एक छोटा चयन दिखाने के लिए एक्स-अक्ष बटन पर क्लिक करें (अधिक के लिए नीचे स्क्रॉल करें)
ऊपर विभिन्न एक्स-अक्ष प्रारूपों का उपयोग करके चार्ट पूर्वावलोकन का चयन है।
यहां दिखाए गए दिनांक/समय प्लॉट 'स्थानीय' समय क्षेत्र में हैं। UTC में दिनांक/समय प्लॉट करने के लिए प्रारूप विकल्प भी हैं। संभावित दिनांक/समय प्रारूप विकल्पों के पूरे सेट के लिए pfodSpecification.pfd देखें।
चरण 5: Arduino स्केच उत्पन्न करें और उसका परीक्षण करें
एक बार जब आप अपने चार्ट के प्रारूप और डेटा अंतराल से खुश हो जाते हैं, तो आप "मेनू_1 संपादन" स्क्रीन पर जा सकते हैं और नीचे स्क्रॉल कर सकते हैं और अपने चुने हुए लक्ष्य बोर्ड के लिए "कोड जनरेट" कर सकते हैं। यहाँ 1sec डेटा अंतराल और एक mm:ss बीता हुआ समय प्रारूप, pfodFeather52_timeplot.ino का उपयोग करके Adafruit Feather52 के लिए एक नमूना स्केच दिया गया है।
ऊपर पंख52. से A0 का एक प्लॉट है
प्रारूप को कार्यदिवस hr:mins:sec (~E HH:mm:ss) में बदलना और कोड को फिर से जनरेट करना (pfodFeather52_dateplot.ino) ऊपर के दूसरे जैसा प्लॉट देता है।
जैसा कि आगे बताया गया है, आप सीधे अपने Arduino स्केच में X-अक्ष प्रारूप को संपादित कर सकते हैं।
चरण 6: PfodApp प्लॉट दिनांक/समय Millis से () कैसे करता है?
जब pfodApp कनेक्ट होता है, तो यह अपने 'स्थानीय' और UTC समय को याद रखता है और pfodDevice's (Arduino बोर्ड के) वर्तमान प्लॉट डेटा टाइमस्टैम्प का अनुरोध करता है। इस जानकारी का उपयोग करते हुए pfodApp फिर मिलीसेकंड टाइमस्टैम्प को या तो बीता हुआ समय के रूप में प्लॉट कर सकता है यानी मिलीसेकंड को घंटे मिनट सेकंड आदि में परिवर्तित कर सकता है, या उस तारीख और समय को प्लॉट कर सकता है जब मिलीसेकंड टाइमस्टैम्प कनेक्शन के समय के सापेक्ष प्रतिनिधित्व करते हैं और pfodDevice के वर्तमान समय का अनुरोध किया गया था।
Arduino उत्पन्न स्केच (जैसे pfodFeather52_dateplot.ino) को देखते हुए, कोड के तीन छोटे बिट हैं जो भूखंडों के Arduino पक्ष को संभालते हैं।
लूप () कोड अनुभाग जो pfodApp के {@} वर्तमान समय के अनुरोध को संभालता है
// हैंडल {@} रिक्वेस्ट} और अगर ('@' == cmd) {// pfodApp ने 'करंट' टाइम प्लॉट_mSOffset = मिलिस (); // वर्तमान मिली को ऑफ़सेट रॉडेटा टाइमस्टैम्प पार्सर.प्रिंट (F("{@`0}")) के रूप में कैप्चर करें; // `0 को 'वर्तमान' कच्चे डेटा मिलीसेकंड के रूप में लौटाएं
आप केवल मिलिस () का वर्तमान मान वापस कर सकते हैं, लेकिन मिलिस () हर 49.7 दिनों में लगभग 0 पर वापस आ जाता है, जिससे प्लॉट पीछे की ओर कूद जाएगा। इसलिए इसके बजाय कोड वर्तमान मिलिस () मान को याद रखता है जब {@} अनुरोध किया गया था, और {@`0} यानी शून्य का वर्तमान मिलीसेकंड टाइमस्टैम्प लौटाता है। फिर कच्चे डेटा को भेजते समय स्केच का उपयोग करता है
प्लॉट_1_var = एनालॉगरेड (A0); // प्लॉट के लिए इनपुट पढ़ें // प्लॉट_2_वार प्लॉट हिडन इसलिए यहां कोई डेटा असाइन नहीं किया गया है ….
ताकि डेटा के साथ भेजा गया मिलीसेकंड टाइमस्टैम्प 0 से शुरू हो और 49.7 दिनों तक बढ़े। यदि आप लगातार 49.7 दिनों तक जुड़े रहते हैं तो आप देखेंगे कि प्लॉट ~ 50 दिनों तक पीछे की ओर उछलता है। प्रत्येक 49.7 दिनों में एक बार डिस्कनेक्ट करने और पुनः कनेक्ट करने से इससे बचा जाता है।
दिनांक/समय प्लॉट का तीसरा भाग प्लॉट संदेश है।
} और अगर ('ए' == cmd) {// उपयोगकर्ता दबाया गया - 'ए0 का दिनांक/समय प्लॉट' // मेनू के मुख्य मेनू में // रिटर्न प्लॉटिंग संदेश। parser.print(F("{=A0 Volts~E HH:mm:ss|date|A0~~~Volts||}"));
जब उपयोगकर्ता “A0 का दिनांक/समय प्लॉट” बटन दबाता है, pfodApp pfodDevice को {A} cmd भेजता है और pfodDevice प्लॉट संदेश के साथ प्रतिक्रिया करता है, {=…{=A0 वोल्ट ~ E HH:mm:ss|date |A0~~~Volts||}जिसमें X-अक्ष प्रारूप E HH:mm:ss. है
Java SimpleDateFormat प्रारूप यहां स्वीकार्य हैं। pfodApp डेटा लॉगिंग और प्लॉटिंग और pfodSpecification.pdf में प्लॉट संदेश पर अधिक विवरण हैं।
चरण 7: अपने कंप्यूटर पर दिनांक/समय भूखंडों को पुन: प्रस्तुत करना
डिफ़ॉल्ट रूप से, pfodApp आपके मोबाइल पर एक लॉग फ़ाइल में आने वाले सभी कच्चे डेटा को लॉग करता है, जब तक कि आपने कनेक्शन संपादन स्क्रीन में इस लॉगिंग को अक्षम नहीं किया है, pfodAppForAndroidGettingStarted.pdf देखें।
जब आप pfodApp संपादित करते हैं, तो लॉग फ़ाइल के स्थान और नाम के साथ एक संक्षिप्त संदेश प्रदर्शित होता है, उदा। /pfodAppRawData/pfod_bluefruit52.txt वह फ़ाइल CSV प्रारूप में है, अल्पविराम से सीमांकित है, और इसे आपके कंप्यूटर पर स्थानांतरित करने के बाद (स्थानांतरण विकल्पों के लिए pfodAppForAndroidGettingStarted.pdf देखें), आप डेटा को प्लॉट करने के लिए इसे स्प्रेडशीट में खोल सकते हैं।
यहाँ एक लॉग फ़ाइल की पहली कुछ पंक्तियाँ हैं।
// pfodApp V3.0.360, स्थानीय समय, UTC, mS प्रति दिन, pfod bluefruit52 वर्तमान समय (mS), pfod bluefruit52 वर्तमान समय, // 2019/04/20 11:32:50.238, 2019/04/20 पर जुड़ा 01:32:50.238, 86400000, 0, 366, 0.25,, 1366, 0.29,, 2366, 0.31,, 3366, 0.33,, 4366, 0.33,, ऊपर आप 'स्थानीय' और यूटीसी समय देख सकते हैं जो pfodApp Feather52 से जुड़ा है और वर्तमान समय mS में है जिसे Feather52 ने {@..} प्रतिक्रिया के माध्यम से रिपोर्ट किया है। अंतिम कॉलम खाली है, क्योंकि कोई RTC या GPS नहीं है और इसलिए yyyy/MM/dd समय में कोई वर्तमान समय Feather52 द्वारा रिपोर्ट नहीं किया गया था।
बीता हुआ समय के विरुद्ध डेटा प्लॉट करने के लिए, मिलीसेकंड टाइम स्टैम्प से वर्तमान समय (mS) घटाएं और फिर mS प्रति दिन मान से विभाजित करें। यहां जोड़ा गया फॉर्मूला और प्लॉट किए गए परिणाम के साथ स्प्रेडशीट है। स्प्रेडशीट, नीचे, (pfod_bluefruit52.xls) एक्सेल फॉर्मेट में सहेजी गई एक ओपनऑफिस स्प्रेडशीट है।
ओपनऑफिस में, प्लॉट एक स्कैटर प्लॉट है और प्लॉट का एक्स-अक्ष एचएच: एमएम: एसएस में स्वरूपित किया गया था नोट: स्प्रैडशीट दिनांक/समय प्रारूप pfodApp द्वारा उपयोग किए गए प्लॉट प्रारूपों के समान नहीं हैं। उदाहरण के लिए pfodApp में, MM महीने है और mm मिनट है।
दिनांक और समय के विरुद्ध प्लॉट करने के लिए, आपको केवल स्प्रैडशीट समय में कनेक्शन समय जोड़ना होगा और फिर से प्लॉट करना होगा। (pfod_bluefruit52_date.xls)
नोट: स्थानीय समय और यूटीसी को मेरी स्प्रैडशीट में टेक्स्ट के रूप में आयात किया गया था इसलिए मुझे सूत्र में उनका उपयोग करने से पहले 'अग्रणी' को हटाना पड़ा।
चरण 8: 49.7 दिन की मिलिस () सीमा से कैसे बचें और आपको क्यों नहीं करना चाहिए
जैसा कि ऊपर बताया गया है कि pfodApp कैसे मिलिस () से दिनांक/समय प्लॉट करता है?, यदि आप लगातार 49.7 दिनों तक जुड़े रहते हैं तो मिलीसेकंड टाइमस्टैम्प लगभग शून्य पर लपेट जाएगा। कोड की कुछ पंक्तियाँ इससे बच सकती हैं लेकिन इसकी अनुशंसा नहीं की जाती है।
सबसे पहले चारों ओर लपेटने से कैसे बचें। टाइमस्टैम्प के चारों ओर लपेटने की संख्या का ट्रैक रखने के लिए एक और अहस्ताक्षरित int चर जोड़ें और संयुक्त परिणाम को HEX में प्रिंट करें।
uint_t mSwrapCount = 0;uint32_t lastTimeStamp = 0;
… प्लॉट_1_var = एनालॉग रीड (A0); // प्लॉट के लिए इनपुट पढ़ें // प्लॉट_2_वर प्लॉट हिडन इसलिए यहां कोई डेटा असाइन नहीं किया गया है अगर (टाइमस्टैम्प <lastTimeStamp) {// टाइमस्टैम्प वापस 0 mSwrapCount++ पर लपेटा गया; // गिनने के लिए एक जोड़ें} lastTimeStamp = टाइमस्टैम्प; पार्सर.प्रिंट ("0x"); parser.print (msWrapCount, HEX); parser.print(timeStamp, HEX);// समय हेक्स में मिलीसेकंड में…।
{@.. प्रतिक्रिया लौटाते समय mSwrapCount को भी साफ़ करें।
// हैंडल {@} रिक्वेस्ट} और अगर ('@' == cmd) {// pfodApp ने 'करंट' टाइम प्लॉट_mSOffset = मिलिस (); // वर्तमान मिली को ऑफसेट रॉडेटा टाइमस्टैम्प के रूप में कैप्चर करें mSwrapCount = 0; // क्लियर रैप काउंट। parser.print(F("{@`0}")); // `0 को 'वर्तमान' कच्चे डेटा मिलीसेकंड के रूप में लौटाएं
टाइमस्टैम्प अब अगले 40.7 दिनों * 65536 ~ = 7308 वर्षों के लिए 'सही' मान देगा।
pfodApp प्लॉटिंग के लिए हेक्स टाइमस्टैम्प को स्वचालित रूप से परिवर्तित कर देगा और उन्हें ठीक वैसे ही लॉग इन करेगा, जैसे हेक्स में। (ओपनऑफिस) स्प्रैडशीट में आप इस सूत्र का उपयोग हेक्स स्ट्रिंग को A2 में, mS (जहाँ A1 कोई खाली सेल है) में बदलने के लिए करते हैं =HEX2DEC(REPLACE(A2;1;2;A1))
आप ऐसा क्यों नहीं करना चाहते
जैसा कि ऊपर दिखाया गया है, एमएस टाइमस्टैम्प को 50 दिनों से अधिक समय तक विस्तारित करना आसान है। हालाँकि आप शायद ऐसा नहीं करना चाहते क्योंकि वे तेजी से सटीक होते जा रहे हैं। माइक्रो में मिलिस () परिणाम बनाने के लिए उपयोग किए जाने वाले एक विशिष्ट 16 मेगाहर्ट्ज क्रिस्टल की सटीकता ~ 50ppm (प्रति मिलियन भाग) होती है। इसका मतलब है कि ४९.७ दिनों के बाद मिलीसेकंड टाइमस्टैम्प ३ १/२ मिनट से बाहर हो सकता है और यह क्रिस्टल सटीकता पर तापमान के प्रभाव की उपेक्षा करता है।
छोटी कनेक्शन अवधि में, यह अशुद्धि कोई समस्या नहीं है क्योंकि {@.. प्रतिक्रिया मिलीसेकंड टाइमस्टैम्प को प्रत्येक पुन: कनेक्शन पर मोबाइल के दिनांक/समय के साथ पुन: सिंक्रनाइज़ करती है। हालाँकि यदि आप लंबे समय (दिनों) तक जुड़े रहना चाहते हैं और लगातार डेटा लॉग करना चाहते हैं, तो आपको बिल्ट-इन मिलिस (), जैसे कि आरटीसी या जीपीएस मॉड्यूल की तुलना में कुछ अधिक सटीक उपयोग करना चाहिए।
चरण 9: RTC (रियल टाइम क्लॉक) का उपयोग करना
कई आरटीसी मॉड्यूल उपलब्ध हैं, जिनमें से एक अधिक सटीक है DS3231 उदा। Adafruit का DS3231 मॉड्यूल। बताई गई सटीकता 0 से 40C से अधिक +/- 2ppm है। यानी ~+/-5 सेकंड/माह।
यदि आप डेटा प्लॉट करना चाहते हैं जिसमें दिनांक/समय टाइमस्टैम्प है, उदा। 2019/04/19 20:4:34, फिर आपको {@ वर्तमान दिनांक/समय को वापस करने के लिए प्रतिक्रिया, उदा। {@`0~2019/4/19 3:33:5}। RTC मॉड्यूल का उपयोग करने के लिए pfodDesigner द्वारा उत्पन्न स्केच पर लागू करने के लिए यहां कुछ नमूना कोड परिवर्तन दिए गए हैं, यह मानते हुए कि आप RTClib लाइब्रेरी का उपयोग कर रहे हैं और कोड को RTC मॉड्यूल को इनिशियलाइज़ कर दिया है।
// हैंडल {@} रिक्वेस्ट} और अगर ('@' == cmd) {// pfodApp ने 'करंट' टाइम प्लॉट_mSOffset = मिलिस (); // वर्तमान मिलिस को ऑफ़सेट रॉडेटा टाइमस्टैम्प पार्सर.प्रिंट के रूप में कैप्चर करें। दिनांक/समय दिनांक समय अब = rtc.now() sendDateTime(&now); // yyyy/M/d/H:m:s को parser.print, पास पते और arg के रूप में भेजें। parser.print('}'); // {@ प्रतिक्रिया का अंत जैसे {@`0~2019/4/19 3:33:5}….
// पार्सर को दिनांक समय भेजें प्रिंटवॉइड भेजेंडेटटाइम (डेटटाइम * डीटी) {parser.print (डीटी-> वर्ष (), डीईसी); पार्सर.प्रिंट ('/'); पार्सर.प्रिंट (डीटी-> माह (), डीईसी); पार्सर.प्रिंट ('/'); parser.print(dt->day(), DEC); पार्सर.प्रिंट (''); parser.print(dt->hour(), DEC); पार्सर.प्रिंट (':'); पार्सर.प्रिंट (डीटी-> मिनट (), डीईसी); पार्सर.प्रिंट (':'); parser.print(dt->second(), DEC); }
शून्य सेंडडाटा () { अगर (प्लॉटडेटा टाइमर। समाप्त ()) {प्लॉटडेटा टाइमर। // प्लॉट डेटा टाइमर को फिर से शुरू करें, बिना बहाव के // अपने लूप वेरिएबल्स से वेरिएबल्स को प्लॉट करने के लिए मान असाइन करें या एडीसी इनपुट पढ़ें प्लॉट_1_var = एनालॉगरेड (ए0); // प्लॉट के लिए इनपुट पढ़ें // प्लॉट_2_वार प्लॉट हिडन इसलिए यहां कोई डेटा असाइन नहीं किया गया है SendDateTime (और अब); // yyyy/M/d/ H:m:s को parser.print पर भेजें, पता पास करें और arg के रूप में। पार्सर.प्रिंट (','); parser.print (((फ्लोट) (प्लॉट_1_var - प्लॉट_1_varMin)) * प्लॉट_1_स्केलिंग + प्लॉट_1_varDisplayMin); पार्सर.प्रिंट (','); // प्लॉट 2 छिपा हुआ है। कोई डेटा नहीं भेजा गया। पार्सर.प्रिंट (','); // प्लॉट 3 छिपा हुआ है। कोई डेटा नहीं भेजा गया। parser.println (); // सीएसवी डेटा रिकॉर्ड का अंत}}
{@ प्रतिक्रिया का ~2019/4/19 3:33:5 भाग pfodApp को यह जानने देता है कि pfodDevice वर्तमान दिनांक और समय क्या सोचता है। आपका स्केच तब yMd Hms टाइमस्टैम्प के साथ डेटा भेज सकता है और pfodApp उन्हें आपके द्वारा निर्दिष्ट एक्स-अक्ष प्रारूप के आधार पर या तो कनेक्शन समय से बीता हुआ समय या दिनांक और समय के रूप में प्लॉट करेगा।
दिनांक और समय के विरुद्ध प्लॉटिंग करते समय, pfodApp प्लॉट रूटीन मोबाइल के वर्तमान समय के साथ pfodDevice के रिपोर्ट किए गए वर्तमान समय की तुलना करके RTC में किसी भी 'बहाव' के लिए सुधार करता है। यह सुधार आपके मोबाइल के स्थानीय समय क्षेत्र से भिन्न समय क्षेत्र पर सेट होने वाले RTC को भी संभालता है। मिलिस () टाइमस्टैम्प ऊपर के चरण 5 में Arduino मिलीसेकंड टाइमस्टैम्प का उपयोग करने के रूप में काम करना जारी रखता है।
यहां 8 दिनों की अवधि में कमरे के तापमान का एक उदाहरण स्प्रेडशीट है, Office_Temp.xls जब लॉग फ़ाइल आयात की गई थी तो टेक्स्ट को दिनांक/समय में बदलने के लिए पहले कॉलम को YMD के रूप में चिह्नित किया गया था। स्प्रैडशीट को दिनांक और समय के रूप में व्याख्या करने के लिए आपको अभी भी स्थानीय समय, UTC और Office Temp वर्तमान समय प्रविष्टियों को हटाने की आवश्यकता है।
वही प्लॉट प्राप्त करने के लिए जो pfodApp दिखाता है, आपको "सही तिथि / समय" की गणना करने की आवश्यकता है। इस मामले में आरटीसी समय मोबाइल के स्थानीय समय से 2 सेकंड पीछे है, इसलिए वास्तविक स्थानीय समय प्राप्त करने के लिए प्रत्येक आरटीसी टाइमस्टैम्प (स्थानीय समय - कार्यालय अस्थायी वर्तमान समय) जोड़ा जाता है।
बीता हुआ समय प्लॉट के लिए, (दिनांक/समय टाइमस्टैम्प - कार्यालय समय वर्तमान समय) युक्त एक नया कॉलम बनाएं और चार्ट में एक्स-अक्ष के रूप में उपयोग करें (Office_TempElapsed.xls) वास्तव में इस मामले में, pfodApp अच्छे बीता हुआ समय चार्ट तैयार करता है दिनों में घंटा:मिनट:सेकंड।
चरण 10: GPS मॉड्यूल का उपयोग करना
GPS मॉड्यूल का उपयोग करना RTC मॉड्यूल का उपयोग करने के समान है, सिवाय इसके कि GPS मॉड्यूल में मिलीसेकंड उपलब्ध है, वर्ष 2000 से शुरू होते हैं और समय में UTC लीप सेकंड नहीं होते हैं (देखें https://tycho.usno.navy.mil/leapsec.html) जनवरी 2018 की स्थिति के अनुसार, GPS दिनांक और समय वर्तमान में UTC से 18 सेकंड आगे है।
Adafruit Ultimate GPS के लिए Adafruit GPS लाइब्रेरी, RTClib के विपरीत, GPS वर्षों में 2000 वर्ष ऑफ़सेट नहीं जोड़ती है, इसलिए जब आप दिनांक और समय टाइमस्टैम्प भेजते हैं, तो इसे जोड़ने की आवश्यकता होती है। इसके अलावा, हालांकि जीपीएस पुस्तकालय मिलीसेकंड की आपूर्ति करता है जिसमें बहुत अच्छी दीर्घकालिक सटीकता होती है, वे बहुत सटीक नहीं होते हैं। GPS टाइम अपडेट प्रत्येक 100mS में केवल एक बार होता है और फिर धीमी 9600 बॉड पर सीरियल डेटा प्राप्त करने में अतिरिक्त देरी होती है और इसे पार्स करने में एक और देरी होती है। डेटा रीडिंग टाइमस्टैम्पिंग करते समय ये सभी मिलीसेकंड में सटीक रूप से जोड़ते हैं।
GPS मॉड्यूल का उपयोग करने के लिए pfodDesigner द्वारा बनाए गए स्केच पर लागू करने के लिए यहां कुछ नमूना कोड परिवर्तन दिए गए हैं, यह मानते हुए कि आप Adafruit की GPS लाइब्रेरी का उपयोग कर रहे हैं और आपने GPS ऑब्जेक्ट में संदेशों को प्राप्त करने और पार्स करने के लिए कोड जोड़ा है।
// हैंडल {@} रिक्वेस्ट} और अगर ('@' == cmd) {// pfodApp ने 'करंट' टाइम प्लॉट_mSOffset = मिलिस (); // वर्तमान मिलिस को ऑफ़सेट रॉडेटा टाइमस्टैम्प पार्सर के रूप में कैप्चर करें। दिनांक/समय sendDateTime(&GPS);//yyyy/M/d/H:m:s को parser.print पर भेजें, पता पास करें और arg के रूप में। parser.print('}'); // {@ प्रतिक्रिया का अंत उदा। {@`0~2019/4/19 3:33:5}….
// पार्सर प्रिंटवॉइड को दिनांक समय भेजें भेजेंडेटटाइम (एडफ्रूट_जीपीएस * जीपीएस) {parser.print (एफ ("20"); // 20.. वर्ष पार्सर। प्रिंट (जीपीएस-> वर्ष, डीईसी); parser.print ('/ '); parser.print(gps->month, DEC); parser.print('/'); parser.print(gps->day, DEC); parser.print(''); parser.print(gps- > घंटा, डीईसी); पार्सर.प्रिंट (':'); पार्सर.प्रिंट (जीपीएस-> मिनट, डीईसी); पार्सर.प्रिंट (':'); पार्सर.प्रिंट (जीपीएस-> सेकेंड, डीईसी); // parser.print('.'); अगर मिलीसेकंड भेज रहे हैं // यदि आप एमएस भेजना चाहते हैं तो आपको जीपीएस-> मिलीसेकंड मान को अग्रणी शून्य के साथ पैड करने की आवश्यकता है // यानी 3 को 003 पर पैड करने की आवश्यकता है}
शून्य सेंडडाटा () { अगर (प्लॉटडेटा टाइमर। समाप्त ()) {प्लॉटडेटा टाइमर। // प्लॉट डेटा टाइमर को फिर से शुरू करें, बिना बहाव के // अपने लूप वेरिएबल्स से वेरिएबल्स को प्लॉट करने के लिए मान असाइन करें या एडीसी इनपुट पढ़ें प्लॉट_1_var = एनालॉगरेड (ए0); // प्लॉट के लिए इनपुट पढ़ें // प्लॉट_2_वार प्लॉट हिडन इसलिए यहां कोई डेटा असाइन नहीं किया गया है // yyyy/M/d/ H:m:s को parser.print पर भेजें, पता पास करें और arg के रूप में। पार्सर.प्रिंट (','); parser.print (((फ्लोट) (प्लॉट_1_var - प्लॉट_1_varMin)) * प्लॉट_1_स्केलिंग + प्लॉट_1_varDisplayMin); पार्सर.प्रिंट (','); // प्लॉट 2 छिपा हुआ है। कोई डेटा नहीं भेजा गया। पार्सर.प्रिंट (','); // प्लॉट 3 छिपा हुआ है। कोई डेटा नहीं भेजा गया। parser.println (); // सीएसवी डेटा रिकॉर्ड का अंत}}
दिनांक और समय के विरुद्ध प्लॉटिंग करते समय, pfodApp स्वचालित रूप से लीप सेकंड के लिए सही हो जाता है। जनवरी 2018 तक, GPS समय UTC से 18 सेकंड आगे है। pfodApp मोबाइल के UTC दिनांक और समय के विरुद्ध {@ प्रतिक्रिया के माध्यम से, कनेक्शन पर GPS द्वारा लौटाए गए दिनांक/समय की तुलना करके इसके लिए सुधार करता है। pfodApp लॉग फ़ाइल से स्प्रैडशीट में प्लॉट बनाना ऊपर दिए गए RTC मॉड्यूल के समान ही है। जीपीएस टाइमस्टैम्प में (स्थानीय समय - कार्यालय अस्थायी वर्तमान समय) जोड़ने से लीप सेकंड के लिए सुधार होता है।
मिलिस () टाइमस्टैम्प ऊपर के चरण 5 में Arduino मिलीसेकंड टाइमस्टैम्प का उपयोग करने के रूप में काम करना जारी रखता है।
चरण 11: निष्कर्ष
अपने Android मोबाइल पर pfodApp का उपयोग करने से आप केवल Arduino के मिलिस () फ़ंक्शन का उपयोग करके दिनांक और समय या बीता हुआ समय के विरुद्ध डेटा प्लॉट कर सकते हैं। pfodApp लॉग फ़ाइल का उपयोग करके आप एक स्प्रेडशीट में इन दिनांक/समय प्लॉटों को फिर से तैयार कर सकते हैं। यदि आपके Arduino प्रोजेक्ट में RTC मॉड्यूल है, तो आप RTC 'बहाव' के लिए स्वचालित रूप से सही करते हुए दिनांक और RTC समय टाइमस्टैम्प को लॉग और प्लॉट कर सकते हैं। यदि आपके Arduino प्रोजेक्ट में GPS मॉड्यूल है तो आप लॉग इन कर सकते हैं और इसके अत्यधिक सटीक टाइमस्टैम्प को प्लॉट कर सकते हैं और pfodApp स्वचालित रूप से GPS के लापता लीप सेकंड को ठीक कर देगा।
सभी मामलों में आपके Arduino प्रोजेक्ट का कच्चा डेटा ठीक उसी तरह लॉग किया जाता है जैसे प्राप्त, बिना सुधारा। हालांकि pfodApp लॉग फ़ाइल में अतिरिक्त डेटा शामिल है जिससे आप डाउनलोड की गई लॉग फ़ाइल से स्प्रेडशीट में इन सुधारों को फिर से तैयार कर सकते हैं।
कोई Android कोडिंग की आवश्यकता नहीं है। प्लॉट प्रारूप सभी आपके Arduino स्केच में छोटे टेक्स्ट स्ट्रिंग्स द्वारा निर्दिष्ट हैं। मुफ़्त pfodDesigner वाईफाई, क्लासिक ब्लूटूथ, बीएलई और एसएमएस के माध्यम से कनेक्ट होने वाले विभिन्न प्रकार के Arduino बोर्डों के लिए पूर्ण Arduino डेटा लॉगिंग और प्लॉटिंग स्केच उत्पन्न करता है
सिफारिश की:
दिनांक और समय लॉगिंग कैसे करें - लियोनो मेकर: 5 कदम
दिनांक और समय लॉगिंग कैसे करें | लियोनो मेकर: परिचय: - इस ट्यूटोरियल में हम सीखेंगे कि Arduino के साथ डेट और टाइम लॉगिंग कैसे करें। इस उद्देश्य के लिए मैं DS3231 & माइक्रो एसडी कार्ड मॉड्यूल। मुख्य मॉड्यूल जो समय और amp के लिए उपयोग किया जाता है; दिनांक लॉगिंग DS3231 है। DS3231 एक RTC (असली ती
इंटरनेट क्लॉक: एनटीपी प्रोटोकॉल के साथ ESP8266 NodeMCU का उपयोग करके OLED के साथ दिनांक और समय प्रदर्शित करें: 6 चरण
इंटरनेट घड़ी: NTP प्रोटोकॉल के साथ ESP8266 NodeMCU का उपयोग करके OLED के साथ प्रदर्शन दिनांक और समय: हाय दोस्तों इस निर्देश में हम एक इंटरनेट घड़ी का निर्माण करेंगे, जिसे इंटरनेट से समय मिलेगा, इसलिए इस परियोजना को चलाने के लिए किसी RTC की आवश्यकता नहीं होगी, इसे केवल एक की आवश्यकता होगी काम कर रहे इंटरनेट कनेक्शन और इस परियोजना के लिए आपको एक esp8266 की आवश्यकता होगी जिसमें एक
Android / Arduino / PfodApp का उपयोग करके सरल रिमोट डेटा प्लॉटिंग: 6 चरण
Android / Arduino / PfodApp का उपयोग करके सरल रिमोट डेटा प्लॉटिंग: केवल Arduino की मिलिस का उपयोग करके दिनांक / समय के विरुद्ध डेटा प्लॉट करने के लिए () इस निर्देश योग्य Arduino दिनांक/समय प्लॉटिंग/मिलिस () और PfodApp का उपयोग करके लॉगिंग देखें। Android मोबाइल और इसे कैप्चर करने के लिए
PfodApp, Android और Arduino का उपयोग करके सरल मोबाइल डेटा लॉगिंग: 5 चरण
PfodApp, Android और Arduino का उपयोग करके सरल मोबाइल डेटा लॉगिंग: Moblie डेटा लॉगिंग को pfodApp, आपके Android मोबाइल और Arduino का उपयोग करके सरल बनाया गया है। कोई Android प्रोग्रामिंग की आवश्यकता नहीं है। अपने Android पर डेटा प्लॉट करने के लिए इसे बाद में देखें Android / Arduino / pfodAppFor Plotting का उपयोग करके अस्थिर सरल रिमोट डेटा प्लॉटिंग
XinaBox का उपयोग करके दिनांक, समय और तापमान प्रदर्शन: 8 कदम
XinaBox का उपयोग करके दिनांक, समय और तापमान प्रदर्शन: ESP8266 पर आधारित Xinabox xChips का उपयोग करके सेल्सियस और फ़ारेनहाइट में दिनांक, समय और तापमान दिखाते हुए कूल OLED डिस्प्ले