VEX মস্তিষ্ক/সেন্সর দিয়ে ডেটা লগিং (পাইথন সংস্করণ)

ভূমিকা

এই নিবন্ধে, আমরা কীভাবে একটি ডেটা লগিং প্রকল্প তৈরি করব তা নিয়ে আলোচনা করব যা VEX রোবটকে VEX মস্তিষ্কের সাথে ডেটা সংগ্রহ করতে এবং ডেটা বিশ্লেষণের জন্য SD কার্ডে একটি CSV ফাইলে সংরক্ষণ করার নির্দেশ দেয়৷

ডেটা লগিং একটি শক্তিশালী হাতিয়ার যা আমরা বৈজ্ঞানিক গবেষণায় সহায়তা করতে, আমাদের নিজস্ব পরীক্ষা-নিরীক্ষা পরিচালনা করতে এবং নির্দিষ্ট সমস্যার সমাধান করতে ব্যবহার করতে পারি। বিভিন্ন মজার এবং উত্তেজনাপূর্ণ কাজ আছে যা আমরা VEX রোবট চালাতে পারি ডেটা লগিং এর মাধ্যমে সম্পন্ন করতে। নিচে কিছু উদাহরণ দেওয়া হল:

  • রোবটের গতি গণনা করতে দূরত্ব সেন্সর দিয়ে ডেটা সংগ্রহ করা
  • শ্রেণীকক্ষের চারপাশে রোবট চালানো এবং বিভিন্ন স্থানে আলোর পরিবর্তন পর্যবেক্ষণ করতে অপটিক্যাল সেন্সর দিয়ে ডেটা সংগ্রহ করা।
  • রোবটটিকে একটি অ্যাডভেঞ্চারে নিয়ে যাওয়া এবং জিপিএস রেকর্ডিং একটি মানচিত্র তৈরি করার জন্য ডেটা সমন্বয় করে।

একটি ডেটা লগিং প্রকল্পের বিকাশের জন্য প্রয়োজনীয় কোডিং দক্ষতা

  • VEX Brain/Sensors দিয়ে ডেটা সংগ্রহ করতে এবং এটিকে একটি ডেটা স্ট্রাকচারে যুক্ত করতে বিভিন্ন কমান্ড ব্যবহার করুন।
  • SD কার্ডে একটি কমা-সেপারেটেড ভ্যালুস (CSV) ফাইলে ডেটা লিখুন।

ডেটা লগিংয়ের জন্য প্রয়োজনীয় হার্ডওয়্যার:

  • একটি VEX মস্তিষ্ক (IQ, V5, EXP)
  • একটি এসডি কার্ড
  • একটি সেন্সর বা একাধিক সেন্সর (ঐচ্ছিক, প্রয়োজনীয় তথ্য অনুযায়ী)

সেন্সর থেকে ডেটা পাওয়া

আমরা নিম্নলিখিত সেন্সর থেকে ডেটা ক্যাপচার করতে VEX রোবট (IQ, V5, EXP) প্রোগ্রাম করতে পারি:

  • ইনর্শিয়াল সেন্সর
  • দূরত্ব সেন্সর
  • অপটিক্যাল সেন্সর
  • ভিশন সেন্সর
  • ঘূর্ণন সেন্সর (V5, EXP)
  • GPS সেন্সর (V5)

দ্রষ্টব্য: VEX IQ (2nd জেনারেশন) ব্রেন এবং VEX EXP ব্রেইনে একটি ইনর্শিয়াল সেন্সর বিল্ট ইন আছে। আমরা এই VEX ব্রায়ানগুলির সাথে ইনর্শিয়াল সেন্সর ডেটা সংগ্রহ করতে পারি।

এই নিবন্ধে, আমরা একটি ডেটা লগিং প্রকল্প তৈরি করব যা VEX IQ ব্রেইনের (2য়) সাথে ত্বরণ ডেটা সংগ্রহ করে এবং এটি একটি SD কার্ডে সংরক্ষণ করে। 

