การบันทึกข้อมูลด้วยสมอง VEX และเซ็นเซอร์โดยใช้ Python

การแนะนำ

ในบทความนี้ เราจะพูดถึงวิธีสร้างโปรเจ็กต์การบันทึกข้อมูลที่สั่งให้ VEX Robot รวบรวมข้อมูลด้วย VEX Brain และบันทึกเป็นไฟล์ CSV บนการ์ด SD เพื่อการวิเคราะห์ข้อมูล

การบันทึกข้อมูลเป็นเครื่องมืออันทรงพลังที่เราสามารถใช้เพื่อช่วยเหลือการวิจัยทางวิทยาศาสตร์ ดำเนินการทดลองของเราเอง และแก้ปัญหาเฉพาะได้ มีงานที่สนุกสนานและน่าตื่นเต้นมากมายที่เราสามารถขับเคลื่อน VEX Robot ให้สำเร็จได้ด้วยการบันทึกข้อมูล ต่อไปนี้เป็นตัวอย่างบางส่วน:

  • รวบรวมข้อมูลด้วย Distance Sensor เพื่อคำนวณความเร็วของหุ่นยนต์
  • ขับเคลื่อนหุ่นยนต์ไปรอบๆ ห้องเรียนและรวบรวมข้อมูลด้วย Optical Sensor เพื่อสังเกตการเปลี่ยนแปลงของแสงในสถานที่ต่างๆ
  • พาหุ่นยนต์ออกผจญภัยและบันทึกข้อมูลพิกัด GPS เพื่อสร้างแผนที่

ทักษะการเขียนโค้ดที่จำเป็นสำหรับการพัฒนาโครงการบันทึกข้อมูล

  • ใช้คำสั่งต่างๆ เพื่อรวบรวมข้อมูลด้วย VEX Brain/Sensors และเพิ่มลงในโครงสร้างข้อมูล
  • เขียนข้อมูลลงในไฟล์ Comma-Separated Values ​​(CSV) บนการ์ด SD

ฮาร์ดแวร์ที่จำเป็นสำหรับการบันทึกข้อมูล:

  • สมอง VEX (IQ, V5, EXP)
  • การ์ด SD
  • เซ็นเซอร์หนึ่งตัวหรือเซ็นเซอร์หลายตัว (อุปกรณ์เสริมตามข้อมูลที่ต้องการ)

รับข้อมูลจากเซ็นเซอร์

เราสามารถตั้งโปรแกรม VEX Robot (IQ, V5, EXP) เพื่อจับข้อมูลจากเซ็นเซอร์ต่อไปนี้:

  • เซ็นเซอร์เฉื่อย
  • เซ็นเซอร์วัดระยะ
  • ออปติคัลเซนเซอร์
  • วิชันเซนเซอร์
  • เซนเซอร์ตรวจจับการหมุน (V5, EXP)
  • เซ็นเซอร์ GPS (V5)

หมายเหตุ: สมอง VEX IQ (รุ่นที่ 2) และสมอง VEX EXP มีเซ็นเซอร์เฉื่อยในตัว เราสามารถรวบรวมข้อมูลเซ็นเซอร์เฉื่อยด้วยสมอง VEX เหล่านี้

ในบทความนี้ เราจะพัฒนาโครงการบันทึกข้อมูลที่รวบรวมข้อมูลความเร่งด้วย VEX IQ Brain (รุ่นที่ 2) และจัดเก็บไว้ในการ์ด SD 

