EM-506 Issues

Hey Everybody,

I just purchased an EM-506 GPS Receiver from Sparkfun (GPS-12751).

I wrote some basic code to receive the data stream.

When I initially connected it to an Arduino Uno R3, it appeared that the input to the Uno was being received as BINARY, NOT NMEA.

I looked through the datasheet and tried to reconfigure for NMEA. This did not seem to work and I then tried to reconfigure for BINARY. I went back and forth with no success in receiving NMEA protocol.

I was previously getting a blinking light that indicated a fix.

Now I am not receiving a blinking light which likely means that I have configured this in a state that I cannot “figure out”.

HOW DO I RESET THIS DEVICE TO FACTORY SETTINGS???

I have since downloaded TinyGPS++ and cannot get this to work because I do not have a valid fix.

–TIA,

NEAL

Hi Neal.

Are you sure you have the baud rate set correctly? These come from the factory set to NEMA at 4800 baud. You might double check to see if it’s really sending NEMA but at a baud rate different than you are listening on. (The gibberish can look like binary)

I was able to ‘break’ and recover one using the SiRFDemo software that you can find [here by going to Action/Set Main Serial Port and then going to Action/Switch to NEMA Protocol.

You may need to keep trying different baud rates until you start seeing data in the ‘Response View’ pane. Once you can see data there, the GPS should start taking commands from the Action menu.](http://www.sparkfun.com/datasheets/GPS/setupSiRFDemo3.87.zip)

Dear Chris,

I have made about 200 attempts to vary both my code and hardware…trial and error for the past 10 hours. I have even tried the code from your website (https://learn.sparkfun.com/tutorials/gp … -guide/all) and this does not even work with the EM-506. I have tried to reconfigure using the $PSRF100,1,9600,8,1,0*0D command to ensure that the EM-506 GPS Module is in the proper mode (NMEA) and baud rate. I have tried both NMEA and BINARY modes. All that I get over the serial port is garbage.

I have an oscilloscope and took a look at the signal. It almost appears as if it is inverted. So I searched around and I found something for SoftwareSerial where you can invert a signal by using the command SoftwareSerial(rxpin, txpin, true)…where rxpin and txpin are defined/assigned in the code. This does not work either…NOTHING WORKS!!! Maybe the EM-506 module that I purchased from Sparkfun is defective.

I have successfully used a GPS module with a PIC microcontroller in the past. Not sure why it should be more difficult with an Arduino Uno.

Please help.

Hello Neal.

I’m afraid to say that I don’t know how to tell you to get this working, but if you would like to send it back for us to look at, I may be able to recover the GPS for you. If I’m unable to recover it, I can send a replacement.

I just need you to request an RMA by filling out the form [on this page and we can get the ball rolling on getting the module back to look at. In the ‘Why do you want an RMA?’ section on the form, just put in the URL for this forum post and that will let us know what’s going on with the GPS.

Chris](Return Policy - SparkFun Electronics)

Dear Chris,

I also own a IKA Scanalogic II analyzer and get straight garbage out of the EM-506. I also have an old PMB-648 and get the same thing.

I have tried every possible option including baud rate, inverted logic, sampling rate, etc.

Just don’t know if I need to configure this. Can I send $PSRF commands through the Arduino serial monitor???

TIA,

–Neal

Dear Chris,

While the supply voltage for the EM-506 is 5V, the TTL output voltage is 3.3V. Will this work properly on an Arduino Uno?

TIA

–Neal

Hello Neal.

It’s very difficult to debug this without actually having the GPS in my hands to work on. If you fill out that form, we can take a look and replace the GPS if it is faulty.

You should be able to send commands to the GPS via the serial monitor, but you would need to write a serial pass through sketch and connect the GPS to pins other than 0 and 1. I don’t have a tutorial handy at the moment that shows how to do that but it is a possibility.

As far as the 3.3 volt logic, Yes and Arduino Uno running at 5 volts can read 3.3 volt logic. The 3.3 volt highs are high enough to be read as a logic high by a 5 volt Arduino.

Dear Chris,

Are there internal pullups on the TX and RX lines? I just cannot figure this out. I have removed the EM-506 from my circuit and am running it standalone. I have provided 5V power and ground. I have my logic analyzer connected to the TX line and all I get is complete garbage. I have now spent nearly 2 days trying to diagnose this. I just purchase the Adafruit Ultimate GPS Breakout. I will have to see how that goes.

I WILL SHIP BACK TO SPARKFUN AT THIS TIME. PLEASE PROVIDE ME WITH INSTRUCTIONS.

TY

–NEAL

Neal, we don’t make this module so I can’t tell you for sure if there are pullups on the data lines or not.

As I said before, just fill in the form on [this page to get a return setup. You will receive a response via email with directions on how to send the module back.](Return Policy - SparkFun Electronics)

Looking at the data sheet, the transmit output appears to be driven both high and low (ie, a totem-pole or equivalent) output. You should not need pullups. Being a logic level output, 3.3v would be a logic 1. This is the opposite of RS232.

/mike