প্রথমে, VEX IQ Brain (2য়) এ নির্মিত টাইমার এবং ইনর্শিয়াল সেন্সর থেকে রিডিং পেতে আমাদের একটি ছোট প্রোগ্রাম লিখতে হবে।

  • এই প্রোগ্রামের শুরুতে, আমাদের VEX IQ Brain (2nd) নিয়ন্ত্রণ করতে পাইথন মডিউল আমদানি করতে হবে এবং এটি থেকে ডেটা আনতে হবে। সুতরাং, প্রকল্পে এই নির্দেশাবলী যোগ করে শুরু করুন।
  • # লাইব্রেরি আমদানি
    থেকে ভেক্স আমদানি *

    # মস্তিষ্ক ডিফল্টভাবে সংজ্ঞায়িত করা উচিত
    মস্তিষ্ক = মস্তিষ্ক()
    মস্তিষ্ক_ইনার্শিয়াল = ইনার্শিয়াল()
  • এরপরে, রেকর্ডিংয়ের জন্য ডেটা এন্ট্রির সংখ্যা সংরক্ষণ করতে একটি ভেরিয়েবল numOfDataEntries ঘোষণা করতে কোডটি যুক্ত করুন, ডেটা পড়ার জন্য সময়ের ব্যবধানের মান সংরক্ষণ করতে একটি ভেরিয়েবল polling_delay_msec ঘোষণা করুন এবং সংরক্ষণ করার জন্য একটি খালি স্ট্রিং ভেরিয়েবল data_buffer তৈরি করুন। সেন্সর থেকে ডেটা পড়া।
  • ডেটাএন্ট্রি সংখ্যা = ১০০
    পোলিং_ডেলে_এমএসইসি = ৫০
    ডেটা_বাফার = ""
  • যেহেতু আমরা ডেটাতে টাইমস্ট্যাম্প যোগ করার জন্য টাইমারের বর্তমান মান ব্যবহার করব, তাই ডেটা সংগ্রহ শুরু করার আগে আমাদের টাইমারের মান 0 সেকেন্ডে পুনরায় সেট করতে হবে।
  • # টাইমার ইনিশিয়ালাইজেশন কোড
    যোগ করুন brain.timer.clear()
  • VEX IQ Brain (2nd) থেকে ডেটা নিয়ে আসা এবং বাফারে ডেটা রেকর্ড করার নির্দেশনা ব্যবহার করার আগে, আমাদের প্রথমে এটি বুঝতে হবে।
    নিম্নলিখিত নির্দেশনা একটি নির্দিষ্ট বিন্যাসে বর্তমান টাইমার মান data_buffer ভেরিয়েবলের সাথে যুক্ত করে।

    পাইথন কোডের একটি লাইন বিস্তারিতভাবে ব্যাখ্যা করার জন্য টুকরো টুকরো করে হাইলাইট করা হয়েছে। কোডের লাইনে data_buffer += 1.3f % brain.timer.value() + কমা লেখা আছে। প্রথমে, += অপারেটরটি হাইলাইট করা হয় এবং data_buffer স্ট্রিং-এ ডেটা যোগ করুন লেবেল করা হয়। এরপর, 1.3f স্ট্রিংটি হাইলাইট করা হবে এবং ফর্ম্যাট স্ট্রিং লেবেল করা হবে। এরপর, শতাংশ চিহ্নটি হাইলাইট করা হবে এবং স্ট্রিং মডুলো অপারেটর লেবেল করা হবে। এরপর, brain.timer.value() কমান্ডটি হাইলাইট করা হবে এবং টাইমারের বর্তমান মান লেবেল করা হবে। সবশেষে, শেষে কমা স্ট্রিংটির সংযোজন হাইলাইট করা হয়েছে এবং লেখা আছে "অন্তত ডেটা আলাদা করতে কমা যোগ করুন"।

    চলুন বিন্যাস স্ট্রিং “%1.3f”ভাঙ্গা যাক : 

    • "%": রূপান্তর স্পেসিফায়ার প্রবর্তন করে।
    • "1": স্ট্রিংটিতে উপস্থিত থাকা সংখ্যার ন্যূনতম সংখ্যা নির্দেশ করে
    • “.3”: বিন্যাসিত সংখ্যায় অন্তর্ভুক্ত করার জন্য দশমিক স্থানের সংখ্যা নির্দিষ্ট করে।
    • "f": নির্দেশ করে যে মানটি ফর্ম্যাট করা হবে একটি ফ্লোটিং-পয়েন্ট সংখ্যা।

    সুতরাং, ন্যূনতম 1 সংখ্যার প্রস্থ এবং 3 দশমিক স্থানের নির্ভুলতা সহ একটি ফ্লোটিং-পয়েন্ট নম্বর ফরম্যাট করতে আমরা ফর্ম্যাট স্ট্রিং "%1.3f" ব্যবহার করতে পারি।

  • এখন, আমরা VEX IQ Brain (2nd) এ নির্মিত Inertial Sensor-এর টাইমার এবং ত্বরণ মান পড়তে পারি এবং তারপর নির্দিষ্ট বিন্যাসে data_buffer ভেরিয়েবলের সাথে ডেটা যুক্ত করতে পারি।
  • # বাফারে ডেটা লেখার নির্দেশ
    data_buffer += "%1.3f" % brain.timer.value() + "\n"
    data_buffer += "%1.3f" % brain_inertial.acceleration(XAXIS) + ","
    data_buffer += "%1.3f" % brain_inertial.acceleration(YAXIS) + ","
    data_buffer += "%1.3f" % brain_inertial.acceleration(ZAXIS) + "\n"

    পূর্ববর্তী কোডটি বিস্তারিতভাবে ব্যাখ্যা করা হয়েছে। brain.timer.value() ব্যবহার করে প্রথম data_buffer লাইনটি "বাফারে টাইমস্ট্যাম্প যোগ করুন" লেবেলযুক্ত। পরবর্তী তিনটি লাইন "বাফারে X, Y, এবং Z অক্ষ বরাবর ত্বরণ মান যোগ করুন" লেবেলযুক্ত।

  • দ্রষ্টব্য: “\n” হল নতুন লাইনের অক্ষর। এটি নির্দেশ করে যে রেখাটি এখানে শেষ হয় এবং একটি নতুন রেখার সূচনা করে।
  • তারপরে, data_buffer ভেরিয়েবলে নির্দিষ্ট সংখ্যক ডেটা এন্ট্রি রেকর্ড করতে, আমরা এর জন্য লুপ ব্যবহার করতে পারি বারবার নির্দেশাবলী কার্যকর করতে যা ডেটা আনয়ন করে এবং ডেটা_বাফার ভেরিয়েবলে অনেকগুলি পুনরাবৃত্তির জন্য ডেটা যুক্ত করে। আমাদের কৌশল হল ভেরিয়েবল numOfDataEntries এর মান ব্যবহার করে পুনরাবৃত্তির সংখ্যা নির্ধারণ করা।
  • # রেঞ্জে i এর জন্য ডেটা জেনারেশন
    (0, numOfDataEntries):

    # বাফারে ডেটা লেখার কমান্ড
    data_buffer += "%1.3f" % brain.timer.value() + "\n"
    data_buffer += "%1.3f" % brain_inertial.acceleration(XAXIS) + ","
    data_buffer += "%1.3f" % brain_inertial.acceleration(YAXIS) + ","
    data_buffer += "%1.3f" % brain_inertial.acceleration(ZAXIS) + "\n"
  • এখন পর্যন্ত, আমাদের প্রোগ্রাম যত তাড়াতাড়ি সম্ভব ডেটা রেকর্ড করে। যাইহোক, আমরা নির্দিষ্ট সময়ের ব্যবধানে ডেটা রেকর্ড করতে চাই। তাই, আমরা for loop -এ একটি wait() ফাংশন ব্যবহার করতে পারি যাতে দুটি রিডিংয়ের মধ্যে নির্দিষ্ট সময়ের ব্যবধান যোগ করার জন্য প্রোগ্রামটি পজ করা যায়। সময়ের ব্যবধানের মান নির্ধারণ করতে আমরা polling_delay_msec ভেরিয়েবলের মান ব্যবহার করি।
  • # রেঞ্জে i এর জন্য ডেটা জেনারেশন
    (0, numOfDataEntries):

    # বাফারে ডেটা লেখার কমান্ড
    data_buffer += "%1.3f" % brain.timer.value() + "\n"
    data_buffer += "%1.3f" % brain_inertial.acceleration(XAXIS) + ","
    data_buffer += "%1.3f" % brain_inertial.acceleration(YAXIS) + ","
    data_buffer += "%1.3f" % brain_inertial.acceleration(ZAXIS) + "\n"

    wait(polling_delay_msec, MSEC)

অভিনন্দন! VEX ব্রেইনে তৈরি ইনর্শিয়াল সেন্সর থেকে রিডিং (ত্বরণ ডেটা) পাওয়ার জন্য আমরা প্রোগ্রামটি শেষ করেছি। এর পরে, আমরা SD কার্ডে একটি CSV ফাইলে ডেটা কীভাবে লিখতে হয় তা অন্বেষণ করব।

# লাইব্রেরি আমদানি
থেকে vex আমদানি *

# মস্তিষ্ক ডিফল্টভাবে সংজ্ঞায়িত করা উচিত
brain = Brain()
brain_inertial = Inertial()

numOfDataEntries = 100
polling_delay_msec = 50
data_buffer = ""

# টাইমার ইনিশিয়ালাইজেশন কোড যোগ করুন
brain.timer.clear()

# ডেটা জেনারেশন
i এর জন্য range(0, numOfDataEntries):

# বাফারে ডেটা লেখার কমান্ড
data_buffer += "%1.3f" % brain.timer.value() + "\n"
data_buffer += "%1.3f" % brain_inertial.acceleration(XAXIS) + ","
data_buffer += "%1.3f" % brain_inertial.acceleration(YAXIS) + ","
ডেটা_বাফার += "%1.3f" % ব্রেন_ইনার্শিয়াল.অ্যাক্সিলেশন (জ্যাক্সিস) + "\n"

