Help with the GPS EM 506

Hello everyone,

I would need help with how the Globalsat EM 506 GPS works.

My issue is that I do not receive any data from pin 4 which corresponds to the TX of the GPS.

In fact, I am not receiving any signal from the GPS.

At most, I notice that the red LED of the GPS is dimly lit with 5V (from the Arduino) but when I connect pin 5 of the GPS (GND) and pin 6 of the GPS (Directive) to the ground of the circuit (which is that of the Arduino), the red LED lights up completely.

From then on, I don't know if the GPS is functional but that it's not in a fixed position or quite simply that it is not functional.

I tried to switch the connection of the RX and TX of the GPS but without success.

Do some of you already worked with this GPS?

If yes? What am I missing? And how do you check that the GPS is still functional?

I have attached a photo of my circuit and copy pasted the code at the end of the post.

Thanks to all of you!




#include <TinyGPS++.h>
#include <SoftwareSerial.h>

/*
 This example uses software serial and the TinyGPS++ library by Mikal Hart
 Based on TinyGPSPlus/DeviceExample.ino by Mikal Hart
 Modified by acavis
*/

// Choose two Arduino pins to use for software serial
// The GPS Shield uses D2 and D3 by default when in DLINE mode
int RXPin = 2;
int TXPin = 3;

int directive = 7;

// The Skytaq EM-506 GPS module included in the GPS Shield Kit
// uses 4800 baud by default
int GPSBaud = 4800;

// Create a TinyGPS++ object called "gps"
TinyGPSPlus gps;

// Create a software serial port called "gpsSerial"
SoftwareSerial gpsSerial(RXPin, TXPin);

void setup()
{
  // Start the Arduino hardware serial port at 9600 baud
  Serial.begin(9600);

  pinMode(directive, INPUT);

  // Start the software serial port at the GPS's default baud
  gpsSerial.begin(GPSBaud);

  Serial.print(F("Testing TinyGPS++ library v. ")); 
  Serial.println(TinyGPSPlus::libraryVersion());
  Serial.println();
}

void loop()
{
/* 
  int lecture = digitalRead(directive);
  Serial.println("Voici le résultat de la pin directive");
  Serial.println(lecture);
*/  
  
  // This sketch displays information every time a new sentence is correctly encoded.
  while (gpsSerial.available() > 0)
    if (gps.encode(gpsSerial.read()))
      displayInfo();

  // If 5000 milliseconds pass and there are no characters coming in
  // over the software serial port, show a "No GPS detected" error
  if (millis() > 5000 && gps.charsProcessed() < 10)
  {
    Serial.println(F("No GPS detected"));
    while(true);
  }
}

void displayInfo()
{
  Serial.print(F("Location: ")); 
  if (gps.location.isValid())
  {
    Serial.print(gps.location.lat(), 6);
    Serial.print(F(","));
    Serial.print(gps.location.lng(), 6);
  }
  else
  {
    Serial.print(F("INVALID"));
  }

  Serial.print(F("  Date/Time: "));
  if (gps.date.isValid())
  {
    Serial.print(gps.date.month());
    Serial.print(F("/"));
    Serial.print(gps.date.day());
    Serial.print(F("/"));
    Serial.print(gps.date.year());
  }
  else
  {
    Serial.print(F("INVALID"));
  }

  Serial.print(F(" "));
  if (gps.time.isValid())
  {
    if (gps.time.hour() < 10) Serial.print(F("0"));
    Serial.print(gps.time.hour());
    Serial.print(F(":"));
    if (gps.time.minute() < 10) Serial.print(F("0"));
    Serial.print(gps.time.minute());
    Serial.print(F(":"));
    if (gps.time.second() < 10) Serial.print(F("0"));
    Serial.print(gps.time.second());
    Serial.print(F("."));
    if (gps.time.centisecond() < 10) Serial.print(F("0"));
    Serial.print(gps.time.centisecond());
  }
  else
  {
    Serial.print(F("INVALID"));
  }

  Serial.println();
}

Here's the circuit :

Short answer, the Arduino can’t power external devices. The 3V3 and 5V pins are there to bias or pullup external signals.

Find a separate 5V source with adequate current to power the GPS modules.

If the Arduino 5 volt comes via the USB input it will work. I do it in. GPS project. If Vin is used it will not work.

Hi,

