Registro de dados com cérebro/sensores VEX (versão Python)

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.

    imagem5.png

  • 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ável polling_delay_msec para armazenar o valor do intervalo de tempo para leitura de dados e crie uma variável de string vazia data_buffer para armazenar os dados lidos do sensor.

    imagem9.png

  • 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.

    imagem13.png

  • 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ável data_buffer em um formato específico.

    imagem14.png

    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.

    imagem7.png

    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 um for loop para executar repetidamente as instruções que buscam os dados e anexar os dados à variável data_buffer para uma série de iterações. Nossa estratégia é usar o valor da variável numOfDataEntries para determinar o número de iterações.

    imagem12.png

  • 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() no for loop para pausar o programa e adicionar o intervalo de tempo específico entre duas leituras. Usamos o valor da variável polling_delay_msec para determinar o valor do intervalo de tempo.

    imagem8.png

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.

imagem1.png




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.

Chamada do slot do cartão EXP SD (1).png

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.

    image17.png


    Nota: the brain.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ável csvHeaderText para armazenar o texto do cabeçalho CSV para especificar os nomes das colunas do arquivo CSV e declare uma variável sd_file_name para armazenar o nome do arquivo CSV para escrever no Cartão SD.

    imagem10.png

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 do for loop para coleta de dados.

    imagem15.png

  • Antes de gravar dados em um arquivo no cartão SD, vamos entender como usar a função brain.sdcard.savefile() primeiro.

    imagem4.png


    Esta instrução grava os dados armazenados na variável data_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ção brain.sdcard.savefile() para gravar os dados armazenados na variável data_buffer no arquivo CSV no cartão SD. Além disso, adicione o código para verificar o valor de retorno da função brain.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.

    image6.png


    Nota: A função brain.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ção brain.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. 

imagem16.png

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.

    imagem11.png

  • (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º).

    image3.png


    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.

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

Last Updated: