Johdanto
Tässä artikkelissa keskustelemme siitä, kuinka luodaan tiedonkeruuprojekti, joka ohjeistaa VEX-robottia keräämään tietoja VEX Brainin avulla ja tallentamaan ne CSV-tiedostoon SD-kortille tietojen analysointia varten.
Tiedon kirjaus on tehokas työkalu, jolla voimme auttaa tieteellistä tutkimusta, suorittaa omia kokeitamme ja ratkaista tiettyjä ongelmia. On olemassa erilaisia hauskoja ja jännittäviä tehtäviä, joita voimme ajaa VEX Robotilla suorittamaan tiedonkeruun avulla. Seuraavassa on joitain esimerkkejä:
- Tietojen kerääminen etäisyysanturilla robotin nopeuden laskemiseksi.
- Robotin ajaminen luokkahuoneessa ja tietojen kerääminen optisella sensorilla valonmuutosten tarkkailemiseksi eri paikoissa.
- Robotin vieminen seikkailuun ja GPS-koordinaattitietojen tallentaminen kartan luomiseksi.
Tietojen kirjausprojektin kehittämiseen tarvittavat koodaustaidot
- Käytä erilaisia komentoja tietojen keräämiseen VEX Brain/Sensors -sovelluksella ja lisää ne tietorakenteeseen.
- Kirjoita tiedot SD-kortille CSV-tiedostoon (Comma-Separated Values).
Tietojen kirjaamiseen vaadittava laitteisto:
- VEX-aivot (IQ, V5, EXP)
- SD-kortti
- Anturi tai useita antureita (valinnainen, vaadittujen tietojen mukaan)
Tietojen hakeminen anturista
Voimme ohjelmoida VEX Robotin (IQ, V5, EXP) sieppaamaan tiedot seuraavista antureista:
- Inertia-anturi
- Etäisyys anturi
- Optinen anturi
- Vision anturi
- Pyörimisanturi (V5, EXP)
- GPS-sensori (V5)
Huomautus: VEX IQ (2. sukupolvi) Brainissa ja VEX EXP Brainissa on sisäänrakennettu inertia-anturi. Voimme kerätä inertia-anturin tietoja näillä VEX-aivoilla.
Tässä artikkelissa kehitämme tiedonkeruuprojektin, joka kerää kiihtyvyystiedot VEX IQ Brainilla (2. sukupolvi) ja tallentaa ne SD-kortille.
Ensin meidän on kirjoitettava lyhyt ohjelma saadaksemme lukemat VEX IQ Brainissa (2. sukupolvi) sisäänrakennetusta ajastimesta ja inertia-anturista.
- Tämän ohjelman alussa meidän on tuotava Python-moduulit ohjataksemme VEX IQ Brain (2. sukupolvi) ja haettava tiedot siitä. Aloita siis lisäämällä nämä ohjeet projektiin.
- Lisää seuraavaksi koodi, joka ilmoittaa muuttujan
numOfDataEntriestallentaaksesi datasyötteiden määrän, ilmoittaa muuttujapolling_delay_msectallentaaksesi aikavälin datan lukemista varten ja luo tyhjä merkkijonomuuttujadata_buffertallennettavaksi. anturin lukemat tiedot. - Koska käytämme ajastimen nykyistä arvoa aikaleiman lisäämiseen tietoihin, meidän on palautettava ajastimen arvo takaisin 0 sekuntiin ennen tietojen keräämisen aloittamista.
- Ennen kuin käytät ohjetta, joka hakee tiedot VEX IQ Brainista (2.) ja tallentaa tiedot puskuriin, meidän on ensin ymmärrettävä se.
Seuraava ohje liittää nykyisen ajastimen arvondata_buffer-muuttujaan tietyssä muodossa.Puretaan muotomerkkijono
“%1.3f”:- "%": Esittelee muunnosmääritteen.
- "1": Ilmaisee merkkijonossa olevien numeroiden vähimmäismäärän.
- ".3": Määrittää muotoiltuun numeroon sisällytettävien desimaalien määrän.
- "f": Ilmaisee, että muotoiltava arvo on liukuluku.
Näin ollen voimme käyttää muotomerkkijonoa “%1.3f” muotoillaksesi liukulukua, jonka leveys on vähintään 1 numero ja jonka tarkkuus on 3 desimaalia.
- Nyt voimme lukea VEX IQ Brainissa (2. sukupolvi) sisäänrakennetun inertia-anturin ajastimen ja kiihtyvyysarvon ja sitten liittää tiedot
data_buffer-muuttujaan määritetyssä muodossa.Huomautus: “\n” on uuden rivin merkki. Se osoittaa, että rivi päättyy tähän ja uuden rivin alkuun.
- Sitten, jotta voimme tallentaa tietyn määrän datasyötteitä muuttujaan
data_buffer, voimme käyttääfor silmukkaasuorittamaan toistuvasti käskyt, jotka hakevat tiedot, ja liittääksemme tiedotdata_buffer-muuttujaan useiden iteraatioiden ajaksi. Strategiamme on käyttää muuttujannumOfDataEntriesarvoa iteraatioiden määrän määrittämiseen.
- Toistaiseksi ohjelmamme tallentaa tiedot niin nopeasti kuin mahdollista. Haluamme kuitenkin tallentaa tietoja tietyin aikavälein. Siksi voimme käyttää
wait()-funktiotafor -silmukassakeskeyttääksemme ohjelman lisätäksemme tietyn aikavälin kahden lukeman välille. Käytämme muuttujanpolling_delay_msecarvoa määrittääksemme aikavälin arvon.
Onnittelut! Olemme saaneet päätökseen ohjelman saadaksemme lukemat (kiihtyvyystiedot) VEX-aivoihin rakennetusta inertia-anturista. Seuraavaksi tutkimme, kuinka tiedot kirjoitetaan CSV-tiedostoon SD-kortille.
SD-kortin kiinnittäminen VEX Brainiin
Ennen kuin kirjoitat tiedot SD-kortilla olevaan tiedostoon, aseta SD-kortti ensin VEX Brainin SD-korttipaikkaan.
Huomautus: Alusta SD-kortti FAT32-muotoon tietojen kirjoittamista varten. Suosittelemme käyttämään SD-kortteja, joiden koko on enintään 32 Gt.
Varmistaaksemme, että tietojen kirjoittaminen SD-kortilla olevaan tiedostoon voidaan suorittaa asianmukaisissa olosuhteissa, meidän on lisättävä koodi tarkistaaksemme, onko SD-kortti asetettu oikein VEX IQ Brainiin (2. sukupolvi).
- Käytä funktiota
brain.sdcard.is_inserted()tarkistaaksesi, onko SD-kortti paikallaan. Jos SD-korttia ei ole asetettu, näytä vastaava viesti VEX IQ Brain -näytössä ja pidä ohjelmaa.
Huomautus: funktiobrain.sdcard.is_inserted()palauttaa True, jos SD-kortti asetetaan aivoihin.
Tietojen kirjoittaminen SD-kortilla olevaan CSV-tiedostoon
Toistaiseksi ohjelmamme voi kerätä tietoja VEX IQ Brainilla (2. sukupolvi). Tiedonkeruuprojektin viimeistelemiseksi meidän on kirjoitettava tiedot CSV-tiedostoon (Comma-Separated Values) SD-kortille myöhempää tarkastelua ja analysointia varten.
- Kun kirjoitetaan erityyppisiä tietoja CSV-tiedostoon, haluamme tietää, minkä tyyppisiä tietoja kukin sarake sisältää. Tätä varten voimme liittää CSV-otsikon tekstin muuttujaan
data_bufferennen tietojen tallentamista.
Näin ollen lisää koodi ilmoittaaksesi muuttujancsvHeaderTexttallentaaksesi CSV-otsikon tekstin määrittääksesi CSV-tiedoston sarakkeiden nimet ja ilmoittaaksesi muuttujansd_file_namesäilyttääksesi CSV-tiedoston nimen kirjoitettavaksi Sd-kortti.
Huomautus: Varmista, että otsikot ovat samassa järjestyksessä kuin data_buffer -muuttujaan tallennetut tiedot.
- Liitä seuraavaksi CSV-otsikon teksti
data_buffer-merkkijonoon ennenfor silmukkaatiedonkeruuta varten.
- Ennen kuin kirjoitat tietoja SD-kortilla olevaan tiedostoon, meidän on ymmärrettävä, miten funktiota
brain.sdcard.savefile()käytetään.
Tämä ohje kirjoittaa muuttujaandata_buffertallennetut tiedot nimettyyn CSV-tiedostoon SD-kortilla.
Puretaan se:-
brain.sdcard.savefile(): Toiminto tallentaa tavutaulukon nimettyyn tiedostoon SD-kortille. Funktio palauttaa tiedostoon kirjoitettujen tavujen määrän.
-
sd_tiedoston_nimi: funktion ensimmäinen parametri. Ilmaisee kirjoitettavan tiedoston nimen. Tässä projektissa tiedoston nimi on tallennettu muuttujaan
sd_file_name. -
bytearray(datat_buffer,'utf-8'): Funktion toinen parametri. Edustaa tiedostoon kirjoitettavaa tavutaulukkoa.
-
- bytearray(): Menetelmä luo muuttuvan tavutaulukon. Tässä ohjeessa käytämme sitä muuntamaan merkkijono tavutaulukoksi määrittämällä koodauksen.
- data_buffer: Menetelmän ensimmäinen parametri. Osoittaa lähteen, joka muunnetaan tavuryhmäksi. Tässä projektissa lähde on muuttujaan
data_buffer tallennettu data. - 'utf-8': Metodin toinen parametri. Ilmaisee määritetyn koodauksen, jota käytetään merkkijonon koodaamiseen. Koodaus on "utf-8" tässä ohjeessa.
-
-
- Tiedonkeruun silmukan
n jälkeen käytä funktiotabrain.sdcard.savefile()kirjoittaaksesi muuttujaandata_buffertallennetut tiedot SD-kortin CSV-tiedostoon. Lisäksi lisää koodi tarkistaaksesi palautusarvon funktiostabrain.sdcard.savefile()varmistaaksesi, että tiedot on kirjoitettu tiedostoon onnistuneesti, ja näytä vastaava viesti VEX IQ Brain -näytössä saadaksesi todellisen aika palautetta.
Huomautus: Funktiobrain.sdcard.savefile()palauttaa tiedostoon kirjoitettujen tavujen määrän. Tässä projektissa käytämme sitä kerättyjen tietojen kirjoittamiseen CSV-tiedostoon, joten tiedostoon kirjoitettavien tavujen määrän on oltava suurempi kuin nolla. Toisin sanoen, jos funktiobrain.sdcard.savefile()palauttaa arvon 0, voimme päätellä, että tietoja ei ole kirjoitettu tiedostoon onnistuneesti. Muuten tiedot on kirjoitettu tiedostoon.
Onnittelut! Olemme kehittäneet tiedonkeruuprojektin, joka kerää kiihtyvyystiedot VEX IQ Brainilla (2. sukupolvi) ja tallentaa ne CSV-tiedostoon SD-kortille. Seuraavaksi tutkimme, kuinka CSV-tiedosto avataan tietojen analysointia varten.
CSV-tiedoston avaaminen tietojen analysointia varten
Kun tiedot on kirjoitettu SD-kortilla olevaan CSV-tiedostoon, voimme taulukkolaskentasovelluksella avata tiedoston tietojen lukemista ja analysointia varten.
Huomautus: Kaksi yleisintä taulukkolaskentasovellusta ovat Google Sheets ja Microsoft Excel. Tässä artikkelissa käytämme Google Sheetsia (Web-pohjainen) SD-kortilla olevan CSV-tiedoston avaamiseen. Muiden sovellusten käyttöprosessi on samanlainen.
- Irrota SD-kortti VEX IQ Brainin SD-korttipaikasta. Jos tietokoneessa on sisäänrakennettu Micro SD -korttipaikka, voimme asettaa SD-kortin suoraan siihen. Muussa tapauksessa aseta SD-kortti SD-korttisovittimeen ja liitä sitten sovitin tietokoneeseen.
- Kirjaudu sisään Google-tiliimme ja avaa Google Sheets. Luo uusi laskentataulukko.
- Avaa laskentataulukossa "File" -valikko, valitse "Import" -> "Upload" -> "Selaa" ja valitse sitten CSV-tiedosto tietokoneelta. Kun olet ladannut CSV-tiedoston, napsauta "Import Data" -painiketta. Kun tiedot on tuotu, napsauta "Avaa nyt" nähdäksesi kerätyt tiedot CSV-tiedostossa.
- (Valinnainen) Yksi helppo tapa analysoida tietoja on piirtää kaavio ja etsiä sitten tiedoista suuntauksia. Avaa laskentataulukossa valikko "Insert" ja valitse "Chart" piirtääksesi kaavion käyttämällä CSV-tiedoston tietoja. Seuraava kaavio on tulos VEX IQ Brainilla (2. sukupolvi) kerätyistä kiihtyvyystiedoista.
Huomautus: Voimme käyttää Kaavioeditoria valitaksesi toisen kaaviotyypin tai muokataksesi kaaviota tarpeidemme mukaan.
Tähän mennessä olemme saaneet päätökseen tiedonkeruuprojektin, joka kerää tietoja VEX IQ Brainilla (2. sukupolvi) ja tallentaa ne CSV-tiedostoon SD-kortille. Olemme myös oppineet lukemaan SD-kortilla olevan CSV-tiedoston Google Sheetsin avulla ja jopa luomaan kaavion jatkoanalyysiä varten. Mitä seuraavaksi? Yritetään suunnitella jännittävämpiä kokeita VEX Robotin avulla tiedonkeruussa, tarkkailla kuinka muuttuvat ympäristötekijät vaikuttavat erilaisiin tietotyyppeihin ja saada syvempää ymmärrystä ympäröivästä maailmasta.