I tried to power it with an external power supply adjusted to 5V and still the GPS was not detected.

Hi,

Are were you using the same GPS the EM 506 in your project?

I did the same wiring to power up the GPS and still there's no detection of a signal from the GPS TX pin. Although I read a voltage of 3.36V on that pin.

Where did You connect that 5 volt external power?
No. I use a NEO-6M GPS.

Reading 3.6 volt? Use an oscilloscope!

Yes I am using an oscilloscope to read the voltage and it is still 3.6V

Also, I wired the external power supply directly to the GPS VIN and GND pins.

Still there's no signal detected and the GPS stays in the "unfixed searching for signal" state.

I verified the voltage level shift circuit to make that the arduino is recieving the signal from the TX pin of the GPS and I get the 4.5V output to the arduino pin.

Read the datasheet! What does it say about minimum Vin? What does it say about the double GND pins?
Measuring DC on a Tx pin indicates that the interbal logic is likely not running.
Talking about volt on a pin like Tx is pointless unless there us a signal. Then the swing can be verified to be correct.

Hello everyone,

I would need help with how the Globalsat EM 506 GPS works.

My issue is that I do not receive any data from pin 4 which corresponds to the TX of the GPS.

In fact, I am not receiving any signal from the GPS.

At most, I notice that the red LED of the GPS is dimly lit with 5V (from the Arduino) but when I connect pin 5 of the GPS (GND) and pin 6 of the GPS (Directive) to the ground of the circuit (which is that of the Arduino), the red LED lights up completely.

From then on, I don't know if the GPS is functional but that it's not in a fixed position or quite simply that it is not functional.

I tried to switch the connection of the RX and TX of the GPS but without success.

Do some of you already worked with this GPS?

If yes? What am I missing? And how do you check that the GPS is still functional?

I have attached a photo of my circuit and copy pasted the code at the end of the post.

Thanks to all of you!




#include <TinyGPS++.h>
#include <SoftwareSerial.h>

/*
 This example uses software serial and the TinyGPS++ library by Mikal Hart
 Based on TinyGPSPlus/DeviceExample.ino by Mikal Hart
 Modified by acavis
*/

// Choose two Arduino pins to use for software serial
// The GPS Shield uses D2 and D3 by default when in DLINE mode
int RXPin = 3;
int TXPin = 2;

int directive = 7;

// The Skytaq EM-506 GPS module included in the GPS Shield Kit
// uses 4800 baud by default
int GPSBaud = 4800;

// Create a TinyGPS++ object called "gps"
TinyGPSPlus gps;

// Create a software serial port called "gpsSerial"
SoftwareSerial gpsSerial(RXPin, TXPin);

void setup()
{
  // Start the Arduino hardware serial port at 9600 baud
  Serial.begin(9600);

  pinMode(RXPin, INPUT);
  pinMode(TXPin, OUTPUT);

  // Start the software serial port at the GPS's default baud
  gpsSerial.begin(GPSBaud);

  Serial.print(F("Testing TinyGPS++ library v. ")); 
  Serial.println(TinyGPSPlus::libraryVersion());
  Serial.println();
}

void loop()
{
/* 
  int lecture = digitalRead(directive);
  Serial.println("Voici le résultat de la pin directive");
  Serial.println(lecture);
*/  
  
  // This sketch displays information every time a new sentence is correctly encoded.
  while (gpsSerial.available() > 0)
    if (gps.encode(gpsSerial.read()))
      displayInfo();

  // If 5000 milliseconds pass and there are no characters coming in
  // over the software serial port, show a "No GPS detected" error
  if (millis() > 5000 && gps.charsProcessed() < 10)
  {
    Serial.println(F("No GPS detected"));
    while(true);
  }
}

void displayInfo()
{
  Serial.print(F("Location: ")); 
  if (gps.location.isValid())
  {
    Serial.print(gps.location.lat(), 6);
    Serial.print(F(","));
    Serial.print(gps.location.lng(), 6);
  }
  else
  {
    Serial.print(F("INVALID"));
  }

  Serial.print(F("  Date/Time: "));
  if (gps.date.isValid())
  {
    Serial.print(gps.date.month());
    Serial.print(F("/"));
    Serial.print(gps.date.day());
    Serial.print(F("/"));
    Serial.print(gps.date.year());
  }
  else
  {
    Serial.print(F("INVALID"));
  }

  Serial.print(F(" "));
  if (gps.time.isValid())
  {
    if (gps.time.hour() < 10) Serial.print(F("0"));
    Serial.print(gps.time.hour());
    Serial.print(F(":"));
    if (gps.time.minute() < 10) Serial.print(F("0"));
    Serial.print(gps.time.minute());
    Serial.print(F(":"));
    if (gps.time.second() < 10) Serial.print(F("0"));
    Serial.print(gps.time.second());
    Serial.print(F("."));
    if (gps.time.centisecond() < 10) Serial.print(F("0"));
    Serial.print(gps.time.centisecond());
  }
  else
  {
    Serial.print(F("INVALID"));
  }

  Serial.println();
}

The GPS module has 3.3V only I/O.

The inverting level shifter that you show on TX won't work, and connecting the 3.3V RX input pin to a 5V Arduino output may have destroyed the GPS module.

As a test, connect only power, GND, and GPS TX directly to the Arduino receive input pin (it is safe to make the connection in this direction), and make sure you are outside, with a clear view of the sky.

If the 3.3V TX levels are not high enough to be valid, you will need level shifters like this:

TOPIC MERGED.

Could you take a few moments to Learn and Use The Forum

It will help you get the best out of the forum in the future.

  • Your OS and version can be valuable information, please include it along with extra security you are using.

  • Always list the version of the IDE you are using and the board version if applicable.

  • Use quote or add error messages as an attachment NOT a picture.

  • How to insert an image into your post. ( Thanks @sterretje )

  • Add your sketch where applicable but please use CODE TAGS ( </> )

  • Add a SCHEMATIC were needed even if it is hand drawn

  • Add working links to any specific hardware as needed (NOT links to similar items)

  • Remember that the people trying to help cannot see your problem so give as much information as you can

COMMON ISSUES

  • Ensure you have FULLY inserted the USB cables.

  • Check you have a COMMON GROUND where required. ( Thanks @Perry)

  • Where possible use USB 2.0 ports or a USB 2.0 POWERED HUB to rule out USB 3.0 issues.

  • Try other computers where possible.

  • Try other USB leads where possible.

  • You may not have the correct driver installed. CH340/341 or CP2102 or FT232 VCP Drivers - FTDI

  • There may be a problem with the board check or remove your wiring first.

  • Remove any items connected to pins 0 and 1.

COMPUTER RELATED

  • Close any other serial programs before opening the IDE.

  • Ensure you turn off any additional security / antivirus just to test.

  • There may be a problem with the PC try RESTARTING it.

  • You may be selecting the wrong COM port.

  • Avoid cloud/network based installations where possible OR ensure your Network/Cloud software is RUNNING.

  • Clear your browsers CACHE.

  • Close the IDE before using any other serial programs.

  • Preferably install IDE’s as ADMINISTRATOR or your OS equivalent

ARDUINO SPECIFIC BOARDS

  • CH340/341 based clones do not report useful information to the “get board info” button.

  • NANO (Old Types) some require you to use the OLD BOOTLOADER option.

  • NANO (ALL Types) See the specific sections lower in the forum.

  • NANO (NEW Types) Install your board CORE’s.

  • Unless using EXTERNAL PROGRAMMERS please leave the IDE selection at default “AVRISP mkII”.

  • Boards using a MICRO usb connector need a cable that is both DATA and CHARGE. Many are CHARGE ONLY.

CREATE editor install locations.

  • On macOs ~/Applications/ArduinoCreateAgent-1.1/ArduinoCreateAgent.app/Contents/MacOS/config.ini

  • On Linux ~/ArduinoCreateAgent-1.1/config.ini

  • On Windows C:\Users[your user]\AppData\Roaming\ArduinoCreateAgent-1.1

Performing the above actions may help resolve your problem without further help.

Language problem ?

Try a language closer to your native language:

Thanks to all those who helped and added to this list.

Unfortunately my response to your cross post was lost.

The transistor inverter circuit shown on TX won't work. You need a non-inverting level shifter.

The GPS module may be destroyed if you connect a 5V Arduino output to a 3.3V input (RX), as shown on the schematic.

Does the datasheet for the GPS module you have say it accepts 5V logic inputs ?

That has more than one been wrong. Try 9600.

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.