Introdução
Neste artigo, discutiremos como criar um projeto de registro de dados que instrui o Robô VEX a coletar dados com o VEX Brain e salvá-los em um arquivo CSV no cartão SD para análise de dados.
O registro de dados é uma ferramenta poderosa que podemos usar para auxiliar pesquisas científicas, conduzir nossos próprios experimentos e resolver problemas específicos. Existem várias tarefas divertidas e emocionantes que podemos conduzir o robô VEX para realizar com o registro de dados. A seguir estão alguns exemplos:
- Coletando dados com o Sensor de Distância para calcular a velocidade do robô
- Conduzindo o robô pela sala de aula e coletando dados com o Sensor Óptico para observar mudanças de luz em vários locais.
- Levando o robô em uma aventura e registrando dados de coordenadas GPS para criar um mapa.
Habilidades de codificação necessárias para desenvolver um projeto de registro de dados
- Use vários comandos para coletar dados com VEX Brain/Sensors e adicioná-los a uma estrutura de dados.
- Grave os dados em um arquivo de valores separados por vírgula (CSV) no cartão SD.
Hardware necessário para registro de dados:
- Um Cérebro VEX (QI, V5, EXP)
- Um cartão SD
- Um Sensor ou múltiplos Sensores (Opcional, de acordo com os dados necessários)
Obtendo dados do sensor
Podemos programar o Robô VEX (IQ, V5, EXP) para capturar os dados dos seguintes sensores:
- Sensor Inercial
- Sensor de distância
- Sensor óptico
- Sensor de visão
- Sensor de Rotação (V5, EXP)
- Sensor GPS (V5)
Nota: o VEX IQ (2ª geração) Brain e o VEX EXP Brain possuem um sensor inercial integrado. Podemos coletar os dados do Sensor Inercial com esses VEX Brians.
Neste artigo, desenvolveremos um projeto de registro de dados que coleta os dados de aceleração com o VEX IQ Brain (2º) e os armazena em um cartão SD.
Primeiro, precisamos escrever um pequeno programa para obter leituras do temporizador e do sensor inercial construído no VEX IQ Brain (2º).
- No início deste programa, precisaremos importar os módulos Python para controlar o VEX IQ Brain (2º) e buscar os dados dele. Assim, comece adicionando estas instruções ao projeto.
- Em seguida, adicione o código para declarar uma variável
numOfDataEntries
para armazenar o número de entradas de dados para gravação, declare uma variávelpolling_delay_msec
para armazenar o valor do intervalo de tempo para leitura de dados e crie uma variável de string vaziadata_buffer
para armazenar os dados lidos do sensor. - Como usaremos o valor atual do Timer para adicionar o Timestamp aos dados, precisamos redefinir o valor do timer para 0 segundos antes de iniciar a coleta de dados.
- Antes de usar a instrução que busca os dados do VEX IQ Brain (2º) e registra os dados no buffer, precisamos primeiro entendê-la.
A instrução a seguir anexa o valor do temporizador atual à variáveldata_buffer
em um formato específico.Vamos decompor a string de formato
“%1.3f”
:- “%”: apresenta o especificador de conversão.
- “1”: Indica o número mínimo de dígitos que devem estar presentes na string
- “.3”: Especifica o número de casas decimais a serem incluídas no número formatado.
- “f”: Indica que o valor a ser formatado é um número de ponto flutuante.
Assim, podemos usar a string de formato “%1.3f” para formatar um número de ponto flutuante com largura mínima de 1 dígito e precisão de 3 casas decimais.
- Agora, podemos ler o temporizador e o valor de aceleração do sensor inercial construído no VEX IQ Brain (2º) e então anexar os dados à variável
data_buffer
no formato especificado.Nota: “\n” é o caractere de nova linha. Indica que a linha termina aqui e o início de uma nova linha.
- Então, para registrar um certo número de entradas de dados na variável
data_buffer
, podemos usar umfor loop
para executar repetidamente as instruções que buscam os dados e anexar os dados à variáveldata_buffer
para uma série de iterações. Nossa estratégia é usar o valor da variávelnumOfDataEntries
para determinar o número de iterações.
- Até agora, nosso programa registra dados o mais rápido possível. No entanto, queremos registrar dados em intervalos de tempo específicos. Portanto, podemos usar uma função
wait()
nofor loop
para pausar o programa e adicionar o intervalo de tempo específico entre duas leituras. Usamos o valor da variávelpolling_delay_msec
para determinar o valor do intervalo de tempo.
Parabéns! Concluímos o programa para obter leituras (dados de aceleração) do Sensor Inercial construído no VEX Brain. A seguir, exploraremos como gravar os dados em um arquivo CSV no cartão SD.
Anexando o cartão SD ao VEX Brain
Antes de gravar os dados em um arquivo em um cartão SD, insira primeiro o cartão SD no slot de cartão SD do VEX Brain.
Nota: Formate o cartão SD para FAT32 para gravação de dados. Recomendamos o uso de cartões SD com tamanho de 32 GB ou menos.
Para garantir que a gravação de dados em um arquivo no cartão SD possa ser realizada sob condições apropriadas, precisaremos adicionar código para verificar se o cartão SD está inserido corretamente no VEX IQ Brain (2º).
- Use a função
brain.sdcard.is_inserted()
para verificar se o cartão SD está inserido. Se o cartão SD não estiver inserido, exiba a mensagem correspondente na tela do VEX IQ Brain e segure o programa.
Nota: thebrain.sdcard.is_inserted()
função retorna True se um cartão SD for inserido no Brain.
Gravando os dados em um arquivo CSV no cartão SD
Até agora, nosso programa pode coletar dados com o VEX IQ Brain (2º). Para concluir o projeto de registro de dados, precisamos gravar os dados em um arquivo de valores separados por vírgula (CSV) no cartão SD para exame e análise futuros.
- Ao gravar diferentes tipos de dados em um arquivo CSV, queremos saber que tipo de dados cada coluna contém. Para fazer isso, podemos anexar o texto do cabeçalho CSV à variável
data_buffer
antes de gravar os dados.
Assim, adicione o código para declarar uma variávelcsvHeaderText
para armazenar o texto do cabeçalho CSV para especificar os nomes das colunas do arquivo CSV e declare uma variávelsd_file_name
para armazenar o nome do arquivo CSV para escrever no Cartão SD.
Nota: Certifique-se de que os cabeçalhos estejam na mesma ordem que os dados armazenados na variável data_buffer
.
- Em seguida, anexe o texto do cabeçalho CSV à string
data_buffer
antes dofor loop
para coleta de dados.
- Antes de gravar dados em um arquivo no cartão SD, vamos entender como usar a função
brain.sdcard.savefile()
primeiro.
Esta instrução grava os dados armazenados na variáveldata_buffer
em um arquivo CSV nomeado no cartão SD.
Vamos decompô-lo:-
brain.sdcard.savefile(): A função salva um bytearray em um arquivo nomeado no cartão SD. A função retorna o número de bytes gravados no arquivo.
-
sd_file_name: O primeiro parâmetro da função. Indica o nome do arquivo a ser gravado. Neste projeto, o nome do arquivo é armazenado na variável
sd_file_name.
-
bytearray(datat_buffer,'utf-8'): O segundo parâmetro da função. Representa o bytearray a ser gravado no arquivo.
-
- bytearray(): O método cria um bytearray mutável. Nesta instrução, nós o usamos para converter uma string em um bytearray especificando a codificação.
- data_buffer: O primeiro parâmetro do método. Indica a fonte a ser convertida em um bytearray. Neste projeto, a fonte são os dados armazenados na variável
data_buffer.
- 'utf-8': O segundo parâmetro do método. Indica a codificação especificada usada para codificar a sequência. A codificação é 'utf-8' nesta instrução.
-
-
- Após o loop
for
para coleta de dados, use a funçãobrain.sdcard.savefile()
para gravar os dados armazenados na variáveldata_buffer
no arquivo CSV no cartão SD. Além disso, adicione o código para verificar o valor de retorno da funçãobrain.sdcard.savefile()
para verificar se os dados foram gravados no arquivo com sucesso e exibir a mensagem correspondente na tela do VEX IQ Brain para obter informações reais. feedback de tempo.
Nota: A funçãobrain.sdcard.savefile()
retorna o número de bytes gravados no arquivo. Neste projeto, utilizamos ele para gravar os dados coletados em um arquivo CSV, portanto o número de bytes gravados no arquivo deve ser maior que zero. Em outras palavras, se a funçãobrain.sdcard.savefile()
retornar 0, podemos concluir que os dados não foram gravados no arquivo com sucesso. Caso contrário, os dados foram gravados no arquivo.
Parabéns! Desenvolvemos um projeto de registro de dados que coleta os dados de aceleração com o VEX IQ Brain (2º) e os armazena em um arquivo CSV no cartão SD. A seguir, exploraremos como abrir o arquivo CSV para análise de dados.
Abrindo o arquivo CSV para análise de dados
Depois que os dados forem gravados no arquivo CSV no cartão SD, podemos usar um aplicativo de planilha para abrir o arquivo para leitura e análise dos dados.
Observação: Dois dos aplicativos de planilha mais comuns são o Planilhas Google e o Microsoft Excel. Neste artigo, usaremos o Planilhas Google (baseado na Web) para abrir o arquivo CSV no cartão SD. O processo de uso de outros aplicativos é semelhante.
- Remova o cartão SD do slot de cartão SD do VEX IQ Brain. Se o computador tiver um slot para cartão Micro SD integrado, podemos inserir o cartão SD diretamente nesse slot. Caso contrário, insira o cartão SD em um adaptador de cartão SD e conecte o adaptador ao computador.
- Faça login em nossa conta do Google e abra o Planilhas Google. Crie uma nova planilha.
- Na planilha, abra o menu “Arquivo” , selecione “Importar” -> “Upload” -> “Navegar” e escolha o arquivo CSV no computador. Após fazer upload do arquivo CSV, clique no botão “Importar Dados”. Após importar os dados, clique em “Abrir agora” para ver os dados coletados no arquivo CSV.
- (Opcional) Uma maneira fácil de analisar os dados é desenhar um gráfico e, em seguida, procurar as tendências nos dados. Na planilha, abra o menu “Inserir” e selecione “Gráfico” para desenhar um gráfico usando os dados do arquivo CSV. O gráfico a seguir é o resultado dos dados de aceleração coletados com o VEX IQ Brain (2º).
Nota: Podemos usar o editor de gráficos para selecionar um tipo de gráfico diferente ou editar o gráfico com base em nossas necessidades.
Até este ponto, finalizamos o projeto de registro de dados que coleta dados com o VEX IQ Brain (2º) e os salva em um arquivo CSV no cartão SD. Além disso, aprendemos como ler o arquivo CSV no cartão SD usando o Planilhas Google e até mesmo criar um gráfico para análise posterior. Qual o proximo? Vamos tentar planejar experimentos mais interessantes usando o robô VEX para registro de dados, para observar como as mudanças nos fatores ambientais afetam vários tipos de dados e obter uma compreensão mais profunda do mundo que nos rodeia.