परिचय
इस लेख में, हम चर्चा करेंगे कि डेटा लॉगिंग प्रोजेक्ट कैसे बनाया जाए जो VEX रोबोट को VEX ब्रेन के साथ डेटा एकत्र करने और डेटा विश्लेषण के लिए इसे SD कार्ड पर CSV फ़ाइल में सहेजने का निर्देश देता है।
डेटा लॉगिंग एक शक्तिशाली उपकरण है जिसका उपयोग हम वैज्ञानिक अनुसंधान में सहायता करने, अपने स्वयं के प्रयोग करने और विशिष्ट समस्याओं को हल करने के लिए कर सकते हैं। ऐसे कई मजेदार और रोमांचक कार्य हैं जिन्हें हम डेटा लॉगिंग के साथ पूरा करने के लिए VEX रोबोट को चला सकते हैं। निम्नलिखित कुछ उदाहरण हैं:
- रोबोट की गति की गणना करने के लिए दूरी सेंसर के साथ डेटा एकत्र करना
- कक्षा में रोबोट को चलाना तथा विभिन्न स्थानों पर प्रकाश परिवर्तनों का निरीक्षण करने के लिए ऑप्टिकल सेंसर से डेटा एकत्र करना।
- रोबोट को एक साहसिक यात्रा पर ले जाना तथा मानचित्र बनाने के लिए जीपीएस निर्देशांक डेटा रिकॉर्ड करना।
डेटा लॉगिंग प्रोजेक्ट विकसित करने के लिए आवश्यक कोडिंग कौशल
- VEX ब्रेन/सेंसर के साथ डेटा एकत्र करने और उसे डेटा संरचना में जोड़ने के लिए विभिन्न कमांड का उपयोग करें।
- डेटा को SD कार्ड पर कॉमा-सेपरेटेड वैल्यूज़ (CSV) फ़ाइल में लिखें।
डेटा लॉगिंग के लिए आवश्यक हार्डवेयर:
- एक VEX मस्तिष्क (IQ, V5, EXP)
- एक एसडी कार्ड
- एक सेंसर या एकाधिक सेंसर (वैकल्पिक, आवश्यक डेटा के अनुसार)
सेंसर से डेटा प्राप्त करना
हम VEX रोबोट (IQ, V5, EXP) को निम्नलिखित सेंसरों से डेटा कैप्चर करने के लिए प्रोग्राम कर सकते हैं:
- जड़त्वीय सेंसर
- दूरी सेंसर
- प्रकाशीय संवेदक
- दृष्टि संवेदक
- रोटेशन सेंसर (V5, EXP)
- जीपीएस सेंसर (V5)
नोट: VEX IQ (दूसरी पीढ़ी) ब्रेन और VEX EXP ब्रेन में एक इनर्शियल सेंसर अंतर्निहित है। हम इन VEX ब्रायन्स के साथ इनर्शियल सेंसर डेटा एकत्र कर सकते हैं।
इस लेख में, हम एक डेटा लॉगिंग परियोजना विकसित करेंगे जो VEX IQ ब्रेन (द्वितीय) के साथ त्वरण डेटा एकत्र करेगा और इसे एक एसडी कार्ड में संग्रहीत करेगा।
सबसे पहले, हमें VEX IQ ब्रेन (द्वितीय) में निर्मित टाइमर और इनर्शियल सेंसर से रीडिंग प्राप्त करने के लिए एक छोटा प्रोग्राम लिखना होगा।
- इस कार्यक्रम की शुरुआत में, हमें VEX IQ Brain (2nd) को नियंत्रित करने के लिए पायथन मॉड्यूल को आयात करना होगा और उससे डेटा प्राप्त करना होगा। इसलिए, इन निर्देशों को परियोजना में जोड़कर शुरुआत करें।
- इसके बाद, रिकॉर्डिंग के लिए डेटा प्रविष्टियों की संख्या संग्रहीत करने के लिए एक चर
numOfDataEntriesघोषित करने के लिए कोड जोड़ें, डेटा पढ़ने के लिए समय अंतराल के मूल्य को संग्रहीत करने के लिए एक चरpolling_delay_msecघोषित करें, और सेंसर से पढ़े गए डेटा को संग्रहीत करने के लिए एक खाली स्ट्रिंग चरdata_bufferबनाएं। - चूंकि हम डेटा में टाइमस्टैम्प जोड़ने के लिए टाइमर के वर्तमान मान का उपयोग करेंगे, इसलिए डेटा एकत्र करना शुरू करने से पहले हमें टाइमर मान को 0 सेकंड पर रीसेट करना होगा
- VEX IQ ब्रेन (दूसरा) से डेटा लाने और बफर में डेटा रिकॉर्ड करने वाले निर्देश का उपयोग करने से पहले, हमें पहले इसे समझने की आवश्यकता है।
निम्नलिखित निर्देश वर्तमान टाइमर मान कोdata_bufferचर में एक विशिष्ट प्रारूप में जोड़ता है।आइए प्रारूप स्ट्रिंग
“%1.3f”तोड़ें:- “%”: रूपांतरण निर्दिष्टकर्ता का परिचय देता है।
- “1”: स्ट्रिंग में मौजूद अंकों की न्यूनतम संख्या को इंगित करता है
- “.3”: स्वरूपित संख्या में शामिल करने के लिए दशमलव स्थानों की संख्या निर्दिष्ट करता है।
- “f”: यह दर्शाता है कि स्वरूपित किया जाने वाला मान एक फ़्लोटिंग-पॉइंट संख्या है।
इस प्रकार, हम एक फ्लोटिंग-पॉइंट संख्या को न्यूनतम 1 अंक की चौड़ाई और 3 दशमलव स्थानों की परिशुद्धता के साथ प्रारूपित करने के लिए प्रारूप स्ट्रिंग “%1.3f” का उपयोग कर सकते हैं।
- अब, हम VEX IQ ब्रेन (द्वितीय) में निर्मित इनर्शियल सेंसर के टाइमर और त्वरण मान को पढ़ सकते हैं और फिर निर्दिष्ट प्रारूप में डेटा को
data_bufferचर में जोड़ सकते हैं।नोट: “\n” नई लाइन वर्ण है। यह इंगित करता है कि लाइन यहां समाप्त होती है और एक नई लाइन की शुरुआत होती है।
- फिर,
data_bufferचर में डेटा प्रविष्टियों की एक निश्चित संख्या को रिकॉर्ड करने के लिए, हमfor loopका उपयोग करके उन निर्देशों को बार-बार निष्पादित कर सकते हैं जो डेटा को लाते हैं और डेटा कोdata_bufferचर में कई पुनरावृत्तियों के लिए जोड़ते हैं। हमारी रणनीति पुनरावृत्तियों की संख्या निर्धारित करने के लिए चरnumOfDataEntriesके मान का उपयोग करना है।
- अब तक हमारा कार्यक्रम यथासंभव शीघ्रता से डेटा रिकॉर्ड करता है। हालाँकि, हम विशिष्ट समय अंतराल पर डेटा रिकॉर्ड करना चाहते हैं। इसलिए, हम दो रीडिंग के बीच विशिष्ट समय अंतराल जोड़ने के लिए प्रोग्राम को रोकने के लिए
फॉर लूपमेंwait()फ़ंक्शन का उपयोग कर सकते हैं। समय अंतराल का मान निर्धारित करने के लिए हम चरpolling_delay_msecके मान का उपयोग करते हैं।
बधाई हो! हमने VEX ब्रेन में निर्मित जड़त्वीय सेंसर से रीडिंग (त्वरण डेटा) प्राप्त करने का कार्यक्रम पूरा कर लिया है। इसके बाद, हम यह पता लगाएंगे कि एसडी कार्ड पर डेटा को CSV फ़ाइल में कैसे लिखा जाए।
एसडी कार्ड को VEX ब्रेन से जोड़ना
एसडी कार्ड पर फ़ाइल में डेटा लिखने से पहले, एसडी कार्ड को पहले VEX ब्रेन के एसडी कार्ड स्लॉट में डालें।
नोट: डेटा लेखन के लिए SD कार्ड को FAT32 में फ़ॉर्मेट करें। हम 32GB या उससे कम आकार वाले SD कार्ड का उपयोग करने की सलाह देते हैं।
यह सुनिश्चित करने के लिए कि एसडी कार्ड पर फ़ाइल में डेटा लिखना उचित परिस्थितियों में किया जा सकता है, हमें यह जांचने के लिए कोड जोड़ने की आवश्यकता होगी कि क्या एसडी कार्ड VEX IQ ब्रेन (2nd) में ठीक से डाला गया है।
- यह जांचने के लिए कि क्या SD कार्ड डाला गया है,
brain.sdcard.is_inserted()फ़ंक्शन का उपयोग करें। यदि SD कार्ड नहीं डाला गया है, तो VEX IQ ब्रेन स्क्रीन पर संबंधित संदेश प्रदर्शित करें और प्रोग्राम को दबाए रखें।
नोट:brain.sdcard.is_inserted()फ़ंक्शन True लौटाता है यदि कोई SD कार्ड ब्रेन में डाला गया हो।
SD कार्ड पर डेटा को CSV फ़ाइल में लिखना
अब तक, हमारा कार्यक्रम VEX IQ ब्रेन (द्वितीय) के साथ डेटा एकत्र कर सकता है। डेटा लॉगिंग परियोजना को पूरा करने के लिए, हमें भविष्य में जांच और विश्लेषण के लिए डेटा को एसडी कार्ड पर कॉमा-सेपरेटेड वैल्यूज़ (सीएसवी) फ़ाइल में लिखना होगा।
- CSV फ़ाइल में विभिन्न प्रकार के डेटा लिखते समय, हम यह जानना चाहते हैं कि प्रत्येक कॉलम में किस प्रकार का डेटा है। ऐसा करने के लिए, हम डेटा रिकॉर्ड करने से पहले CSV हेडर टेक्स्ट को
वेरिएबल में जोड़ सकते हैं।
इस प्रकार, CSV फ़ाइल के लिए कॉलम नाम निर्दिष्ट करने के लिए CSV हेडर टेक्स्ट को संग्रहीत करने के लिए एक वेरिएबलcsvHeaderTextघोषित करने के लिए कोड जोड़ें और SD कार्ड पर लिखने के लिए CSV फ़ाइल का नाम रखने के लिए एक वेरिएबलsd_file_nameघोषित करें।
नोट: सुनिश्चित करें कि हेडर उसी क्रम में हैं जैसे data_buffer चर में संग्रहीत डेटा है।
- इसके बाद, डेटा संग्रहण के लिए
for loopसे पहलेdata_bufferस्ट्रिंग में CSV हेडर टेक्स्ट जोड़ें।
- एसडी कार्ड पर फ़ाइल में डेटा लिखने से पहले, आइए पहले यह समझें कि
brain.sdcard.savefile()फ़ंक्शन का उपयोग कैसे करें।
यह निर्देशdata_bufferचर में संग्रहीत डेटा को SD कार्ड पर एक नामित CSV फ़ाइल में लिखता है।
आइए इसे तोड़ें:-
brain.sdcard.savefile(): यह फ़ंक्शन एक बाइटअरे को SD कार्ड पर एक नामित फ़ाइल में सहेजता है। यह फ़ंक्शन फ़ाइल में लिखे गए बाइट्स की संख्या लौटाता है।
-
sd_file_name: फ़ंक्शन का पहला पैरामीटर. लिखने के लिए फ़ाइल का नाम इंगित करता है. इस परियोजना में, फ़ाइल का नाम
sd_file_name चर में संग्रहीत किया जाता है। -
bytearray(datat_buffer,'utf-8'): फ़ंक्शन का दूसरा पैरामीटर. फ़ाइल में लिखे जाने वाले बाइटअरे को दर्शाता है।
-
- bytearray(): यह विधि एक परिवर्तनीय bytearray बनाती है। इस निर्देश में, हम इसका उपयोग एन्कोडिंग निर्दिष्ट करके स्ट्रिंग को बाइटअरे में परिवर्तित करने के लिए करते हैं।
- data_buffer: विधि का पहला पैरामीटर. बाइटअरे में परिवर्तित किए जाने वाले स्रोत को इंगित करता है। इस परियोजना में, स्रोत वह डेटा है जो वेरिएबल
data_buffer में संग्रहीत है। - 'utf-8': विधि का दूसरा पैरामीटर. स्ट्रिंग को एनकोड करने के लिए प्रयुक्त निर्दिष्ट एनकोडिंग को इंगित करता है। इस निर्देश में एनकोडिंग 'utf-8' है।
-
-
- डेटा संग्रहण के लिए
फॉर लूपके बाद,brain.sdcard.savefile()फ़ंक्शन का उपयोग करकेdata_bufferचर में संग्रहीत डेटा को SD कार्ड पर CSV फ़ाइल में लिखें। इसके अलावा, यह सत्यापित करने के लिए कि क्या डेटा सफलतापूर्वक फ़ाइल में लिखा गया है और वास्तविक समय की प्रतिक्रिया प्राप्त करने के लिए VEX IQ ब्रेन स्क्रीन पर संबंधित संदेश प्रदर्शित करने के लिएbrain.sdcard.savefile()फ़ंक्शन से वापसी मान की जांच करने के लिए कोड जोड़ें।
नोट:brain.sdcard.savefile()फ़ंक्शन फ़ाइल में लिखी गई बाइट्स की संख्या लौटाता है। इस परियोजना में, हम इसका उपयोग एकत्रित डेटा को CSV फ़ाइल में लिखने के लिए करते हैं, इसलिए फ़ाइल में लिखे गए बाइट्स की संख्या शून्य से अधिक होनी चाहिए। दूसरे शब्दों में, यदिbrain.sdcard.savefile()फ़ंक्शन 0 लौटाता है, तो हम यह निष्कर्ष निकाल सकते हैं कि डेटा फ़ाइल में सफलतापूर्वक नहीं लिखा गया है। अन्यथा, डेटा फ़ाइल में लिखा गया है.
बधाई हो! हमने एक डेटा लॉगिंग परियोजना विकसित की है जो VEX IQ ब्रेन (द्वितीय) के साथ त्वरण डेटा एकत्र करती है और इसे SD कार्ड पर CSV फ़ाइल में संग्रहीत करती है। आगे, हम यह पता लगाएंगे कि डेटा विश्लेषण के लिए CSV फ़ाइल कैसे खोलें।
डेटा विश्लेषण के लिए CSV फ़ाइल खोलना
एक बार जब डेटा को SD कार्ड पर CSV फ़ाइल में लिख दिया जाता है, तो हम डेटा को पढ़ने और उसका विश्लेषण करने के लिए फ़ाइल को खोलने के लिए स्प्रेडशीट एप्लिकेशन का उपयोग कर सकते हैं।
नोट: सबसे आम स्प्रेडशीट अनुप्रयोगों में से दो हैं गूगल शीट्स और माइक्रोसॉफ्ट एक्सेल। इस लेख में, हम SD कार्ड पर CSV फ़ाइल खोलने के लिए Google शीट्स (वेब आधारित) का उपयोग करेंगे। अन्य अनुप्रयोगों का उपयोग करने की प्रक्रिया समान है।
- VEX IQ Brain के SD कार्ड स्लॉट से SD कार्ड निकालें। यदि कंप्यूटर में अंतर्निहित माइक्रो एसडी कार्ड स्लॉट है, तो हम एसडी कार्ड को सीधे उस स्लॉट में डाल सकते हैं। अन्यथा, एसडी कार्ड को एसडी कार्ड एडाप्टर में डालें और फिर एडाप्टर को कंप्यूटर से कनेक्ट करें।
- अपने Google खाते में लॉग इन करें और Google शीट्स खोलें। एक नई स्प्रेडशीट बनाएं.
- स्प्रेडशीट में, “फ़ाइल” मेनू खोलें, “आयात करें” -> “अपलोड करें” -> “ब्राउज़ करें” बटन का चयन करें, फिर कंप्यूटर पर CSV फ़ाइल चुनें। CSV फ़ाइल अपलोड करने के बाद, “डेटा आयात करें” बटन पर क्लिक करें। डेटा आयात करने के बाद, एकत्रित डेटा को CSV फ़ाइल में देखने के लिए “अभी खोलें” क्लिक करें।
- (वैकल्पिक) डेटा का विश्लेषण करने का एक आसान तरीका है एक ग्राफ बनाना और फिर डेटा में रुझान देखना। स्प्रेडशीट में, “सम्मिलित करें” मेनू खोलें और CSV फ़ाइल में डेटा का उपयोग करके ग्राफ़ बनाने के लिए “चार्ट” चयन करें। निम्नलिखित ग्राफ VEX IQ ब्रेन (दूसरा) के साथ एकत्रित त्वरण डेटा का परिणाम है।
नोट: हम चार्ट संपादक का उपयोग एक अलग चार्ट प्रकार का चयन करने या अपनी आवश्यकताओं के आधार पर चार्ट को संपादित करने के लिए कर सकते हैं।
इस बिंदु तक, हमने डेटा लॉगिंग परियोजना पूरी कर ली है जो VEX IQ ब्रेन (द्वितीय) के साथ डेटा एकत्र करती है और इसे SD कार्ड पर CSV फ़ाइल में सहेजती है। इसके अलावा, हमने यह भी सीखा कि गूगल शीट्स का उपयोग करके एसडी कार्ड पर सीएसवी फ़ाइल को कैसे पढ़ा जाए और आगे के विश्लेषण के लिए ग्राफ भी कैसे बनाया जाए। आगे क्या? आइए, डेटा लॉगिंग के लिए VEX रोबोट का उपयोग करते हुए अधिक रोमांचक प्रयोगों की योजना बनाने का प्रयास करें, ताकि यह देखा जा सके कि बदलते पर्यावरणीय कारक विभिन्न प्रकार के डेटा को किस प्रकार प्रभावित करते हैं, तथा हमारे आसपास की दुनिया की गहरी समझ प्राप्त की जा सके।