GPS Module not working.

Hello, I have a NEO6MV2 GPS module bought recently. I did the connections showun in this webpage and it doesnt work. Any help?


P.D.> I used the code present in But change the GPS Baud to 9600

Not enough information. Please read the link on how to post.

What is missing exactly?


This is the code I used

  Aaron Weiss
  SparkFun Electronics, Beerware
  Example GPS Parser based off of TinyGPS examples.
  Parses NMEA sentences from an EM406 running at 4800bps into readable 
  values for latitude, longitude, elevation, date, time, course, and 
  speed. Use 115200 baud for your serial port baud rate 
  For the SparkFun GPS Shield. Make sure the switch is set to DLINE.
  Once you get your longitude and latitude you can paste your 
  coordinates from the terminal window into Google Maps. Here is the 
  link for SparkFun's location.,+-105.20997
  Uses the NewSoftSerial library for serial communication with your GPS, 
  so connect your GPS TX and RX pin to any digital pin on the Arduino, 
  just be sure to define which pins you are using on the Arduino to 
  communicate with the GPS module. 
    changed values to RXPIN = 2 and TXPIN = to correspond with
    hardware v14+. Hardware v13 used RXPIN = 3 and TXPIN = 2.

// In order for this sketch to work, you will need to download 
// TinyGPS and NewSoftSerial library from and put them 
// into the libraries folder in your ardiuno directory.
#include <SoftwareSerial.h>
#include <TinyGPS.h>

// Define which pins you will use on the Arduino to communicate with your 
// GPS. In this case, the GPS module's TX pin will connect to the 
// Arduino's RXPIN which is pin 3.
#define RXPIN 2
#define TXPIN 3

// This is the serial rate for your terminal program. It must be this 
// fast because we need to print everything before a new sentence 
// comes in. If you slow it down, the messages might not be valid and 
// you will likely get checksum errors.
// Set this value equal to the baud rate of your terminal program
#define TERMBAUD  115200

// Set this value equal to the baud rate of your GPS
#define GPSBAUD  4800

// Create an instance of the TinyGPS object
TinyGPS gps;
// Initialize the NewSoftSerial library to the pins you defined above
SoftwareSerial uart_gps(RXPIN, TXPIN);

// This is where you declare prototypes for the functions that will be 
// using the TinyGPS library.
void getgps(TinyGPS &gps);

// In the setup function, you need to initialize two serial ports; the 
// standard hardware serial port (Serial()) to communicate with your 
// terminal program an another serial port (NewSoftSerial()) for your 
// GPS.
void setup()
  // Sets baud rate of your terminal program
  // Sets baud rate of your GPS
  Serial.println("GPS Shield QuickStart Example Sketch v12");
  Serial.println("       ...waiting for lock...           ");

// This is the main loop of the code. All it does is check for data on 
// the RX pin of the ardiuno, makes sure the data is valid NMEA sentences, 
// then jumps to the getgps() function.
void loop()
  while(uart_gps.available())     // While there is data on the RX pin...
      int c =;    // load the data into a variable...
      if(gps.encode(c))      // if there is a new valid sentence...
        getgps(gps);         // then grab the data.

// The getgps function will get and print the values we want.
void getgps(TinyGPS &gps)
  // To get all of the data into varialbes that you can use in your code, 
  // all you need to do is define variables and query the object for the 
  // data. To see the complete list of functions see keywords.txt file in 
  // the TinyGPS and NewSoftSerial libs.
  // Define the variables that will be used
  float latitude, longitude;
  // Then call this function
  gps.f_get_position(&latitude, &longitude);
  // You can now print variables latitude and longitude
  Serial.print("Lat/Long: "); 
  Serial.print(", "); 
  // Same goes for date and time
  int year;
  byte month, day, hour, minute, second, hundredths;
  // Print data and time
  Serial.print("Date: "); Serial.print(month, DEC); Serial.print("/"); 
  Serial.print(day, DEC); Serial.print("/"); Serial.print(year);
  Serial.print("  Time: "); Serial.print(hour, DEC); Serial.print(":"); 
  Serial.print(minute, DEC); Serial.print(":"); Serial.print(second, DEC); 
  Serial.print("."); Serial.println(hundredths, DEC);
  //Since month, day, hour, minute, second, and hundr
  // Here you can print the altitude and course values directly since 
  // there is only one value for the function
  Serial.print("Altitude (meters): "); Serial.println(gps.f_altitude());  
  // Same goes for course
  Serial.print("Course (degrees): "); Serial.println(gps.f_course()); 
  // And same goes for speed
  Serial.print("Speed(kmph): "); Serial.println(gps.f_speed_kmph());
  // Here you can print statistics on the sentences.
  unsigned long chars;
  unsigned short sentences, failed_checksum;
  gps.stats(&chars, &sentences, &failed_checksum);
  //Serial.print("Failed Checksums: ");Serial.print(failed_checksum);
  //Serial.println(); Serial.println();
  // Here you can print the number of satellites in view
  Serial.print("Satellites: ");

And the connections…

Can you also take a moment to explain what your program outputs, and why you think the GPS is not working?


I am sorry if I am tedious or frustrating. I posted it because, honestly, I don't know what I am doing. I am sorry. Please, help me. I will post a photo of the connections tomorrow, as right now is too late.

Thank you

P.S: I think the GPS module isnt working as there are no outputs at all.

You have wired the GPS Tx pin to pin 4 on the UNO but your code specifies pin 2 as the RXPIN. Try changing the code to this:

#define RXPIN 4


Hey, I did change it, and still didn't receive any output. I think it might be a bad connection, which is weird as I checked everything up tons of times.


okey, boy, give you a very simple to check if your GPS work, do not need Arduino or any code. connect the gps to directly to your UART of computer, if your computor do not have a uart, just use a USB2UART convert, like the ch340 module orFt232 module , and then open the uart monitor .... the gps module will report. As the gps module has a uart communication, Arduino and any code is not essensital for your checking of the gps module itself.

try this

void loop()
  while(uart_gps.available())     // While there is data on the RX pin...
      char c =;    // load the data into a variable...
      Serial.print(c) ;

If you do this, you will see the GPS output directly.
This will confirm the GPS is running and it is outputting NMEA data.
Google “NMEA gps” to learn what that means.

The GPS has to be outdoors or next to a large window to work.

If you are indoors, the GPS will still output data, which will effective mean that it has not
figured out where yet.

If you use the code I just posted, you will see that output.

The “problem” with the example code you posted earlier, is that the tinygps routine won’t tell
you anything at all until it gets a location. It will appear to do nothing at all.

Thank you very much!

The problem was the Arduino, I used a Mega instead of a Uno. I think it is because the pin layout is different. Tested it on a Uno and got signs of life!!

Thanks to jremington spycatcher2k


Elecrow And michinyon for your help