background image

Prezentowany układ to kompletny system 
nawigacji satelitarnej GPS. Układ umożli-
wia odczytanie pozycji geograficznej (sze-
rokość i długość geograficzna wraz z kie-
runkiem: północ – N, południe – S, wschód 
– E, zachód – W), wysokości nad poziomem 
morza oraz liczby satelitów, na podstawie któ-
rych dokonano pomiaru wszystkich parame-
trów. Dodatkowo układ wyświetla czas UTC 
(Universal Time Coordinated), umożliwia 
zaprogramowanie punktu docelowego podró-
ży (wraz z nadaniem nazwy) oraz obliczenie 
odległości (w prostej linii) do tego punktu od 
aktualnej pozycji.

Urządzenie współpracuje z zewnętrznym 

modułem GPS. Moduł ten wysyła dane nawi-
gacyjne poprzez interfejs RS232 w standar-
dzie NMEA0183. Standard NMEA0183 okre-
śla jednoznacznie to, w jaki sposób odbiornik 
GPS wysyła dane (wysokość i szerokość 
geograficzna, prędkość poruszania się, wyso-
kość nad poziomem morza itp.). Standard ten 
został utworzony przez Marine Electronics 
Association w celu łatwiejszej współpracy 
wszystkich urządzeń służących do nawigacji. 

Standard NMEA0183 opiera się na nastę-

pujących założeniach:
• dane wysyłane są w sposób tekstowy,

•  nagłówek linii określa jednoznacznie jaki 

rodzaj danych jest przesyłany,

•  każdy nagłówek zaczyna się znakiem $ a 

kończy znakiem <CR><LF>, 

•  każda informacja oddzielona jest w danej 

linii przecinkiem,

• długość każdej z linii nie może przekraczać 

82 znaków. 

Standard NMEA0183 dopuszcza także 

wartości ułamkowe, które zawierają krop-
kę, jako znak oddzielający część całkowitą 
od ułamkowej. Te informacje pozwalają na 
prostą budowę odbiornika GPS; wystarczy 
bowiem z całej ramki NMEA wybrać infor-
mację – parametr, który nas interesuje, a 
następnie sformatować w sposób wygodny 

do odczytu i wyświetlić. W skład komplet-
nej informacji NMEA wchodzi zestaw kilku 
mniejszych ramek, poprzedzonych nagłów-
kami. W dalszej części artykułu pod poję-
ciem ramki będę rozumiał linię tekstu, która 
zaczyna się znakiem $ oraz nazwą nagłówka. 
Prezentowane urządzenie wykorzystuje tylko 
ramkę (linię tekstu) z nagłówkiem $GPGGA. 
W tej ramce zawarte są wszelkie kluczowe 
informacje dotyczące pozycji geograficznej. 
Więcej informacji dotyczących standardu 
NMEA0183 można znaleźć w Internecie. 

 

Opis ramki $GPGGA 

Informacje poniższe zaczerpnąłem ze strony 
http://home.mira.net/~gnb/gps/nmea.html

Proponowany odbiornik wykorzystuje 

tylko ramkę $GPGGA do ustalenia pozycji 
geograficznej. W tej jednej ramce zawarte są 
wszystkie informacje konieczne do ustale-
nia pozycji geograficznej. Ułatwia to znacz-
nie pisanie oprogramowania, które dekoduje 
tylko jedną ramkę $GPGGA.

Ramka ta składa się z następujących pozy-

cji podanych w kolejności występowania od 
nazwy nagłówka:
1. Czas UTC. Podawany w formie sześciu 
cyfr, bez znaków oddzielających np. 182706 
oznacza 18 godzinę, 27 minutę i 6 sekundę 
czasu UTC. 
2. Szerokość geograficzna wraz z określeniem 
kierunku (kierunek północny – N, kierunek 
południowy – S). Podawana w 
formie ośmiu cyfr rozdzielo-
nych kropką. Po ostatniej cyfrze 
występuje przecinek rozdziela-
jący pola oraz litera określająca 
kierunek szerokości geograficz-
nej, np.: 5132.4335,N.
3. Długość geograficzna wraz z 
określeniem kierunku (kierunek 
wschodni – E, kierunek zachod-
ni – W). Podawana w formie 
9 cyfr rozdzielonych kropką, 

stopnie długości geograficznej mogą przyj-
mować wartości większe od 99, przez co 
wymagana jest dodatkowa cyfra, której nie 
ma w przypadku szerokości geograficznej (-
90 do +90°). Następnie występuje przecinek 
rozdzielający pola oraz litera kierunku, np.: 
02101.3868,W.

Sposób zapisu szerokości i długości geo-

graficznej wymaga dodatkowego komenta-
rza. Posłużę się tu bezpośrednio przykła-
dem z punktu 2. Z wartości 5132.4335,N 
można bezpośrednio odczytać wartość stopni 
i minut szerokości geograficznej oraz jej kie-
runek. Liczba stopni oraz minut podana jest 
w pierwszych czterech cyfrach; w naszym 
przykładzie to 51 stopni oraz 32 minuty. 
Kolejne cztery cyfry oznaczają ułamkową 
część minut (czyli sekundy kątowe i ich setne 
części). Wygodniejszym sposobem zapisu jest 
przedstawienie użytkownikowi pozycji geo-
graficznej w formie: stopnie.minuty.sekundy.
ułamki_sekund niż w formie stopnie.minuty.
ułamki_minut. Konwersja z wartości wysyła-
nych przez odbiornik GPS do postaci wygod-
nej dla użytkownika opiera się o zależność: 
1 minuta = 60 sekund. W programie doko-
nywane jest stosowne przeliczenie z systemu 
NMEA do formatu stopnie.minuty.sekundy.
ułamki_sekund. Funkcja realizująca stosowne 
przeliczenie pokazana jest na listingu 1
4. Sposób ustalenia pozycji geograficznej: 
występowanie cyfry 1 oznacza, że pozycja 

15

Elektronika dla Wszystkich

Wrzesieñ 2010

Wrzesieñ 2010

Projekty AVT

#

#

#

#

#

#

#

#

#

2955

2955

System nawigacji 

System nawigacji 

satelitarnej GPS

satelitarnej GPS

background image

została ustalona na podstawie systemu GPS. 
Cyfra 2 oznacza ustalenie pozycji za pomocą 
systemu DGPS (system GPS wspomagany 
stacjami naziemnymi, pozwalający na zwięk-
szenie precyzji pomiaru). Cyfra 0 oznacza 
niepoprawne ustalenie pozycji. 
5. Liczba satelitów, na podstawie których 
została ustalona pozycja geograficzna. Liczba 
ta ma poprzedzające zero w przypadku liczby 
satelitów mniejszej od 10. Przykładowo 07 
oznacza 7 satelitów. 
6. Parametr HDOP (ang. Horizontal Dilution 
of Precision)
 określa precyzję ustalenia sze-
rokości geograficznej. Wysoka wartość tego 
parametru oznacza duży błąd w ustaleniu 
pozycji. Precyzyjne pomiary powinny mieć 
współczynnik HDOP poniżej 3. Parametr ten 
określany jest na podstawie rozmieszczenia 
satelitów systemu GPS. Jeśli satelity umiesz-
czone są blisko siebie, to precyzja pomiaru 
maleje (brak dużych różnic w odbiorze sygna-
łu GPS). Takie „zbiorowisko” satelitów może 
być traktowane jako jeden satelita. 
7. Wysokość nad poziomem morza. Wysyłana 
w ramce $GPGGA w formie liczby peł-
nych metrów nad poziomem morza oraz, 
oddzielonej kropką, wartości ułamkowej. 
Przykładowo 211.3 określa wysokość 211.3 
m n.p.m. Długość tego pola ulega zmianie 
wraz ze zmianą wysokości. Warto zaznaczyć, 
że przy małej liczbie satelitów (<5) pomiar 
wysokości jest obarczony bardzo dużym błę-
dem, a przy liczbie satelitów równej 3 pomiar 
wysokości jest całkowicie bezużyteczny. 
8. Wysokość geoidy nad elipsoidą standardu 
WGS84. Parametr niewykorzystywany w 
urządzeniu. Stanowi on informację o różni-
cy pomiędzy elipsoidą odniesienia systemu 
WGS84 a geoidą 
stanowiącą przybli-
żenie powierzchni 
Ziemi. 
9. Czas ostatniej 
poprawki systemu 

DGPS. To pole jest puste, jeśli system nie 
korzysta z systemu DGPS. W przypadku 
pracy z systemem DGPS, w tym polu zawarta 
jest liczba sekund od ostatniej aktualizacji 
pozycji za pomocą systemu DGPS. 
10. Identyfikator stacji DGPS. To pole jest 
puste, jeśli system nie korzysta z systemu 
DGPS. W przypadku pracy z systemem 
DGPS w tym polu zawarta jest czterocyfrowa 
liczba identyfikująca stację DGPS. Model 
prezentowany w artykule nie korzysta z syste-
mu DGPS. Osoby zainteresowane systemem 
DGPS mogą znaleźć stosowne informacje w 
Internecie oraz instrukcjach obsługi sprzętu 
GPS (np. firmy Garmin). 
11. Suma kontrolna, służąca do stwierdzenia 
poprawności transmisji danych przez łącze 
RS232. Powstaje ona jako liczba heksadecy-
malna sumy XOR znaków pomiędzy symbo-
lami $ i *. 

Przykładowa ramka $GPGGA ma nastę-

pującą postać:

$GPGGA,170834,4124.8963,N,08151.68

38,W,1,05,1.5,280.2,M,-34.0,M,,,*75

Dekodując ramkę zgodnie z punktami 1–

11, można uzyskać następujące informacje:

Czas UTC aktualnej pozycji geogra-

ficznej: 17:08:34. Szerokość geograficzna 
41º 24.8963’ N (po przeliczeniu 41º24’54” 
N). Długość geograficzna 81º51.6838’ W 
(po przeliczeniu 81º51’41” W). Pozycja 
określona na podstawie systemu GPS (bez 
DGPS). Liczba satelitów, na podstawie któ-
rych określono pozycje: 5. Wartość HDOP 
1.5. Wysokość nad poziomem morza: 280,2 
m. Wysokość geoidy – 34m. Kolejne dwa 
pola są puste, do określenia pozycji nie 

wykorzystano systemu DGPS. 
Suma kontrolna ma wartość 
75.

Odczyt każdej ramki nastę-

puje w procedurze przerwania 
UART-u mikroprocesora. W 
przypadku obecności sygnału 
z co najmniej trzech satelitów 
GPS przerwanie to pojawia się 
co sekundę. Jeśli urządzenie nie 
odbiera odpowiedniego sygnału 
z systemu GPS, przerwanie to 
pojawia się co dwie sekundy, 
lecz w wysyłanych danych nie 
występują informacje o pozy-
cji geograficznej, odbierany jest 
natomiast czas UTC. Procedurę 
odczytu danych oraz znalezie-
nia ramki $GPGGA w całym 
ciągu danych wysyłanych przez 
odbiornik GPS przedstawia list-

ing 2.

Kolejne linijki programu wczytują dane 

wysyłane po nagłówku GPGGA. Następnie 
program liczy kolejne przecinki i przepisuje 
dane zawarte pomiędzy kolejnymi przecinka-
mi do konkretnych zmiennych. Wiadomo, że 
pomiędzy pierwszym a drugim przecinkiem 
ramki $GPGGA zawarty jest czas UTC, a 
pomiędzy trzecim i czwartym przecinkiem 
zawarta jest informacja o kierunku szerokości 
geograficznej i tak dalej.

 

Określenie odległości do 

obiektu docelowego

Pomiar odległości do miejsca docelowego 
realizowany jest w przestrzeni 2-wymiaro-
wej. Wysokość obiektu nad poziomem morza 
nie została uwzględniona. Jest to oczywiście 
źródło błędów, ale znacznie upraszcza pisanie 
oprogramowania. Ideę pomiaru odległości 
od aktualnej pozycji do miejsca docelowe-
go ilustruje rysunek 1. Pomiar odległości 
do miejsca docelowego opiera się o dwie 
właściwości: stałą długość południków oraz 
zmienną długość równoleżników. Na rysunku 
1 długość a oznacza długość południkową 
pomiędzy aktualnym punktem, w którym się 

