Enregistrement de données avec VEX Brain/Sensors (version Python)

Introduction

Dans cet article, nous verrons comment créer un projet d'enregistrement de données qui demande au robot VEX de collecter des données avec le VEX Brain et de les enregistrer dans un fichier CSV sur la carte SD pour l'analyse des données.

L’enregistrement des données est un outil puissant que nous pouvons utiliser pour faciliter la recherche scientifique, mener nos propres expériences et résoudre des problèmes spécifiques. Il existe diverses tâches amusantes et passionnantes que nous pouvons conduire le robot VEX à accomplir grâce à l'enregistrement des données. Voici quelques exemples :

  • Collecte de données avec le capteur de distance pour calculer la vitesse du robot
  • Conduire le robot dans la salle de classe et collecter des données avec le capteur optique pour observer les changements de lumière à divers endroits.
  • Emmener le robot dans une aventure et enregistrer les données de coordonnées GPS pour créer une carte.

Compétences en codage nécessaires pour développer un projet d'enregistrement de données

  • Utilisez diverses commandes pour collecter des données avec VEX Brain/Sensors et ajoutez-les à une structure de données.
  • Écrivez les données dans un fichier CSV (valeurs séparées par des virgules) sur la carte SD.

Matériel requis pour l'enregistrement des données :

  • Un cerveau VEX (IQ, V5, EXP)
  • Une carte SD
  • Un capteur ou plusieurs capteurs (en option, selon les données requises)

Obtenir des données du capteur

Nous pouvons programmer le robot VEX (IQ, V5, EXP) pour capturer les données des capteurs suivants :

  • Capteur inertiel
  • Capteur de distance
  • Capteur optique
  • Capteur de vision
  • Capteur de rotation (V5, EXP)
  • Capteur GPS (V5)

Remarque : le VEX IQ (2e génération) Brain et le VEX EXP Brain sont dotés d'un capteur inertiel intégré. Nous pouvons collecter les données du capteur inertiel avec ces VEX Brians.

Dans cet article, nous développerons un projet d'enregistrement de données qui collecte les données d'accélération avec le VEX IQ Brain (2e) et les stocke sur une carte SD. 

Tout d’abord, nous devons écrire un court programme pour obtenir les lectures de la minuterie et du capteur inertiel intégrés au VEX IQ Brain (2e).

  • Au début de ce programme, nous devrons importer les modules Python pour contrôler VEX IQ Brain (2ème) et en récupérer les données. Commencez donc par ajouter ces instructions au projet.

    image5.png

  • Ensuite, ajoutez le code pour déclarer une variable numOfDataEntries pour stocker le nombre d'entrées de données à enregistrer, déclarez une variable polling_delay_msec pour stocker la valeur de l'intervalle de temps pour la lecture des données et créez une variable de chaîne vide data_buffer pour stocker les données lues par le capteur.

    image9.png

  • Comme nous utiliserons la valeur actuelle de la minuterie pour ajouter l'horodatage aux données, nous devons réinitialiser la valeur de la minuterie à 0 seconde avant de commencer la collecte des données.

    image13.png

  • Avant d'utiliser l'instruction qui récupère les données du VEX IQ Brain (2e) et enregistre les données dans le tampon, nous devons d'abord la comprendre.
    L'instruction suivante ajoute la valeur actuelle de la minuterie à la variable data_buffer dans un format spécifique.

    image14.png

    Décomposons la chaîne de format «%1.3f»

    • « % » : introduit le spécificateur de conversion.
    • « 1 » : Indique le nombre minimum de chiffres devant être présents dans la chaîne
    • « .3 » : Spécifie le nombre de décimales à inclure dans le nombre formaté.
    • « f » : indique que la valeur à formater est un nombre à virgule flottante.

    Ainsi, on peut utiliser la chaîne de format «%1.3f» pour formater un nombre à virgule flottante avec une largeur minimale de 1 chiffre et une précision de 3 décimales.

  • Maintenant, nous pouvons lire la minuterie et la valeur d'accélération du capteur inertiel intégré au VEX IQ Brain (2e), puis ajouter les données à la variable data_buffer dans le format spécifié.

    image7.png

    Remarque : «\n» est le caractère de nouvelle ligne. Cela indique que la ligne se termine ici et le début d'une nouvelle ligne.

  • Ensuite, pour enregistrer un certain nombre d'entrées de données dans la variable data_buffer , nous pouvons utiliser une boucle for pour exécuter à plusieurs reprises les instructions qui récupèrent les données et ajouter les données à la variable data_buffer pendant un certain nombre d'itérations. Notre stratégie consiste à utiliser la valeur de la variable numOfDataEntries pour déterminer le nombre d'itérations.

    image12.png

  • Jusqu'à présent, notre programme enregistre les données aussi rapidement que possible. Cependant, nous souhaitons enregistrer des données à des intervalles de temps spécifiques. Par conséquent, nous pouvons utiliser une fonction wait() dans la boucle for pour mettre le programme en pause afin d'ajouter l'intervalle de temps spécifique entre deux lectures. Nous utilisons la valeur de la variable polling_delay_msec pour déterminer la valeur de l'intervalle de temps.

    image8.png

