Introducción
En este artículo, analizaremos cómo crear un proyecto de registro de datos que indique al robot VEX que recopile datos con el VEX Brain y los guarde en un archivo CSV en la tarjeta SD para su análisis.
El registro de datos es una herramienta poderosa que podemos utilizar para ayudar en la investigación científica, realizar nuestros propios experimentos y resolver problemas específicos. Hay varias tareas divertidas y emocionantes que podemos realizar con el robot VEX mediante el registro de datos. Los siguientes son algunos ejemplos:
- Recopilación de datos con el sensor de distancia para calcular la velocidad del robot.
- Conducir el robot por el aula y recopilar datos con el sensor óptico para observar cambios de luz en varios lugares.
- Llevar al robot a una aventura y registrar datos de coordenadas GPS para crear un mapa.
Habilidades de codificación necesarias para desarrollar un proyecto de registro de datos
- Utilice varios comandos para recopilar datos con VEX Brain/Sensors y agregarlos a una estructura de datos.
- Escriba los datos en un archivo de valores separados por comas (CSV) en la tarjeta SD.
Hardware necesario para el registro de datos:
- Un cerebro VEX (IQ, V5, EXP)
- Una tarjeta SD
- Un Sensor o múltiples Sensores (Opcional, según los datos requeridos)
Obtener datos del sensor
Podemos programar el Robot VEX (IQ, V5, EXP) para capturar los datos de los siguientes sensores:
- Sensor inercial
- Sensor de distancia
- Sensor óptico
- Sensor de visión
- Sensor de rotación (V5, EXP)
- Sensor GPS (V5)
Nota: el VEX IQ (segunda generación) Brain y el VEX EXP Brain tienen un sensor inercial incorporado. Podemos recopilar los datos del sensor inercial con estos cerebros VEX.
En este artículo, desarrollaremos un proyecto de registro de datos que recopila los datos de aceleración con el VEX IQ Brain (segunda generación) y los almacena en una tarjeta SD.
Primero, necesitamos escribir un programa corto para obtener lecturas del temporizador y el sensor inercial integrados en el VEX IQ Brain (segunda generación).
- Al comienzo de este programa, necesitaremos importar los módulos de Python para controlar VEX IQ Brain (segunda generación) y obtener los datos del mismo. Por lo tanto, comience agregando estas instrucciones al proyecto.
- A continuación, agregue el código para declarar una variable
numOfDataEntries
para almacenar el número de entradas de datos para registrar, declare una variablepolling_delay_msec
para almacenar el valor del intervalo de tiempo para leer datos y cree una variable de cadena vacíadata_buffer
para almacenar los datos leídos del sensor. - Como usaremos el valor actual del temporizador para agregar la marca de tiempo a los datos, debemos restablecer el valor del temporizador a 0 segundos antes de comenzar a recopilar datos.
- Antes de usar la instrucción que recupera los datos del VEX IQ Brain (segundo) y registra los datos en el búfer, primero debemos comprenderla.
La siguiente instrucción agrega el valor del temporizador actual a la variabledata_buffer
en un formato específico.Analicemos la cadena de formato
“%1.3f”
:- “%”: Introduce el especificador de conversión.
- “1”: Indica el número mínimo de dígitos que estarán presentes en la cadena.
- “.3”: Especifica el número de decimales que se incluirán en el número formateado.
- “f”: Indica que el valor a formatear es un número de punto flotante.
Por lo tanto, podemos usar la cadena de formato "%1.3f" para formatear un número de punto flotante con un ancho mínimo de 1 dígito y una precisión de 3 decimales.
- Ahora, podemos leer el temporizador y el valor de aceleración del sensor inercial integrado en el VEX IQ Brain (segunda generación) y luego agregar los datos a la variable
data_buffer
en el formato especificado.Nota: “\n” es el carácter de Nueva Línea. Indica que la línea termina aquí y el comienzo de una nueva línea.
- Luego, para registrar una cierta cantidad de entradas de datos en la variable
data_buffer
, podemos usar un buclefor
para ejecutar repetidamente las instrucciones que recuperan los datos y agregar los datos a la variabledata_buffer
durante varias iteraciones. Nuestra estrategia es utilizar el valor de la variablenumOfDataEntries
para determinar el número de iteraciones.
- Hasta ahora, nuestro programa registra datos lo más rápido posible. Sin embargo, queremos registrar datos en intervalos de tiempo específicos. Por lo tanto, podemos usar una función
wait()
en el buclefor
para pausar el programa y agregar el intervalo de tiempo específico entre dos lecturas. Usamos el valor de la variablepolling_delay_msec
para determinar el valor del intervalo de tiempo.
¡Felicidades! Hemos terminado el programa para obtener lecturas (los datos de aceleración) del sensor inercial integrado en el VEX Brain. A continuación, exploraremos cómo escribir los datos en un archivo CSV en la tarjeta SD.
Conexión de la tarjeta SD al VEX Brain
Antes de escribir los datos en un archivo en una tarjeta SD, primero inserte la tarjeta SD en la ranura para tarjetas SD del VEX Brain.
Nota: Formatee la tarjeta SD en FAT32 para escribir datos. Recomendamos utilizar tarjetas SD de 32 GB o menos.
Para garantizar que la escritura de datos en un archivo en la tarjeta SD se pueda realizar en las condiciones adecuadas, necesitaremos agregar código para verificar si la tarjeta SD está insertada correctamente en el VEX IQ Brain (segunda generación).
- Utilice la función
Brain.sdcard.is_inserted()
para comprobar si la tarjeta SD está insertada. Si la tarjeta SD no está insertada, muestre el mensaje correspondiente en la pantalla VEX IQ Brain y mantenga presionado el programa.
Nota: la funciónBrain.sdcard.is_inserted()
devuelve True si se inserta una tarjeta SD en el Brain.
Escribir los datos en un archivo CSV en la tarjeta SD
Hasta ahora, nuestro programa puede recopilar datos con VEX IQ Brain (segunda generación). Para completar el proyecto de registro de datos, necesitamos escribir los datos en un archivo de valores separados por comas (CSV) en la tarjeta SD para exámenes y análisis futuros.
- Al escribir diferentes tipos de datos en un archivo CSV, queremos saber qué tipo de datos contiene cada columna. Para hacer esto, podemos agregar el texto del encabezado CSV a la variable
data_buffer
antes de registrar datos.
Por lo tanto, agregue el código para declarar una variablecsvHeaderText
para almacenar el texto del encabezado CSV para especificar los nombres de las columnas para el archivo CSV y declare una variablesd_file_name
para contener el nombre del archivo CSV para escribir en el Tarjeta SD.
Nota: Asegúrese de que los encabezados estén en el mismo orden que los datos almacenados en la variable data_buffer
.
- A continuación, agregue el texto del encabezado CSV a la cadena
data_buffer
antes delfor loop
para la recopilación de datos.
- Antes de escribir datos en un archivo en la tarjeta SD, primero comprendamos cómo usar la función
Brain.sdcard.savefile()
.
Esta instrucción escribe los datos almacenados en la variabledata_buffer
en un archivo CSV con nombre en la tarjeta SD.
Desglosémoslo:-
Brain.sdcard.savefile(): la función guarda una matriz de bytes en un archivo con nombre en la tarjeta SD. La función devuelve el número de bytes escritos en el archivo.
-
sd_file_name: el primer parámetro de la función. Indica el nombre del archivo a escribir. En este proyecto, el nombre del archivo se almacena en la variable
sd_file_name.
-
bytearray(datat_buffer,'utf-8'): el segundo parámetro de la función. Representa el conjunto de bytes que se escribirá en el archivo.
-
- bytearray(): el método crea un bytearray mutable. En esta instrucción, lo usamos para convertir una cadena en una matriz de bytes especificando la codificación.
- data_buffer: el primer parámetro del método. Indica la fuente que se convertirá en una matriz de bytes. En este proyecto, la fuente son los datos almacenados en la variable
data_buffer.
- 'utf-8': el segundo parámetro del método. Indica la codificación especificada utilizada para codificar la cadena. La codificación es 'utf-8' en esta instrucción.
-
-
- Después del
for loop
para la recopilación de datos, use la funciónBrain.sdcard.savefile()
para escribir los datos almacenados en la variabledata_buffer
en el archivo CSV de la tarjeta SD. Además, agregue el código para verificar el valor de retorno de la funciónBrain.sdcard.savefile()
para verificar si los datos se han escrito en el archivo correctamente y mostrar el mensaje correspondiente en la pantalla VEX IQ Brain para obtener información real. retroalimentación de tiempo.
Nota: La funciónBrain.sdcard.savefile()
devuelve el número de bytes escritos en el archivo. En este proyecto, lo usamos para escribir los datos recopilados en un archivo CSV, por lo que la cantidad de bytes escritos en el archivo debe ser mayor que cero. En otras palabras, si la funciónBrain.sdcard.savefile()
devuelve 0, podemos concluir que los datos no se han escrito correctamente en el archivo. En caso contrario, los datos han sido escritos en el archivo.
¡Felicidades! Hemos desarrollado un proyecto de registro de datos que recopila los datos de aceleración con VEX IQ Brain (segunda generación) y los almacena en un archivo CSV en la tarjeta SD. A continuación, exploraremos cómo abrir el archivo CSV para el análisis de datos.
Abrir el archivo CSV para análisis de datos
Una vez que los datos se han escrito en el archivo CSV de la tarjeta SD, podemos usar una aplicación de hoja de cálculo para abrir el archivo para leer y analizar los datos.
Nota: Dos de las aplicaciones de hojas de cálculo más comunes son Google Sheets y Microsoft Excel. En este artículo, usaremos Google Sheets (basado en la web) para abrir el archivo CSV en la tarjeta SD. El proceso de uso de otras aplicaciones es similar.
- Retire la tarjeta SD de la ranura para tarjetas SD del VEX IQ Brain. Si el ordenador tiene una ranura para tarjetas Micro SD incorporada, podremos insertar la tarjeta SD directamente en esa ranura. De lo contrario, inserte la tarjeta SD en un adaptador de tarjeta SD y luego conecte el adaptador a la computadora.
- Inicie sesión en nuestra cuenta de Google y abra Google Sheets. Crea una nueva hoja de cálculo.
- En la hoja de cálculo, abra el menú “Archivo” , seleccione “Importar” -> “Cargar” -> “Explorar” y luego elija el archivo CSV en la computadora. Después de cargar el archivo CSV, haga clic en el botón “Importar datos”. Después de importar los datos, haga clic en "Abrir ahora" para ver los datos recopilados en el archivo CSV.
- (Opcional) Una forma sencilla de analizar los datos es dibujar un gráfico y luego buscar las tendencias en los datos. En la hoja de cálculo, abra el menú "Insertar " y seleccione "Gráfico " para dibujar un gráfico utilizando los datos del archivo CSV. El siguiente gráfico es el resultado de los datos de aceleración recopilados con el VEX IQ Brain (2.ª generación).
Nota: Podemos usar el Editor de gráficos para seleccionar un tipo de gráfico diferente o editar el gráfico según nuestras necesidades.
Hasta este punto, hemos finalizado el proyecto de registro de datos que recopila datos con el VEX IQ Brain (segunda generación) y los guarda en un archivo CSV en la tarjeta SD. Además, hemos aprendido a leer el archivo CSV en la tarjeta SD usando Google Sheets e incluso a crear un gráfico para su posterior análisis. ¿Qué sigue? Intentemos planificar experimentos más interesantes utilizando el robot VEX para el registro de datos, para observar cómo los factores ambientales cambiantes afectan varios tipos de datos y obtener una comprensión más profunda del mundo que nos rodea.