অপেক্ষা (পোলিং_ডেলে_এমএসইসি, এমএসইসি)

VEX মস্তিষ্কে SD কার্ড সংযুক্ত করা হচ্ছে

একটি SD কার্ডে একটি ফাইলে ডেটা লেখার আগে, প্রথমে VEX মস্তিষ্কের SD কার্ড স্লটে SD কার্ডটি প্রবেশ করান৷

আইকিউ (দ্বিতীয় প্রজন্ম) মস্তিষ্ক দেখানো হয়েছে যার এসডি কার্ড স্লট হাইলাইট করা হয়েছে। এসডি কার্ড স্লটটি ব্রেইনের পাশে, এর USB-C পোর্টের ডানদিকে অবস্থিত।

দ্রষ্টব্য: ডেটা লেখার জন্য SD কার্ডটিকে FAT32 তে ফর্ম্যাট করুন৷ আমরা 32GB বা তার কম আকারের SD কার্ড ব্যবহার করার পরামর্শ দিই।

SD কার্ডে একটি ফাইলে ডেটা লেখা যথাযথ অবস্থার অধীনে সঞ্চালিত হতে পারে তা নিশ্চিত করতে, SD কার্ডটি VEX IQ ব্রেইনে (2য়) সঠিকভাবে ঢোকানো হয়েছে কিনা তা পরীক্ষা করার জন্য আমাদের কোড যোগ করতে হবে।

  • এসডি কার্ড ঢোকানো হয়েছে কিনা তা পরীক্ষা করতে brain.sdcard.is_inserted() ফাংশন ব্যবহার করুন। যদি SD কার্ড ঢোকানো না হয়, VEX IQ ব্রেইন স্ক্রিনে সংশ্লিষ্ট বার্তাটি প্রদর্শন করুন এবং প্রোগ্রামটি ধরে রাখুন।
  • # যদি SD কার্ড ঢোকানো না থাকে তাহলে প্রোগ্রামটি ধরে রাখুন
    যদি না থাকে brain.sdcard.is_inserted():
    brain.screen.set_cursor(1,1)
    brain.screen.print("SD Card Missing")
    while(True):
    wait(5, MSEC)
  • দ্রষ্টব্য: brain.sdcard.is_inserted() ফাংশনটি True রিটার্ন করে যদি একটি SD কার্ড ব্রেনে ঢোকানো হয়।