Toutes nos félicitations! Nous avons terminé le programme pour obtenir des lectures (les données d'accélération) du capteur inertiel intégré au cerveau VEX. Ensuite, nous explorerons comment écrire les données dans un fichier CSV sur la carte SD.

image1.png




Connexion de la carte SD au cerveau VEX

Avant d'écrire les données dans un fichier sur une carte SD, insérez d'abord la carte SD dans la fente pour carte SD du VEX Brain.

Légende du lecteur de carte IQ (1).png

Remarque : Formatez la carte SD en FAT32 pour l'écriture des données. Nous vous recommandons d'utiliser des cartes SD d'une taille maximale de 32 Go.

Pour garantir que l'écriture des données dans un fichier sur la carte SD peut être effectuée dans des conditions appropriées, nous devrons ajouter du code pour vérifier si la carte SD est correctement insérée dans le VEX IQ Brain (2e).

  • Utilisez la fonction brain.sdcard.is_inserted() pour vérifier si la carte SD est insérée. Si la carte SD n'est pas insérée, affichez le message correspondant sur l'écran VEX IQ Brain et maintenez le programme enfoncé.

    image17.png


    Remarque : la fonction brain.sdcard.is_inserted() renvoie True si une carte SD est insérée dans le cerveau.

Écrire les données dans un fichier CSV sur la carte SD

Jusqu'à présent, notre programme peut collecter des données avec le VEX IQ Brain (2e). Pour terminer le projet d'enregistrement des données, nous devons écrire les données dans un fichier CSV (valeurs séparées par des virgules) sur la carte SD pour un examen et une analyse ultérieurs.

  • Lors de l'écriture de différents types de données dans un fichier CSV, nous souhaitons savoir quel type de données contient chaque colonne. Pour ce faire, nous pouvons ajouter le texte d'en-tête CSV à la variable data_buffer avant d'enregistrer les données.
    Ajoutez donc le code pour déclarer une variable csvHeaderText pour stocker le texte d'en-tête CSV pour spécifier les noms de colonnes du fichier CSV et déclarez une variable sd_file_name pour contenir le nom du fichier CSV à écrire sur le Carte SD.

    image10.png

Remarque : Assurez-vous que les en-têtes sont dans le même ordre que les données stockées dans la variable data_buffer.

  • Ensuite, ajoutez le texte d'en-tête CSV à la chaîne data_buffer avant la boucle for pour la collecte de données.

    image15.png

  • Avant d'écrire des données dans un fichier sur la carte SD, commençons par comprendre comment utiliser la fonction brain.sdcard.savefile().

    image4.png


    Cette instruction écrit les données stockées dans la variable data_buffer dans un fichier CSV nommé sur la carte SD.
    Décomposons-le :
    • brain.sdcard.savefile() : La fonction enregistre un tableau d'octets dans un fichier nommé sur la carte SD. La fonction renvoie le nombre d'octets écrits dans le fichier.

    • sd_file_name : Le premier paramètre de la fonction. Indique le nom du fichier à écrire. Dans ce projet, le nom du fichier est stocké dans la variable sd_file_name.

    • bytearray(datat_buffer,'utf-8') : Le deuxième paramètre de la fonction. Représente le tableau d'octets à écrire dans le fichier.

        • bytearray() : La méthode crée un bytearray mutable. Dans cette instruction, nous l'utilisons pour convertir une chaîne en tableau d'octets en spécifiant l'encodage.
        • data_buffer : Le premier paramètre de la méthode. Indique la source à convertir en bytearray. Dans ce projet, la source est les données stockées dans la variable data_buffer. 
        • 'utf-8' : Le deuxième paramètre de la méthode. Indique l'encodage spécifié utilisé pour encoder la chaîne. Le codage est « utf-8 » dans cette instruction. 
  • Après la boucle for pour la collecte de données, utilisez la fonction brain.sdcard.savefile() pour écrire les données stockées dans la variable data_buffer dans le fichier CSV sur la carte SD. De plus, ajoutez le code pour vérifier la valeur de retour de la fonction brain.sdcard.savefile() pour vérifier si les données ont été écrites avec succès dans le fichier et affichez le message correspondant sur l'écran VEX IQ Brain pour obtenir des résultats réels. rétroaction temporelle.

    image6.png


    Remarque : La fonction brain.sdcard.savefile() renvoie le nombre d'octets écrits dans le fichier. Dans ce projet, nous l'utilisons pour écrire les données collectées dans un fichier CSV, le nombre d'octets écrits dans le fichier doit donc être supérieur à zéro. En d’autres termes, si la fonction brain.sdcard.savefile() renvoie 0, nous pouvons conclure que les données n’ont pas été écrites correctement dans le fichier. Sinon, les données ont été écrites dans le fichier.

Toutes nos félicitations! Nous avons développé un projet d'enregistrement de données qui collecte les données d'accélération avec le VEX IQ Brain (2e) et les stocke dans un fichier CSV sur la carte SD. Ensuite, nous explorerons comment ouvrir le fichier CSV pour l'analyse des données. 

image16.png

Ouverture du fichier CSV pour l'analyse des données

Une fois les données écrites dans le fichier CSV sur la carte SD, nous pouvons utiliser un tableur pour ouvrir le fichier afin de lire et d'analyser les données. 

Remarque : Deux des tableurs les plus courants sont Google Sheets et Microsoft Excel. Dans cet article, nous utiliserons Google Sheets (Web Based) pour ouvrir le fichier CSV sur la carte SD. Le processus d'utilisation d'autres applications est similaire.

  • Retirez la carte SD de l'emplacement pour carte SD du VEX IQ Brain. Si l'ordinateur dispose d'un emplacement pour carte Micro SD intégré, nous pouvons insérer la carte SD directement dans cet emplacement. Sinon, insérez la carte SD dans un adaptateur de carte SD, puis connectez l'adaptateur à l'ordinateur. 
  • Connectez-vous à notre compte Google et ouvrez Google Sheets. Créez une nouvelle feuille de calcul.
  • Dans la feuille de calcul, ouvrez le menu «Fichier » , sélectionnez le bouton « Importer » -> « Télécharger » -> «Parcourir » , puis choisissez le fichier CSV sur l'ordinateur. Après avoir téléchargé le fichier CSV, cliquez sur le bouton «Import Data ». Après avoir importé les données, cliquez sur «Ouvrir maintenant » pour voir les données collectées dans le fichier CSV.

    image11.png

  • (Facultatif) Un moyen simple d'analyser les données consiste à dessiner un graphique, puis à rechercher les tendances dans les données. Dans la feuille de calcul, ouvrez le menu «Insérer » et sélectionnez «Graphique » pour dessiner un graphique en utilisant les données du fichier CSV. Le graphique suivant est le résultat des données d'accélération collectées avec le VEX IQ Brain (2e).

    image3.png


    Remarque : Nous pouvons utiliser l'éditeur de graphique pour sélectionner un type de graphique différent ou modifier le graphique en fonction de nos besoins.

Jusqu'à présent, nous avons terminé le projet d'enregistrement de données qui collecte des données avec le VEX IQ Brain (2e) et les enregistre dans un fichier CSV sur la carte SD. Nous avons également appris à lire le fichier CSV sur la carte SD à l'aide de Google Sheets et même à créer un graphique pour une analyse plus approfondie. Et ensuite ? Essayons de planifier des expériences plus passionnantes en utilisant le robot VEX pour l'enregistrement de données, afin d'observer comment les facteurs environnementaux changeants affectent divers types de données et d'acquérir une compréhension plus approfondie du monde qui nous entoure.

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

Last Updated: