Rockwell Microtracker GPS problem

Hi All

I’m new to Arduino and need a bit of help.

I got a few of the $10 Rockwell GPS modules from WeirdStuff. I hooked it up to my UNO using the pinouts here:http://ke6mto.files.wordpress.com/2010/07/gps2a.pdf.

I then used the simple_test sketch included in the tinyGPS Library.

Everything looks OK except for my NMEA streams instead of having ASCII data, they look a little like this

$GPGGA, (20 chars of binary gibberish),
or sometimes

$GPGGA, (gibberish), ,(gibberish), $GPVGT, (gibberish), (gibberish)

What I would expect to see, when I don’t have a fix would be

$GPGGA,0,00,*66

Could my gibberish be noise in the circuit? Could I be dropping bits?

Here is the code from TinyGPS, I uncommented the line ‘Serial.write(c);’

#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 3(rx) and 4(tx).
*/

TinyGPS gps;
SoftwareSerial ss(3, 4);

void setup()
{
  Serial.begin(115200);
  ss.begin(4800);
  
  Serial.print("Simple TinyGPS library v. "); Serial.println(TinyGPS::library_version());
  Serial.println("by Mikal Hart");
  Serial.println();
}

void loop()
{
  bool newData = false;
  unsigned long chars;
  unsigned short sentences, failed;

  // For one second we parse GPS data and report some key values
  for (unsigned long start = millis(); millis() - start < 1000;)
  {
    while (ss.available())
    {
      char c = ss.read();
      Serial.write(c); // uncomment this line if you want to see the GPS data flowing
      if (gps.encode(c)) // Did a new valid sentence come in?
        newData = true;
    }
  }

  if (newData)
  {
    float flat, flon;
    unsigned long age;
    gps.f_get_position(&flat, &flon, &age);
    Serial.print("LAT=");
    Serial.print(flat == TinyGPS::GPS_INVALID_F_ANGLE ? 0.0 : flat, 6);
    Serial.print(" LON=");
    Serial.print(flon == TinyGPS::GPS_INVALID_F_ANGLE ? 0.0 : flon, 6);
    Serial.print(" SAT=");
    Serial.print(gps.satellites() == TinyGPS::GPS_INVALID_SATELLITES ? 0 : gps.satellites());
    Serial.print(" PREC=");
    Serial.print(gps.hdop() == TinyGPS::GPS_INVALID_HDOP ? 0 : gps.hdop());
  }
  
  gps.stats(&chars, &sentences, &failed);
  Serial.print(" CHARS=");
  Serial.print(chars);
  Serial.print(" SENTENCES=");
  Serial.print(sentences);
  Serial.print(" CSUM ERR=");
  Serial.println(failed);
}

Thanks for any help.

And what did you do with pin 4 "NMEA/binary"?

Thanks for the response. I have pin 4 on 5v.

Here is one of the lines I got in the Serial Monitor:

$GPGGA,XbÄ?3??0,XbÄ??"3³A? CHARS=42690 SENTENCES=0 CSUM ERR=0 $GPGGA,XbÄ?3??0,XbÄ??"3³A? CHARS=42720 SENTENCES=0 CSUM ERR=0

$GPGGA,XbÄ?3??0,XbÄ??"3³A?$GP CHARS=653913 SENTENCES=0 CS

Jimmy

More info on this one. I just can’t make TinyGPS work.

#include <SoftwareSerial.h>

#include <TinyGPS.h>


TinyGPS gps;
SoftwareSerial ss(3, 4);

void setup()
{
  Serial.begin(111520);
  ss.begin(9600);
  
  Serial.print("Simple TinyGPS library v. "); Serial.println(TinyGPS::library_version());
  Serial.println("by Mikal Hart");
  Serial.println();
}

void loop()
{
while (ss.available())
    {
      char c = ss.read();
      Serial.write(c); // uncomment this line if you want to see the GPS data flowing   
    }
}

Gets me this:
Simple TinyGPS library v. 12
by Mikal Hart

$GPGGA,XbÄ?3??0,XbÄ??"3³A?$GPGGA,XbÄ?3??0,XbÄ??"3³A?$GPGGA,XbÄ?3??0,XbÄ??"3³A?$GPGGA,XbÄ?3??0,XbÄ??"3³A?

But without TinyGPS:

void setup() {
    Serial.begin(9600)
}

void loop()
{
    while(!Serial.available());

    while (Serial.available() > 0) {
      Serial.write(Serial.read());
    }
    Serial.println();
}

Gives me what I expect:
$
G
P
G
G
A
,
,
,
,
,
,
0
,
0
0
,
,
,
,
,
,
,
*
6
6

Anyone have any ideas? Thanks!

Jimmy

But without TinyGPS:

I don't believe that that is the code you are actually running. It won't even compile.

sorry, I had a bit of a copy/paste incident:

Serial.begin(9600);

and dropped the semi, but I think that is what I am running.

but I think that is what I am running.

Why are you doing serial comms so slow?

Did you post [u]all[/u] your code? For some reason people don't want to post an entire program, only the part they think is relevant.

I've got to wonder if you aren't running out of resources, since when it seems to work better when you remove code (tinyGPS).

You may think about using 4800 baud since you're using software serial. I noticed your code snippets changed from 4800 to 9600.

-j

Thanks kg4wsv.

yeah, that is all the code I'm running. I'm trying to get it as simple as I can so I can figure out why if I just watch the serial lines it looks like ascii, but if i put in the TinyGPS it looks like gibberish.

Thanks for looking. I've ordered a proper gps module so we'll see if that works better that the surplus stuff.

thanks,

Jimmy