No data from NEO-6M GPS

Hello,

I’ve bought GPS6MV2 NEO-6M module and connected that according this wiring.
Then I downloaded TinyGPS library and upload test_with_gps file.
When I open serial link (115200) I see the attached output.
I think I may fried up serial link.
What do you think?

I think I may fried up serial link.
What do you think?

You are printing recognizable text, and yet you think you fried the serial link. I think you are wrong.

I think, also, that you need to run simpler code:

#include <SoftwareSerial.h>

#include <TinyGPS.h>

/* This sample code demonstrates the normal use of a TinyGPS object.
   It requires the use of SoftwareSerial, and assumes that you have a
   4800-baud serial GPS device hooked up on pins 4(rx) and 3(tx).
*/

TinyGPS gps;
SoftwareSerial ss(4, 3);

void setup()
{
  Serial.begin(115200);
  
  ss.begin(4800);
}

void loop()
{
    while (ss.available())
      Serial.print(ss.read());
}

Until you know what you are getting from the GPS, attempting to parse the data is just pissing in the wind.

Yes, I see series of numbers. But why the previous sketch code didn't work? How can I parse data into something more readable?

Yes, I see series of numbers.

That makes one of us.

But why the previous sketch code didn't work?

Without seeing your data, who knows?

Does the data that you get end with *n, where n is the checksum for the sentence? If not, then the decode() method, which looks for the * to indicate that the end of the sentence has arrived will never return true.

Here’s the code I uploaded first time:

#include <SoftwareSerial.h>

#include <TinyGPS.h>

/* This sample code demonstrates the normal use of a TinyGPS object.
   It requires the use of SoftwareSerial, and assumes that you have a
   4800-baud serial GPS device hooked up on pins 4(rx) and 3(tx).
*/

TinyGPS gps;
SoftwareSerial ss(4, 3);

static void smartdelay(unsigned long ms);
static void print_float(float val, float invalid, int len, int prec);
static void print_int(unsigned long val, unsigned long invalid, int len);
static void print_date(TinyGPS &gps);
static void print_str(const char *str, int len);

void setup()
{
  Serial.begin(115200);
  
  Serial.print("Testing TinyGPS library v. "); Serial.println(TinyGPS::library_version());
  Serial.println("by Mikal Hart");
  Serial.println();
  Serial.println("Sats HDOP Latitude  Longitude  Fix  Date       Time     Date Alt    Course Speed Card  Distance Course Card  Chars Sentences Checksum");
  Serial.println("          (deg)     (deg)      Age                      Age  (m)    --- from GPS ----  ---- to London  ----  RX    RX        Fail");
  Serial.println("-------------------------------------------------------------------------------------------------------------------------------------");

  ss.begin(4800);
}

void loop()
{
  float flat, flon;
  unsigned long age, date, time, chars = 0;
  unsigned short sentences = 0, failed = 0;
  static const double LONDON_LAT = 51.508131, LONDON_LON = -0.128002;
  
  print_int(gps.satellites(), TinyGPS::GPS_INVALID_SATELLITES, 5);
  print_int(gps.hdop(), TinyGPS::GPS_INVALID_HDOP, 5);
  gps.f_get_position(&flat, &flon, &age);
  print_float(flat, TinyGPS::GPS_INVALID_F_ANGLE, 10, 6);
  print_float(flon, TinyGPS::GPS_INVALID_F_ANGLE, 11, 6);
  print_int(age, TinyGPS::GPS_INVALID_AGE, 5);
  print_date(gps);
  print_float(gps.f_altitude(), TinyGPS::GPS_INVALID_F_ALTITUDE, 7, 2);
  print_float(gps.f_course(), TinyGPS::GPS_INVALID_F_ANGLE, 7, 2);
  print_float(gps.f_speed_kmph(), TinyGPS::GPS_INVALID_F_SPEED, 6, 2);
  print_str(gps.f_course() == TinyGPS::GPS_INVALID_F_ANGLE ? "*** " : TinyGPS::cardinal(gps.f_course()), 6);
  print_int(flat == TinyGPS::GPS_INVALID_F_ANGLE ? 0xFFFFFFFF : (unsigned long)TinyGPS::distance_between(flat, flon, LONDON_LAT, LONDON_LON) / 1000, 0xFFFFFFFF, 9);
  print_float(flat == TinyGPS::GPS_INVALID_F_ANGLE ? TinyGPS::GPS_INVALID_F_ANGLE : TinyGPS::course_to(flat, flon, LONDON_LAT, LONDON_LON), TinyGPS::GPS_INVALID_F_ANGLE, 7, 2);
  print_str(flat == TinyGPS::GPS_INVALID_F_ANGLE ? "*** " : TinyGPS::cardinal(TinyGPS::course_to(flat, flon, LONDON_LAT, LONDON_LON)), 6);

  gps.stats(&chars, &sentences, &failed);
  print_int(chars, 0xFFFFFFFF, 6);
  print_int(sentences, 0xFFFFFFFF, 10);
  print_int(failed, 0xFFFFFFFF, 9);
  Serial.println();
  
  smartdelay(1000);
}

static void smartdelay(unsigned long ms)
{
  unsigned long start = millis();
  do 
  {
    while (ss.available())
      gps.encode(ss.read());
  } while (millis() - start < ms);
}

static void print_float(float val, float invalid, int len, int prec)
{
  if (val == invalid)
  {
    while (len-- > 1)
      Serial.print('*');
    Serial.print(' ');
  }
  else
  {
    Serial.print(val, prec);
    int vi = abs((int)val);
    int flen = prec + (val < 0.0 ? 2 : 1); // . and -
    flen += vi >= 1000 ? 4 : vi >= 100 ? 3 : vi >= 10 ? 2 : 1;
    for (int i=flen; i<len; ++i)
      Serial.print(' ');
  }
  smartdelay(0);
}

static void print_int(unsigned long val, unsigned long invalid, int len)
{
  char sz[32];
  if (val == invalid)
    strcpy(sz, "*******");
  else
    sprintf(sz, "%ld", val);
  sz[len] = 0;
  for (int i=strlen(sz); i<len; ++i)
    sz[i] = ' ';
  if (len > 0) 
    sz[len-1] = ' ';
  Serial.print(sz);
  smartdelay(0);
}

static void print_date(TinyGPS &gps)
{
  int year;
  byte month, day, hour, minute, second, hundredths;
  unsigned long age;
  gps.crack_datetime(&year, &month, &day, &hour, &minute, &second, &hundredths, &age);
  if (age == TinyGPS::GPS_INVALID_AGE)
    Serial.print("********** ******** ");
  else
  {
    char sz[32];
    sprintf(sz, "%02d/%02d/%02d %02d:%02d:%02d ",
        month, day, year, hour, minute, second);
    Serial.print(sz);
  }
  print_int(age, TinyGPS::GPS_INVALID_AGE, 5);
  smartdelay(0);
}

static void print_str(const char *str, int len)
{
  int slen = strlen(str);
  for (int i=0; i<len; ++i)
    Serial.print(i<slen ? str[i] : ' ');
  smartdelay(0);
}

Beside that I tried this code too:
http://pasted.co/d19906cc
but can see just “sizeof(gpsobject) = 115”

I also would like understand why there’s so big difference in serial link speed (4800/115200 in the first program and 9600/9600 in the second one).

I also would like understand why there's so big difference in serial link speed (4800/115200 in the first program and 9600/9600 in the second one).

One of the speeds must match the GPS transmission speed, and the other must match your serial monitor speed setting. Otherwise, nothing will work properly.

Yes and it is strange to me. The second code is based on the firwt one and the datasheet states the the gps's baud rate is 9600. And since only text is send, isn't 115200 overkill for the serial link? Otherwise I've tried both 4800 and 9600 for the gps as it was and none of the makes the code work for me.

I still think gps’s serial link may be broken.
The attached picture is what I see.
Is that possible?

The GPS unit may be in "binary" mode. Download the u-center software from UBLOX and use it to reset or reconfigure the GPS in a more suitable way.

Yes, the data was in binary mode. But I am still getting no data from the gps module.
Just $GPTXT is sending via Serial link. See attached printscreen.

The module is still not configured properly. Use the ucenter program to do so.

But I am still getting no data from the gps module.

Where is that stuff you posting the damned pictures of coming from, then? Post the data AS TEXT!

I have a problem to connect PL-2303HX USB->TTL converter to my computer.
I downloaded the driver but it still seems it is not connected properly.
I can see it in Device Manager but not in u-center.

How can I post the data as text?

I downloaded the driver but it still seems it is not connected properly.

That is a Windows problem, not Arduino. You either have the wrong driver or it was not installed correctly.

Cut and paste into between "quote" code tags (balloon button) works for posting text.

It seems PL2303HX chips from China are fake and Windows is blocking its drivers.
I’ve installed the older version and it works fine now.
GPS is receiving data and the LED on its board blinks green which do not so when connected to the arduino.

How can I establish connection between arduino and gps module too?

Stop attaching a JPG screenshot of what you see. Learn how to copy text from the Serial Monitor window into the Post window: some examples.

How can I establish connection between arduino and gps module too?

JUST LIKE YOUR PICTURE, except that you plug the wires into 18 and 19 instead.

I have the exact same module, and I have it connected exactly like in your first post to a Pro Mini clone.

A few things to check:

  • In the code, make sure the speed of SoftwareSerial is 9600, not 4800. My unit only works at 9600
  • Make 100% sure your wiring is correct
  • Make 100% sure the wiring is electrically sound
  • The green LED on the unit will only start to flash if a satellite fix is established

And please, as was already mentioned, stop posting screen captures :o