introduzione
In questo articolo discuteremo come creare un progetto di registrazione dati che incarichi il robot VEX di raccogliere dati con VEX Brain e salvarli in un file CSV sulla scheda SD per l'analisi dei dati.
La registrazione dei dati è uno strumento potente che possiamo utilizzare per assistere la ricerca scientifica, condurre i nostri esperimenti e risolvere problemi specifici. Ci sono vari compiti divertenti ed entusiasmanti che possiamo portare a termine con il robot VEX con la registrazione dei dati. I seguenti sono alcuni esempi:
- Raccolta dati con il sensore di distanza per calcolare la velocità del robot
- Guidare il robot in classe e raccogliere dati con il sensore ottico per osservare i cambiamenti di luce in vari luoghi.
- Portare il robot in un'avventura e registrare i dati delle coordinate GPS per creare una mappa.
Competenze di codifica necessarie per lo sviluppo di un progetto di registrazione dati
- Utilizza vari comandi per raccogliere dati con VEX Brain/Sensors e aggiungerli a una struttura dati.
- Scrivere i dati in un file con valori separati da virgole (CSV) sulla scheda SD.
Hardware richiesto per la registrazione dei dati:
- Un cervello VEX (QI, V5, ESP)
- Una scheda SD
- Un sensore o più sensori (opzionale, in base ai dati richiesti)
Ottenere dati dal sensore
Possiamo programmare il robot VEX (IQ, V5, EXP) per acquisire i dati dai seguenti sensori:
- Sensore inerziale
- Sensore di distanza
- Sensore ottico
- Sensore di visione
- Sensore di rotazione (V5, EXP)
- Sensore GPS (V5)
Nota: il cervello VEX IQ (2a generazione) e il cervello VEX EXP hanno un sensore inerziale integrato. Possiamo raccogliere i dati del sensore inerziale con questi VEX Brian.
In questo articolo svilupperemo un progetto di registrazione dati che raccoglie i dati di accelerazione con VEX IQ Brain (2°) e li memorizza in una scheda SD.
Innanzitutto, dobbiamo scrivere un breve programma per ottenere letture dal timer e dal sensore inerziale integrati nel cervello VEX IQ (2°).
- All'inizio di questo programma, dovremo importare i moduli Python per controllare VEX IQ Brain (2°) e recuperare i dati da esso. Quindi, inizia aggiungendo queste istruzioni al progetto.
- Successivamente, aggiungi il codice per dichiarare una variabile
numOfDataEntries
per memorizzare il numero di voci di dati per la registrazione, dichiara una variabilepolling_delay_msec
per memorizzare il valore dell'intervallo di tempo per la lettura dei dati e crea una variabile stringa vuotadata_buffer
per memorizzare i dati letti dal sensore. - Poiché utilizzeremo il valore corrente del timer per aggiungere il timestamp ai dati, dobbiamo reimpostare il valore del timer su 0 secondi prima di iniziare a raccogliere i dati.
- Prima di utilizzare l'istruzione che recupera i dati dal VEX IQ Brain (2nd) e registra i dati nel buffer, dobbiamo prima comprenderla.
La seguente istruzione aggiunge il valore corrente del timer alla variabiledata_buffer
in un formato specifico.Analizziamo la stringa di formato
“%1.3f”
:- “%”: introduce l'identificatore di conversione.
- “1”: Indica il numero minimo di cifre che devono essere presenti nella stringa
- “.3”: specifica il numero di cifre decimali da includere nel numero formattato.
- “f”: Indica che il valore da formattare è un numero a virgola mobile.
Pertanto, possiamo utilizzare la stringa di formato “%1.3f” per formattare un numero in virgola mobile con una larghezza minima di 1 cifra e una precisione di 3 cifre decimali.
- Ora possiamo leggere il timer e il valore di accelerazione del sensore inerziale integrato nel VEX IQ Brain (2°) e quindi aggiungere i dati alla variabile
data_buffer
nel formato specificato.Nota: “\n” è il carattere di nuova riga. Indica che la riga termina qui e l'inizio di una nuova riga.
- Quindi, per registrare un certo numero di voci di dati nella variabile
data_buffer
, possiamo utilizzare un ciclofor
per eseguire ripetutamente le istruzioni che recuperano i dati e accodano i dati alla variabiledata_buffer
per un numero di iterazioni. La nostra strategia consiste nell'utilizzare il valore della variabilenumOfDataEntries
per determinare il numero di iterazioni.
- Finora, il nostro programma registra i dati il più rapidamente possibile. Tuttavia, vogliamo registrare i dati a intervalli di tempo specifici. Pertanto, possiamo utilizzare una funzione
wait()
nel ciclofor
per mettere in pausa il programma e aggiungere l'intervallo di tempo specifico tra due letture. Usiamo il valore della variabilepolling_delay_msec
per determinare il valore dell'intervallo di tempo.
Congratulazioni! Abbiamo terminato il programma per ottenere letture (i dati di accelerazione) dal sensore inerziale integrato nel cervello VEX. Successivamente, esploreremo come scrivere i dati in un file CSV sulla scheda SD.
Collegare la scheda SD al VEX Brain
Prima di scrivere i dati su un file su una scheda SD, inserire prima la scheda SD nello slot per schede SD del VEX Brain.
Nota: Formattare la scheda SD su FAT32 per la scrittura dei dati. Si consiglia di utilizzare schede SD di dimensioni pari o inferiori a 32 GB.
Per garantire che la scrittura dei dati su un file sulla scheda SD possa essere eseguita in condizioni adeguate, dovremo aggiungere il codice per verificare se la scheda SD è inserita correttamente nel VEX IQ Brain (2°).
- Utilizzare la funzione
brain.sdcard.is_inserted()
per verificare se la scheda SD è inserita. Se la scheda SD non è inserita, visualizzare il messaggio corrispondente sullo schermo VEX IQ Brain e tenere premuto il programma.
Nota: la funzionebrain.sdcard.is_inserted()
restituisce True se una scheda SD è inserita in Brain.
Scrittura dei dati in un file CSV sulla scheda SD
Finora, il nostro programma può raccogliere dati con VEX IQ Brain (2°). Per completare il progetto di registrazione dei dati, dobbiamo scrivere i dati in un file con valori separati da virgole (CSV) sulla scheda SD per futuri esami e analisi.
- Quando scriviamo diversi tipi di dati in un file CSV, vogliamo sapere quale tipo di dati contiene ciascuna colonna. Per fare ciò, possiamo aggiungere il testo dell'intestazione CSV alla variabile
data_buffer
prima di registrare i dati.
Quindi, aggiungi il codice per dichiarare una variabilecsvHeaderText
per memorizzare il testo dell'intestazione CSV per specificare i nomi delle colonne per il file CSV e dichiarare una variabilesd_file_name
per contenere il nome del file CSV da scrivere sul Scheda SD.
Nota: Assicurarsi che le intestazioni siano nello stesso ordine dei dati memorizzati nella variabile data_buffer
.
- Successivamente, aggiungi il testo dell'intestazione CSV alla stringa
data_buffer
prima del ciclofor
per la raccolta dei dati.
- Prima di scrivere i dati su un file sulla scheda SD, capiamo prima come utilizzare la funzione
brain.sdcard.savefile()
.
Questa istruzione scrive i dati memorizzati nella variabiledata_buffer
in un file CSV denominato sulla scheda SD.
Analizziamolo:-
brain.sdcard.savefile(): la funzione salva un bytearray in un file con nome sulla scheda SD. La funzione restituisce il numero di byte scritti nel file.
-
sd_file_name: il primo parametro della funzione. Indica il nome del file da scrivere. In questo progetto, il nome del file è memorizzato nella variabile
sd_file_name.
-
bytearray(datat_buffer,'utf-8'): il secondo parametro della funzione. Rappresenta il bytearray da scrivere nel file.
-
- bytearray(): il metodo crea un bytearray mutabile. In questa istruzione, la usiamo per convertire una stringa in un bytearray specificando la codifica.
- data_buffer: il primo parametro del metodo. Indica l'origine da convertire in un bytearray. In questo progetto la sorgente sono i dati memorizzati nella variabile
data_buffer.
- 'utf-8': il secondo parametro del metodo. Indica la codifica specificata utilizzata per codificare la stringa. La codifica in questa istruzione è "utf-8".
-
-
- Dopo lo
for del ciclo
per la raccolta dei dati, utilizzare la funzionebrain.sdcard.savefile()
per scrivere i dati memorizzati nella variabiledata_buffer
nel file CSV sulla scheda SD. Inoltre, aggiungi il codice per controllare il valore restituito dalla funzionebrain.sdcard.savefile()
per verificare se i dati sono stati scritti correttamente nel file e visualizzare il messaggio corrispondente sullo schermo VEX IQ Brain per ottenere informazioni reali feedback temporale.
Nota: La funzionebrain.sdcard.savefile()
restituisce il numero di byte scritti nel file. In questo progetto lo utilizziamo per scrivere i dati raccolti in un file CSV, quindi il numero di byte scritti nel file deve essere maggiore di zero. In altre parole, se la funzionebrain.sdcard.savefile()
restituisce 0, possiamo concludere che i dati non sono stati scritti correttamente nel file. Altrimenti i dati sono stati scritti nel file.
Congratulazioni! Abbiamo sviluppato un progetto di registrazione dati che raccoglie i dati di accelerazione con VEX IQ Brain (2°) e li memorizza in un file CSV sulla scheda SD. Successivamente, esploreremo come aprire il file CSV per l'analisi dei dati.
Apertura del file CSV per l'analisi dei dati
Una volta scritti i dati nel file CSV sulla scheda SD, possiamo utilizzare un'applicazione per fogli di calcolo per aprire il file per leggere e analizzare i dati.
Nota: Due delle applicazioni per fogli di calcolo più comuni sono Fogli Google e Microsoft Excel. In questo articolo utilizzeremo Fogli Google (basati sul Web) per aprire il file CSV sulla scheda SD. Il processo di utilizzo di altre applicazioni è simile.
- Rimuovere la scheda SD dallo slot della scheda SD del VEX IQ Brain. Se il computer dispone di uno slot per scheda Micro SD integrato, possiamo inserire la scheda SD direttamente in quello slot. Altrimenti, inserisci la scheda SD in un adattatore per schede SD e quindi collega l'adattatore al computer.
- Accedi al nostro account Google e apri Fogli Google. Crea un nuovo foglio di calcolo.
- Nel foglio di calcolo, apri il menu “File” , seleziona “Importa” -> “Carica” -> “Sfoglia” , quindi scegli il file CSV sul computer. Dopo aver caricato il file CSV, fare clic sul pulsante "Importa dati". Dopo aver importato i dati, fare clic su "Apri ora" per visualizzare i dati raccolti nel file CSV.
- (Facoltativo) Un modo semplice per analizzare i dati è disegnare un grafico e quindi cercare le tendenze nei dati. Nel foglio di calcolo, apri il menu “Inserisci” e seleziona “Grafico” per disegnare un grafico utilizzando i dati nel file CSV. Il grafico seguente è il risultato dei dati di accelerazione raccolti con VEX IQ Brain (2°).
Nota: Possiamo utilizzare l'editor di grafici per selezionare un tipo di grafico diverso o modificare il grafico in base alle nostre esigenze.
Fino a questo punto, abbiamo terminato il progetto di registrazione dati che raccoglie i dati con VEX IQ Brain (2°) e li salva in un file CSV sulla scheda SD. Inoltre, abbiamo imparato a leggere il file CSV sulla scheda SD utilizzando Fogli Google e persino a creare un grafico per ulteriori analisi. E dopo? Proviamo a pianificare esperimenti più entusiasmanti utilizzando il robot VEX per la registrazione dei dati, per osservare come i mutevoli fattori ambientali influenzano vari tipi di dati e ottenere una comprensione più profonda del mondo che ci circonda.