Some one Please check this GPS Sketch

I am using a Arduino / Genuine Uno with a RoyalTek REB-4216 GPS module. The baud rate is 38400. The sketch loads with no problems but I am getting the following error message.
“DIAGS Chars=0 Sentence=with-Fix=0 Failed-checksum=0 Passed-checksum=0
WARNING: No GPS data. Check wiring.” The wiring seems to be correct. Do I have a misplaced jumper?
Is there a better sketch available for download? Sketch attached.

KitchenSink_38400.ino (5.38 KB)

Are you sure that the GPS unit can see any satellites ? Have you tested the program with a clear view of the skies rather than indoors ?

Are you sure that you have the Tx and Rx pins the right way round ?

   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).
*/
static const int RXPin = 7, TXPin = 6;
static const uint32_t GPSBaud = 38400;

I note that the comments do not match the code. How is the GPS wired to the Arduino ?

For such small amounts of code, just post it, don’t attach it.

#include <TinyGPS++.h>
#include <SoftwareSerial.h>
/*
   This sample code demonstrates just about every built-in operation of TinyGPS++ (TinyGPSPlus).
   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).
*/
static const int RXPin = 7, TXPin = 6;
static const uint32_t GPSBaud = 38400;

// The TinyGPS++ object
TinyGPSPlus gps;

// The serial connection to the GPS device
SoftwareSerial ss(RXPin, TXPin);

// For stats that happen every 5 seconds
unsigned long last = 0UL;

void setup()
{
  Serial.begin(38400);
  ss.begin(GPSBaud);

  Serial.println(F("KitchenSink.ino"));
  Serial.println(F("Demonstrating nearly every feature of TinyGPS++"));
  Serial.print(F("Testing TinyGPS++ library v. ")); Serial.println(TinyGPSPlus::libraryVersion());
  Serial.println(F("by Mikal Hart"));
  Serial.println();
}

void loop()
{
  // Dispatch incoming characters
  while (ss.available() > 0)
    gps.encode(ss.read());

  if (gps.location.isUpdated())
  {
    Serial.print(F("LOCATION   Fix Age="));
    Serial.print(gps.location.age());
    Serial.print(F("ms Raw Lat="));
    Serial.print(gps.location.rawLat().negative ? "-" : "+");
    Serial.print(gps.location.rawLat().deg);
    Serial.print("[+");
    Serial.print(gps.location.rawLat().billionths);
    Serial.print(F(" billionths],  Raw Long="));
    Serial.print(gps.location.rawLng().negative ? "-" : "+");
    Serial.print(gps.location.rawLng().deg);
    Serial.print("[+");
    Serial.print(gps.location.rawLng().billionths);
    Serial.print(F(" billionths],  Lat="));
    Serial.print(gps.location.lat(), 6);
    Serial.print(F(" Long="));
    Serial.println(gps.location.lng(), 6);
  }

  else if (gps.date.isUpdated())
  {
    Serial.print(F("DATE       Fix Age="));
    Serial.print(gps.date.age());
    Serial.print(F("ms Raw="));
    Serial.print(gps.date.value());
    Serial.print(F(" Year="));
    Serial.print(gps.date.year());
    Serial.print(F(" Month="));
    Serial.print(gps.date.month());
    Serial.print(F(" Day="));
    Serial.println(gps.date.day());
  }

  else if (gps.time.isUpdated())
  {
    Serial.print(F("TIME       Fix Age="));
    Serial.print(gps.time.age());
    Serial.print(F("ms Raw="));
    Serial.print(gps.time.value());
    Serial.print(F(" Hour="));
    Serial.print(gps.time.hour());
    Serial.print(F(" Minute="));
    Serial.print(gps.time.minute());
    Serial.print(F(" Second="));
    Serial.print(gps.time.second());
    Serial.print(F(" Hundredths="));
    Serial.println(gps.time.centisecond());
  }

  else if (gps.speed.isUpdated())
  {
    Serial.print(F("SPEED      Fix Age="));
    Serial.print(gps.speed.age());
    Serial.print(F("ms Raw="));
    Serial.print(gps.speed.value());
    Serial.print(F(" Knots="));
    Serial.print(gps.speed.knots());
    Serial.print(F(" MPH="));
    Serial.print(gps.speed.mph());
    Serial.print(F(" m/s="));
    Serial.print(gps.speed.mps());
    Serial.print(F(" km/h="));
    Serial.println(gps.speed.kmph());
  }

  else if (gps.course.isUpdated())
  {
    Serial.print(F("COURSE     Fix Age="));
    Serial.print(gps.course.age());
    Serial.print(F("ms Raw="));
    Serial.print(gps.course.value());
    Serial.print(F(" Deg="));
    Serial.println(gps.course.deg());
  }

  else if (gps.altitude.isUpdated())
  {
    Serial.print(F("ALTITUDE   Fix Age="));
    Serial.print(gps.altitude.age());
    Serial.print(F("ms Raw="));
    Serial.print(gps.altitude.value());
    Serial.print(F(" Meters="));
    Serial.print(gps.altitude.meters());
    Serial.print(F(" Miles="));
    Serial.print(gps.altitude.miles());
    Serial.print(F(" KM="));
    Serial.print(gps.altitude.kilometers());
    Serial.print(F(" Feet="));
    Serial.println(gps.altitude.feet());
  }

  else if (gps.satellites.isUpdated())
  {
    Serial.print(F("SATELLITES Fix Age="));
    Serial.print(gps.satellites.age());
    Serial.print(F("ms Value="));
    Serial.println(gps.satellites.value());
  }

  else if (gps.hdop.isUpdated())
  {
    Serial.print(F("HDOP       Fix Age="));
    Serial.print(gps.hdop.age());
    Serial.print(F("ms Value="));
    Serial.println(gps.hdop.value());
  }

  else if (millis() - last > 5000)
  {
    Serial.println();
    if (gps.location.isValid())
    {
      static const double LONDON_LAT = 51.508131, LONDON_LON = -0.128002;
      double distanceToLondon =
        TinyGPSPlus::distanceBetween(
          gps.location.lat(),
          gps.location.lng(),
          LONDON_LAT, 
          LONDON_LON);
      double courseToLondon =
        TinyGPSPlus::courseTo(
          gps.location.lat(),
          gps.location.lng(),
          LONDON_LAT, 
          LONDON_LON);

      Serial.print(F("LONDON     Distance="));
      Serial.print(distanceToLondon/1000, 6);
      Serial.print(F(" km Course-to="));
      Serial.print(courseToLondon, 6);
      Serial.print(F(" degrees ["));
      Serial.print(TinyGPSPlus::cardinal(courseToLondon));
      Serial.println(F("]"));
    }

    Serial.print(F("DIAGS      Chars="));
    Serial.print(gps.charsProcessed());
    Serial.print(F(" Sentences-with-Fix="));
    Serial.print(gps.sentencesWithFix());
    Serial.print(F(" Failed-checksum="));
    Serial.print(gps.failedChecksum());
    Serial.print(F(" Passed-checksum="));
    Serial.println(gps.passedChecksum());

    if (gps.charsProcessed() < 10)
      Serial.println(F("WARNING: No GPS data.  Check wiring."));

    last = millis();
    Serial.println();
  }
}

