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
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
17
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
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ń
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