ขั้นแรก เราต้องเขียนโปรแกรมสั้นๆ เพื่อรับค่าที่อ่านได้จาก Timer และ Inertial Sensor ที่สร้างใน VEX IQ Brain (รุ่นที่ 2)

  • ในตอนเริ่มต้นของโปรแกรมนี้ เราจะต้องนำเข้าโมดูล Python เพื่อควบคุม VEX IQ Brain (รุ่นที่ 2) และดึงข้อมูลจากโมดูลดังกล่าว ดังนั้น ให้เริ่มด้วยการเพิ่มคำแนะนำเหล่านี้ลงในโปรเจ็กต์

    # การนำเข้าไลบรารี
    จาก vex import *
    
    # Brain ควรถูกกำหนดไว้โดยค่าเริ่มต้น
    brain = Brain()
    brain_inertial = Inertial()
  • ถัดไป เพิ่มโค้ดเพื่อประกาศตัวแปร numOfDataEntries เพื่อจัดเก็บจำนวนรายการข้อมูลสำหรับการบันทึก ประกาศตัวแปร polling_delay_msec เพื่อจัดเก็บค่าช่วงเวลาสำหรับการอ่านข้อมูล และสร้างตัวแปรสตริงว่าง data_buffer เพื่อจัดเก็บ ข้อมูลที่อ่านจากเซ็นเซอร์

    จำนวนรายการข้อมูล = 100
    ระยะเวลาหน่วงการสำรวจ (มิลลิวินาที) = 50
    บัฟเฟอร์ข้อมูล = ""
  • เนื่องจากเราจะใช้ค่าปัจจุบันของตัวจับเวลาเพื่อเพิ่มการประทับเวลาให้กับข้อมูล ดังนั้นเราจึงต้องรีเซ็ตค่าตัวจับเวลากลับไปที่ 0 วินาทีก่อนเริ่มเก็บข้อมูล

    # เพิ่มโค้ดเริ่มต้นตัวจับเวลา
    brain.timer.clear()
  • ก่อนที่จะใช้คำสั่งดึงข้อมูลจาก VEX IQ Brain (ตัวที่ 2) และบันทึกข้อมูลลงในบัฟเฟอร์ เราต้องทำความเข้าใจก่อน
    คำสั่งต่อไปนี้จะเพิ่มค่าตัวจับเวลาปัจจุบันต่อท้ายตัวแปร data_buffer ในรูปแบบเฉพาะ

    มีการไฮไลต์โค้ด Python บรรทัดหนึ่งเป็นส่วนๆ เพื่ออธิบายรายละเอียดเพิ่มเติม บรรทัดโค้ดอ่านว่า data_buffer += 1.3f % brain.timer.value() + comma. ขั้นแรก ตัวดำเนินการ += จะถูกเน้นและระบุว่า "เพิ่มข้อมูลลงในสตริง data_buffer" ถัดไป สตริง 1.3f จะถูกไฮไลต์และติดป้ายกำกับว่า สตริงรูปแบบ (Format string) ถัดไป เครื่องหมายเปอร์เซ็นต์จะถูกไฮไลต์และระบุว่าเป็นตัวดำเนินการโมดูลัสของสตริง ถัดไป คำสั่ง brain.timer.value() จะถูกไฮไลต์และมีป้ายกำกับว่า "ค่าปัจจุบันของตัวจับเวลา" สุดท้ายนี้ ข้อความที่เพิ่มเครื่องหมายจุลภาคไว้ตอนท้ายจะถูกเน้นและแสดงข้อความว่า "เพิ่มเครื่องหมายจุลภาคไว้ตอนท้ายเพื่อแยกข้อมูล"

    มาแจกแจงสตริงรูปแบบ “%1.3f”: 

    • “%”: แนะนำตัวระบุการแปลง
    • “1”: ระบุจำนวนหลักขั้นต่ำที่จะปรากฏในสตริง
    • “.3”: ระบุจำนวนตำแหน่งทศนิยมที่จะรวมไว้ในตัวเลขที่จัดรูปแบบ
    • “f”: ระบุว่าค่าที่จะจัดรูปแบบเป็นตัวเลขทศนิยม

    ดังนั้นเราจึงสามารถใช้สตริงรูปแบบ “%1.3f” เพื่อจัดรูปแบบตัวเลขทศนิยมที่มีความกว้างขั้นต่ำ 1 หลักและมีทศนิยม 3 ตำแหน่ง

  • ตอนนี้เราสามารถอ่าน Timer และค่าความเร่งของ Inertial Sensor ที่สร้างขึ้นใน VEX IQ Brain (รุ่นที่ 2) แล้วจึงผนวกข้อมูลเข้ากับตัวแปร 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"

    โค้ดส่วนก่อนหน้านี้ได้รับการอธิบายอย่างละเอียดแล้ว บรรทัดแรกของ data_buffer ที่ใช้ brain.timer.value() มีป้ายกำกับว่า Add Timestamp to buffer สามบรรทัดถัดไปมีข้อความกำกับว่า "เพิ่มค่าความเร่งตามแกน X, Y และ Z ลงในบัฟเฟอร์"

    หมายเหตุ: “\n” คืออักขระขึ้นบรรทัดใหม่ เป็นการระบุว่าบรรทัดสิ้นสุดที่นี่และเป็นจุดเริ่มต้นของบรรทัดใหม่

  • จากนั้น เพื่อบันทึกรายการข้อมูลจำนวนหนึ่งลงในตัวแปร data_buffer เราสามารถใช้ สำหรับลูป เพื่อดำเนินการคำสั่งซ้ำๆ เพื่อดึงข้อมูลและผนวกข้อมูลเข้ากับตัวแปร data_buffer สำหรับการวนซ้ำจำนวนหนึ่ง กลยุทธ์ของเราคือการใช้ค่าของตัวแปร numOfDataEntries เพื่อกำหนดจำนวนการวนซ้ำ

    # การสร้างข้อมูล
    สำหรับ i ในช่วง (0, จำนวนรายการข้อมูล):
    
        # คำสั่งในการเขียนข้อมูลลงในบัฟเฟอร์
        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 เพื่อกำหนดค่าของช่วงเวลา

    # การสร้างข้อมูล
    สำหรับ 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 ต่อไป เราจะมาดูวิธีเขียนข้อมูลลงในไฟล์ CSV บนการ์ด SD