SD কার্ডে একটি CSV ফাইলে ডেটা লেখা

এখন পর্যন্ত, আমাদের প্রোগ্রাম VEX IQ Brain (2য়) দিয়ে ডেটা সংগ্রহ করতে পারে। ডেটা লগিং প্রকল্পটি সম্পূর্ণ করতে, ভবিষ্যতে পরীক্ষা এবং বিশ্লেষণের জন্য আমাদের SD কার্ডে একটি কমা-সেপারেটেড ভ্যালুস (CSV) ফাইলে ডেটা লিখতে হবে।

  • একটি CSV ফাইলে বিভিন্ন ধরনের ডেটা লেখার সময়, আমরা জানতে চাই প্রতিটি কলামে কোন ধরনের ডেটা রয়েছে। এটি করার জন্য, ডেটা রেকর্ড করার আগে আমরা data_buffer ভেরিয়েবলের সাথে CSV হেডার টেক্সট যোগ করতে পারি।
    এইভাবে, CSV ফাইলের কলামের নাম নির্দিষ্ট করতে CSV হেডার টেক্সট সংরক্ষণ করতে একটি ভেরিয়েবল csvHeaderText ঘোষণা করতে কোডটি যোগ করুন এবং একটি পরিবর্তনশীল ঘোষণা করুন sd_file_name যাতে লেখার জন্য CSV ফাইলের নাম ধরে রাখা যায়। এসডি কার্ড.
  • csvHeaderText = "সময়, x, y, z"
    sd_file_name = "myDataPY.csv"

