Wstęp
W tym artykule omówimy, jak stworzyć projekt rejestracji danych, który instruuje Robota VEX, aby zbierał dane za pomocą VEX Brain i zapisywał je w pliku CSV na karcie SD w celu analizy danych.
Rejestrowanie danych to potężne narzędzie, które możemy wykorzystać do wspomagania badań naukowych, przeprowadzania własnych eksperymentów i rozwiązywania konkretnych problemów. Istnieje wiele zabawnych i ekscytujących zadań, które możemy wykonać za pomocą robota VEX za pomocą rejestrowania danych. Oto kilka przykładów:
- Zbieranie danych za pomocą czujnika odległości w celu obliczenia prędkości robota
- Prowadzenie robota po klasie i zbieranie danych za pomocą czujnika optycznego w celu obserwacji zmian oświetlenia w różnych miejscach.
- Zabierz robota na przygodę i zapisz współrzędne GPS, aby stworzyć mapę.
Umiejętności kodowania potrzebne do opracowania projektu rejestrowania danych
- Użyj różnych poleceń, aby zebrać dane za pomocą VEX Brain/Sensors i dodać je do struktury danych.
- Zapisz dane w pliku wartości rozdzielanych przecinkami (CSV) na karcie SD.
Sprzęt wymagany do rejestrowania danych:
- Mózg VEX (IQ, V5, EXP)
- Karta SD
- Czujnik lub wiele czujników (opcjonalnie, w zależności od wymaganych danych)
Pobieranie danych z czujnika
Możemy zaprogramować Robota VEX (IQ, V5, EXP) tak, aby zbierał dane z następujących czujników:
- Czujnik inercyjny
- Czujnik odległości
- Czujnik optyczny
- Czujnik wizyjny
- Czujnik obrotu (V5, EXP)
- Czujnik GPS (V5)
Uwaga: Brain VEX IQ (2. generacji) i VEX EXP Brain mają wbudowany czujnik bezwładnościowy. Za pomocą tych Brianów VEX możemy zbierać dane z czujnika inercyjnego.
W tym artykule opracujemy projekt rejestrowania danych, który zbiera dane dotyczące przyspieszenia za pomocą VEX IQ Brain (2.) i zapisuje je na karcie SD.
Najpierw musimy napisać krótki program, który pobierze odczyty z timera i czujnika inercyjnego wbudowanego w mózg VEX IQ (2. miejsce).
- Na początku tego programu będziemy musieli zaimportować moduły Pythona do sterowania VEX IQ Brain (2. miejsce) i pobrać z niego dane. Zatem zacznij od dodania tych instrukcji do projektu.
- Następnie dodaj kod deklarujący zmienną
numOfDataEntries
do przechowywania liczby wpisów danych do rejestracji, zadeklaruj zmiennąpolling_delay_msec
do przechowywania wartości przedziału czasu do odczytu danych i utwórz pustą zmienną łańcuchowądata_buffer
do przechowywania dane odczytane z czujnika. - Ponieważ użyjemy bieżącej wartości Timera do dodania znacznika czasu do danych, przed rozpoczęciem zbierania danych musimy zresetować wartość timera z powrotem do 0 sekund.
- Zanim skorzystamy z instrukcji pobierającej dane z VEX IQ Brain (2. miejsce) i zapisującej dane w buforze, musimy ją najpierw zrozumieć.
Poniższa instrukcja dołącza bieżącą wartość licznika do zmiennejdata_buffer
w określonym formacie.Rozłóżmy ciąg formatujący
„%1.3f”
:- „%”: wprowadza specyfikator konwersji.
- „1”: Wskazuje minimalną liczbę cyfr w ciągu znaków
- „.3”: Określa liczbę miejsc dziesiętnych, które należy uwzględnić w sformatowanej liczbie.
- „f”: wskazuje, że wartość do sformatowania jest liczbą zmiennoprzecinkową.
W ten sposób możemy użyć ciągu formatującego „%1.3f” do sformatowania liczby zmiennoprzecinkowej o minimalnej szerokości 1 cyfry i dokładności do 3 miejsc po przecinku.
- Teraz możemy odczytać licznik czasu i wartość przyspieszenia czujnika bezwładnościowego wbudowanego w mózg VEX IQ (2. miejsce), a następnie dołączyć dane do zmiennej
data_buffer
w określonym formacie.Uwaga: „\n” to znak nowej linii. Wskazuje, że linia kończy się w tym miejscu i zaczyna się nowa linia.
- Następnie, aby zapisać pewną liczbę wpisów danych w zmiennej
data_buffer
, możemy użyć pętlifor
, aby wielokrotnie wykonać instrukcje, które pobierają dane i dołączają dane do zmiennejdata_buffer
przez pewną liczbę iteracji. Naszą strategią jest użycie wartości zmiennejnumOfDataEntries
do określenia liczby iteracji.
- Póki co nasz program rejestruje dane najszybciej jak to możliwe. Chcemy jednak rejestrować dane w określonych odstępach czasu. Dlatego możemy użyć funkcji
wait()
w pętlifor
, aby wstrzymać program w celu dodania określonego odstępu czasu między dwoma odczytami. Do określenia wartości przedziału czasowego wykorzystujemy wartość zmiennejpolling_delay_msec
.
Gratulacje! Zakończyliśmy program uzyskiwania odczytów (danych dotyczących przyspieszenia) z czujnika bezwładnościowego wbudowanego w mózg VEX. Następnie przyjrzymy się, jak zapisać dane w pliku CSV na karcie SD.
Podłączanie karty SD do VEX Brain
Przed zapisaniem danych do pliku na karcie SD, włóż najpierw kartę SD do gniazda kart SD w VEX Brain.
Uwaga: Aby móc zapisywać dane, sformatuj kartę SD w systemie FAT32. Zalecamy używanie kart SD o pojemności 32 GB lub mniejszej.
Aby mieć pewność, że zapis danych do pliku na karcie SD będzie możliwy w odpowiednich warunkach, będziemy musieli dodać kod sprawdzający, czy karta SD jest prawidłowo włożona do VEX IQ Brain (2. miejsce).
- Użyj funkcji
brain.sdcard.is_inserted()
, aby sprawdzić, czy karta SD jest włożona. Jeśli karta SD nie jest włożona, wyświetl odpowiedni komunikat na ekranie VEX IQ Brain Screen i przytrzymaj program.
Uwaga: funkcjabrain.sdcard.is_inserted()
zwraca True, jeśli karta SD jest włożona do Brain.
Zapisywanie danych do pliku CSV na karcie SD
Jak dotąd nasz program może zbierać dane za pomocą VEX IQ Brain (2. miejsce). Aby ukończyć projekt rejestrowania danych, musimy zapisać dane w pliku wartości rozdzielanych przecinkami (CSV) na karcie SD w celu przyszłego sprawdzenia i analizy.
- Zapisując różne typy danych w pliku CSV, chcemy wiedzieć, jaki typ danych zawiera każda kolumna. Aby to zrobić, możemy dołączyć tekst nagłówka CSV do zmiennej
data_buffer
przed zarejestrowaniem danych.
Zatem dodaj kod deklarujący zmiennącsvHeaderText
przechowujący tekst nagłówka CSV określający nazwy kolumn dla pliku CSV i deklarujący zmiennąnazwa_pliku
przechowujący nazwę pliku CSV do zapisania na Karta SD.
Uwaga: Upewnij się, że nagłówki są w tej samej kolejności, co dane zapisane w zmiennej data_buffer
.
- Następnie dołącz tekst nagłówka CSV do ciągu
data_buffer
przed pętląfor
w celu gromadzenia danych.
- Zanim zapiszemy dane do pliku na karcie SD, przyjrzyjmy się najpierw, jak używać funkcji
brain.sdcard.savefile()
.
Ta instrukcja zapisuje dane zapisane w zmiennejdata_buffer
do nazwanego pliku CSV na karcie SD.
Rozłóżmy to na czynniki pierwsze:-
brain.sdcard.savefile(): Funkcja zapisuje bajtarray do nazwanego pliku na karcie SD. Funkcja zwraca liczbę bajtów zapisanych do pliku.
-
nazwa_pliku sd: Pierwszy parametr funkcji. Wskazuje nazwę pliku do zapisania. W tym projekcie nazwa pliku jest przechowywana w zmiennej
sd_file_name.
-
bytearray(datat_buffer,'utf-8'): Drugi parametr funkcji. Reprezentuje tablicę bajtową, która ma zostać zapisana w pliku.
-
- bytearray(): Metoda tworzy zmienną bajtarray. W tej instrukcji używamy go do konwersji ciągu znaków na tablicę bajtową poprzez określenie kodowania.
- data_buffer: Pierwszy parametr metody. Wskazuje źródło, które ma zostać przekonwertowane na tablicę bajtową. W tym projekcie źródłem są dane zapisane w zmiennej
data_buffer.
- „utf-8”: Drugi parametr metody. Wskazuje określone kodowanie użyte do kodowania ciągu. W tej instrukcji kodowanie to „utf-8”.
-
-
- Po pętli
for
do zbierania danych użyj funkcjibrain.sdcard.savefile()
w celu zapisania danych przechowywanych w zmiennejdata_buffer
do pliku CSV na karcie SD. Dodatkowo dodaj kod, aby sprawdzić wartość zwracaną przez funkcjębrain.sdcard.savefile()
, aby sprawdzić, czy dane zostały pomyślnie zapisane do pliku i wyświetlić odpowiedni komunikat na ekranie VEX IQ Brain, aby uzyskać realny efekt informacja zwrotna o czasie.
Uwaga: Funkcjabrain.sdcard.savefile()
zwraca liczbę bajtów zapisanych w pliku. W tym projekcie wykorzystujemy go do zapisania zebranych danych do pliku CSV, więc liczba bajtów zapisywanych do pliku musi być większa od zera. Innymi słowy, jeśli funkcjabrain.sdcard.savefile()
zwróci 0, możemy stwierdzić, że dane nie zostały pomyślnie zapisane do pliku. W przeciwnym razie dane zostały zapisane w pliku.
Gratulacje! Opracowaliśmy projekt rejestrowania danych, który zbiera dane dotyczące przyspieszenia za pomocą VEX IQ Brain (2.) i zapisuje je w pliku CSV na karcie SD. Następnie dowiemy się, jak otworzyć plik CSV w celu analizy danych.
Otwieranie pliku CSV do analizy danych
Po zapisaniu danych do pliku CSV na karcie SD możemy za pomocą aplikacji arkusza kalkulacyjnego otworzyć plik w celu odczytu i analizy danych.
Uwaga: Dwie najpopularniejsze aplikacje arkuszy kalkulacyjnych to Arkusze Google i Microsoft Excel. W tym artykule użyjemy Arkuszy Google (internetowych) do otwarcia pliku CSV na karcie SD. Proces korzystania z innych aplikacji jest podobny.
- Wyjmij kartę SD z gniazda karty SD VEX IQ Brain. Jeżeli komputer posiada wbudowany slot na kartę Micro SD, możemy włożyć kartę SD bezpośrednio do tego slotu. W przeciwnym razie włóż kartę SD do adaptera karty SD, a następnie podłącz adapter do komputera.
- Zaloguj się na nasze konto Google i otwórz Arkusze Google. Utwórz nowy arkusz kalkulacyjny.
- W arkuszu kalkulacyjnym otwórz menu „Plik” , wybierz przycisk „Importuj” -> „Prześlij” -> „Przeglądaj” , a następnie wybierz plik CSV na komputerze. Po przesłaniu pliku CSV kliknij przycisk „Importuj dane”. Po zaimportowaniu danych kliknij „Otwórz teraz” , aby zobaczyć zebrane dane w pliku CSV.
- (Opcjonalnie) Jednym z łatwych sposobów analizowania danych jest narysowanie wykresu, a następnie wyszukanie trendów w danych. W arkuszu kalkulacyjnym otwórz menu „Wstaw” i wybierz „Wykres” , aby narysować wykres na podstawie danych z pliku CSV. Poniższy wykres przedstawia wynik danych dotyczących przyspieszenia zebranych za pomocą VEX IQ Brain (2. miejsce).
Uwaga: Możemy użyć Edytora wykresów , aby wybrać inny typ wykresu lub edytować wykres w zależności od naszych potrzeb.
Do tego momentu zakończyliśmy projekt rejestrowania danych, który zbiera dane za pomocą VEX IQ Brain (2. miejsce) i zapisuje je w pliku CSV na karcie SD. Dowiedzieliśmy się także, jak odczytać plik CSV na karcie SD za pomocą Arkuszy Google, a nawet stworzyć wykres do dalszej analizy. Co następne? Spróbujmy zaplanować bardziej ekscytujące eksperymenty z wykorzystaniem Robota VEX do rejestracji danych, aby obserwować, jak zmieniające się czynniki środowiskowe wpływają na różne typy danych i uzyskać głębsze zrozumienie otaczającego nas świata.