# การนำเข้าไลบรารี
จาก vex import *

# ควรนิยาม Brain โดยค่าเริ่มต้น
brain = Brain()
brain_inertial = Inertial()

numOfDataEntries = 100
polling_delay_msec = 50
data_buffer = ""

# เพิ่มโค้ดเริ่มต้นตัวจับเวลา
brain.timer.clear()

# การสร้างข้อมูล
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 เข้ากับสมอง VEX

ก่อนที่จะเขียนข้อมูลลงไฟล์ในการ์ด SD ให้ใส่การ์ด SD ลงในช่องเสียบการ์ด SD ของ VEX Brain ก่อน

ภาพแสดง V5 Brain โดยมีช่องเสียบการ์ด SD ถูกไฮไลต์ไว้ ช่องเสียบการ์ด SD อยู่ด้านข้างของตัวเครื่อง Brain ทางด้านขวาของพอร์ต USB-C

หมายเหตุ: ฟอร์แมตการ์ด SD เป็น FAT32 เพื่อเขียนข้อมูล เราขอแนะนำให้ใช้การ์ด SD ที่มีขนาด 32GB หรือน้อยกว่า

เพื่อให้แน่ใจว่าการเขียนข้อมูลลงไฟล์ในการ์ด SD สามารถทำได้ภายใต้สภาวะที่เหมาะสม เราจะต้องเพิ่มโค้ดเพื่อตรวจสอบว่าใส่การ์ด SD ลงใน VEX IQ Brain (รุ่นที่ 2) อย่างถูกต้องหรือไม่

  • ใช้ฟังก์ชัน brain.sdcard.is_inserted() เพื่อตรวจสอบว่าเสียบการ์ด SD แล้วหรือไม่ หากไม่ได้ใส่การ์ด SD ให้แสดงข้อความที่เกี่ยวข้องบนหน้าจอ VEX IQ Brain และกดโปรแกรมค้างไว้

    # หยุดโปรแกรมหากไม่ได้เสียบการ์ด SD
    if not brain.sdcard.is_inserted():
        brain.screen.set_cursor(1,1)
        brain.screen.print("การ์ด SD หายไป")
        while(True):
            wait(5, MSEC)


    หมายเหตุ: ฟังก์ชัน brain.sdcard.is_inserted() จะ คืนค่า True หากเสียบการ์ด SD เข้าไปใน Brain

การเขียนข้อมูลลงในไฟล์ CSV บนการ์ด SD

