Introduction: Interfacing GPS Module With Arduino Uno

About: I am an engineer, geek, writer.

Hi ! Do you wish to connect a GPS module to your Arduino Uno Board, but don't know how to do it? I'm here to help you! You'll need following parts to get started.


Step 1: Connect Arduino With PC

First of all, connect your Arduino Uno Board with a PC. You can visit for the information regarding the installation of Arduino Software (IDE) and for connecting Board with a PC.

Step 2: A Brief Info. About UBlox NEO-M8N GPS Module

This is an UBlox NEO-M8N GPS Module with Ceramic Active Antenna. This GPS Module has 72-channel Ublox M8 engine in the receiver. The module has 4 pins: VCC (Supply Voltage), GND (Ground), Tx (Transmitter), and Rx (Receiver).

This module provides nonstop NMEA (National Marine Electronics Association) data strings to the TX pin resulting GPS information. To know more about this module, you can download its datasheet here.

Step 3: Interface GPS Module With Arduino Uno

For interfacing, make the connections as follows:

  1. Connect Vcc of GPS module to Power Supply Pin (5V) of Arduino Uno.
  2. Connect Rx (Receiver Pin) of GPS module to D3 Pin of Uno.
  3. Connect Tx (Transmitter Pin) of GPS module to D4 Pin of Uno.
  4. Connect GND (Ground Pin) of GPS module to GND of Uno.

Step 4: Download Libraries and Install.

Download the following libraries and install it in Arduino IDE software.

  1. Software Serial Library
  2. TinyGPS Library for Arduino

Step 5: Arduino Software (IDE)

Open the example code in Arduino Software (IDE). Under File tab, hover the cursor over Examples, select TinyGPSPlus-master, and then click on DeviceExample.

Step 6: Now, the Output!

You'll get the output as shown above in the serial window of Arduino IDE. These are NMEA sentences in its different types.

Step 7: Decoding the NMEA Message Structure

All NMEA messages start with the $ character, and each data field is separated by a comma. $GNGGA is the basic NMEA message. It provides 3D location and accurate data.

Now, the decoding:

  • The GN after $ indicates GPS position. GGA is for Global Positioning System Fix Data. The characters before the first comma indicate the type of message. All messages conform to the NMEA-0183 version 3.01 format.
  • 073242– Represents the time at which the fix location was taken, 07:32:42 UTC
  • 1837.84511,N– Latitude 18 deg 37.84511’ N
  • 07352.30436,E– Longitude 073 deg 52.30436′ E
  • 1– Fix quality (0 = invalid; 1= GPS fix; 2 = DGPS fix; 3 = PPS fix; 4 = Real-Time Kinematic; 5 = Float RTK; 6 = estimated (dead reckoning); 7 = Manual input mode; 8 = Simulation mode)
  • 11– Total number of satellites
  • 17 – Horizontal dilution of position
  • 8,M – Altitude, in meters above the sea level
  • -67.7,M – Height of geoid (means sea level) above WGS84 ellipsoid
  • Empty field – Time in seconds since last DGPS update
  • Empty field – DGPS station ID number
  • *60 – the checksum data, always begins with *
This project is based on article GPS Module with Arduino and Raspberry Pi - By Priyanka Dixit. Visit this article to know more about GPS, how it works, explanation of key terms longitude & latitude, difference between GPS chip & GPS module, and much more!