Einführung
In diesem Artikel besprechen wir, wie man ein Datenprotokollierungsprojekt erstellt, das den VEX-Roboter anweist, Daten mit dem VEX Brain zu sammeln und sie zur Datenanalyse in einer CSV-Datei auf der SD-Karte zu speichern.
Die Datenprotokollierung ist ein leistungsstarkes Werkzeug, mit dem wir wissenschaftliche Forschung unterstützen, eigene Experimente durchführen und spezifische Probleme lösen können. Es gibt verschiedene unterhaltsame und spannende Aufgaben, die wir mit dem VEX-Roboter mithilfe der Datenprotokollierung erledigen können. Nachfolgend einige Beispiele:
- Sammeln von Daten mit dem Distanzsensor zur Berechnung der Geschwindigkeit des Roboters
- Fahren Sie den Roboter durch das Klassenzimmer und sammeln Sie Daten mit dem optischen Sensor, um Lichtveränderungen an verschiedenen Orten zu beobachten.
- Nehmen Sie den Roboter mit auf ein Abenteuer und zeichnen Sie GPS-Koordinatendaten auf, um eine Karte zu erstellen.
Für die Entwicklung eines Datenprotokollierungsprojekts erforderliche Programmierkenntnisse
- Verwenden Sie verschiedene Befehle, um Daten mit VEX Brain/Sensors zu sammeln und sie einer Datenstruktur hinzuzufügen.
- Schreiben Sie die Daten in eine CSV-Datei (Comma-Separated Values) auf der SD-Karte.
Erforderliche Hardware für die Datenprotokollierung:
- Ein VEX-Gehirn (IQ, V5, EXP)
- Eine SD-Karte
- Ein Sensor oder mehrere Sensoren (optional, je nach den erforderlichen Daten)
Daten vom Sensor abrufen
Wir können den VEX-Roboter (IQ, V5, EXP) so programmieren, dass er die Daten der folgenden Sensoren erfasst:
- Trägheitssensor
- Abstandssensor
- Optischer Sensor
- Vision-Sensor
- Rotationssensor (V5, EXP)
- GPS-Sensor (V5)
Hinweis: Das VEX IQ Brain (2. Generation) und das VEX EXP Brain verfügen über einen integrierten Trägheitssensor. Mit diesen VEX-Brians können wir die Daten des Trägheitssensors sammeln.
In diesem Artikel entwickeln wir ein Datenprotokollierungsprojekt, das die Beschleunigungsdaten mit dem VEX IQ Brain (2.) sammelt und auf einer SD-Karte speichert.
Zuerst müssen wir ein kurzes Programm schreiben, um Messwerte vom Timer und dem im VEX IQ Brain integrierten Trägheitssensor zu erhalten (2.).
- Zu Beginn dieses Programms müssen wir die Python-Module importieren, um VEX IQ Brain (2.) zu steuern und die Daten daraus abzurufen. Beginnen Sie also damit, diese Anweisungen zum Projekt hinzuzufügen.
- Fügen Sie als Nächstes den Code hinzu, um eine Variable
numOfDataEntries
zu deklarieren, um die Anzahl der Dateneinträge für die Aufzeichnung zu speichern, deklarieren Sie eine Variablepolling_delay_msec
, um den Wert des Zeitintervalls zum Lesen von Daten zu speichern, und erstellen Sie eine leere Zeichenfolgenvariabledata_buffer
zum Speichern die vom Sensor gelesenen Daten. - Da wir den aktuellen Wert des Timers verwenden, um den Zeitstempel zu den Daten hinzuzufügen, müssen wir den Timerwert auf 0 Sekunden zurücksetzen, bevor wir mit der Datenerfassung beginnen.
- Bevor wir die Anweisung verwenden, die die Daten vom VEX IQ Brain (2.) abruft und die Daten im Puffer aufzeichnet, müssen wir sie zunächst verstehen.
Die folgende Anweisung hängt den aktuellen Timerwert in einem bestimmten Format an die Variabledata_buffer
an.Lassen Sie uns die Formatzeichenfolge
„%1.3f“
aufschlüsseln:- „%“: Führt den Konvertierungsspezifizierer ein.
- „1“: Gibt die Mindestanzahl an Ziffern an, die in der Zeichenfolge vorhanden sein müssen
- „.3“: Gibt die Anzahl der Dezimalstellen an, die in die formatierte Zahl einbezogen werden sollen.
- „f“: Gibt an, dass der zu formatierende Wert eine Gleitkommazahl ist.
Somit können wir mit der Formatzeichenfolge „%1.3f“ eine Gleitkommazahl mit einer Mindestbreite von 1 Ziffer und einer Genauigkeit von 3 Dezimalstellen formatieren.
- Jetzt können wir den Timer und den Beschleunigungswert des im VEX IQ Brain (2.) integrierten Trägheitssensors lesen und die Daten dann im angegebenen Format an die Variable
data_buffer
anhängen.Hinweis: „\n“ ist das Zeichen für die neue Zeile. Es zeigt an, dass die Zeile hier endet und eine neue Zeile beginnt.
- Um dann eine bestimmte Anzahl von Dateneinträgen in der Variablen
data_buffer
aufzuzeichnen, können wir einefor-Schleife
verwenden, um die Anweisungen, die die Daten abrufen und die Daten für eine Reihe von Iterationen an die Variabledata_buffer
anhängen, wiederholt auszuführen. Unsere Strategie besteht darin, den Wert der VariablennumOfDataEntries
zu verwenden, um die Anzahl der Iterationen zu bestimmen.
- Bisher zeichnet unser Programm Daten so schnell wie möglich auf. Wir möchten jedoch Daten in bestimmten Zeitintervallen aufzeichnen. Daher können wir eine
wait()
Funktion in derfor-Schleife
verwenden, um das Programm anzuhalten, um das spezifische Zeitintervall zwischen zwei Messwerten hinzuzufügen. Wir verwenden den Wert der Variablenpolling_delay_msec
, um den Wert des Zeitintervalls zu bestimmen.
Glückwunsch! Wir haben das Programm abgeschlossen, um Messwerte (die Beschleunigungsdaten) vom im VEX Brain integrierten Trägheitssensor zu erhalten. Als Nächstes erfahren Sie, wie Sie die Daten in eine CSV-Datei auf der SD-Karte schreiben.
Anbringen der SD-Karte am VEX Brain
Bevor Sie die Daten in eine Datei auf einer SD-Karte schreiben, stecken Sie zunächst die SD-Karte in den SD-Kartensteckplatz des VEX Brain.
Hinweis: Formatieren Sie die SD-Karte zum Schreiben von Daten auf FAT32. Wir empfehlen die Verwendung von SD-Karten mit einer Größe von 32 GB oder weniger.
Um sicherzustellen, dass das Schreiben von Daten in eine Datei auf der SD-Karte unter geeigneten Bedingungen durchgeführt werden kann, müssen wir Code hinzufügen, um zu überprüfen, ob die SD-Karte ordnungsgemäß in das VEX IQ Brain (2.) eingelegt ist.
- Verwenden Sie die Funktion
brain.sdcard.is_inserted()
, um zu überprüfen, ob die SD-Karte eingelegt ist. Wenn die SD-Karte nicht eingelegt ist, zeigen Sie die entsprechende Meldung auf dem VEX IQ Brain-Bildschirm an und halten Sie das Programm gedrückt.
Hinweis: Diebrain.sdcard.is_inserted()
Funktion gibt „True“ zurück, wenn eine SD-Karte in das Brain eingelegt ist.
Schreiben der Daten in eine CSV-Datei auf der SD-Karte
Bisher kann unser Programm Daten mit dem VEX IQ Brain (2.) sammeln. Um das Datenprotokollierungsprojekt abzuschließen, müssen wir die Daten zur späteren Prüfung und Analyse in eine CSV-Datei (Comma-Separated Values) auf der SD-Karte schreiben.
- Wenn wir verschiedene Datentypen in eine CSV-Datei schreiben, möchten wir wissen, welche Datentypen jede Spalte enthält. Dazu können wir den CSV-Headertext vor der Datenaufzeichnung an die Variable
data_buffer
anhängen.
Fügen Sie daher den Code hinzu, um eine VariablecsvHeaderText
zu deklarieren, um den CSV-Headertext zu speichern, um die Spaltennamen für die CSV-Datei anzugeben, und deklarieren Sie eine Variablesd_file_name
, um den Namen der CSV-Datei zu speichern, in die geschrieben werden soll SD-Karte.
Hinweis: Stellen Sie sicher, dass die Header in derselben Reihenfolge sind wie die in der Variablen data_buffer
gespeicherten Daten.
- Als nächstes hängen Sie den CSV-Headertext an die Zeichenfolge
data_buffer
vor der Zeichenfolgefür Schleife
zur Datenerfassung an.
- Bevor wir Daten in eine Datei auf der SD-Karte schreiben, wollen wir zunächst verstehen, wie die Funktion
brain.sdcard.savefile()
verwendet wird.
Diese Anweisung schreibt die in der Variablendata_buffer
gespeicherten Daten in eine benannte CSV-Datei auf der SD-Karte.
Lassen Sie es uns aufschlüsseln:-
brain.sdcard.savefile(): Die Funktion speichert ein Bytearray in einer benannten Datei auf der SD-Karte. Die Funktion gibt die Anzahl der in die Datei geschriebenen Bytes zurück.
-
sd_file_name: Der erste Parameter der Funktion. Gibt den Namen der zu schreibenden Datei an. In diesem Projekt wird der Dateiname in der Variablen
sd_file_name gespeichert.
-
bytearray(datat_buffer,'utf-8'): Der zweite Parameter der Funktion. Stellt das Bytearray dar, das in die Datei geschrieben werden soll.
-
- bytearray(): Die Methode erstellt ein veränderbares Bytearray. In dieser Anleitung verwenden wir es, um einen String in ein Bytearray umzuwandeln, indem wir die Codierung angeben.
- data_buffer: Der erste Parameter der Methode. Gibt die Quelle an, die in ein Bytearray konvertiert werden soll. In diesem Projekt sind die Daten, die in der Variablen
data_buffer gespeichert sind, die Quelle.
- 'utf-8': Der zweite Parameter der Methode. Gibt die angegebene Codierung an, die zum Codieren der Zeichenfolge verwendet wird. Die Kodierung in dieser Anleitung ist „utf-8“.
-
-
- Verwenden Sie nach der
for-Schleife
zur Datenerfassung die Funktionbrain.sdcard.savefile()
, um die in der Variablendata_buffer
gespeicherten Daten in die CSV-Datei auf der SD-Karte zu schreiben. Fügen Sie außerdem den Code hinzu, um den Rückgabewert der Funktionbrain.sdcard.savefile()
zu überprüfen, um zu überprüfen, ob die Daten erfolgreich in die Datei geschrieben wurden, und um die entsprechende Meldung auf dem VEX IQ Brain-Bildschirm anzuzeigen, um echte Informationen zu erhalten. Zeit-Feedback.
Hinweis: Die Funktionbrain.sdcard.savefile()
gibt die Anzahl der in die Datei geschriebenen Bytes zurück. In diesem Projekt verwenden wir es, um die gesammelten Daten in eine CSV-Datei zu schreiben, daher muss die Anzahl der in die Datei geschriebenen Bytes größer als Null sein. Mit anderen Worten: Wenn die Funktionbrain.sdcard.savefile()
0 zurückgibt, können wir daraus schließen, dass die Daten nicht erfolgreich in die Datei geschrieben wurden. Andernfalls wurden die Daten in die Datei geschrieben.
Glückwunsch! Wir haben ein Datenprotokollierungsprojekt entwickelt, das die Beschleunigungsdaten mit dem VEX IQ Brain (2.) sammelt und in einer CSV-Datei auf der SD-Karte speichert. Als Nächstes erfahren Sie, wie Sie die CSV-Datei für die Datenanalyse öffnen.
Öffnen der CSV-Datei zur Datenanalyse
Sobald die Daten in die CSV-Datei auf der SD-Karte geschrieben wurden, können wir die Datei mit einem Tabellenkalkulationsprogramm öffnen, um die Daten zu lesen und zu analysieren.
Hinweis: Zwei der häufigsten Tabellenkalkulationsanwendungen sind Google Sheets und Microsoft Excel. In diesem Artikel verwenden wir Google Sheets (webbasiert), um die CSV-Datei auf der SD-Karte zu öffnen. Der Vorgang bei der Verwendung anderer Anwendungen ist ähnlich.
- Entfernen Sie die SD-Karte aus dem SD-Kartensteckplatz des VEX IQ Brain. Wenn der Computer über einen integrierten Micro-SD-Kartensteckplatz verfügt, können wir die SD-Karte direkt in diesen Steckplatz einlegen. Andernfalls stecken Sie die SD-Karte in einen SD-Kartenadapter und schließen Sie den Adapter dann an den Computer an.
- Melden Sie sich bei unserem Google-Konto an und öffnen Sie Google Sheets. Erstellen Sie eine neue Tabelle.
- Öffnen Sie in der Tabellenkalkulation das Menü „Datei“ , wählen Sie die Schaltfläche „Importieren“ -> „Hochladen“ -> „Durchsuchen“ und wählen Sie dann die CSV-Datei auf dem Computer aus. Klicken Sie nach dem Hochladen der CSV-Datei auf die Schaltfläche „Daten importieren“. Klicken Sie nach dem Importieren der Daten auf „Jetzt öffnen“ , um die gesammelten Daten in der CSV-Datei anzuzeigen.
- (Optional) Eine einfache Möglichkeit, die Daten zu analysieren, besteht darin, ein Diagramm zu zeichnen und dann nach Trends in den Daten zu suchen. Öffnen Sie in der Tabelle das Menü „Einfügen“ und wählen Sie „Diagramm“ aus, um ein Diagramm mit den Daten in der CSV-Datei zu zeichnen. Die folgende Grafik ist das Ergebnis der mit dem VEX IQ Brain (2.) erfassten Beschleunigungsdaten.
Hinweis: Wir können den Diagrammeditor verwenden, um einen anderen Diagrammtyp auszuwählen oder das Diagramm entsprechend unseren Anforderungen zu bearbeiten.
Bis zu diesem Punkt haben wir das Datenprotokollierungsprojekt abgeschlossen, bei dem Daten mit dem VEX IQ Brain (2.) gesammelt und in einer CSV-Datei auf der SD-Karte gespeichert werden. Außerdem haben wir gelernt, wie man die CSV-Datei auf der SD-Karte mit Google Sheets liest und sogar ein Diagramm zur weiteren Analyse erstellt. Was als nächstes? Versuchen wir, weitere spannende Experimente mit dem VEX-Roboter zur Datenprotokollierung zu planen, um zu beobachten, wie sich die sich ändernden Umweltfaktoren auf verschiedene Arten von Daten auswirken, und um ein tieferes Verständnis der Welt um uns herum zu erlangen.