Princip rada
NMEA protokol je zasnovan na rečenicama. Prvo slovo svake rečenice je znak $ (ASCII 36), a kraj rečenice možemo prepoznati po znakovima za prelazak u novi red CR (ASCII 13) i LF (ASCII 10). Prva reč u svakoj rečenici određuje značenje ostatka rečenice. Tako na primer rečenica koja počinje sa $GPGLL pruža informacije o geografskoj širini i dužini, tačnom vremenu (prikazano kao UTC – Universal Coordinated Time) i validnosti podataka (A – Active ili V – Void) kao i „checksum” koji pruža mogućnost da se proveri da li su prethodno navedeni podaci ispravno primljeni. Svi podaci su međusobno odvojeni zarezom ‘,’. GPS prijemnik šalje set NMEA rečenica svake sekunde. U slučaju da podaci o geografskoj širini i dužini nisu i kasni (ukoliko GPS prijemnik nije uspeo da odredi svoj položaj), kao i u slučaju da ostali podaci nisu određeni, GPS prijemnik će i dalje slati isti set rečenica, ali umanjen za podatke koji nedostaju. Da bismo vam bolje objasnili o čemu je reč, na donjoj slici je prikazan izgled jedne kompletne NMEA rečenice. A evo i jedne rečenice koja je poslata kada GPS prijemnik nije uspeo da odredi svoj položaj:
Hardver
Povezivanje GPS prijemnika sa mikrokontrolerom je veoma prosto. Kao što možete videti na šemi 1, za komunikaciju između ove dve komponente neophodne su dve linije RX i TX. RX linija služi za slanje podataka od GPS prijemnika ka mikrokontroleru, dok TX linija može da se iskoristi za slanje određenih komandi od strane mikrokontrolera ka GPS prijemniku. Ovde je korišćen GPS prijemnik i rme U-Blox sa oznakom LEA-5S.
Kao i većina GPS prijemnika i ovaj radi na naponu napajanja od 3.3V. Mikrokontroler PIC18F4520 radi na naponu napajanja od 5V, tako da je neophodno prilagoditi naponske nivoe određenih signala. S obzirom da LEA-5S GPS prijemnik ima 5V tolerantne ulaze, TX linija, koja ide od mikrokontrolera ka GPS prijemniku, može da se poveže direktno. Za RX liniju, koja ide od GPS prijemnika ka mikrokontroleru, morali smo da iskoristimo translator naponskog nivoa koji će signal logičke jedinice sa nivoom od 3.3V podići na nivo od 5V.
U primeru je prikazana mapa sveta na grafičkom displeju rezolucije 128×64 piksela na kojoj će trepereti kursor sa Vašom lokacijom.
Softver
Kao što možete videti, kod programa koji se učitava u mikrokontroler je dosta kratak. Skoro pola koda predstavlja bitmapu koja je konvertovana u odgovarajući niz podataka. Ova konverzija je neophodna da bi mikrokontroler prikazao mapu sveta na displeju. Ostatak koda se sastoji od prijema NMEA rečenica od GPS prijemnika, određivanje geografske širine i dužine, zatim skaliranje dobijenih podataka tako da odgovaraju rezoluciji displeja od 128×64 piksela i konačno prikazivanje kursora na određenoj lokaciji.
Više informacija o GPS modulu možete pronaći na ovoj adresi.
Informacije o EasyPIC5 razvojnom sistemu možete naći ovde.
NAPOMENA: Ovaj projekat postoji i varijantama za AVR i dsPIC mikrokontrolere. Više o ovome možete naći ovde.