OK. Acum aveţi nevoie de un … Sistem GPS

6 IULIE 2010

GPS-ul (Global Positioning System) este una dintre tehnologiile actuale de vârf utilizate în scopul de stabilire a poziţiei unui mobil. Tehnologia este des utilizată în sisteme de navigare pentru automobile. În cele ce urmează vor fi descrise legătura între un receptor GPS şi un microcontroler, cât şi determinarea latitudinii şi longitudinii.


de Dusan Mihajlovic, Mikroelektronika – Departamentul Hardware

Modul SmartGPS conectat la Sistemul de Dezvoltare EasyPIC5

Sistemul global de poziţionare – GPS-ul – se bazează pe un număr mare de sateliţi care emit semnale în domeniul microundelor cu ajutorul cărora receptoarele îşi pot determina locaţia curentă, timpul sau viteza.
Receptoarele GPS pot comunica cu un microcontroler sau un PC în diferite moduri. O metodă comună este printr-un port serial, în timp ce cel mai des utilizat protocol pentru transmisia de date este un protocol NMEA.

Principiul de operare
Protocolul NMEA se bazează pe propoziţii. Fiecare propoziţie începe cu simbolul $ (ASCII 36) şi se termină cu simboluri pentru început de linii noi de program, precum sunt CR (ASCII 13) şi LF (ASCII 10). Semnificaţia întregii propoziţii depinde de primul cuvânt.
De exemplu, o propoziţie care începe cu $GPGLL oferă informaţii despre latitudine şi longitudine, timpul exact (Universal Coordinated Time), validitatea datelor (A – Activ or V – Void) şi date de control care permit să se verifice dacă sunt recepţionate date în mod regulat.
Toate datele sunt separate prin virgulă “,“. La fiecare secundă este trimis către microcontroler un set de propoziţii NMEA. În cazul în care datele despre latitudine şi longitudine nu sunt determinate (dacă receptorul GPS nu reuşeşte să-şi determine locaţia) sau când alte date nu sunt determinate, receptorul GPS va continua să transmită acelaşi set de propoziţii, restrânse acum datorită datelor lipsă.

Iată un exemplu de propoziţie generat de receptorul GPS care nu a reuşit să-şi determine locaţia:

$GPGLL,,,,,,V,*2A

Propoziţia completă NMEA ar fi cea din figura de mai jos:

Hardware
Conexiunea dintre microcontroler şi receptorul GPS este foarte simplă. Este necesar să se asigure în acest scop numai două linii RX şi TX.
Cu referire la Schema 1, linia RX este utilizată pentru transmiterea datelor de la un receptor GPS la microcontroler, în timp ce linia TX poate fi utilizată pentru transmiterea de comenzi specifice de la microcontroler la receptorul GPS.
În acest exemplu este utilizat receptorul GPS U-Blox LED-5. Similar cu majoritatea receptoarelor GPS, tensiunea sursei de alimentare a acestui receptor este de 3V.

Schema 1: Conectarea modulului LEA-5S la un PIC18F4520

Din moment ce microcontrolerul PIC18F4520 utilizează o sursă de alimentare de 5V pentru operare, este necesară utilizarea unui transformator de nivel de tensiune pentru a converti nivelul de tensiune pentru 1 logic de la 3,3V la 5V.
În acest exemplu, un afişaj grafic în rezoluţie de 128 × 64 pixeli afişează o hartă a lumii cu cursorul indicând locaţia.

Software
După cum se poate observa, codul programului care este transferat în microcontroler este foarte scurt. Aproape jumătate din program realizează conversia unui fişier bitmap într-un set de date corespunzător. O astfel de conversie permite microcontrolerului să afişeze harta. Restul codului constă din recepţionarea propoziţiilor NMEA de la receptorul GPS, calcularea latitudinii şi longitudinii, dimensionarea datelor pentru a se potrivi rezoluţiei de afişare de 128 × 64 pixeli şi poziţionarea cursorului la locaţia specificată.

Editorul de bibliotecă mikroC PRO for PIC® cu biblioteci pre-definite cum sunt: GLCD, Ethernet, CAN, SD/MMC etc.

Funcţii utilizate de program
Glcd_box() Desenează pătrat plin
Glcd_circle() Desenează cerc
Glcd_Dot() Desenează un punct*
Glcd_Fill() Şterge/umple afişajul*
Glcd_H_Line() Desenează linie orizontală
Glcd_Image() Importă imagine*
Glcd_Init() Iniţializarea afişajului LCD*
Glcd_Line() Desenează linie
Glcd_Read_Data() Citeşte date de la LCD
Glcd_Rectangle() Desenează dreptunghi
Glcd_Set_Font() Selectare font*
Glcd_Set_Page() Selectare pagină
Glcd_Set_Side() Selectare parte de afişaj
Glcd_Set_X() Determină coordonata X
Glcd_V_line() Desenează linie verticală
Glcd_Write_Char() Scrie caracter
Glcd_Write_Data() Scrie date
Glcd_Write_Text() Scrie text
* Funcţii din biblioteca Glcd utilizate în program
Alte funcţii mikroC PRO for PIC utilizate în program:
Usart_Init() strstr()
Usart_Read() Delay_ms()

NOTÃ
Programul pentru acest exemplu a fost scris pentru microcontrolere PIC® în C, Basic şi Pascal, dar pe pagina web: www.mikroe.com/en/article/ pot fi găsite şi programe scrise pentru microcontrolere dsPIC® şi AVR®.

Contact
MikroElektronika
www.mikroe.com

Lasă un răspuns

Adresa ta de email nu va fi publicată. Câmpurile necesare sunt marcate *

  • Folosim datele dumneavoastră cu caracter personal NUMAI pentru a răspunde comentariilor/solicitărilor dumneavoastră.
  • Pentru a primi raspunsuri adecvate solicitărilor dumneavoastră, este posibil să transferăm adresa de email și numele dumneavoastră către autorul articolului.
  • Pentru mai multe informații privind politica noastră de confidențialitate și de prelucrare a datelor cu caracter personal, accesați link-ul Politica de prelucrare a datelor (GDPR) si Cookie-uri.
  • Dacă aveți întrebări sau nelămuriri cu privire la modul în care noi prelucrăm datele dumneavoastră cu caracter personal, puteți contacta responsabilul nostru cu protecția datelor la adresa de email: gdpr@esp2000.ro
  • Abonați-vă la newsletter-ul revistei noastre