maquinna: WARNING: No GPS data. Check wiring." The wiring seems to be correct. Do I have a misplaced jumper?

DIAGS Chars=0 means, that you did not receive a single char.

Typical GPS receivers in NMEA standard configuration should send more than 100 characters per second, even if no single satellite is in view.

So your problem is most likely either: - wrong wiring - wrong baud rate

Why do you think your GPS module operates at 38400 Baud:

static const uint32_t GPSBaud = 38400;

The manual http://www.jiuzhouhx.com.cn/admin/fileadmin/upfile/pdf-ziliao/REB-4216.pdf tells:

Default Baud rate is 9600 bps

So why do you think you must read that module with 38400 Baud?

maquinna: WARNING: No GPS data. Check wiring." The wiring seems to be correct. Do I have a misplaced jumper?

Looks that way.

Possibility 1 - Tx/Rx mixed up. Tx from the arduino POV is Rx from the unit's POV.

Possibility 2 - Obvious question: you have tx/rx pins, ok, but does the GPS have power? Blinkenlights? Even if it has its own battery, you will want to connect ground. If it's on a shield, then that's a non-issue.

It's also suspicious that the comment says that the sketch assumes the presence of a 400-baud serial GPS device, but the software serial object is set to 38400. Oh - I see you have changed the pins. So you have modified the test sketch. Just because the arduino talks to your computer at 38400, doen't mean it's going to be talking to the GPS at that rate.

Google? Tell me about the RoyalTek REB-4216 GPS module.

Google: Here it is!

Hmm, ok. Page 7 indicates that it runs at 4800, 9600, and 38400. So ok, 38400 is belivable. Maybe try the other speeds?

Load a sketch that just echoes the GPS data to the serial port first. Don't continue until you can see NMEA sentences that way.

Old versions of SoftwareSerial have a bad reputation for bugs. I don't think any work at 38400 baud, regardless of whether that is the correct baud rate. Try NewSoftSerial.

jremington: Old versions of SoftwareSerial have a bad reputation for bugs. I don't think any work at 38400 baud, regardless of whether that is the correct baud rate. Try NewSoftSerial.

OP posted a .ino file. If OP is using SoftwareSerial with a post 1.0 version of the IDE, as he/she must be to have a .ino extension, SoftwareSerial IS the same as NewSoftSerial from the pre-1.0 days.