Siirry pääsisältöön

CanSat NeXT GNSS-moduuli

CanSat NeXT GNSS-moduuli laajentaa CanSat NeXT:ä sijainnin seurannalla ja tarkalla reaaliaikaisella kellolla. Moduuli perustuu U-Blox SAM-M10Q GNSS-vastaanottimeen U-Bloxilta.

CanSat NeXT GNSS-moduuli

Laitteisto

Moduuli yhdistää GNSS-vastaanottimen CanSat NeXT:iin UART:in kautta laajennuspinnissä. Laite käyttää laajennuspinnien 16 ja 17 UART RX:lle ja TX:lle, ja ottaa myös virtalähteen +3V3 linjasta laajennuspinnissä.

Oletuksena GNSS-moduulin varmuuskopiot ovat kytketty +3V3 linjaan. Vaikka tämä tekee moduulista helppokäyttöisen, se tarkoittaa, että moduulin on aina aloitettava alusta, kun se yrittää löytää kiinnityksen. Tämän lieventämiseksi on mahdollista tarjota ulkoinen virtalähde varmuusjännitelinjan kautta J103-päätteiden kautta. V_BCK-pinnille annettavan jännitteen tulisi olla 2-6,5 volttia, ja virrankulutus on vakio 65 mikroampeeria, vaikka päävirta katkaistaan. Varmuusjännitteellä GNSS-vastaanotin voi säilyttää kaikki asetukset, mutta myös kriittisesti almanakka- ja efemeriditiedot - mikä vähentää kiinnityksen saamisen aikaa noin 30 sekunnista 1-2 sekuntiin, jos laite ei ole liikkunut merkittävästi virtakatkojen välillä.

Monia muita GNSS-moduuleja on saatavilla yrityksiltä kuten Sparkfun ja Adafruit, muiden muassa. Nämä voidaan liittää CanSat NeXT:iin saman UART-liitännän kautta tai käyttämällä SPI:tä ja I2C:tä moduulista riippuen. CanSat NeXT -kirjasto tukee myös muita U-blox-moduuleja käyttäviä moduuleja. Kun etsit GNSS-moduuleja, yritä löytää sellainen, jossa perus-PCB on mahdollisimman suuri - useimmissa on liian pieni PCB, mikä heikentää niiden antennin suorituskykyä verrattuna suurempiin PCB:ihin. Mikä tahansa koko, joka on pienempi kuin 50x50 mm, alkaa heikentää suorituskykyä ja kykyä löytää ja ylläpitää kiinnitystä.

Lisätietoja GNSS-moduulista ja suuresta määrästä saatavilla olevia asetuksia ja ominaisuuksia löytyy GNSS-vastaanottimen tietolehdestä U-Bloxin verkkosivuilta.

Moduulin laitteistointegraatio CanSat NeXT:iin on todella yksinkertainen - lisää vain etäisyyspalat ruuvinreikiin ja aseta varovasti liitinpinnit liitinsokkiin. Jos aiot tehdä monikerroksisen elektronisen pinon, varmista, että asetat GNSS:n ylimmäksi moduuliksi, jotta

CanSat NeXT GNSS-moduuli

Ohjelmisto

Helpoin tapa aloittaa CanSat NeXT GNSS:n käyttö on oma Arduino-kirjastomme, jonka löydät Arduino-kirjastonhallinnasta. Ohjeet kirjaston asentamiseen löytyvät aloitusoppaasta.

Kirjasto sisältää esimerkkejä siitä, miten lukea sijainti ja nykyinen aika, sekä miten lähettää tiedot CanSat NeXT:llä.

Yksi nopea huomautus asetuksista - moduulille on kerrottava, millaisessa ympäristössä sitä käytetään, jotta se voi parhaiten arvioida käyttäjän sijainnin. Tyypillisesti oletus on, että käyttäjä on maan tasolla, ja vaikka he saattavat liikkua, kiihtyvyys ei todennäköisesti ole kovin suuri. Tämä ei tietenkään päde CanSateihin, jotka saattavat olla rakettien laukaisemia tai osua maahan melko suurilla nopeuksilla. Siksi kirjasto asettaa oletuksena sijainnin laskettavaksi olettaen korkean dynaamisen ympäristön, mikä mahdollistaa kiinnityksen ylläpitämisen ainakin jonkin verran nopean kiihtyvyyden aikana, mutta tekee myös sijainnista maassa huomattavasti vähemmän tarkan. Jos sen sijaan korkea tarkkuus laskeutumisen jälkeen on toivottavampaa, voit alustaa GNSS-moduulin komennolla GNSS_init(DYNAMIC_MODEL_GROUND), korvaten oletuksen GNSS_init(DYNAMIC_MODEL_ROCKET) = GNSS_init(). Lisäksi on olemassa DYNAMIC_MODEL_AIRBORNE, joka on hieman tarkempi kuin rakettimalli, mutta olettaa vain kohtuullista kiihtyvyyttä.

Tämä kirjasto priorisoi helppokäyttöisyyttä ja sisältää vain perustoimintoja, kuten sijainnin ja ajan saamisen GNSS:stä. Käyttäjille, jotka etsivät edistyneempiä GNSS-ominaisuuksia, erinomainen SparkFun_u-blox_GNSS_Arduino_Library saattaa olla parempi valinta.

Kirjaston määrittely

Tässä ovat CanSat GNSS -kirjaston käytettävissä olevat komennot.

GNSS_Init

Funktiouint8_t GNSS_Init(uint8_t dynamic_model)
Palautustyyppiuint8_t
PalautusarvoPalauttaa 1, jos alustus onnistui, tai 0, jos tapahtui virhe.
Parametrit
uint8_t dynamic_model
Tämä valitsee dynaamisen mallin tai ympäristön, jonka GNSS-moduuli olettaa. Mahdollisia valintoja ovat DYNAMIC_MODEL_GROUND, DYNAMIC_MODEL_AIRBORNE ja DYNAMIC_MODEL_ROCKET.
KuvausTämä komento alustaa GNSS-moduulin, ja se tulisi kutsua setup-funktiossa.

readPosition

Funktiouint8_t readPosition(float &x, float &y, float &z)
Palautustyyppiuint8_t
PalautusarvoPalauttaa 0, jos mittaus onnistui.
Parametrit
float &latitude, float &longitude, float &altitude
float &x: Osoite float-muuttujaan, johon tiedot tallennetaan.
Käytetty esimerkkiohjelmassaKaikki
KuvausTätä funktiota voidaan käyttää laitteen sijainnin lukemiseen koordinaatteina. Arvot ovat puoliksi satunnaisia ennen kiinnityksen saamista. Korkeus on metreinä merenpinnasta, vaikka se ei ole kovin tarkka.

getSIV

Funktiouint8_t getSIV()
Palautustyyppiuint8_t
PalautusarvoNäkyvissä olevien satelliittien määrä
Käytetty esimerkkiohjelmassaAdditionalFunctions
KuvausPalauttaa näkyvissä olevien satelliittien määrän. Tyypillisesti arvot alle 3 osoittavat, ettei kiinnitystä ole.

getTime

Funktiouint32_t getTime()
Palautustyyppiuint32_t
PalautusarvoNykyinen epookkiaika
Käytetty esimerkkiohjelmassaAdditionalFunctions
KuvausPalauttaa nykyisen epookkiajan, kuten GNSS-satelliittien signaalit osoittavat. Toisin sanoen, tämä on sekuntien määrä, joka on kulunut torstaina 1. tammikuuta 1970 klo 00:00:00 UTC.