จนถึงตอนนี้โปรแกรมของเราสามารถรวบรวมข้อมูลด้วย VEX IQ Brain (2nd gen) ได้ เพื่อให้โครงการบันทึกข้อมูลเสร็จสมบูรณ์ เราจำเป็นต้องเขียนข้อมูลลงในไฟล์ Comma-Separated Values ​​(CSV) บนการ์ด SD เพื่อการตรวจสอบและวิเคราะห์ในอนาคต

  • เมื่อเขียนข้อมูลประเภทต่างๆ ลงในไฟล์ CSV เราต้องการทราบว่าแต่ละคอลัมน์มีข้อมูลประเภทใด ในการทำเช่นนี้ เราสามารถเพิ่มข้อความส่วนหัวของไฟล์ CSV ลงในตัวแปร data_buffer ก่อนบันทึกข้อมูล
    ดังนั้น ให้เพิ่มโค้ดเพื่อประกาศตัวแปร csvHeaderText เพื่อเก็บข้อความส่วนหัวของไฟล์ CSV เพื่อระบุชื่อคอลัมน์สำหรับไฟล์ CSV และประกาศตัวแปร sd_file_name เพื่อเก็บชื่อไฟล์ CSV ที่จะเขียนลงในการ์ด SD

    csvHeaderText = "เวลา, x, y, z"
    sd_file_name = "myDataPY.csv"

หมายเหตุ: ตรวจสอบให้แน่ใจว่าส่วนหัวอยู่ในลำดับเดียวกันกับข้อมูลที่จัดเก็บไว้ในตัวแปร data_buffer

  • ถัดไป ให้เพิ่มข้อความส่วนหัวของไฟล์ CSV ลงในสตริง data_buffer ก่อนลูป for สำหรับการรวบรวมข้อมูล

    # สร้างส่วนหัว 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)
  • ก่อนที่จะเขียนข้อมูลลงไฟล์ในการ์ด SD ให้เราทำความเข้าใจวิธีใช้ฟังก์ชัน brain.sdcard.savefile() ก่อน

    มีการไฮไลต์โค้ด Python บรรทัดหนึ่งเป็นส่วนๆ เพื่ออธิบายรายละเอียดเพิ่มเติม บรรทัดโค้ดอ่านว่า brain.sdcard.savefile(sd_file_name, bytearray(data_buffer, 'utf-8')) ขั้นแรก ส่วน brain.sdcard.savefile จะถูกไฮไลต์และมีป้ายกำกับว่า "บันทึกอาร์เรย์ไบต์ลงในไฟล์ที่มีชื่อบนการ์ด SD" ถัดไป ส่วน sd_file_name จะถูกไฮไลต์และระบุชื่อว่า Filename สุดท้ายนี้ ไบต์อาร์เรย์ (data_buffer, 'utf-8') ที่อยู่ตอนท้ายจะถูกไฮไลต์และติดป้ายกำกับว่า Buffer


    คำสั่งนี้จะเขียนข้อมูลที่เก็บไว้ในตัวแปร data_buffer ลงในไฟล์ CSV ที่มีชื่อบนการ์ด SD
    มาแยกย่อยกัน:

    • brain.sdcard.savefile(): ฟังก์ชั่นบันทึกอาร์เรย์ไบต์ลงในไฟล์ที่มีชื่อบนการ์ด SD ฟังก์ชันส่งคืนจำนวนไบต์ที่เขียนลงในไฟล์
    • sd_file_name: พารามิเตอร์แรกของฟังก์ชัน ระบุชื่อไฟล์ที่จะเขียน ในโปรเจ็กต์นี้ ชื่อไฟล์จะถูกจัดเก็บไว้ในตัวแปร sd_file_name
    • bytearray(datat_buffer,'utf-8'): พารามิเตอร์ตัวที่สองของฟังก์ชัน แสดงถึง bytearray ที่จะเขียนลงในไฟล์
      •  
        • bytearray(): วิธีการสร้าง bytearray ที่ไม่แน่นอน ในคำสั่งนี้ เราใช้มันเพื่อแปลงสตริงเป็นไบต์เทียร์เรย์โดยระบุการเข้ารหัส
        • data_buffer: พารามิเตอร์แรกของวิธีการ บ่งชี้แหล่งที่มาที่จะแปลงเป็นไบต์เทียร์เรย์ ในโปรเจ็กต์นี้ แหล่งที่มาคือข้อมูลที่จัดเก็บไว้ในตัวแปร data_buffer 
        • 'utf-8': พารามิเตอร์ตัวที่สองของเมธอด ระบุการเข้ารหัสที่ระบุซึ่งใช้ในการเข้ารหัสสตริง การเข้ารหัสคือ 'utf-8' ในคำสั่งนี้ 
  • หลังจาก สำหรับลูป สำหรับการรวบรวมข้อมูล ให้ใช้ฟังก์ชัน brain.sdcard.savefile() เพื่อเขียนข้อมูลที่จัดเก็บไว้ในตัวแปร data_buffer ไปยังไฟล์ CSV บนการ์ด SD นอกจากนี้ ให้เพิ่มโค้ดเพื่อตรวจสอบค่าที่ส่งคืนจากฟังก์ชัน brain.sdcard.savefile() เพื่อตรวจสอบว่าข้อมูลถูกเขียนลงไฟล์สำเร็จหรือไม่ และแสดงข้อความที่เกี่ยวข้องบนหน้าจอ VEX IQ Brain เพื่อรับผลตอบรับแบบเรียลไทม์

    # การสร้างข้อมูล CSV
    สำหรับ 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)
    
    # เขียนข้อมูลลงในการ์ด SD
    brain.screen.set_cursor(4,1)
    if brain.sdcard.savefile(sd_file_name, bytearray(data_buffer,'utf-8')) == 0:
        brain.screen.print("เกิดข้อผิดพลาดในการเขียนข้อมูลลง SD")
    else:
        brain.screen.print("เขียนข้อมูลสำเร็จ")


    หมายเหตุ: ฟังก์ชัน brain.sdcard.savefile() จะส่งคืนจำนวนไบต์ที่เขียนลงในไฟล์ ในโปรเจ็กต์นี้ เราใช้มันเพื่อเขียนข้อมูลที่รวบรวมไปยังไฟล์ CSV ดังนั้นจำนวนไบต์ที่เขียนลงในไฟล์จะต้องมากกว่าศูนย์ กล่าวอีกนัยหนึ่ง หากฟังก์ชัน brain.sdcard.savefile() ส่งคืนค่า 0 เราสามารถสรุปได้ว่าข้อมูลไม่ได้ถูกเขียนลงไฟล์สำเร็จ มิเช่นนั้น ข้อมูลจะถูกเขียนลงในไฟล์แล้ว

