Duomenų registravimas naudojant VEX Brain / jutiklius (Python versija)

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

    image5.png

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

    image9.png

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

    image13.png

  • 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ę prie data_buffer kintamojo konkrečiu formatu.

    vaizdas14.png

    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.

    image7.png

    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 naudoti for loop pakartotinai vykdyti instrukcijas, kurios gauna duomenis, ir pridėti duomenis prie kintamojo data_buffer , kad būtų galima atlikti keletą iteracijų. Mūsų strategija yra naudoti kintamojo numOfDataEntries reikšmę iteracijų skaičiui nustatyti.

    image12.png

  • 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 cikle for norėdami pristabdyti programą ir pridėti konkretų laiko intervalą tarp dviejų rodmenų. Laiko intervalo reikšmei nustatyti naudojame kintamojo polling_delay_msec reikšmę.

    image8.png

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.

vaizdas1.png




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

IQ kortelių skaitytuvo išnaša (1).png

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

    image17.png


    Pastaba: funkcija brain.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ė.

    vaizdas10.png

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.

    vaizdas15.png

  • Prieš įrašydami duomenis į failą SD kortelėje, pirmiausia išsiaiškinkime, kaip naudoti funkciją brain.sdcard.savefile().

    image4.png


    Ši instrukcija įrašo duomenis, saugomus kintamajame data_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 kintamajame data_buffer į CSV failą SD kortelėje. Be to, pridėkite kodą, kad patikrintumėte grąžinamąją reikšmę iš funkcijos brain.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.

    image6.png


    Pastaba: Funkcija brain.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 funkcija brain.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. 

vaizdas16.png

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.

    image11.png

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

    image3.png


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

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

Last Updated: