Введение
В этой статье мы обсудим, как создать проект регистрации данных, который предписывает роботу 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) и получить из него данные. Итак, начните с добавления этих инструкций в проект.
- Затем добавьте код для объявления переменной
numOfDataEntries
для хранения количества записей данных для записи, объявите переменнуюpolling_delay_msec
для хранения значения временного интервала для чтения данных и создайте пустую строковую переменнуюdata_buffer
для хранения данные, считанные с датчика. - Поскольку мы будем использовать текущее значение таймера для добавления отметки времени к данным, нам необходимо сбросить значение таймера обратно на 0 секунд, прежде чем начать сбор данных.
- Прежде чем использовать инструкцию, которая извлекает данные из VEX IQ Brain (2-й) и записывает данные в буфер, нам необходимо сначала понять ее.
Следующая инструкция добавляет текущее значение таймера к переменнойdata_buffer
в определенном формате.Давайте разберем строку формата
«%1.3f»
:- «%»: представляет спецификатор преобразования.
- «1»: указывает минимальное количество цифр, которое должно присутствовать в строке.
- «.3»: указывает количество десятичных знаков, включаемых в форматируемое число.
- «f»: указывает, что форматируемое значение представляет собой число с плавающей запятой.
Таким образом, мы можем использовать строку формата «%1.3f» для форматирования числа с плавающей запятой с минимальной шириной в 1 цифру и точностью до 3 десятичных знаков.
- Теперь мы можем прочитать значение таймера и ускорения инерционного датчика, встроенного в мозг VEX IQ (2-й), а затем добавить данные в переменную
data_buffer
в указанном формате.Примечание: «\n» — это символ новой строки. Это указывает на то, что линия заканчивается здесь и начинается новая строка.
- Затем, чтобы записать определенное количество записей данных в переменную
data_buffer
, мы можем использовать циклfor
для многократного выполнения инструкций, которые извлекают данные и добавляют данные в переменнуюdata_buffer
для нескольких итераций. Наша стратегия — использовать значение переменнойnumOfDataEntries
для определения количества итераций.
- Пока что наша программа записывает данные настолько быстро, насколько это возможно. Однако мы хотим записывать данные через определенные промежутки времени. Следовательно, мы можем использовать функцию
wait()
в циклеfor
, чтобы приостановить программу и добавить определенный интервал времени между двумя показаниями. Мы используем значение переменнойpolling_delay_msec
для определения значения временного интервала.
Поздравляем! Мы завершили программу получения показаний (данных об ускорении) от инерционного датчика, встроенного в мозг VEX. Далее мы рассмотрим, как записать данные в файл CSV на SD-карте.
Подключение SD-карты к VEX Brain
Прежде чем записывать данные в файл на SD-карте, сначала вставьте SD-карту в слот для SD-карты VEX Brain.
Примечание: Отформатируйте SD-карту в FAT32 для записи данных. Мы рекомендуем использовать SD-карты объемом 32 ГБ или меньше.
Чтобы гарантировать, что запись данных в файл на SD-карте может выполняться при соответствующих условиях, нам нужно будет добавить код, проверяющий, правильно ли вставлена SD-карта в VEX IQ Brain (2nd).
- Используйте функцию
()
, чтобы проверить, вставлена ли SD-карта. Если SD-карта не вставлена, отобразите соответствующее сообщение на экране VEX IQ Brain Screen и удерживайте программу.
Примечание: функция()
возвращает True, если SD-карта вставлена в Brain.
Запись данных в файл CSV на SD-карте.
На данный момент наша программа может собирать данные с помощью VEX IQ Brain (2nd). Чтобы завершить проект регистрации данных, нам необходимо записать данные в файл значений, разделенных запятыми (CSV) на SD-карте для дальнейшего изучения и анализа.
- При записи различных типов данных в файл CSV мы хотим знать, какой тип данных содержит каждый столбец. Для этого мы можем добавить текст заголовка CSV к переменной
data_buffer
перед записью данных.
Таким образом, добавьте код для объявления переменнойcsvHeaderText
для хранения текста заголовка CSV, чтобы указать имена столбцов для файла CSV, и объявите переменнуюsd_file_name
для хранения имени файла CSV для записи в SD Card.
Примечание: Убедитесь, что заголовки расположены в том же порядке, что и данные, хранящиеся в переменной data_buffer
.
- Затем добавьте текст заголовка CSV к строке
data_buffer
перед строкойfor цикла
для сбора данных.
- Прежде чем записывать данные в файл на SD-карте, давайте сначала разберемся, как использовать функцию
Brain.sdcard.savefile()
.
Эта инструкция записывает данные, хранящиеся в переменной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, чтобы получить реальную информацию. обратная связь по времени.
: ФункцияBrain.sdcard.savefile()
возвращает количество байтов, записанных в файл. В этом проекте мы используем его для записи собранных данных в файл CSV, поэтому количество байтов, записываемых в файл, должно быть больше нуля. Другими словами, если функцияBrain.sdcard.savefile()
возвращает 0, мы можем заключить, что данные не были успешно записаны в файл. В противном случае данные были записаны в файл.
Поздравляем! Мы разработали проект регистрации данных, который собирает данные об ускорении с помощью VEX IQ Brain (2nd) и сохраняет их в файл CSV на SD-карте. Далее мы рассмотрим, как открыть файл CSV для анализа данных.
Открытие файла CSV для анализа данных
После того, как данные записаны в файл CSV на SD-карте, мы можем использовать приложение для работы с электронными таблицами, чтобы открыть файл для чтения и анализа данных.
Примечание. Два наиболее распространенных приложения для работы с электронными таблицами — это Google Sheets и Microsoft Excel. В этой статье мы будем использовать Google Таблицы (веб-интерфейс), чтобы открыть файл CSV на SD-карте. Процесс использования других приложений аналогичен.
- Извлеките SD-карту из слота SD-карты VEX IQ Brain. Если в компьютере есть встроенный слот для карты Micro SD, мы можем вставить SD-карту непосредственно в этот слот. В противном случае вставьте SD-карту в адаптер SD-карты, а затем подключите адаптер к компьютеру.
- Войдите в нашу учетную запись Google и откройте Google Таблицы. Создайте новую электронную таблицу.
- В электронной таблице откройте меню «Файл» , выберите «>» «Загрузить» кнопку «> Обзор» , затем выберите файлна компьютере. После загрузки CSV-файла нажмите кнопку «Импортировать данные». После импорта данных нажмите «Открыть сейчас» чтобы просмотреть собранные данные в файле CSV.
- (Необязательно) Один из простых способов анализа данных — нарисовать график, а затем найти тенденции в данных. В электронной таблице откройте меню «Вставить» и выберите «Диаграмма» , чтобы построить график, используя данные из файла CSV. Следующий график представляет собой результат данных ускорения, собранных с помощью VEX IQ Brain (2nd).
Примечание: Мы можем использовать редактор диаграмм , чтобы выбрать другой тип диаграммы или отредактировать диаграмму в соответствии с нашими потребностями.
На данный момент мы завершили проект регистрации данных, который собирает данные с помощью VEX IQ Brain (2nd) и сохраняет их в файле CSV на SD-карте. Также мы научились читать CSV-файл на SD-карте с помощью Google Sheets и даже создавать график для дальнейшего анализа. Что дальше? Давайте попробуем спланировать более увлекательные эксперименты с использованием робота VEX для регистрации данных, понаблюдать, как изменяющиеся факторы окружающей среды влияют на различные типы данных, и получить более глубокое понимание окружающего нас мира.