Rejestrowanie danych za pomocą mózgu/czujników VEX (wersja Pythona)

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.

    obraz5.png

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

    obraz9.png

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

    obraz13.png

  • 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 zmiennej data_buffer w określonym formacie.

    obraz14.png

    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.

    image7.png

    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ętli for , aby wielokrotnie wykonać instrukcje, które pobierają dane i dołączają dane do zmiennej data_buffer przez pewną liczbę iteracji. Naszą strategią jest użycie wartości zmiennej numOfDataEntries do określenia liczby iteracji.

    obraz12.png

  • 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ętli for , 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ść zmiennej polling_delay_msec.

    image8.png

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.

obraz1.png




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.

Objaśnienie gniazda karty SD EXP (1).png

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.

    image17.png


    Uwaga: funkcja brain.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.

    obraz10.png

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.

    obraz15.png

  • Zanim zapiszemy dane do pliku na karcie SD, przyjrzyjmy się najpierw, jak używać funkcji brain.sdcard.savefile().

    obraz4.png


    Ta instrukcja zapisuje dane zapisane w zmiennej data_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 funkcji brain.sdcard.savefile() w celu zapisania danych przechowywanych w zmiennej data_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.

    image6.png


    Uwaga: Funkcja brain.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 funkcja brain.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. 

obraz16.png

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.

    obraz11.png

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

    image3.png


    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.

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

Last Updated: