GPS module NEO6MV2 doesn't work as supposed to.

Hello Everybody,

I have a little problem with my GPS module NEO6MV2 for the arduino UNO(or I'm the problem, hope someone can enlighten me).

As the rules subscribed I first looked on the internet if somebody has the same problem and if someone has a solution. Only thing I could find is that someone didn’t used a UNO but something else without success.

Therefore my question:
I just bought a GPS module NEO6MV2 for the arduino UNO. Before I use it for my own project, I wanted to test it. To do so I connected as seen in the picture. I also uploaded a standard code delivered by TinyGPS++ (see attachment). Know when I connect the GPS with the arduino and put power on the red led only blinks once. After that no live for a long while. But from out of know where it’s starts to blink. Still in red through. I heard from a mate of mine that the led should burn blue. If that’s true than why does mine not work? Did anyone had the same problem and if so how did you fixed it?

I hope that someone is able to help me.

Thank you in advance.

Whit kind regards,
Firsttimer

DeviceExample.ino (2.19 KB)

Image embedded for our convenience:

Technique described here.

A steady red light is usually POWER light (near the battery). There is usually a different LED connected to the TIMEPULSE pin (near the ublox can), which blinks once per second when it is receiving from GPS satellites. Red, blue or green LED color does not matter.

It sounds like it is working correctly. It usually takes a few minutes to get a satellite fix.

1) What output do you get from the DeviceExample sketch?

2) Try changing GPSBaud. I think you are using the wrong baud rate. Your sketch is using 4800, but the default for ublox chips is 9600.

You can also use a simple echo sketch to see if you have selected the correct baud rate in ss.begin():

#include <SoftwareSerial.h>
static const int RXPin = 4, TXPin = 3;
static const uint32_t GPSBaud = 4800;
SoftwareSerial gps_port(RXPin, TXPin);

void setup()
{
  Serial.begin( 115200 );
  gps_port.begin( GPSBaud );
}

void loop()
{
  if (gps_port.available())
    Serial.write( gps_port.read() );
}

If you see lines that start with "$GPRMC" or "$GPGGA," in your Serial Monitor, then the baud rate is correct.

3) If that doesn't work, you could try the diagnostic program in my library, NeoGPS. It will try various baud rates for you and display some of the raw data.

NeoGPS is smaller and faster than other libraries, and the example programs are a better starting point for your sketch. Many people have trouble modifying the other libraries' examples.

Cheers,
/dev

Hello /dev,

Thank you for responding. GPSBaud was indeed to low. As you suggested I had it changed to 9600 and know it works perfectly.

Thank you very much for your advice!

Kind regards,
Firsttimer

I have 2 questions.
I see that most people are connecting the gps rx through a set of resistors to step it down to 3,3 volts.

  1. do I even need to connect to the GPS RX? It is my understanding that you really only receive the data and never send any.

  2. I recently order one of these boards (have not yet received it) but my intention is to run the board on a pro mini. The this means running it at 3,3v. I was going to use an Uno for testing, I know that you are using the resistors in the circuit as a voltage step down from 5V to 3,3 (approx).

The actual specs from the board I received states
"Description:
Communication Mode: TTL level, compatible with 3.3V/5V system
Power Supply: DC 2.7-5V"

Shouldn't this indicate that these resistors are not required to run at 5V? I did notice on an earlier blog that someone stated that they were just running it directly from the uno.

Marc

  1. do I even need to connect to the GPS RX? It is my understanding that you really only receive the data and never send any.

No, only if you need to send configuration commands to the GPS device.

Shouldn't this indicate that these resistors are not required to run at 5V? I did notice on an earlier blog that someone stated that they were just running it directly from the uno.

Many board descriptions say "5V compatible", mostly because they have a 5V-to-3.3V regulator. I have never seen a NEO-6M board that performs the required level-shifting. Many people say it works fine without level-shifting. However...

The ublox spec says the Absolute Maximum input voltage to the GPS RX pin is 3.4V. Above that voltage, the internal protection diodes are shunting current to the 3.3V rail (GPS VCC). So you should use a resistor divider to prevent overloading the GPS RX pin (or don't connect it at all).

The ublox spec also says the maximum output voltage for the GPS TX pin is 2.9V. But the Arduino spec says the minimum voltage that will be recognized as a logic 1 (guaranteed) is 3.0V. They are slightly out of spec. Many times, the Arduino will correctly read the GPS device. But to really conform to the spec, the GPS TX signal should be "pulled up" with discrete parts (diode or FET + resistors etc.) or a level-shifting module.

I always recommend the level-shifting module, because they can also be used for high-speed interfaces like SPI, and they're fairly cheap. If you don't have room, a diode or two will work just fine.

Cheers,
/dev

P.S. It is usually considered bad form to resurrect an old thread with new questions. Just start your own thread.