দ্রষ্টব্য: নিশ্চিত করুন যে শিরোনামগুলি ডেটা_বাফার ভেরিয়েবলে সংরক্ষিত ডেটার মতো একই ক্রমে রয়েছে।

  • এরপর, ডেটা সংগ্রহের জন্য লুপ এর জন্য এর আগে data_buffer স্ট্রিং-এ CSV হেডার টেক্সট যোগ করুন।
  • # CSV হেডার তৈরি করুন
    data_buffer = csvHeaderText + "\n"

    # CSV ডেটা জেনারেশন
    for i in range(0, numOfDataEntries):

    # বাফারে ডেটা লেখার কমান্ড
    data_buffer += "%1.3f" % brain.timer.value() + "\n"
    data_buffer += "%1.3f" % brain_inertial.acceleration(XAXIS) + ","
    data_buffer += "%1.3f" % brain_inertial.acceleration(YAXIS) + ","
    data_buffer += "%1.3f" % brain_inertial.acceleration(ZAXIS) + "\n"

    wait(polling_delay_msec, MSEC)
  • এসডি কার্ডে একটি ফাইলে ডেটা লেখার আগে, আসুন প্রথমে brain.sdcard.savefile() ফাংশনটি কীভাবে ব্যবহার করবেন তা জেনে নেওয়া যাক।

    পাইথন কোডের একটি লাইন বিস্তারিতভাবে ব্যাখ্যা করার জন্য টুকরো টুকরো করে হাইলাইট করা হয়েছে। কোডের লাইনটি brain.sdcard.savefile(sd_file_name, bytearray(data_buffer, 'utf-8')) পড়ে। প্রথমে, brain.sdcard.savefile বিভাগটি হাইলাইট করা হবে এবং SD কার্ডে একটি নামযুক্ত ফাইলে Save a bytearray লেবেল করা হবে। এরপর, sd_file_name বিভাগটি হাইলাইট করা হবে এবং ফাইলের নাম লেবেল করা হবে। সবশেষে, শেষে bytearray(data_buffer, 'utf-8') হাইলাইট করা হয়েছে এবং Buffer লেবেল করা হয়েছে।


    এই নির্দেশটি data_buffer ভেরিয়েবলে সংরক্ষিত ডেটাকে SD কার্ডে একটি নামযুক্ত CSV ফাইলে লিখে দেয়।
    আসুন এটি ভেঙে ফেলা যাক:
    • brain.sdcard.savefile(): ফাংশনটি SD কার্ডের একটি নামযুক্ত ফাইলে একটি বাইটয়ারে সংরক্ষণ করে। ফাংশনটি ফাইলে লেখা বাইটের সংখ্যা প্রদান করে।

    • sd_file_name: ফাংশনের প্রথম প্যারামিটার। লেখার জন্য ফাইলের নাম নির্দেশ করে। এই প্রজেক্টে, ফাইলের নাম sd_file_name ভেরিয়েবলে সংরক্ষণ করা হয়।

    • bytearray(datat_buffer,'utf-8'): ফাংশনের দ্বিতীয় প্যারামিটার। ফাইলে লেখার জন্য বাইটয়ারের প্রতিনিধিত্ব করে।

        • bytearray(): পদ্ধতি একটি পরিবর্তনযোগ্য bytearray তৈরি করে। এই নির্দেশনায়, আমরা এনকোডিং নির্দিষ্ট করে একটি স্ট্রিংকে বাইটয়াররে রূপান্তর করতে এটি ব্যবহার করি।
        • data_buffer: পদ্ধতির প্রথম প্যারামিটার। একটি বাইটয়ারে রূপান্তরিত হতে উৎস নির্দেশ করে। এই প্রকল্পে, উৎস হল ভেরিয়েবল ডেটা_বাফারে সংরক্ষিত ডেটা। 
        • 'utf-8': পদ্ধতির দ্বিতীয় প্যারামিটার। স্ট্রিং এনকোড করতে ব্যবহৃত নির্দিষ্ট এনকোডিং নির্দেশ করে। এই নির্দেশে এনকোডিং হল 'utf-8'। 
  • ডেটা সংগ্রহের জন্য লুপ পরে, data_buffer ভেরিয়েবলে সংরক্ষিত ডেটা SD কার্ডের CSV ফাইলে লিখতে brain.sdcard.savefile() ফাংশন ব্যবহার করুন। এছাড়াও, brain.sdcard.savefile() ফাংশন থেকে রিটার্ন মান পরীক্ষা করার জন্য কোডটি যোগ করুন যাতে ফাইলটিতে ডেটা সফলভাবে লেখা হয়েছে কিনা তা যাচাই করা যায় এবং রিয়েল-টাইম প্রতিক্রিয়া পেতে VEX IQ ব্রেন স্ক্রিনে সংশ্লিষ্ট বার্তাটি প্রদর্শন করা হয়। শেষে থাকা if স্টেটমেন্টটি ফাইলের অবস্থা দেখানোর জন্য একটি বার্তা যোগ করে, SD Write Error অথবা Data Writtenপ্রিন্ট করে।
  • # CSV ডেটা জেনারেশন
    for i in range(0, numOfDataEntries):

    # বাফারে ডেটা লেখার কমান্ড
    data_buffer += "%1.3f" % brain.timer.value() + "\n"
    data_buffer += "%1.3f" % brain_inertial.acceleration(XAXIS) + ","
    data_buffer += "%1.3f" % brain_inertial.acceleration(YAXIS) + ","
    data_buffer += "%1.3f" % brain_inertial.acceleration(ZAXIS) + "\n"

    wait(polling_delay_msec, MSEC)

    # SD কার্ডে ডেটা লিখুন
    brain.screen.set_cursor(4,1)
    if brain.sdcard.savefile(sd_file_name, bytearray(data_buffer,'utf-8')) == 0:
    brain.screen.print("SD Write Error")
    অন্য:
    brain.screen.print("Data Written")
  • দ্রষ্টব্য: brain.sdcard.savefile() ফাংশন ফাইলটিতে লেখা বাইটের সংখ্যা ফেরত দেয়। এই প্রকল্পে, আমরা একটি CSV ফাইলে সংগৃহীত ডেটা লিখতে এটি ব্যবহার করি, তাই ফাইলটিতে লেখা বাইটের সংখ্যা অবশ্যই শূন্যের বেশি হতে হবে। অন্য কথায়, যদি brain.sdcard.savefile() ফাংশন 0 প্রদান করে, তাহলে আমরা উপসংহারে আসতে পারি যে ফাইলটিতে ডেটা সফলভাবে লেখা হয়নি। অন্যথায়, ফাইলটিতে তথ্য লেখা হয়ে গেছে।

