Регистрация данных с помощью VEX Brain/сенсоров (версия Python)

Введение

В этой статье мы обсудим, как создать проект регистрации данных, который предписывает роботу VEX собирать данные с помощью VEX Brain и сохранять их в файле CSV на SD-карте для анализа данных.

Регистрация данных — это мощный инструмент, который мы можем использовать для содействия научным исследованиям, проведения собственных экспериментов и решения конкретных проблем. Существуют различные забавные и захватывающие задачи, которые мы можем выполнить с помощью робота VEX с помощью регистрации данных. Ниже приведены некоторые примеры:

  • Сбор данных с помощью датчика расстояния для расчета скорости робота.
  • Вождение робота по классу и сбор данных с помощью оптического датчика для наблюдения за изменениями освещенности в различных местах.
  • Отправляйтесь с роботом в приключение и записывайте данные координат GPS для создания карты.

Навыки кодирования, необходимые для разработки проекта регистрации данных

  • Используйте различные команды для сбора данных с помощью VEX Brain/Sensors и добавления их в структуру данных.
  • Запишите данные в файл значений, разделенных запятыми (CSV) на SD-карте.

Оборудование, необходимое для регистрации данных:

  • Мозг VEX (IQ, V5, EXP)
  • SD-карта
  • Датчик или несколько датчиков (опционально, в зависимости от необходимых данных)

Получение данных от датчика

Мы можем запрограммировать робота VEX (IQ, V5, EXP) для сбора данных со следующих датчиков:

  • Инерционный датчик
  • Датчик расстояния
  • Оптический датчик
  • Датчик зрения
  • Датчик вращения (V5, EXP)
  • GPS-датчик (V5)

Примечание: Мозг VEX IQ (2-го поколения) и Мозг VEX EXP имеют встроенный инерционный датчик. Мы можем собрать данные инерциального датчика с помощью этих VEX Брайанов.

В этой статье мы разработаем проект регистрации данных, который собирает данные об ускорении с помощью VEX IQ Brain (2nd) и сохраняет их на SD-карту. 

Во-первых, нам нужно написать короткую программу для получения показаний таймера и инерционного датчика, встроенных в мозг VEX IQ (2-й).

  • В начале этой программы нам нужно будет импортировать модули Python для управления VEX IQ Brain (2nd) и получить из него данные. Итак, начните с добавления этих инструкций в проект.

    image5.png

  • Затем добавьте код для объявления переменной numOfDataEntries для хранения количества записей данных для записи, объявите переменную polling_delay_msec для хранения значения временного интервала для чтения данных и создайте пустую строковую переменную data_buffer для хранения данные, считанные с датчика.

    изображение9.png

  • Поскольку мы будем использовать текущее значение таймера для добавления отметки времени к данным, нам необходимо сбросить значение таймера обратно на 0 секунд, прежде чем начать сбор данных.

    изображение13.png

  • Прежде чем использовать инструкцию, которая извлекает данные из VEX IQ Brain (2-й) и записывает данные в буфер, нам необходимо сначала понять ее.
    Следующая инструкция добавляет текущее значение таймера к переменной data_buffer в определенном формате.

    изображение14.png

    Давайте разберем строку формата «%1.3f»

    • «%»: представляет спецификатор преобразования.
    • «1»: указывает минимальное количество цифр, которое должно присутствовать в строке.
    • «.3»: указывает количество десятичных знаков, включаемых в форматируемое число.
    • «f»: указывает, что форматируемое значение представляет собой число с плавающей запятой.

    Таким образом, мы можем использовать строку формата «%1.3f» для форматирования числа с плавающей запятой с минимальной шириной в 1 цифру и точностью до 3 десятичных знаков.

  • Теперь мы можем прочитать значение таймера и ускорения инерционного датчика, встроенного в мозг VEX IQ (2-й), а затем добавить данные в переменную data_buffer в указанном формате.

    изображение7.png

    Примечание: «\n» — это символ новой строки. Это указывает на то, что линия заканчивается здесь и начинается новая строка.

  • Затем, чтобы записать определенное количество записей данных в переменную data_buffer , мы можем использовать цикл for для многократного выполнения инструкций, которые извлекают данные и добавляют данные в переменную data_buffer для нескольких итераций. Наша стратегия — использовать значение переменной numOfDataEntries для определения количества итераций.

    изображение12.png

  • Пока что наша программа записывает данные настолько быстро, насколько это возможно. Однако мы хотим записывать данные через определенные промежутки времени. Следовательно, мы можем использовать функцию wait() в цикле for , чтобы приостановить программу и добавить определенный интервал времени между двумя показаниями. Мы используем значение переменной polling_delay_msec для определения значения временного интервала.

    image8.png

Поздравляем! Мы завершили программу получения показаний (данных об ускорении) от инерционного датчика, встроенного в мозг VEX. Далее мы рассмотрим, как записать данные в файл CSV на SD-карте.

изображение1.png




Подключение SD-карты к VEX Brain

Прежде чем записывать данные в файл на SD-карте, сначала вставьте SD-карту в слот для SD-карты VEX Brain.

Выноска слота для SD-карты EXP (1).png

Примечание: Отформатируйте SD-карту в FAT32 для записи данных. Мы рекомендуем использовать SD-карты объемом 32 ГБ или меньше.

Чтобы гарантировать, что запись данных в файл на SD-карте может выполняться при соответствующих условиях, нам нужно будет добавить код, проверяющий, правильно ли вставлена ​​SD-карта в VEX IQ Brain (2nd).

  • Используйте функцию () , чтобы проверить, вставлена ​​ли SD-карта. Если SD-карта не вставлена, отобразите соответствующее сообщение на экране VEX IQ Brain Screen и удерживайте программу.

    image17.png


    Примечание: функция () возвращает True, если SD-карта вставлена ​​в Brain.

