W tym szybkim wpisie pokaże, jak używać modułu GPS NEO-6M z Arduino. Wszystko aby uzyskać dane GPS. GPS oznacza Global Positioning System i może być używany do określania pozycji, czasu jak i prędkości.
Potrzebne komponenty:
- Arduino np. Uno
- moduł GPS NEO-6M
- kabelkologia
Połączenie modułu GPS z Arduino
Moduł GPS NEO-6M posiada cztery piny: VCC, RX, TX, i GND, „gada” z Arduino poprzez komunikację szeregową za pomocą pinów TX i RX, mamy w sumie 4 przewody.
GPS NEO-6M | Arduino |
VCC | 5V |
RX | Pin 3 |
TX | Pin 4 |
GND | GND |
Kod programu:
#include <SoftwareSerial.h>
SoftwareSerial gps(4, 3);
void setup(){
Serial.begin(9600);
gps.begin(9600);
}
void loop(){
while (gps.available() > 0){
byte gpsData = gps.read();
Serial.write(gpsData);
}
}
Co do samego programu prostszego nie znam 😉
Po wgraniu otwórz monitor szeregowy przy szybkości transmisji 9600.
Powinieneś otrzymać kilka informacji w standardowym języku GPS, NMEA. Każda linia, którą otrzymujesz w monitorze szeregowym, jest zdaniem NMEA.
NMEA to skrót od National Marine Electronics Association, a w świecie GPS jest to standardowy format danych obsługiwany przez producentów GPS.
Jak odczytywać język NMEA
Zdania NMEA zaczynają się od znaku $, a każde pole danych jest oddzielone przecinkiem.
$GPRMC,203140.00,A,5326.84295,N,01432.49372,E,0.058,,250820,,,A*7B
$GPVTG,,T,,M,0.058,N,0.107,K,A*28
$GPGGA,203140.00,5326.84295,N,01432.49372,E,1,09,1.14,31.6,M,39.6,M,,*62
$GPGSA,A,3,28,30,05,07,08,27,18,13,15,,,,2.17,1.14,1.85*07
$GPGSV,3,1,10,05,45,215,23,07,34,069,26,08,16,046,32,09,01,117,*71
$GPGSV,3,2,10,13,61,289,31,15,28,295,20,18,13,313,29,27,08,015,15*73
$GPGSV,3,3,10,28,45,150,33,30,66,076,32*74
$GPGLL,5326.84295,N,01432.49372,E,203140.00,A,A*62
Istnieją różne typy zdań NMEA. Typ wiadomości określają znaki przed pierwszym przecinkiem. GP po znaku $ wskazuje, że jest to pozycja GPS. $ GPGGA to podstawowy komunikat GPS NMEA, który dostarcza trójwymiarowych danych o lokalizacji i dokładności. W następującym zdaniu:
$GPGGA,203140.00,5326.84295,N,01432.49372,E,1,09,1.14,31.6,M,39.6,M,,*62
- 203140 – przedstawia czas, w którym ustalono lokalizację, 20:31:40 UTC
- 5326.84295, N – szerokość geograficzna 53 stopni 26.84295 'N
- 01432.493752, E – długość geograficzna 014 st 32,493752 ′E
- 1 – jakość ustalenia (0 = nieważne; 1 = ustalenie GPS; 2 = ustalenie DGPS; 3 = ustalenie PPS; 4 = kinematyka w czasie rzeczywistym; 5 = zmienny RTK; 6 = oszacowana (obliczenie martwe); 7 = tryb ręcznego wprowadzania; 8 = Tryb symulacji)
- 09 – liczba satelitów
- 1.14 – Poziome rozcieńczenie pozycji
- 31,6, M – Wysokość, w metrach nad poziomem morza
39.6, M – Wysokość geoidy (średni poziom morza) nad elipsoidą WGS84
puste pole – czas w sekundach od ostatniej aktualizacji DGPS
pole puste – numer ID stacji DGPS
*62 – dane sumy kontrolnej, zawsze zaczyna się od *
Pozostałe dane NMEA zawierają dodatkowe informacje:
$ GPGSA – GPS DOP i aktywne satelity
$ GPGSV – Szczegółowe informacje o satelitach GPS
$ GPGLL – szerokość i długość geograficzna
$ GPRMC – Niezbędne dane GPS pvt (pozycja, prędkość, czas)
$ GPVTG – Poprawiona prędkość
Aby dowiedzieć się, co oznacza każde pole danych w każdym z tych zdań, możesz zapoznać się z danymi NMEA tutaj .