Úvod
V tomto článku budeme diskutovat o tom, jak vytvořit projekt protokolování dat, který dá robotu VEX pokyn, aby sbíral data pomocí VEX Brain a ukládal je do souboru CSV na SD kartu pro analýzu dat.
Záznam dat je mocný nástroj, který můžeme použít k podpoře vědeckého výzkumu, provádění vlastních experimentů a řešení konkrétních problémů. Existují různé zábavné a vzrušující úkoly, které můžeme řídit robotem VEX pomocí protokolování dat. Následuje několik příkladů:
- Sběr dat pomocí senzoru vzdálenosti pro výpočet rychlosti robota.
- Řízení robota po třídě a shromažďování dat pomocí optického senzoru pro sledování změn světla na různých místech.
- Vezměte robota na dobrodružství a zaznamenejte data souřadnic GPS pro vytvoření mapy.
Dovednosti kódování potřebné pro vývoj projektu protokolování dat
- Pomocí různých příkazů shromažďujte data pomocí VEX Brain/Sensors a přidejte je do datové struktury.
- Zapište data do souboru CSV (Comma-Separated Values) na SD kartě.
Hardware požadovaný pro protokolování dat:
- Mozek VEX (IQ, V5, EXP)
- SD karta
- Senzor nebo více senzorů (volitelné, podle požadovaných údajů)
Získávání dat ze senzoru
Můžeme naprogramovat robota VEX (IQ, V5, EXP), aby zachytil data z následujících senzorů:
- Inerciální senzor
- Snímač vzdálenosti
- Optický senzor
- Vision Sensor
- Rotační senzor (V5, EXP)
- GPS senzor (V5)
Poznámka: VEX IQ (2. generace) Brain a VEX EXP Brain mají zabudovaný inerciální senzor. Můžeme sbírat data inerciálního senzoru pomocí těchto mozků VEX.
V tomto článku vyvineme projekt protokolování dat, který shromažďuje data o zrychlení pomocí VEX IQ Brain (2. gen) a ukládá je na SD kartu.
Nejprve musíme napsat krátký program, abychom získali údaje z časovače a inerciálního senzoru zabudovaného ve VEX IQ Brain (2. gen).
- Na začátku tohoto programu budeme muset importovat moduly Pythonu pro ovládání VEX IQ Brain (2. gen) a načíst z něj data. Začněte tedy přidáním těchto pokynů do projektu.
- Dále přidejte kód pro deklarování proměnné
numOfDataEntriespro uložení počtu datových záznamů pro záznam, deklarujte proměnnoupolling_delay_msecpro uložení hodnoty časového intervalu pro čtení dat a vytvořte prázdnou řetězcovou proměnnoudata_bufferk uložení. data načtená ze senzoru. - Protože k přidání časového razítka k datům použijeme aktuální hodnotu časovače, musíme před zahájením sběru dat resetovat hodnotu časovače zpět na 0 sekund.
- Před použitím instrukce, která načítá data z VEX IQ Brain (2.) a zaznamenává data do vyrovnávací paměti, jí musíme nejprve porozumět.
Následující instrukce připojí aktuální hodnotu časovače k proměnnédata_bufferve specifickém formátu.Rozdělme formátovací řetězec
“%1.3f“:- „%“: Zavádí specifikátor převodu.
- „1“: Označuje minimální počet číslic, které má řetězec obsahovat.
- „.3“: Určuje počet desetinných míst, která mají být zahrnuta do formátovaného čísla.
- „f“: Označuje, že hodnota, která má být formátována, je číslo s plovoucí desetinnou čárkou.
Můžeme tedy použít formátovací řetězec „%1.3f“ pro formátování čísla s plovoucí desetinnou čárkou s minimální šířkou 1 číslice a přesností na 3 desetinná místa.
- Nyní můžeme přečíst časovač a hodnotu zrychlení inerciálního senzoru vestavěného ve VEX IQ Brain (2. gen) a poté připojit data k proměnné
data_bufferve stanoveném formátu.Poznámka: „\n“ je znak nového řádku. Označuje, že řádek končí zde a začátek nového řádku.
- Poté, abychom zaznamenali určitý počet datových záznamů do proměnné
data_buffer, můžeme použítpro smyčkuk opakovanému provádění instrukcí, které načítají data a připojují data k proměnnédata_bufferpo řadu iterací. Naší strategií je použít hodnotu proměnnénumOfDataEntriesk určení počtu iterací.
- Náš program zatím zaznamenává data tak rychle, jak je to jen možné. Chceme však zaznamenávat data v určitých časových intervalech. Proto můžeme použít funkci
wait()ve smyčcefork pozastavení programu a přidání specifického časového intervalu mezi dvěma čteními. Hodnotu proměnnépolling_delay_msecpoužijeme k určení hodnoty časového intervalu.
Gratulujeme! Dokončili jsme program, abychom získali údaje (údaje o zrychlení) z inerciálního senzoru zabudovaného ve VEX Brain. Dále prozkoumáme, jak zapsat data do souboru CSV na SD kartu.
Připojení SD karty k VEX Brain
Před zápisem dat do souboru na SD kartu nejprve vložte SD kartu do slotu pro SD kartu ve VEX Brain.
Poznámka: Naformátujte SD kartu na FAT32 pro zápis dat. Doporučujeme používat karty SD o velikosti 32 GB nebo méně.
Aby bylo zajištěno, že zápis dat do souboru na SD kartě může být proveden za vhodných podmínek, budeme muset přidat kód pro kontrolu, zda je SD karta správně vložena do VEX IQ Brain (2. gen).
- Pomocí funkce
brain.sdcard.is_inserted()zkontrolujte, zda je vložena SD karta. Pokud není vložena SD karta, zobrazte odpovídající zprávu na obrazovce mozku VEX IQ a podržte program.
Poznámka:funkce brain.sdcard.is_inserted()vrátí hodnotu True, pokud je do Brain vložena SD karta.
Zápis dat do souboru CSV na SD kartě
Náš program zatím dokáže sbírat data pomocí VEX IQ Brain (2. gen). K dokončení projektu protokolování dat musíme data zapsat do souboru CSV (Comma-Separated Values) na SD kartě pro budoucí zkoumání a analýzu.
- Při zápisu různých typů dat do souboru CSV chceme vědět, jaký typ dat každý sloupec obsahuje. K tomu můžeme před záznamem dat připojit text hlavičky CSV k proměnné
data_buffer.
Přidejte tedy kód pro deklaraci proměnnécsvHeaderTextpro uložení textu hlavičky CSV pro specifikaci názvů sloupců pro soubor CSV a deklarování proměnnésd_file_namepro uložení názvu souboru CSV, do kterého se má zapisovat. SD karta.
Poznámka: Ujistěte se, že záhlaví jsou ve stejném pořadí jako data uložená v proměnné data_buffer.
- Dále připojte text hlavičky CSV k řetězci
data_bufferpřed smyčkuforpro sběr dat.
- Před zápisem dat do souboru na SD kartě si nejprve porozumějte, jak použít funkci
brain.sdcard.savefile().
Tato instrukce zapíše data uložená v proměnnédata_bufferdo pojmenovaného souboru CSV na SD kartě.
Rozeberme si to:-
brain.sdcard.savefile(): Funkce uloží bajtové pole do pojmenovaného souboru na SD kartě. Funkce vrací počet bajtů zapsaných do souboru.
-
sd_file_name: První parametr funkce. Označuje název souboru, který se má zapsat. V tomto projektu je název souboru uložen v proměnné
sd_file_name. -
bytearray(datat_buffer,'utf-8'): Druhý parametr funkce. Představuje bajtray, který se má zapsat do souboru.
-
- bytearray(): Metoda vytvoří proměnlivý bytearray. V této instrukci jej používáme k převodu řetězce na byearray zadáním kódování.
- data_buffer: První parametr metody. Označuje zdroj, který má být převeden na byearray. V tomto projektu jsou zdrojem data uložená v proměnné
data_buffer. - 'utf-8': Druhý parametr metody. Označuje zadané kódování použité ke kódování řetězce. Kódování je v této instrukci 'utf-8'.
-
-
- Po smyčce
forpro sběr dat použijte funkcibrain.sdcard.savefile()k zápisu dat uložených v proměnnédata_bufferdo souboru CSV na SD kartě. Kromě toho přidejte kód pro kontrolu návratové hodnoty z funkcebrain.sdcard.savefile(), abyste ověřili, zda byla data zapsána do souboru úspěšně, a zobrazte odpovídající zprávu na obrazovce VEX IQ Brain, abyste získali skutečné časová zpětná vazba.
Poznámka: Funkcebrain.sdcard.savefile()vrací počet bajtů zapsaných do souboru. V tomto projektu jej používáme k zápisu shromážděných dat do souboru CSV, takže počet bajtů zapsaných do souboru musí být větší než nula. Jinými slovy, pokud funkcebrain.sdcard.savefile()vrátí 0, můžeme dojít k závěru, že data nebyla úspěšně zapsána do souboru. Jinak byla data zapsána do souboru.
Gratulujeme! Vyvinuli jsme projekt protokolování dat, který shromažďuje data o zrychlení pomocí VEX IQ Brain (2. gen) a ukládá je do souboru CSV na SD kartě. Dále prozkoumáme, jak otevřít soubor CSV pro analýzu dat.
Otevření souboru CSV pro analýzu dat
Jakmile jsou data zapsána do souboru CSV na SD kartě, můžeme soubor otevřít pomocí tabulkového procesoru pro čtení a analýzu dat.
Poznámka: Dvě z nejběžnějších tabulkových aplikací jsou Tabulky Google a Microsoft Excel. V tomto článku použijeme Tabulky Google (webové) k otevření souboru CSV na kartě SD. Proces používání jiných aplikací je podobný.
- Vyjměte SD kartu ze slotu SD karty VEX IQ Brain. Pokud má počítač vestavěný slot pro Micro SD kartu, můžeme SD kartu vložit přímo do tohoto slotu. V opačném případě vložte kartu SD do adaptéru karty SD a poté adaptér připojte k počítači.
- Přihlaste se k našemu účtu Google a otevřete Tabulky Google. Vytvořte novou tabulku.
- V tabulce otevřete nabídku „Soubor“ , vyberte „Importovat“ –> „Nahrát“ –> „Procházet“ a poté v počítači vyberte soubor CSV. Po nahrání souboru CSV klikněte na tlačítko „Importovat data“. Po importu dat klikněte na „Otevřít nyní“ pro zobrazení shromážděných dat v souboru CSV.
- (Volitelné) Jeden snadný způsob, jak analyzovat data, je nakreslit graf a pak hledat trendy v datech. V tabulce otevřete nabídku „Insert“ a vyberte „Chart“ pro nakreslení grafu pomocí dat v souboru CSV. Následující graf je výsledkem údajů o zrychlení shromážděných pomocí VEX IQ Brain (2. gen).
Poznámka: Můžeme použít editor grafů k výběru jiného typu grafu nebo k úpravě grafu podle našich potřeb.
Do této chvíle jsme dokončili projekt protokolování dat, který shromažďuje data pomocí VEX IQ Brain (2. gen) a ukládá je do souboru CSV na SD kartu. Také jsme se naučili číst soubor CSV na kartě SD pomocí Tabulek Google a dokonce vytvořit graf pro další analýzu. Co dál? Pokusme se naplánovat další vzrušující experimenty s použitím robota VEX pro záznam dat, abychom mohli sledovat, jak měnící se faktory prostředí ovlivňují různé typy dat, a hlouběji porozumět světu kolem nás.