16

Projekty AVT

Elektronika dla Wszystkich

Wrzesieñ 2010

Wrzesieñ 2010

 

Rys. 1 

znak=recvrs232();     //odbierz znak z układu UART

if ((znak==36) && (krok==0)) krok=1;   //jeśli odebrany znak to $ i krok dekodowania=0 to
if (znak==42) krok=0; 

//jeśli odebrany znak to *, to koniec ramki, wyzeruj krok dekodowania

if ((krok==1) && (znak==71)) krok=2; 

 

//jeśli krok=1 oraz znak = G to kolejno

if ((krok==2) && (znak==80)) krok=3; 

 

//sprawdź czy znak P

if ((krok==3) && (znak==71)) {krok=4; znak=0;}  //sprawdź czy znak G, ustaw znak=0
if ((krok==4) && (znak==71)) krok=5; 

 

//sprawdź czy znak G

if ((krok==5) && (znak==65)) {krok=6; znak=0;}  //sprawdź czy znak A, znak=0

if (krok==6) {   

 

 

 

//kolejne dane to zawartość ramki GPGGA

//program odczytywania kolejnych informacji z ramki //GPGGA

Listing 2

void lcdlon(char x, char y)
{

float ln=0;
float ms=0;
char minuty=0;   

//deklaracja zmiennych

float sekundy=0;
char lonstopnie=0;
char ltemp[14];
lcdxy(x,y); 

 

 

//ustaw pozycje kursora na wyświetlaczu

ln=atof(lon); 

 

//konwersja z ciągu znaków na wartość typu float

 

 

 

 

 

//lon - ciąg znaków odczytany z modułu GPS (dł geogr)

ln=ln*0.01; 

 

 

//przesunięcie przecinka o dwie pozycje w lewo

lcdtxt(„Lon „);  

//wyświetlenie tekstu „Lon „ na wyświetlaczu

lonstopnie=ln;   

//pobranie części całkowitej ze zmiennej ln (stopnie)

itoa(lonstopnie,ltemp,10); 

//konwersja na ciąg znaków (char)

lcdtxt(ltemp);   

 

 

//wyświetlenie stopni dł geogr. 

lcdtxt(„.”); 

 

   //wyświetlenie 

kropki

ln=ln-lonstopnie; 

 

 

//odjęcie stopni od wartości dł geogr. 

ms=ln*100; 

 

 

//przecinek o dwie pozycje w prawo 

minuty=ms;  

 

//odczytanie 

minut 

ms=ms-minuty; 

 

//odjęcie minut od wartości dł geogr. 

ltoa(minuty,ltemp,10); 
lcdtxt(ltemp);  

 

//wyświetlenie 

minut

lcdtxt(„’”);
sekundy=ms*60;   

 

//obliczenie liczby sekund z wartości ms

dtostrf(sekundy,4,2,ltemp); 

//konwersja wartości double na ciąg znaków

lcdtxt(ltemp); 

 

 

 

 

//wyświetlenie sekund i ich części ułamkowej

lcddata(34); 

    //znak 

lcddata(lond[1]); 

   //wyświetlenie 

kierunku 

lcdtxt(„  „); 

//puste pola aż do końca linii

lonsek=(unsigned long)3600*lonstopnie+(unsigned long)60*minuty+sekundy;
//oblicz liczbę sekund - służy do obliczenia odległości do miejsca docelowego

}

Listing 1

background image

17

Projekty AVT

Elektronika dla Wszystkich

Wrzesieñ 2010

Wrzesieñ 2010

znajduje urządzenie (punkt X), a punktem 
docelowym (punkt Y). Długość a  liczona 
jest przez program jako różnica szeroko-
ści geograficznej aktualnej pozycji i miejsca 
docelowego. Różnica ta wyrażona jest w 
sekundach kątowych. W celu wyrażenia dłu-
gości  a w metrach lub kilometrach jest ona 
wymnażana przez 0,03. Współczynnik 0,03 
powstał poprzez podzielenie obwodu Ziemi 
(sumy długości dwóch południków) przez 
liczbę sekund kąta pełnego: 360º. Długość 
dwóch południków to około 40 000km a 
ilość sekund kątowych w kącie pełnym to 
360*60*60=1296000. Oznacza to, że urządze-
nie przyjmuje długość 30 metrów jako jedną 
sekundę kątową (ale tylko dla południków, 
które mają stałą długość, dla równoleżników 
ta wielkość jest dodatkowo korygowana przez 
funkcję kosinus). Odległości b oraz c nie są 
równe. Wraz z oddalaniem się od równika 
długość równoleżników maleje z kosinusem 
kąta szerokości geograficznej, osiągając war-
tość 0 dla biegunów (cos90º=0). Długość o 
liczona jest w następujących krokach:
1. Obliczenie różnicy w pozycji geograficz-
nej, zarówno dla szerokości geograficznej jak 
i dla długości geograficznej. Wyrażenie tych 
różnic w sekundach kątowych.
2. Obliczenie długości b, zależnej od aktual-
nej szerokości geograficznej (uwzględnienie 
kosinusa szerokości geograficznej). 
3. Obliczenie przybliżonej odległości pomię-
dzy punktami X oraz Y ze wzoru:

2

2

03

,

0

b

a

o





Funkcja realizująca te obliczenia przedsta-
wiona jest na listingu 3.

 

Opis układu

Schemat odbiornika GPS zamieszczo-
no na rysunku 2. Układ składa się z 
mikroprocesora AVR, który z ramek 
NMEA0183 pozyskuje informacje o 
lokalizacji oraz modułu GPS, który takie 
ramki wysyła. Informacje o lokalizacji 
są następnie przedstawiane na wyświet-
laczu LCD. Tranzystor T1 z elementami 
R2 i R3 sprzęga łącze RS232 modułu 
odbiorczego GPS z UART-em procesora. 
Potencjometr R1 służy do regulacji kon-
trastu wyświetlacza LCD. Rezystor R4 
ogranicza prąd podświetlania wyświetla-
cza LCD. Można go dobrać w zależności 
od potrzeb – im mniejszy, tym większy 
pobór prądu, ale większa jasność pod-
świetlania wyświetlacza. Układ wyko-
rzystuje gotowy moduł odbiorczy GPS, 
który nie wymaga żadnej ingerencji 
użytkownika. Po podłączeniu zasilania 
moduł odbiorczy GPS od razu wysy-
ła ramki w standardzie NMEA0183. 
Możliwa jest konfiguracja modułu GPS, 
ale w układzie nie została wykorzystana 
– standardowe ustawienia okazały się 
optymalne. Sposób konfiguracji modułu 
GPS zależy od producenta urządzenia 

i przed zastosowa-
niem zakupionego 
modułu GPS warto 
się upewnić, czy 
wysyła on dane w 
standardzie NMEA 
(moduł wykorzysta-
ny w modelu  ma 
możliwość wysyła-
nia danych w stan-
dardzie NMEA oraz 
binarnym – w for-
mie zer i jedynek) 
oraz czy w ciągu 
wyjściowym obecna jest ramka $GPGGA. 
Test modułu GPS najwygodniej przeprowa-
dzić, wpinając go bezpośrednio do portu 
COM komputera PC. Należy mieć na uwa-
dze, aby wpiąć tylko linię TX modułu GPS do 
linii RX złącza COM komputera. Podłączenie 
linii TX złącza COM komputera z linią RX 
modułu może doprowadzić do uszkodzenia 
modułu GPS (linia TX złącza COM kompu-
tera PC ma znacznie wyższe napięcia pracy 
niż moduł GPS). W moim przypadku do 
pierwszego testu modułu GPS wykorzysta-
łem przejściówkę USB-RS232. Przejściówka 
zapewni od razu dopasowanie poziomów 
i wyeliminuje ryzyko uszkodzenia modułu 
GPS. Podczas testów w pomieszczeniach 
może się okazać, że moduł GPS nie potrafi 
odebrać sygnału GPS, przez co wysyłane 
ramki będą puste – wysyłane będą tylko 
nazwy nagłówków (w ramce $GPGGA poja-
wi się jedynie czas UTC). Dotyczy to szcze-
gólnie modułów GPS typu OEM, które sprze-

dawane są w formie płytki drukowanej ze 
zintegrowaną anteną. Autor testował opisany 
model z dwoma modułami GPS i moduł osta-
tecznie użyty w urządzeniu wykazywał się o 
wiele większą czułością niż moduł GPS typu 
OEM. Poprawę odbioru sygnału GPS można 
uzyskać, stosując zewnętrzną antenę (jeśli 
moduł ma zewnętrzne wejście antenowe) lub 
przesuwając moduł GPS w pobliże okna. 

 

Montaż i uruchomienie

Układ można zmontować na płytce widocznej 
na  rysunku 3. Montaż jest klasyczny, ale 
ze względu na obecność rezystorów SMD 
wymagana jest spora precyzja w montażu. 
Do złączy oznaczonych S1–S4 należy przy-
lutować przyciski służące do obsługi odbior-
nika. Dodatkowo, jeśli wyświetlacz LCD 
ma podświetlanie, to należy je podłączyć do 
gniazda oznaczonego PODSW, a przycisk 
służący do jego włączenia należy przylutować za 
pomocą odcinka przewodu do gniazda POD_S. 

Układ najlepiej 
zamknąć w sto-
sownej obudowie. 
W modelu wyko-
rzystano obudowę 
Z44, która okaza-
ła się najlepszym 
wyborem. Koszyk 
na 4 baterie AA 
należy przykle-
ić do jednej ze 
ścian obudowy. 
Trzeba dodatko-
wo wyciąć otwór 

float liczodleglosc(void)

{
char temp[12];  //zmienna pomocnicza
double cosinus; //wartość kosinusa 
long x=0,y=0; 

//zmienne do obliczenia odległości

y=latsek-dssek; //obliczenie różnic pozycji geogr. 
x=lonsek-ddsek;

//zmienne x oraz y zawierają różnice w poz. geogr wyrażone w sek

cosinus=1000*cos(latstopnie*3.1415/180);  //radiany na stopnie
// korekcja związana ze zmienna długością równoleżników. 
x=x*cosinus;   //korygowanie wyniku
x=x*0.001; 

 

//usunięcie mnożnika 1000

x=x*x;   

//obie wartości podnieść do kwadratu

y=y*y;

odleglosc=sqrt(x+y); //i 

wyciągnąć 

pierwiastek 

odleglosc=odleglosc*0.03; //0.03 = 40000km/(360*60*60)

if (abs(x) >150000000) odleglosc=-1; //jeśli za duże wartości
if (abs(y) >150000000) odleglosc=-1;// to zwróć -1. 
return odleglosc;
}

Listing 3

MEGA8-P

V

C

C

100n

47u

VCC

10k

VCC

VCC

BC237

6.

8k

2.2k

V

C

C

V

C

C

STK200

V

C

C

22

PB5(SCK)

19

PB7(XTAL2/TOSC2)

10

PB6(XTAL1/TOSC1)

9

GND

8

VCC

7

AGND

22

AREF

21

AVCC

20

PB4(MISO)

18

PB3(MOSI/OC2)

17

PB2(SS/OC1B)

16

PB1(OC1A)

15

PB0(ICP)

14

PD7(AIN1)

13

PD6(AIN0)

12

PD5(T1)

11

PD4(XCK/T0)

6

PD3(INT1)

5

PD2(INT0)

4

PD1(TXD)

3

PD0(RXD)

2

PC5(ADC5/SCL)

28

PC4(ADC4/SDA)

27

PC3(ADC3)

26

PC2(ADC2)

25

PC1(ADC1)

24

PC0(ADC0)

23

PC6(/RESET)

1

C1

C2

1

2

3

4

5

6

LCD_CTR

1

2

3

4

LCD_DATA R1

1

2

S1

1

2

S2

1

2

S3

1

2

S4

1

2

ZAS

T1

R

2

R3

1

2

S5

1

2

PODSW

1 2

P

O

D

_S

1

2

3

4

5

6

7

8

9

10

JP1

R

4

+

IC1

 

Rys. 2 

100n

6.8k

2.

2k

22

C1

R2

R3

R4

2 3

1

IC1

C2

LCD_CTR

LCD_DA

TA

R1

S1

S2

S3

S4

ZAS

T1

S5

PODSW

POD_S

JP1

MEGA8-P

47u

10k

BC237

STK200

 

Rys. 3 

background image

na wyświetlacz LCD oraz niewielkie otwo-
ry do przymocowania przycisków. Można 
spróbować podgrzać końcówki przycisków 
lutownicą i wtopić je w obudowę tak, aby 
przeszły na wylot obudowy. Z boku obudowy 
zamocowano wyłącznik urządzenia. Pomocą 
w pracach mechanicznych mogą być foto-
grafie modelu. Do gniazda oznaczonego S5 
należy doprowadzić łącze RS232 z modułu 
GPS. Moduł ten musi mieć ustawione nastę-
pujące parametry:
1. szybkość transmisji 4800b/s,
2. 8 bitów danych, brak kontroli parzystości
3. musi wysyłać ramkę $GPGGA – układ 

właśnie z niej odczytuje informacje doty-
czące pozycji geograficznej.

W modelu zastosowano moduł przeznaczony 
do użytku w samochodach, oparty na układzie 
SIFR STAR III, który doskonale radzi sobie z 
ustaleniem pozycji nawet w pomieszczeniach. 
Od parametrów tego modułu zależą parametry 
całego urządzenia. Warto więc wyposażyć się 
w możliwie jak najczulszy moduł odbiorczy. 
Jak pisałem wyżej, należy stanowczo unikać 
modułów GPS typu OEM.
Prezentowany model powinien być zasilany 
z 4 akumulatorków NiMH AA o pojemności 
2100mA, co wystarcza na ciągłą pracę urzą-
dzenia przez co najmniej 20 godzin – pobór 
prądu wynosi 80mA oraz 110mA przy włą-
czonym podświetlaniu. Nie należy stosować 
do zasilania układu czterech jednorazo-
wych baterii AA
, gdyż napięcie świeżych 
baterii często przekracza 1,5V, co może spo-
wodować uszkodzenie procesora oraz modułu 
odbiorczego. 

Program sterujący pracą całego ukła-

du został napisany w środowisko WinAVR 
– można go ściągnąć z Elportalu. Jest to 
mój pierwszy program w C i zapewne nie 
jest napisany optymalnie. Osoby bardziej 
doświadczone mogą oprogramowanie napisać 
same, szczególnie jeśli wiadomo, w jaki spo-
sób należy odczytywać dane lokalizacyjne z 
ramek $GPGGA protokołu NMEA0183. Przy 
konfiguracji fusów mikroprocesora należy 
pamiętać, aby włączyć wewnętrzny oscylator 
i ustawić jego częstotliwość na 1MHz. 

 

Obsługa

Urządzenie po włączeniu oczekuje na popraw-
ne informacje z modułu GPS. Czas wstęp-
nego oczekiwania zależny jest od rodzaju 
modułu i określany jest jako zimny start. Czas 

ten zależny jest także od licz-
by satelitów, które w danym 
momencie „widzi” odbior-
nik. Model w pomieszczeniu 
potrzebuje około 45 sekund na 
wyświetlenie danych nawiga-
cyjnych. Po otrzymaniu tych 
danych układ jest gotowy do 
pracy. 

Do obsługi urządzenia służą 

cztery przyciski. Umożliwiają 
one programowanie współrzędnych geogra-
ficznych miejsca, do którego chcemy okre-
ślić naszą aktualną odległość, nadanie nazwy 
temu miejscu oraz sprawdzenie odległości od 
naszej aktualnej pozycji do zaprogramowa-
nego miejsca. Jeśli interesują nas wyłącznie 
nasze aktualne współrzędne geograficzne, to 
nie potrzebujemy korzystać z przycisków, 
tylko po prostu włączyć urządzenie. 

Aby wprowadzić nową lokalizację miej-

sca, do którego będzie liczona odległość, 
należy nacisnąć przycisk opisany jako Nowa 
Lok  
(patrz fotografie modelu).  Po naciś-
nięciu przycisku, na wyświetlaczu pojawi 
się komunikat o wprowadzeniu szeroko-
ści geograficznej. Przyciskami oznaczo-
nymi jako ST,  MIN,  SEK należy wpro-
wadzić szerokość geograficzną. Wpisaną 
wartość zatwierdza się przyciskiem Enter. 
Po zatwierdzeniu szerokości geograficz-
nej należy, sposobem opisanym powyżej, 
wprowadzić długość geograficzną. Na sam 
koniec trzeba wprowadzić nazwę wpisanego 
miejsca (np. nazwę miasta). Zmiany litery 
dokonujemy przyciskami oznaczonymi A, 
B
, C... oraz Z, Y, X... Nazwę można wyka-
sować i wpisać ponownie, naciskając jed-
nocześnie oba przyciski (CLEAR). Każdą 
wpisaną literę zatwierdzamy przyciskiem 
opisanym  OK. Po wpisaniu nazwy  układ 
wróci do wyświetlenia aktualnych współ-
rzędnych geograficznych. W modelu nie 
można zaprogramować kierunku geograficz-
nego. Programowana odległość musi leżeć 
na półkuli północnej w kierunku wschod-
nim od południka głównego. Odległość do 
miejsca, które zostało zaprogramowane, 
można sprawdzić, naciskając przycisk ODL
Odległość wyświetlana jest z rozdzielczością 
10 metrów, aczkolwiek dokładność jej okre-
ślenia wynosi ok. 40 metrów i jest zależna 
od liczby satelitów, na podstawie których 
została określona nasza pozycja. Układ aktu-

alizuje pozycję co sekundę, ale aby do tego 
doszło, moduł musi „poczuć”, że się porusza. 
Oznacza to, że układ może nie zareagować, 
jeśli przemieścimy się tylko o 30 czy 50 
metrów, dlatego podczas testów najlepiej 
wsiąść na rower i przejechać się razem z 
włączonym układem, obserwując wskaza-
nia. Poruszanie się powoduje aktualizację 
naszego położenia co sekundę. Dokładność 
wyznaczenia pozycji według danych pro-
ducenta modułu wynosi 5 metrów. Dużą 
pomocą w testach modułu może okazać się 
program Google Earth, który podaje pozycję 
geograficzną wraz z wysokością nad pozio-
mem morza. Wskazania przyrządu można 
zatem porównać z tym, co podaje program. 
Innym sposobem jest posiadanie dobrego 
fabrycznego odbiornika i porównanie wska-
zań obu przyrządów. 

Rafał Stępień

rafals1@poczta.fm

Rezystory
R1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10kΩ PR
R2 . . . . . . . . . . . . . . . . . . . . . . . . . .6,8kΩ SMD 1206
R3 . . . . . . . . . . . . . . . . . . . . . . . . . .2,2kΩ SMD 1206
R4 . . . . . . . . . . . . . . . . . . . . . . . . . . . 22Ω SMD 1206
Kondensatory
C1 . . . . . . . . . . . . . . . . . . . . . . . . . .100nF SMD 1206
C2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .47μF/16V
Półprzewodniki
IC1  . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ATmega8
T1  . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . BC237
Pozostałe
Podstawka DIP28
5 sztuk przycisków
Wyświetlacz 4x20 znaków
Koszyk na cztery baterie AA
Moduł GPS – zgodnie z opisem

Wykaz elementów

Komplet podzespołów z płytką jest do stęp ny

 w sie ci han dlo wej AVT ja ko kit szkol ny AVT-2955 

(moduł GPS nie wchodzi w skład zestwu).

18

Projekty AVT

Elektronika dla Wszystkich

Wrzesieñ 2010

Wrzesieñ 2010

R   E   K   L   A   M   A