GPS is a very useful device which is used in many electronics projects and applications like vehicle tracking system, GPS Clock, Accident Detection Alert System, traffic navigation and surveillance system etc. But question is How To Use The GPS And Read The Data From GPS? We can easily get the GPS data directly into our computer using Arduino.
GPS stands for Global Positioning System and used to detect the Latitude and Longitude of any location on the Earth, with exact UTC time (Universal Time Coordinated). This device receives the coordinates from the satellite for each and every second, with time and date. GPS offers great accuracy and also provides other data besides position coordinates, we will into look it shortly.
In this Arduino GPS Tutorial, we are going to explain that how to Test Or Interface GPS Module Using Computer And Arduino. For interfacing GSM with computer we either need USB to Serial Converter or Arduino Board. Here we are using Arduino board to interface GPS. We only need Arduino Board, GPS Module, Computer and 12v/3.3v adaptor for power supply. Here we have used GPS receiver Module SKG13BL (shown in above figure).
Before connecting it to the computer, we first need to Remove The Arduino IC (Atmega chip) from the Arduino Board, as we only need the serial circuitry of the Arduino. This is called the Gateway mode. Removing the IC is shown in below figures:
Now do the connection like given in below picture:
- GPS TX pin to Digital PIN 1 of Arduino (TXD)
- GPS Ground Pin to GND PIN of Arduino
- GPS Power (3.3v) Pin to 3.3v PIN of Arduino
After connections, connect the USB cable to the computer, open your Arduino IDE software in computer, select com port and open serial monitor to listen the serial port and Power up the Arduino and GPS module.
Now you will see GPS data on Arduino Serial Monitor Window like below. Below are two snapshots, first one is, when GPS is not in range and second one is, when GPS in range.
GPS Data When GPS Receiver Is Out Of Range:
GPS Data When GPS Receiver Is In Range:
In serial Window, you can see some sentences that start from $ sign. These are NMEA Sentences. GPS module sends the Real time tracking position data in NMEA format (see the screenshot above). NMEA format consist several sentences, in which four important sentences are given below. More detail about the NMEA sentence and its data format can be found Here.
- $GPGGA: Global Positioning System Fix Data
- $GPGSV: GPS satellites in view
- $GPGSA: GPS DOP and active satellites
- $GPRMC: Recommended minimum specific GPS/Transit data
These strings contain many GPS parameters like: Time, Date, Longitude, Latitude, speed, no. of satellites in used, altitude and many other things.
For any location coordinates and time, we can use $GPGGA and $GPRMC.
For Date and time we can use $GPRMC string.
When we use GPS module For Tracking Any Location, We Only Need Coordinates And We Can Find This In $GPGGA String. Only $GPGGA (Global Positioning System Fix Data) String is mostly used in programs and other strings are ignored. This string consist fix data as below:
$GPGGA,104534.000,7791.0381,N,06727.4434,E,1,08,0.9,510.4,M,43.9,M,,*47 $GPGGA,HHMMSS.SSS,latitude,N,longitude,E,FQ,NOS,HDP,altitude,M,height,M,,checksum data
Identifier | Description |
$GPGGA | Global Positioning system fix data |
HHMMSS.SSS | Time in hour minute seconds and milliseconds format. |
Latitude | Latitude (Coordinate) |
N | Direction N=North, S=South |
Longitude | Longitude(Coordinate) |
E | Direction E= East, W=West |
FQ | Fix Quality Data |
NOS | No. of Satellites being Used |
HDP | Horizontal Dilution of Precision |
Altitude | Altitude (meters above from sea level) |
M | Meter |
Height | Height |
Checksum | Checksum Data |
And $GPRMC String mainly contains velocity, time, date and position
$GPRMC,123519.000,A, 7791.0381,N, 06727.4434,E,022.4,084.4,230394,003.1,W*6A $GPRMC,HHMMSS.SSS,A,latitude,N,longitude,E,speed,angle,date,MV,W,CMD
Identifier | Description |
RMC | Recommended Minimum sentence C |
HHMMSS.SSS | Time in hour minute seconds and milliseconds format. |
A | Status // A=active and V= void |
Latitude | Latitude 49 deg. 16.45 min. North |
N | Direction N=North, S=South |
Longitude | Longitude(Coordinate) |
E | Direction E= East, W=West |
Speed | speed in knots |
Angle | Tracking angle in degrees |
Date | Time stamp (Date in UTC) |
MV | Magnetic Variation |
W | Direction of variation E/W |
CMD (*6A) | Checksum Data |
Mostly this string is used for taking time, date and speed.