ยินดีด้วย! เราได้พัฒนาโครงการบันทึกข้อมูลที่รวบรวมข้อมูลการเร่งความเร็วด้วย VEX IQ Brain (รุ่นที่ 2) และจัดเก็บไว้ในไฟล์ CSV บนการ์ด SD ต่อไป เราจะมาดูวิธีเปิดไฟล์ CSV เพื่อการวิเคราะห์ข้อมูล 

# การนำเข้าไลบรารี
จาก vex import *

# ควรนิยาม Brain โดยค่าเริ่มต้น
brain = Brain()
brain_inertial = Inertial()

csvHeaderText = "time, x, y, z"
sd_file_name = "myDataPY.csv"
polling_delay_msec = 50
numOfDataEntries = 100
data_buffer = ""

# หยุดโปรแกรมหากไม่ได้เสียบการ์ด SD
if not 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)
if brain.sdcard.savefile(sd_file_name, bytearray(data_buffer,'utf-8')) == 0:
    brain.screen.print("เกิดข้อผิดพลาดในการเขียนข้อมูลลง SD")
else:
    brain.screen.print("เขียนข้อมูลสำเร็จ")

 

การเปิดไฟล์ CSV เพื่อการวิเคราะห์ข้อมูล

เมื่อเขียนข้อมูลลงในไฟล์ CSV บนการ์ด SD แล้ว เราสามารถใช้แอปพลิเคชันสเปรดชีตเพื่อเปิดไฟล์สำหรับอ่านและวิเคราะห์ข้อมูลได้ 