অভিনন্দন! আমরা একটি ডেটা লগিং প্রজেক্ট তৈরি করেছি যা VEX IQ Brain (2য়) দিয়ে ত্বরণ ডেটা সংগ্রহ করে এবং SD কার্ডে একটি CSV ফাইলে সংরক্ষণ করে। এর পরে, আমরা ডেটা বিশ্লেষণের জন্য CSV ফাইলটি কীভাবে খুলতে হয় তা অন্বেষণ করব। 

# লাইব্রেরি আমদানি
থেকে vex আমদানি *

# মস্তিষ্ক ডিফল্টভাবে সংজ্ঞায়িত করা উচিত
মস্তিষ্ক = মস্তিষ্ক()
মস্তিষ্ক_ইনার্শিয়াল = ইনার্শিয়াল()

csvHeaderText = "সময়, x, y, z"
sd_file_name = "myDataPY.csv"
polling_delay_msec = 50
numOfDataEntries = 100
data_buffer = ""

# যদি SD কার্ড ঢোকানো না থাকে তবে প্রোগ্রামটি ধরে রাখুন
যদি না থাকে brain.sdcard.is_inserted():
brain.screen.set_cursor(1,1)
brain.screen.print("SD Card Missing")
while(True):
wait(5, MSEC)

# যেকোনো সেন্সর যোগ করুন & টাইমার ইনিশিয়ালাইজেশন কোড এখানে
brain.timer.clear()

# CSV তৈরি করুন হেডার
data_buffer = csvHeaderText + "\n"

# CSV ডেটা জেনারেশন
for i in range(0, numOfDataEntries):

# বাফারে ডেটা লেখার কমান্ড
data_buffer += "%1.3f" % brain.timer.value() + ","
data_buffer += "%1.3f" % brain_inertial.acceleration(XAXIS) + ","
data_buffer += "%1.3f" % brain_inertial.acceleration(YAXIS) + ","
data_buffer += "%1.3f" % brain_inertial.acceleration(ZAXIS) + "\n"

wait(polling_delay_msec, MSEC)

# SD কার্ডে ডেটা লিখুন
brain.screen.set_cursor(4,1)
যদি brain.sdcard.savefile(sd_file_name, bytearray(data_buffer,'utf-8')) == 0:
brain.screen.print("SD Write Error")
অন্যথায়:
brain.screen.print("Data Written")

ডেটা বিশ্লেষণের জন্য CSV ফাইল খোলা হচ্ছে

একবার SD কার্ডে CSV ফাইলে ডেটা লেখা হয়ে গেলে, আমরা ডেটা পড়ার এবং বিশ্লেষণের জন্য ফাইলটি খুলতে একটি স্প্রেডশীট অ্যাপ্লিকেশন ব্যবহার করতে পারি। 

