How to Interface GPS Module with Arduino Uno

GPS stands for Global Positioning System. GPS module find the location (latitude, longitude, altitude) by comparing the time taken for receiving signals from satellites in its vicinity. GPS offers a great accuracy and also provides other data besides position coordinates.

From smartphones and autos to considerably more advanced missile guidance systems, GPS plays a significant part in today’s navigation systems. Yes, the GPS is a must-have. That was only to remind us of the need of GPS and to appreciate how difficult navigation would be without it: setting a course, getting lost, and then finding our way.This article discusses how to interface the UBlox NEO-M8N global positioning system (GPS) module with Arduino Uno 

Hardware Required:

  • U-Blox NEO-M8N GPS module 
  • Arduino Uno 
  • Breadboard
  • Connecting Wires

Global Positioning System

The GPS (Global Positioning System) is a satellite-based navigation system with at least 24 satellites. 

Global Positioning System (GPS) makes use of signals sent by satellites in space and ground stations on Earth to accurately determine their position on Earth.The GPS receives radio frequency signals from satellites and ground stations. These signals are used by GPS to identify its precise location.With no subscription fees or setup charges, GPS works in any weather condition, anywhere in the world, 24 hours a day.

How GPS works?

GPS satellites circle the Earth twice a day in a precise orbit. Each satellite transmits a unique signal and orbital parameters that allow GPS devices to decode and compute the precise location of the satellite.This information, together with trilateration, is used by GPS receivers to calculate a user’s actual location. The GPS receiver calculates the distance between each satellite by the time it takes to receive a broadcast signal. The receiver can determine and show a user’s position using distance measurements from a few more satellites.

A GPS receiver must be locked on to the signal of at least three satellites to determine your 2-D position (latitude and longitude) and track movement. The receiver can calculate your 3-D position if there are four or more satellites in view (latitude, longitude and altitude). A GPS receiver will often track eight or more satellites, depending on the time of day and where you are on the planet.

After determining your location, the GPS unit can calculate additional data, such as:

  • Speed
  • Bearing
  • Track
  • Trip dist
  • Distance to destination

The Arduino GPS module is a simple electronic circuit that connects to your Arduino board to provide position, altitude, speed, date, and time in UTC (Universal Time Coordinated). It transmits position data via serial port using the standard NMEA protocol (

 U-Blox NEO-M8N GPS module 

This popular NEO-M8N designed as a high Precision GPS Module. It comes with a Built-in Compass HMC5883L digital compass for APM and pixhawk. This module provides a high level of sensitivity and features active circuitry for the ceramic patch antenna. It is enclosed in a plastic case to protect the module from the elements. Also, the module outputs offer precise position updates at 10Hz and also have a rechargeable backup battery for warm starts. The Ublox NEO-M8N configured to run at a baud rate of 38400 and can be used with Pixhawk and APM. Moreover, this popular neo-M8N is capable of connecting the same module to All versions of the PIXHAWK Flight Controller. This performed by just after swapping its 5-pin connector with an extra 6-pin connector provided in the Package.

This new generation GPS NEO-M8N Offers a wide range of applications in GPS telemetry for your FPV flying or camera ship.  It is capable of providing an accuracy between 0.6 and 0.9 meters which is a significant improvement over previous models. Moreover, Satellite searching and acquisition is quite fast, generally taking around ten seconds to locate and acquire up to 6 satellites.  It also has a built-in compass with a 10Ghz refresh rate and a low noise figure which ensures this GPS module offers excellent performance.

The NEO-M8N features better performance and the easiest RF integration of all the NEO-M8 configurations. The NEO form factor allows for easy migration from previous NEO generations. Hence, the Sophisticated RF architecture and interference suppression ensure maximum performance even in GNSS-hostile environments. NEO-M8 combines a high level of robustness and integration capability with flexible connectivity options. Finally, future-proof NEO-M8N consists of an internal Flash that allows simple firmware upgrades for supporting additional GNSS systems.

Features of U-Blox NEO-M8N GPS module 

  • The ceramic antenna provides a very strong signal
  • With LED indicator lamp
  • The default baud rate: 9600.
  • With data backup battery.
  • LED signal indicator.
  • Compatible with various flight controller module.
  • EEPROM save the configuration parameter data when power-down.
  • Assistance AssistNow GNSS Online
  • AssistNow GNSS Offline (up to 35 days)
  • AssistNow Autonomous (up to 6 days)
  • OMA SUPL & 3GPP compliant
  • Oscillator TCXO
  • Built-in RTC crystal
  • Anti-jamming Active CW detection and removal.
  • Extra onboard SAW bandpass filter
  • Memory Flash
  • Supported antennas Active and passive
  • Odometer Travelled distance
  • Data-logger For position, velocity, and time

The RS232 serial protocol is used on the four pins of this GPS module. VCC, GND, TX, and RX are the four pins. The module simply feeds out NMEA data packets continuously to the TX pin. NMEA stands for National Marine Electronics Association, and it is a common text protocol used by all GPS systems.

GPS ModuleConnection to Arduino Uno

Connection diagram of GPS Module with Arduino:

  • Connect TX pin of GPS Module to pin number 4 of Arduino Uno.
  • Connect RX pin of GPS Module to pin number 3 of Arduino Uno.
  • Connect Red wire (5V pin) of GPS module to 5V pin of Arduino Uno.
  • Connect Black wire (GND pin) of GPS Module to GND pin of Arduino Uno.

Download the libraries from the below link and install them in Arduino IDE software.

  • Open the Arduino IDE after installing the library and run the example code below.
  • Or you can directly use the below code.
#include <SoftwareSerial.h>

static const int RXPin = 4, TXPin = 3;

static const uint32_t GPSBaud = 9600;

// The serial connection to the GPS device

SoftwareSerial ss(RXPin, TXPin);

void setup()





void loop()


  // Output raw GPS data to the serial monitor

  while (ss.available() > 0){




  • The output can see on the serial window of Arduino IDE:

NMEA sentences come in a variety of formats. The characters preceding the first comma denote the message’s type. A GPS position is indicated by the GN after the $. The $GNGGA is a basic GPS NMEA message that delivers precise data and a 3D location. Following is a sentence:

  1. 073242– Represents the time at which the fix location was taken, 07:32:42 UTC
  2. 1837.84511,N– latitude 18 deg 37.84511’ N
  3. 07352.30436,E– Longitude 073 deg 52.30436′ E
  4. 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)
  5. 11– total number of satellites
  6. 17 – Horizontal dilution of position
  7. 8,M – Altitude, in meters above the sea level
  8. -67.7,M – Height of geoid (mean sea level) above WGS84 ellipsoid
  9. empty field – time in seconds since last DGPS update
  10. empty field – DGPS station ID number
  11. *60 – the checksum data, always begins with *

I hope all of you are clear about how to interface the GPS Module with Arduino Uno.We MATHA ELECTRONICS will be back soon with more interesting topics.

Leave a Reply

Your email address will not be published.