GPS Interfacing with Computer Using Arduino

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.

GPS module SKG13BL

 

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).

GPS-interfacing-arduino-computer

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:

GPS interfacing arduino

GPS interfacing arduino remove ic

Now do the connection like given in below picture:

  1. GPS TX pin to Digital PIN 1 of Arduino (TXD)
  2. GPS Ground Pin to GND PIN of Arduino
  3. GPS Power (3.3v) Pin to 3.3v PIN of Arduino

GPS Interfacing with Arduino Fritzing Diagram

Gps and 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:

GPS interfacing arduino serial monitor window

 

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.

Video: 

Comments (25)

  • Akash Singh's picture
    Akash Singh

    In place of removing the IC on arduino, we can upload a blank program i.e. with a blank setup() and blank loop()....

    Apr 13, 2016
  • saddam khan's picture
    saddam khan

    Very good..

    yes you can upload a blank program or led blinking program.

    Apr 21, 2016
  • Sundari Ravi 's picture
    Sundari Ravi

    Thank you for uploading this vedio. I have done this, now i want to extract only gprmc code and with 5 minutes interval.
    Please help me to finish my project.

    Jun 27, 2016
  • RAJESH KUMAR's picture
    RAJESH KUMAR

    why we are removing ic before connections

    Jun 29, 2016
  • Abhishek's picture
    Abhishek

    Its already mentioned that we only need the serial circuitry of the Arduino. This is called the Gateway mode.

    Jul 09, 2016
  • indra's picture
    indra

    what will happen if u dont remove the IC?

    Mar 05, 2017
  • Selvakumar's picture
    Selvakumar

    I done the same connection as you did and open the arduino IDE and serial monitor but i didn't get any data like your output.But i get some garbage output .Now what i do??? Help me as soon as possible

    Jul 16, 2016
  • Abhishek's picture
    Abhishek

    Follow the complete procedure carefully.

    Aug 13, 2016
  • Brana's picture
    Brana

    Hi, I am doing my final year project "Real Time Arduino Vehicle Tracker",
    1. Why didn't you install a GPS Shield instead of a GPS Receiver?
    2. What are the difference between these two components?
    3. Do we really need an internal + an external GPS antennas if we use a GPS shield?
    4. Did you insert a SIM CARD to your GPS Receiver?

    Your help would be greatly appreciated. :)

    Aug 14, 2016
  • Abhishek's picture
    Abhishek

    Answer to your questions:
    1. You can use GPS shield with Arduino, it will be better.
    2. GPS shield is specifically for Arduino and can be fit on it easily whereas GPS receiver can be used with any microcontroller.
    3. Antenna will depend upon your GPS module, some module have it and some dont.
    4. No, SIM isn't inserted in GPS module.

    Aug 22, 2016
  • ganapathi's picture
    ganapathi

    in the serial monitor i can see that gps is sending the nmea formatted string with out lat and long values
    and even the status led of gps is not blinking

    Aug 24, 2016
  • ajaykumar's picture
    ajaykumar

    in the serial monitor the gps gives the nmea format but doesnt show any latitudes or longitudes , but i get result like, when the gps is not in range.what can i do now to get my gps receiver to a range.
    thank you

    Sep 21, 2016
  • Maddy's picture
    Maddy

    @ganapathi and @Ajay: If you are getting NMEA string without Long and Lat, that means your GPS module is not in range. Try placing the antenna in open sky and also provide proper power supply to it, it has two options for power supply 3v or 12v, set it correctly.

    Oct 07, 2016
  • kashif's picture
    kashif

    i have the same problem...then i privide external power to gps like rechargable battery...then my gps start giving me lat lng....it seems that arduino is not giving enough power to gps to operate properly>>>

    Apr 19, 2017
  • sirt1013's picture
    sirt1013

    How to get GPS longitudes and latitudes as variable from arduino kit, further i can use this variable in other purpopse.

    your help would be greatly appreciate!

    Oct 06, 2016
  • Sohaib's picture
    Sohaib

    I want to interface two gps if one fails another ll take over at the same time ...can I do this with ardeno

    Oct 27, 2016
  • SivaKumar.S's picture
    SivaKumar.S

    how to choose gps module for our preferred arduino?

    Oct 27, 2016
  • SivaKumar.S's picture
    SivaKumar.S

    shall we use any arduino model with any gps?/

    Oct 27, 2016
  • Maddy's picture
    Maddy

    Yes, but you should check datasheet of GPS before connections.

    Oct 27, 2016
  • Ashish's picture
    Ashish

    my project is " Smart helmate and accident detection''. In that first i detect accident happened or not, if yes then send location to nearest hospital and any one of his/her friend or family. The problem is I don't know how to do. i'm getting continuous data in serial monitor, i need specific coordinates of location and to send that msg to hospital and friend im using gsm kit with arduino. Please if u help me in this it will be great to me.

    Dec 22, 2016
  • bdv prasad's picture
    bdv prasad

    Hai Sir,
    Actually i have to receive the date from gps receiver by providing power supply to gps of 3.3v. How can i get that data as wireless?
    I hope i will get an answer.

    Jan 08, 2017
  • rakshith's picture
    rakshith

    In the serial monitor, I'm getting a single line output which consists of one NMEA string. How do i get multiple NMEA strings as shown in the video?

    Jan 28, 2017
  • soumya ranjan's picture
    soumya ranjan

    Can you please provide me the code for skytra gps along with the connection? I am unable to get the output.
    model no is S1216R8

    Mar 07, 2017
  • Juleshwar's picture
    Juleshwar

    Whatever I do the GPS data seems to be always out of range :(

    Mar 17, 2017
  • Aditi jain's picture
    Aditi jain

    My gps receiver sim28m is always out of range. How to bring it into range?

    Jun 13, 2017

Leave a comment