দ্রষ্টব্য: সর্বাধিক সাধারণ স্প্রেডশীট অ্যাপ্লিকেশনগুলির মধ্যে দুটি হল গুগল শীট এবং মাইক্রোসফ্ট এক্সেল। এই নিবন্ধে, আমরা SD কার্ডে CSV ফাইল খুলতে Google পত্রক (ওয়েব ভিত্তিক) ব্যবহার করব। অন্যান্য অ্যাপ্লিকেশন ব্যবহার করার প্রক্রিয়া একই রকম।

  • VEX IQ Brain এর SD কার্ড স্লট থেকে SD কার্ডটি সরান৷ যদি কম্পিউটারে একটি বিল্ট-ইন মাইক্রো এসডি কার্ড স্লট থাকে, তাহলে আমরা সরাসরি সেই স্লটে এসডি কার্ড ঢোকাতে পারি। অন্যথায়, একটি SD কার্ড অ্যাডাপ্টারে SD কার্ডটি ঢোকান এবং তারপরে অ্যাডাপ্টারটিকে কম্পিউটারে সংযুক্ত করুন৷ 
  • আমাদের Google অ্যাকাউন্টে লগ ইন করুন এবং Google পত্রক খুলুন। একটি নতুন স্প্রেডশীট তৈরি করুন।
  • স্প্রেডশীটে, "ফাইল" মেনু খুলুন, "আমদানি" -> "আপলোড" -> "ব্রাউজ করুন" বোতাম নির্বাচন করুন, তারপরে কম্পিউটারে CSV ফাইলটি চয়ন করুন। CSV ফাইলটি আপলোড করার পরে, "আমদানি ডেটা" বোতামে ক্লিক করুন। ডেটা ইম্পোর্ট করার পর, CSV ফাইলে সংগৃহীত ডেটা দেখতে “খুলুন” এ ক্লিক করুন।

    প্রোজেক্টের CSV ডেটা একটি Google Sheets ডকুমেন্টে খোলা হয়েছে। সময়, X, Y, এবং Z পড়ার জন্য চারটি কলাম আছে। প্রতিটি সময় স্ট্যাম্পে ত্বরণ নথিভুক্ত করে এমন অনেক সারি ডেটা রয়েছে।

  • (ঐচ্ছিক) ডেটা বিশ্লেষণ করার একটি সহজ উপায় হল একটি গ্রাফ আঁকা, এবং তারপর ডেটার প্রবণতাগুলি সন্ধান করা৷ স্প্রেডশীটে, "সন্নিবেশ" মেনু খুলুন এবং CSV ফাইলের ডেটা ব্যবহার করে একটি গ্রাফ আঁকার জন্য "চার্ট" নির্বাচন করুন। নিচের গ্রাফটি VEX IQ ব্রেইন (দ্বিতীয়) দিয়ে সংগৃহীত ত্বরণ তথ্যের ফলাফল।

    Chart of the data is opened in Google Sheets, showing the acceleration of the X, Y, and Z axes over time. The Z value stays near negative one, and the X and Y values stay near zero.


    দ্রষ্টব্য: আমরা চার্ট সম্পাদক ব্যবহার করে একটি ভিন্ন চার্ট প্রকার নির্বাচন করতে পারি অথবা আমাদের প্রয়োজনের উপর ভিত্তি করে চার্ট সম্পাদনা করতে পারি।

এই মুহুর্তে, আমরা ডেটা লগিং প্রকল্পটি শেষ করেছি যা VEX IQ Brain (2য়) দিয়ে ডেটা সংগ্রহ করে এবং SD কার্ডে একটি CSV ফাইলে সংরক্ষণ করে৷ এছাড়াও, আমরা শিখেছি কিভাবে Google পত্রক ব্যবহার করে SD কার্ডে CSV ফাইল পড়তে হয় এবং এমনকি আরও বিশ্লেষণের জন্য একটি গ্রাফ তৈরি করতে হয়। এরপর কী? আসুন ডেটা লগিংয়ের জন্য VEX রোবট ব্যবহার করে আরও উত্তেজনাপূর্ণ পরীক্ষার পরিকল্পনা করার চেষ্টা করি, পরিবর্তিত পরিবেশগত কারণগুলি কীভাবে বিভিন্ন ধরণের ডেটাকে প্রভাবিত করে তা পর্যবেক্ষণ করতে এবং আমাদের চারপাশের বিশ্ব সম্পর্কে গভীরভাবে বোঝার চেষ্টা করি৷

For more information, help, and tips, check out the many resources at VEX Professional Development Plus

Last Updated: