Įvadas
Šiame straipsnyje aptarsime, kaip sukurti duomenų registravimo projektą, kuris nurodytų VEX robotui rinkti duomenis su VEX Brain ir išsaugoti juos CSV faile SD kortelėje duomenų analizei.
Duomenų registravimas yra galingas įrankis, kurį galime naudoti norėdami padėti moksliniams tyrimams, atlikti savo eksperimentus ir spręsti konkrečias problemas. Yra įvairių įdomių ir įdomių užduočių, kurias galime vairuoti VEX robotu ir atlikti registruodami duomenis. Toliau pateikiami keli pavyzdžiai:
- Duomenų rinkimas su atstumo jutikliu roboto greičiui apskaičiuoti
- Vairuoti robotą po klasę ir rinkti duomenis su optiniu jutikliu, kad būtų galima stebėti šviesos pokyčius įvairiose vietose.
- Roboto išleidimas į nuotykius ir GPS koordinačių duomenų įrašymas, kad būtų sukurtas žemėlapis.
Kodavimo įgūdžiai, reikalingi kuriant duomenų registravimo projektą
- Naudokite įvairias komandas, kad rinktumėte duomenis naudodami VEX Brain/Sensors ir įtraukite juos į duomenų struktūrą.
- Įrašykite duomenis į kableliais atskirtų reikšmių (CSV) failą SD kortelėje.
Duomenų registravimui reikalinga aparatinė įranga:
- A VEX Brain (IQ, V5, EXP)
- SD kortelę
- Jutiklis arba keli jutikliai (neprivaloma, atsižvelgiant į reikiamus duomenis)
Duomenų gavimas iš jutiklio
Galime užprogramuoti VEX robotą (IQ, V5, EXP), kad gautų duomenis iš šių jutiklių:
- Inercinis jutiklis
- Atstumo jutiklis
- Optinis jutiklis
- Regėjimo jutiklis
- Sukimosi jutiklis (V5, EXP)
- GPS jutiklis (V5)
Pastaba: VEX IQ (2-osios kartos) smegenyse ir VEX EXP smegenyse yra įmontuotas inercinis jutiklis. Su šiais VEX Brianais galime rinkti inercinio jutiklio duomenis.
Šiame straipsnyje mes sukursime duomenų registravimo projektą, kuris renka pagreičio duomenis su VEX IQ Brain (2-as) ir išsaugo juos SD kortelėje.
Pirmiausia turime parašyti trumpą programą, kad gautume rodmenis iš laikmačio ir inercinio jutiklio, įmontuoto VEX IQ smegenyse (2-oji).
- Šios programos pradžioje turėsime importuoti Python modulius, kad galėtume valdyti VEX IQ Brain (2nd) ir gauti iš jo duomenis. Taigi pradėkite pridėdami šias instrukcijas prie projekto.
- Tada pridėkite kodą, kad deklaruotumėte kintamąjį
numOfDataEntries
, kad būtų išsaugotas įrašymo duomenų įrašų skaičius, deklaruokite kintamąjįpolling_delay_msec
, kad išsaugotumėte duomenų skaitymo laiko intervalo reikšmę, ir sukurkite tuščią eilutės kintamąjįdata_buffer
, kad būtų išsaugotas. iš jutiklio nuskaitytus duomenis. - Kadangi naudosime dabartinę laikmačio vertę, kad pridėtume laiko žymą prie duomenų, prieš pradėdami rinkti duomenis, turime iš naujo nustatyti laikmačio reikšmę iki 0 sekundžių.
- Prieš naudodami instrukciją, kuri paima duomenis iš VEX IQ Brain (2-oji) ir įrašo duomenis į buferį, pirmiausia turime ją suprasti.
Ši instrukcija prideda esamą laikmačio reikšmę priedata_buffer
kintamojo konkrečiu formatu.Išskaidykime formato eilutę
“%1.3f”
:- „%“: pristato konversijos specifikaciją.
- „1“: nurodo mažiausią skaitmenų skaičių, kuris turi būti eilutėje
- „.3“: nurodo skaičių po kablelio skaičių, kurį reikia įtraukti į formatuotą skaičių.
- „f“: nurodo, kad formatuotina reikšmė yra slankiojo kablelio skaičius.
Taigi galime naudoti formato eilutę „%1.3f“, kad suformatuotume slankiojo kablelio skaičių, kurio minimalus plotis yra 1 skaitmuo ir 3 skaitmenų po kablelio tikslumas.
- Dabar galime nuskaityti laikmatį ir VEX IQ smegenyse įtaisyto inercinio jutiklio (2-asis) pagreičio vertę, o tada pridėti duomenis prie
data_buffer
kintamojo nurodytu formatu.Pastaba: „\n“ yra naujos eilutės simbolis. Tai rodo, kad eilutė baigiasi čia ir naujos eilutės pradžia.
- Tada, norėdami įrašyti tam tikrą skaičių duomenų įrašų į
data_buffer
kintamąjį, galime naudotifor loop
pakartotinai vykdyti instrukcijas, kurios gauna duomenis, ir pridėti duomenis prie kintamojodata_buffer
, kad būtų galima atlikti keletą iteracijų. Mūsų strategija yra naudoti kintamojonumOfDataEntries
reikšmę iteracijų skaičiui nustatyti.
- Iki šiol mūsų programa įrašo duomenis taip greitai, kaip tik įmanoma. Tačiau norime įrašyti duomenis tam tikrais laiko intervalais. Todėl galime naudoti funkciją
wait()
3 ciklefor
norėdami pristabdyti programą ir pridėti konkretų laiko intervalą tarp dviejų rodmenų. Laiko intervalo reikšmei nustatyti naudojame kintamojopolling_delay_msec
reikšmę.
Sveikiname! Baigėme programą, kad gautume rodmenis (pagreičio duomenis) iš inercinio jutiklio, įmontuoto VEX smegenyse. Toliau išnagrinėsime, kaip įrašyti duomenis į CSV failą SD kortelėje.
SD kortelės prijungimas prie VEX Brain
Prieš įrašydami duomenis į failą SD kortelėje, pirmiausia įdėkite SD kortelę į VEX Brain SD kortelės lizdą.
Pastaba: Norėdami įrašyti duomenis, suformatuokite SD kortelę į FAT32. Rekomenduojame naudoti SD korteles, kurių dydis yra 32 GB ar mažesnis.
Norėdami užtikrinti, kad duomenis į failą SD kortelėje būtų galima įrašyti atitinkamomis sąlygomis, turėsime pridėti kodą, kad patikrintume, ar SD kortelė tinkamai įdėta į VEX IQ Brain (2-oji).
- Norėdami patikrinti, ar SD kortelė įdėta, naudokite funkciją
brain.sdcard.is_inserted()
Jei SD kortelė neįdėta, VEX IQ Brain ekrane parodykite atitinkamą pranešimą ir palaikykite programą.
Pastaba: funkcijabrain.sdcard.is_inserted()
grąžina True, jei į smegenis įdėta SD kortelė.
Duomenų įrašymas į CSV failą SD kortelėje
Kol kas mūsų programa gali rinkti duomenis su VEX IQ Brain (2 vieta). Norėdami užbaigti duomenų registravimo projektą, turime įrašyti duomenis į kableliais atskirtų reikšmių (CSV) failą SD kortelėje, kad ateityje būtų galima ištirti ir analizuoti.
- Rašydami skirtingų tipų duomenis į CSV failą, norime žinoti, kokio tipo duomenys yra kiekviename stulpelyje. Norėdami tai padaryti, prieš įrašydami duomenis galime pridėti CSV antraštės tekstą prie kintamojo
data_buffer
.
Taigi, pridėkite kodą, kad deklaruotumėte kintamąjįcsvHeaderText
, kad išsaugotumėte CSV antraštės tekstą, kad nurodytumėte CSV failo stulpelių pavadinimus, ir deklaruokite kintamąjįsd_file_name
, kad būtų įrašytas CSV failo pavadinimas, kurį norite įrašyti SD kortelė.
Pastaba: Įsitikinkite, kad antraštės yra tokia pat tvarka kaip ir duomenys, saugomi kintamajame data_buffer
.
- Tada CSV antraštės tekstą pridėkite prie
data_buffer
eilutės priešciklo
duomenims rinkti.
- Prieš įrašydami duomenis į failą SD kortelėje, pirmiausia išsiaiškinkime, kaip naudoti funkciją
brain.sdcard.savefile()
.
Ši instrukcija įrašo duomenis, saugomus kintamajamedata_buffer
į pavadintą CSV failą SD kortelėje.
Išskaidykime:-
brain.sdcard.savefile(): funkcija išsaugo baitų masyvą į pavadintą failą SD kortelėje. Funkcija grąžina į failą įrašytų baitų skaičių.
-
sd_failo_pavadinimas: pirmasis funkcijos parametras. Nurodo failo, kurį reikia įrašyti, pavadinimą. Šiame projekte failo pavadinimas saugomas kintamajame
sd_file_name.
-
bytearray(datat_buffer,'utf-8'): antrasis funkcijos parametras. Nurodo baitų masyvą, kuris turi būti įrašytas į failą.
-
- bytearray(): Metodas sukuria kintamą bytearray. Šioje instrukcijoje mes ją naudojame norėdami konvertuoti eilutę į baitų masyvą, nurodydami kodavimą.
- data_buffer: pirmasis metodo parametras. Nurodo šaltinį, kuris turi būti konvertuojamas į baitų masyvą. Šiame projekte šaltinis yra duomenys, saugomi kintamajame
data_buffer.
- „utf-8“: antrasis metodo parametras. Nurodo nurodytą kodavimą, naudojamą eilutei koduoti. Šioje instrukcijoje kodavimas yra „utf-8“.
-
-
- Po
rinkti, naudokite funkciją
brain.sdcard.savefile()
, kad įrašytumėte duomenis, saugomus kintamajamedata_buffer
į CSV failą SD kortelėje. Be to, pridėkite kodą, kad patikrintumėte grąžinamąją reikšmę iš funkcijosbrain.sdcard.savefile()
, kad patikrintumėte, ar duomenys sėkmingai įrašyti į failą, ir parodykite atitinkamą pranešimą VEX IQ smegenų ekrane, kad gautumėte tikrą laiko atsiliepimai.
Pastaba: Funkcijabrain.sdcard.savefile()
grąžina į failą įrašytų baitų skaičių. Šiame projekte mes naudojame surinktus duomenis įrašyti į CSV failą, todėl į failą įrašytų baitų skaičius turi būti didesnis nei nulis. Kitaip tariant, jei funkcijabrain.sdcard.savefile()
grąžina 0, galime daryti išvadą, kad duomenys nebuvo sėkmingai įrašyti į failą. Kitu atveju duomenys buvo įrašyti į bylą.
Sveikiname! Sukūrėme duomenų registravimo projektą, kuris renka pagreičio duomenis su VEX IQ Brain (2-as) ir išsaugo juos CSV faile SD kortelėje. Toliau išnagrinėsime, kaip atidaryti CSV failą duomenų analizei.
CSV failo atidarymas duomenų analizei
Kai duomenys bus įrašyti į CSV failą SD kortelėje, galime naudoti skaičiuoklės programą, kad atidarytume failą, kad galėtume skaityti ir analizuoti duomenis.
Pastaba: Dvi dažniausiai naudojamos skaičiuoklių programos yra „Google“ skaičiuoklės ir „Microsoft Excel“. Šiame straipsnyje mes naudosime „Google“ skaičiuokles (žiniatinklio pagrindu), kad atidarytume CSV failą SD kortelėje. Kitų programų naudojimo procesas yra panašus.
- Išimkite SD kortelę iš VEX IQ Brain SD kortelės lizdo. Jei kompiuteryje yra įmontuotas Micro SD kortelės lizdas, SD kortelę galime įdėti tiesiai į tą lizdą. Kitu atveju įdėkite SD kortelę į SD kortelės adapterį ir prijunkite adapterį prie kompiuterio.
- Prisijunkite prie mūsų „Google“ paskyros ir atidarykite „Google“ skaičiuokles. Sukurkite naują skaičiuoklę.
- Skaičiuoklėje atidarykite meniu „Failas“ , pasirinkite „Importuoti“ -> mygtuką „Įkelti“ -> „Naršyti“ , tada pasirinkite CSV failą kompiuteryje. Įkėlę CSV failą, spustelėkite mygtuką „Import Data“. Importavę duomenis spustelėkite „Atidaryti dabar“ kad pamatytumėte surinktus duomenis CSV faile.
- (Pasirenkama) Vienas paprastas būdas analizuoti duomenis – nubraižyti grafiką ir ieškoti duomenų tendencijų. Skaičiuoklėje atidarykite meniu „Įterpimas“ ir pasirinkite „Diagrama“ kad nubrėžtumėte grafiką naudodami CSV failo duomenis. Toliau pateikta diagrama yra pagreičio duomenų, surinktų naudojant VEX IQ Brain (2 vieta), rezultatas.
Pastaba: Galime naudoti diagramų rengyklę norėdami pasirinkti kitą diagramos tipą arba redaguoti diagramą pagal savo poreikius.
Iki šiol baigėme duomenų registravimo projektą, kuris renka duomenis su VEX IQ Brain (2 vieta) ir išsaugo juos CSV faile SD kortelėje. Be to, išmokome skaityti SD kortelėje esantį CSV failą naudodami „Google“ skaičiuokles ir netgi sukurti grafiką tolesnei analizei. Kas toliau? Pabandykime suplanuoti įdomesnius eksperimentus naudodami VEX robotą duomenų registravimui, stebėti, kaip besikeičiantys aplinkos veiksniai veikia įvairių tipų duomenis ir giliau suprasti mus supantį pasaulį.