หมายเหตุ: แอปพลิเคชันสเปรดชีตที่พบบ่อยที่สุด 2 รายการคือ Google ชีตและ Microsoft Excel ในบทความนี้ เราจะใช้ Google ชีต (บนเว็บ) เพื่อเปิดไฟล์ CSV บนการ์ด SD ขั้นตอนการใช้งานแอพพลิเคชั่นอื่นก็คล้ายกัน

  • ถอดการ์ด SD ออกจากช่องเสียบการ์ด SD ของ VEX IQ Brain หากคอมพิวเตอร์มีช่องเสียบการ์ด Micro SD ในตัว เราสามารถใส่การ์ด SD ลงในช่องนั้นได้โดยตรง มิฉะนั้น ให้เสียบการ์ด SD ลงในอะแดปเตอร์การ์ด SD จากนั้นเชื่อมต่ออะแดปเตอร์เข้ากับคอมพิวเตอร์ 
  • ลงชื่อเข้าใช้บัญชี Google ของเราและเปิด Google ชีต สร้างสเปรดชีตใหม่
  • ในสเปรดชีต ให้เปิดเมนู “ไฟล์” เลือก “นำเข้า” -> “อัปโหลด” -> “เรียกดู” จากนั้นเลือกไฟล์ CSV บนคอมพิวเตอร์ หลังจากอัปโหลดไฟล์ CSV แล้ว ให้คลิกปุ่ม “นำเข้าข้อมูล” หลังจากนำเข้าข้อมูลแล้ว คลิก “เปิดทันที” เพื่อดูข้อมูลที่รวบรวมไว้ในไฟล์ CSV

    ข้อมูล CSV ของโปรเจ็กต์ถูกเปิดในเอกสาร Google Sheets แล้ว มีสี่คอลัมน์ที่แสดงค่าเวลา, X, Y และ Z และมีข้อมูลหลายแถวที่บันทึกค่าความเร่ง ณ แต่ละช่วงเวลา

  • (ไม่บังคับ) วิธีง่ายๆ วิธีหนึ่งในการวิเคราะห์ข้อมูลคือการวาดกราฟ จากนั้นมองหาแนวโน้มของข้อมูล ในสเปรดชีต ให้เปิดเมนู “แทรก” และเลือก “แผนภูมิ” เพื่อวาดกราฟโดยใช้ข้อมูลในไฟล์ CSV กราฟต่อไปนี้เป็นผลลัพธ์ของข้อมูลความเร่งที่รวบรวมได้จาก VEX IQ Brain (รุ่นที่ 2)

    แผนภูมิข้อมูลถูกเปิดใน Google Sheets ซึ่งแสดงความเร่งของแกน X, Y และ Z เมื่อเวลาผ่านไป ค่า Z จะอยู่ใกล้ลบหนึ่ง ในขณะที่ค่า X และ Y จะอยู่ใกล้ศูนย์


    หมายเหตุ: เราสามารถใช้ โปรแกรมแก้ไขแผนภูมิ เพื่อเลือกประเภทแผนภูมิที่แตกต่างกัน หรือแก้ไขแผนภูมิตามความต้องการของเราได้

เมื่อถึงจุดนี้ เราได้เสร็จสิ้นโครงการบันทึกข้อมูลที่รวบรวมข้อมูลด้วย VEX IQ Brain (รุ่นที่ 2) และบันทึกเป็นไฟล์ CSV บนการ์ด SD นอกจากนี้เรายังได้เรียนรู้วิธีอ่านไฟล์ CSV บนการ์ด SD โดยใช้ Google ชีต และยังได้สร้างกราฟสำหรับการวิเคราะห์เพิ่มเติมอีกด้วย อะไรต่อไป? ให้เราลองวางแผนการทดลองที่น่าตื่นเต้นมากขึ้นโดยใช้ VEX Robot สำหรับการบันทึกข้อมูล เพื่อสังเกตว่าปัจจัยด้านสิ่งแวดล้อมที่เปลี่ยนแปลงส่งผลต่อข้อมูลประเภทต่างๆ อย่างไร และทำความเข้าใจโลกรอบตัวเราให้ลึกซึ้งยิ่งขึ้น

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

Last Updated: