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 cerebro de VEX y los guarde en un archivo CSV en la tarjeta SD para el análisis de datos.
El registro de datos es una herramienta poderosa que podemos usar para ayudar a la investigación científica, realizar nuestros propios experimentos y resolver problemas específicos. Hay varias tareas divertidas y emocionantes que podemos hacer que el robot VEX realice con 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 los 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 agréguelos a una estructura de datos.
- Escriba los datos en un archivo de valores separados por comas (CSV) en la tarjeta SD.
Hardware requerido 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)
Obtención de 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 cerebro VEX IQ (2ª generación) y el cerebro VEX EXP tienen un sensor inercial incorporado. Podemos recopilar los datos del sensor de inercia 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 (2ª generación) y los almacena en una tarjeta SD.
En primer lugar, tenemos que escribir un breve programa para obtener lecturas del temporizador y el sensor inercial integrado en el cerebro VEX IQ (2ª generación).
- Al comienzo de este programa, tendremos que importar los módulos de Python para controlar VEX IQ Brain (2ª generación) y obtener los datos de él. Por lo tanto, comience agregando estas instrucciones al proyecto.
- A continuación, agregue el código para declarar una variable
numOfDataEntriespara almacenar el número de entradas de datos para la grabación, declare una variablepolling_delay_msecpara almacenar el valor del intervalo de tiempo para la lectura de datos y cree una variable de cadena vacíadata_bufferpara 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 obtiene los datos del VEX IQ Brain (2nd) y los registra en el búfer, primero debemos entenderlos.
La siguiente instrucción agrega el valor del temporizador actual a la variabledata_buffer en un formato específico.Desglosemos la cadena de formato
"%1.3f":- “%”: Introduce el especificador de conversión.
- “1”: Indica el número mínimo de dígitos que deben estar presentes en la cadena.
- “.3”: Especifica el número de decimales a incluir en el número formateado.
- “f”: Indica que el valor a formatear es un número de coma flotante.
Por lo tanto, podemos usar la cadena de formato%1.3f" " para formatear un número de coma 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 incorporado en el cerebro VEX IQ (2ª generación) y luego agregar los datos a la variable
data_buffer en el formato especificado.Nota: "\n" es el carácter Nueva línea. Indica que la línea termina aquí y el comienzo de una nueva línea.
- Luego, para registrar un cierto número de entradas de
datos en lavariable data_buffer, podemos usar un buclefor para ejecutar repetidamente las instrucciones que obtienen los datos y adjuntar losdatos a lavariable data_buffer durante varias iteraciones. Nuestra estrategia es utilizar el valor de la variablenumOfDataEntriespara determinar el número de iteraciones.
- Hasta ahora, nuestro programa registra los datos lo más rápido posible. Sin embargo, queremos registrar datos a intervalos de tiempo específicos. Por lo tanto, podemos usar una función
wait() en el bucleforpara pausar el programa y agregar el intervalo de tiempo específico entre dos lecturas. Utilizamos el valor de la variablepolling_delay_msecpara 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 cerebro VEX. A continuación, exploraremos cómo escribir los datos en un archivo CSV en la tarjeta SD.
Conexión de la tarjeta SD al cerebro VEX
Antes de escribir los datos en un archivo en una tarjeta SD, inserte primero la tarjeta SD en la ranura para tarjetas SD del VEX Brain.
Nota: Formatee la tarjeta SD en FAT32 para la escritura de datos. Recomendamos usar tarjetas SD de 32 GB o menos de tamaño.
Para garantizar que la escritura de datos en un archivo de la tarjeta SD se pueda realizar en las condiciones adecuadas, tendremos que añadir código para comprobar si la tarjeta SD está correctamente insertada en el VEX IQ Brain (2ª generación).
- Utilice la
funciónbrain.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 el programa.
Nota: lafunciónbrain.sdcard.is_inserted () devuelve Verdadero si se inserta una tarjeta SD en el Cerebro.
Escribir los datos en un archivo CSV en la tarjeta SD
Hasta ahora, nuestro programa puede recopilar datos con el VEX IQ Brain (2ª generación). Para completar el proyecto de registro de datos, debemos escribir los datos en un archivo de valores separados por comas (CSV) en la tarjeta SD para su futuro examen y análisis.
- Al escribir diferentes tipos de datos en un archivo CSV, queremos saber qué tipo de datos contiene cada columna. Para ello, podemos añadir el texto de la cabecera CSV a la variable
data_buffer antes de grabar los datos.
Por lo tanto, agregue el código para declarar unavariablecsvHeaderText para almacenar el texto del encabezado CSV para especificar los nombres de las columnas para el archivo CSV y declare una variablesd_file_namepara contener el nombre del archivo CSV que se escribirá en la 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 del buclefor para la recopilación de datos.
- Antes de escribir datos en un archivo de la tarjeta SD, primero vamos a entender cómo usar
lafunció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.
Vamos a desglosarlo:-
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 la matriz 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 un bytearray especificando la codificación.
- data_buffer: El primer parámetro del método. Indica el origen 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 bucle
for para la recopilación de datos, uselafunción brain.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 lafunciónbrain.sdcard.savefile() para verificar si los datos se han escrito en el archivo con éxito y muestre el mensaje correspondiente en la pantalla VEX IQ Brain para obtener comentarios en tiempo real.
Nota: Lafunció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 el número de bytes escritos en el archivo debe ser mayor que cero. En otras palabras, si lafunciónbrain.sdcard.savefile () devuelve 0, podemos concluir que los datos no se han escrito correctamente en el archivo. De lo contrario, los datos se han escrito en el archivo.
¡Felicidades! Hemos desarrollado un proyecto de registro de datos que recopila los datos de aceleración con el VEX IQ Brain (2ª 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 el 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 hoja 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 la computadora tiene una ranura para tarjeta Micro SD incorporada, podemos 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 al ordenador.
- Inicia sesión en nuestra cuenta de Google y abre Google Sheets. Crear una nueva hoja de cálculo.
- En la hoja de cálculo, abre el menú "Archivo ", selecciona el botón "Importar> " - "Cargar> " - "Examinar" y luego elige 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 fácil 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 recogidos 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 en función de nuestras necesidades.
Hasta este punto, hemos terminado el proyecto de registro de datos que recopila datos con el VEX IQ Brain (2ª 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 utilizando Google Sheets e incluso a crear un gráfico para su posterior análisis. ¿Y ahora qué? Intentemos planificar experimentos más emocionantes utilizando el robot VEX para el registro de datos, para observar cómo los factores ambientales cambiantes afectan a varios tipos de datos y obtener una comprensión más profunda del mundo que nos rodea.