GPS MODULE [GY-NEO6MV2] Module hardware or software Problem [ Urgent ]

Hello friends I bought a very popular gps module GY-NEO6MV2 and connect it with arduino UNO R3 with its pins

Rx-pin 10
TX-pin 11

I tried the following example program to test it

#include "TinyGPS++.h"
#include "SoftwareSerial.h"

SoftwareSerial serial_connection(10, 11); //RX=pin 10, TX=pin 11
TinyGPSPlus gps;//This is the GPS object that will pretty much do all the grunt work with the NMEA data
void setup()
  Serial.begin(9600);//This opens up communications to the Serial monitor in the Arduino IDE
  serial_connection.begin(9600);//This opens up communications to the GPS
  Serial.println("GPS Start");//Just show to the monitor that the sketch has started

void loop()
  while(serial_connection.available())//While there are characters to come from the GPS
    gps.encode(;//This feeds the serial NMEA data into the library one char at a time
  if(gps.location.isUpdated())//This will pretty much be fired all the time anyway but will at least reduce it to only after a package of NMEA data comes in
    //Get the latest info from the gps object which it derived from the data sent by the GPS unit
    Serial.println("Satellite Count:");
    Serial.println(, 6);
    Serial.println(gps.location.lng(), 6);
    Serial.println("Speed MPH:");
    Serial.println("Altitude Feet:");

 * $GPRMC,183729,A,3907.356,N,12102.482,W,000.0,360.0,080301,015.5,E*6F
$PGRMM,WGS 84*06

But after uploading the program i got in serial monitor GPS Start and after that nothing. A green indicator led was still blinking very slowly in the gps module but it could not be connected to satelite or any other problem is happening. Please help me to fix it.

Please help me to fix it.

What is broken?

It does not make sense to write a sh*tload of code to parse GPS data when you don't even know that you are getting data.

void loop()
  while(serial_connection.available())//While there are characters to come from the GPS

THAT is what your loop() function should look like, until you KNOW that you are receiving good data.

The serial_connection name is meaningless. You have some REAL device connected to the pins. Name the instance of SoftwareSerial to reflect that actual device.

You should connect the GPS VCC pin to the Arduino 5V pin. This module has an on-board regulator that needs 3.6V or more (IIRC), so 5V from the Arduino is fine.

DO NOT connect the GPS RX pin to the Arduino transmit pin (11 in your sketch). This can damage the GPS RX pin. You should use a 5K-10K series resistor, a resistor divider, or a level-shifting module that uses transistors (read more here). You are not sending any configuration commands to the GPS module, so you really don’t have to connect the GPS RX pin.

It is ok to connect the GPS TX pin to the Arduino receive pin (10 in your sketch). It may not be reliable, because the GPS TX pin voltage is a little low for the Arduino. You may need to use the resistor+diode or level-shifting module, as described in the link above.

→ Notice that a transmit pin is connected to a receive pin. ←

Like PaulS suggested, that simple echo program will confirm that the GPS is connected correctly and that you are using the correct baud rate. You should see data like in the comment block at the end of your sketch.

I would also suggest NOT using SoftwareSerial. It is very inefficient, because it disables interrupts for long periods of time. This can interfere with other parts of your sketch, or with other libraries.

Instead, use AltSoftSerial on pins 8 (to GPS TX) and 9 (optional, to GPS RX through resistors). It is very efficient.

2nd best is my NeoSWSerial on any two pins (10 and 11 are ok).

You may be interested in my NeoGPS library. It is smaller, faster and more accurate than all other libraries. Here is your sketch, modified to use NeoGPS and NeoSWSerial:

//  Pick a serial port for the GPS

// BEST choice is a HardwareSerial port:
//    Use Serial1 on a Mega, Leo or Due board
//    You could use Serial on any board by connecting the GPS TX pin
//       to the Arduino RX pin 0 (disconnect when uploading over USB).
//#define gpsPort Serial1

// 2nd best:
//#include <AltSoftSerial.h>
//AltSoftSerial gpsPort; // must be on specific pins (8 & 9 for an UNO)

// 3rd best: must be baud rate 9600, 19200 or 38400
#include <NeoSWSerial.h>
NeoSWSerial gpsPort(10, 11);

// Worst: SoftwareSerial NOT RECOMMENDED

#include <NMEAGPS.h>
NMEAGPS gps;  // This does all the grunt work with the NMEA data

void setup()
  Serial.println( F("GPS Start") );//Just show to the monitor that the sketch has started

void loop()
  //Parse any characters coming from the GPS
  while (gps.available( gpsPort ))
    //  Get the latest info from the gps object which it 
    //      derived from the data sent by the GPS unit.
    //  This happesn exactly once per second.
    gps_fix fix =;

      Serial.println( F("Satellite Count:") );
      Serial.println( F("Latitude:") );
      Serial.println(fix.latitude(), 6);
      Serial.println( F("Longitude:") );
      Serial.println(fix.longitude(), 6);
      Serial.println( F("Speed MPH:") );
      Serial.println( F("Altitude Feet:") );
      Serial.println(fix.altitude() * 3.28084 ); // feet
    } else {
      Serial.print( '.' );

Your original sketch uses 8912 bytes of program space and 610 bytes of RAM.
The NeoGPS sketch uses 9002 bytes of program space and 340 bytes of RAM, a significant savings.

NeoGPS also tracks which pieces of a fix are valid. You may want to test the valid flag before printing one of the pieces. For example,

      Serial.print( F("Satellite Count:") );
      if (fix.valid.satellites)

If you want to try it, NeoGPS is available from the Arduino IDE Library Manager, under the menu Sketch → Include Library → Manage Libraries. Even if you don’t try it, be sure to read the Troubleshooting page for other tips for GPS sketches.