Запись данных в файл CSV на SD-карте.

На данный момент наша программа может собирать данные с помощью VEX IQ Brain (2nd). Чтобы завершить проект регистрации данных, нам необходимо записать данные в файл значений, разделенных запятыми (CSV) на SD-карте для дальнейшего изучения и анализа.

  • При записи различных типов данных в файл CSV мы хотим знать, какой тип данных содержит каждый столбец. Для этого мы можем добавить текст заголовка CSV к переменной data_buffer перед записью данных.
    Таким образом, добавьте код для объявления переменной csvHeaderText для хранения текста заголовка CSV, чтобы указать имена столбцов для файла CSV, и объявите переменную sd_file_name для хранения имени файла CSV для записи в SD Card.

    изображение10.png

Примечание: Убедитесь, что заголовки расположены в том же порядке, что и данные, хранящиеся в переменной data_buffer.

  • Затем добавьте текст заголовка CSV к строке data_buffer перед строкой for цикла для сбора данных.

    изображение15.png

  • Прежде чем записывать данные в файл на SD-карте, давайте сначала разберемся, как использовать функцию Brain.sdcard.savefile().

    изображение4.png


    Эта инструкция записывает данные, хранящиеся в переменной data_buffer , в именованный файл CSV на SD-карте.
    Давайте разберемся:
    • Brain.sdcard.savefile(): функция сохраняет байтовый массив в именованный файл на SD-карте. Функция возвращает количество байт, записанных в файл.

    • sd_file_name: первый параметр функции. Указывает имя файла для записи. В этом проекте имя файла хранится в переменной sd_file_name.

    • bytearray(datat_buffer,'utf-8'): второй параметр функции. Представляет массив байтов, который будет записан в файл.

        • bytearray(): метод создает изменяемый байтовый массив. В этой инструкции мы используем ее для преобразования строки в массив байтов, указав кодировку.
        • data_buffer: первый параметр метода. Указывает источник, который необходимо преобразовать в байтовый массив. В этом проекте источником являются данные, хранящиеся в переменной data_buffer. 
        • 'utf-8': второй параметр метода. Указывает указанную кодировку, используемую для кодирования строки. В этой инструкции используется кодировка «utf-8». 
  • После для цикла для сбора данных используйте функцию Brain.sdcard.savefile() , чтобы записать данные, хранящиеся в переменной data_buffer , в файл CSV на SD-карте. Кроме того, добавьте код для проверки возвращаемого значения из функции Brain.sdcard.savefile() , чтобы проверить, были ли данные успешно записаны в файл, и отобразите соответствующее сообщение на экране VEX IQ Brain Screen, чтобы получить реальную информацию. обратная связь по времени.

    image6.png


    : Функция Brain.sdcard.savefile() возвращает количество байтов, записанных в файл. В этом проекте мы используем его для записи собранных данных в файл CSV, поэтому количество байтов, записываемых в файл, должно быть больше нуля. Другими словами, если функция Brain.sdcard.savefile() возвращает 0, мы можем заключить, что данные не были успешно записаны в файл. В противном случае данные были записаны в файл.

Поздравляем! Мы разработали проект регистрации данных, который собирает данные об ускорении с помощью VEX IQ Brain (2nd) и сохраняет их в файл CSV на SD-карте. Далее мы рассмотрим, как открыть файл CSV для анализа данных. 

изображение16.png

Открытие файла CSV для анализа данных

После того, как данные записаны в файл CSV на SD-карте, мы можем использовать приложение для работы с электронными таблицами, чтобы открыть файл для чтения и анализа данных. 

Примечание. Два наиболее распространенных приложения для работы с электронными таблицами — это Google Sheets и Microsoft Excel. В этой статье мы будем использовать Google Таблицы (веб-интерфейс), чтобы открыть файл CSV на SD-карте. Процесс использования других приложений аналогичен.

  • Извлеките SD-карту из слота SD-карты VEX IQ Brain. Если в компьютере есть встроенный слот для карты Micro SD, мы можем вставить SD-карту непосредственно в этот слот. В противном случае вставьте SD-карту в адаптер SD-карты, а затем подключите адаптер к компьютеру. 
  • Войдите в нашу учетную запись Google и откройте Google Таблицы. Создайте новую электронную таблицу.
  • В электронной таблице откройте меню «Файл» , выберите «>» «Загрузить» кнопку «> Обзор» , затем выберите файлна компьютере. После загрузки CSV-файла нажмите кнопку «Импортировать данные». После импорта данных нажмите «Открыть сейчас» чтобы просмотреть собранные данные в файле CSV.

    изображение11.png

  • (Необязательно) Один из простых способов анализа данных — нарисовать график, а затем найти тенденции в данных. В электронной таблице откройте меню «Вставить» и выберите «Диаграмма» , чтобы построить график, используя данные из файла CSV. Следующий график представляет собой результат данных ускорения, собранных с помощью VEX IQ Brain (2nd).

    image3.png


    Примечание: Мы можем использовать редактор диаграмм , чтобы выбрать другой тип диаграммы или отредактировать диаграмму в соответствии с нашими потребностями.

На данный момент мы завершили проект регистрации данных, который собирает данные с помощью VEX IQ Brain (2nd) и сохраняет их в файле CSV на SD-карте. Также мы научились читать CSV-файл на SD-карте с помощью Google Sheets и даже создавать график для дальнейшего анализа. Что дальше? Давайте попробуем спланировать более увлекательные эксперименты с использованием робота VEX для регистрации данных, понаблюдать, как изменяющиеся факторы окружающей среды влияют на различные типы данных, и получить более глубокое понимание окружающего нас мира.

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

Last Updated: