Lucrul cu modulele GPS, de exemplu, max-6q

Sistemele de navigație prin satelit câștigă rapid popularitate. Practic, acest lucru, desigur, este legat de utilizarea lor pe transport în legătură cu hărți sau pentru urmărirea transportului. Dar GPS-ul nu este folosit numai în aceste zone. Geodezie, cartografie, tectonica, divertisment, asistență în caz de accident - aceasta nu este o listă completă a zonelor în care într-un fel sau altul pot fi utilizate cu poziționare prin satelit. Acest lucru devine mai ales cu o creștere constantă a acurateței acestor sisteme.






În acest articol, nu voi intra în detaliile funcționării sistemelor GPS sau GLONASS, deoarece pentru utilizarea lor nu este necesar. Să ne ocupăm în detaliu numai cu lucrul cu module GPS gata. Din fericire, toate sunt aproximativ aceleași și după ce ați dezmembrat lucrul cu unul dintre ele, puteți trece ușor la altul.

Modulul de caracteristici

Ca modul GPS am folosit MAX-6Q, compania u-Blox. Caracteristicile sale tehnice:

  • Receptor cu 50 de canale în banda L1 (1,57542 GHz)
  • Start rece și cald - 26 s, pornire la cald - 1 s
  • Sensibilitate până la -161 dBm
  • Precizia poziției este de 2,5 m (folosind corecția diferențială - 2 m)
  • Precizia măsurării vitezei este de 0,1 m / s
  • Precizia determinării direcției - 0,5 grade
  • Interfața de interacțiune cu gazda - UART

Punctul de conectare al modulului și atribuirea pinului sunt prezentate în tabel:

conexiune

Trebuie să spun că modulele GPS sunt una dintre cele mai ușor de învățat, deoarece reprezintă un dispozitiv practic finalizat. Tot ceea ce este necesar este să le furnizați energie, să conectați antena și să recepționați prin interfața UART în formă de text date despre locație, viteză, direcție și multe altele. Schema minimă de conectare a modulului este prezentată în Fig. 1.







Lucrul cu modulele GPS, de exemplu, max-6q

Figura 1. - Schema minimă pentru pornirea modulului MAX-6Q

Puțin despre protocol

Toate mesajele NMEA încep cu caracterul $. Înainte vine ID-ul mesajului, în cazul nostru GPGLL, care reprezintă poziția geografică: Latitudine, Longitude, Time. În continuare vin câmpurile de mesaje separate prin virgulă: shshshsh.shsh - latitudinea, W - N (nord) sau S (sud), ddddd.dd - longitudine, E - W (vest) sau E (est), chchmmss.ss - ceas de timp , minute, secunde și milisecunde, A - indicatorul valabilității datelor, dacă A - datele sunt valide, dacă V - datele nu sunt fiabile. Mai departe prin simbolul * există o sumă de control, care este prezentă în toate mesajele NMEA. După suma de control, se utilizează simbolurile de alimentare și de transport.
Vă atrag atenția că shshshsh.shsh nu este grade, minute și secunde, grade, minute și fracții de minute. De exemplu, următorul mesaj:

Este - 52 de grade și 15.25 minute latitudine nordică, 104 grade și 28.16 minute longitudine estică, timp de 7 ore și 14 minute, secunde UTC 00.00 (UTC).

Primirea și parsarea unui mesaj NMEA

Acum, să mergem direct la parsarea mesajului. Se înțelege că aveți UART cu o întrerupere octet. Pentru a nu citi întreaga premisa a modulului, care poate consta din mai multe mesaje NMEA, și nu bloca tamponul cu informații inutile, mesaje pre-selectate vor face dreptul de a întrerupe. Adăugați următorul cod:

După ce steagul USART3_ReceivingFlag este setat la unul, linia necesară va fi în buffer-ul fără titlul GPGLL.
Mai departe vom elimina din această linie latitudinea, longitudinea și timpul real:







Trimiteți-le prietenilor: