Global Positioning System (GPS)


The NEO-6M GPS module is shown in the figure below. It comes with an external antenna, and does’t come with header pins. So, you’ll need to get and solder some.

  • This module has an external antenna and built-in EEPROM.
  • Interface: RS232 TTL
  • Power supply: 3V to 5V
  • Default baudrate: 9600 bps
  • Works with standard NMEA sentences

Pin Wiring

The NEO-6M GPS module has four pins: VCC, RX, TX, and GND. The module communicates with the Arduino via serial communication using the TX and RX pins, so the wiring couldn’t be simpler:

NEO-6M GPS Module

Wiring to Arduino UNO




TX pin defined in the software serial


RX pin defined in the software serial



Getting GPS Raw Data

To get raw GPS data you just need to start a serial communication with the GPS module using Software Serial. Continue reading to see how to do that.


Interfacing with Arduino: 

Wire the NEO-6M GPS module to your Arduino by following the schematic below.

  • The module GND pin is connected to Arduino GND pin
  • The module RX pin is connected to Arduino pin 3
  • The module TX pin is connected to Arduino pin 4
  • The module VCC pin is connected to Arduino 5V pin





Copy the following code to your Arduino IDE and upload it to your Arduino board.


 * Rui Santos

 * Complete Project Details



#include <SoftwareSerial.h>


// The serial connection to the GPS module

SoftwareSerial ss(4, 3);


void setup(){





void loop(){

  while (ss.available() > 0){

    // get the byte data from the GPS

    byte gpsData =;






  1. Location – determining a position
    2. Navigation – getting from one location to another
    3. Tracking – monitoring object or personal movement
    4. Mapping – creating maps of the world
    5. Timing – bringing precise timing to the world