SparkFun GPS Module Not Working

Hi, I recently purchased a Sparkfun GPS Module (link = SparkFun GPS Breakout - Chip Antenna, SAM-M8Q (Qwiic) - GPS-15210 - SparkFun Electronics) for an Arduino GPS project I am working on.

I connected the GPS to my Arduino MKR 1010 using the I2C port with 3.3V power and GND. I then installed the Sparkfun Ublox Arduino Library (link = GitHub - sparkfun/SparkFun_Ublox_Arduino_Library: Library to control UBX binary protocol and NMEA over I2C on Ublox GPS modules) and uploaded the sketch "Example3_GetPosition."

However, after setting the serial monitor to the correct baud rate and opening it up, I get the constant output of "Lat: 0 Long: 0 (degrees * 10^-7) Alt: 0 (mm) SIV: 0"

It looks like the Arduino found the I2C device and connected to it, however I don't understand what is happening with the output.... (also I am next to a window for GPS connection)

I would really appreciate some help.

Thank you!!!

Please post the code that you are using following the advice on posting a programming question given in Read this before posting a programming question

In particular note the advice to Auto format code in the IDE and to use code tags when posting code here as it prevents some combinations of characters in code being interpreted as HTML commands such as italics, bold or a smiley character, all of which render the code useless

Maybe you didn’t get a fix. Connect the tx and rx and read the serial data. Should be in NMEA format.

This looks very much as another recent GPS matter. There the lack of good antenna was the problem.

Here is the example from the Sparkfun Ublox Arduino Library:

/*
  Reading lat and long via UBX binary commands - no more NMEA parsing!
  By: Nathan Seidle
  SparkFun Electronics
  Date: January 3rd, 2019
  License: MIT. See license file for more information but you can
  basically do whatever you want with this code.

  This example shows how to query a Ublox module for its lat/long/altitude. We also
  turn off the NMEA output on the I2C port. This decreases the amount of I2C traffic 
  dramatically.

  Note: Long/lat are large numbers because they are * 10^7. To convert lat/long
  to something google maps understands simply divide the numbers by 10,000,000. We 
  do this so that we don't have to use floating point numbers.

  Leave NMEA parsing behind. Now you can simply ask the module for the datums you want!

  Feel like supporting open source hardware?
  Buy a board from SparkFun!
  ZED-F9P RTK2: https://www.sparkfun.com/products/15136
  NEO-M8P RTK: https://www.sparkfun.com/products/15005
  SAM-M8Q: https://www.sparkfun.com/products/15106

  Hardware Connections:
  Plug a Qwiic cable into the GPS and a BlackBoard
  If you don't have a platform with a Qwiic connection use the SparkFun Qwiic Breadboard Jumper (https://www.sparkfun.com/products/14425)
  Open the serial monitor at 115200 baud to see the output
*/

#include <Wire.h> //Needed for I2C to GPS

#include "SparkFun_Ublox_Arduino_Library.h" //http://librarymanager/All#SparkFun_Ublox_GPS
SFE_UBLOX_GPS myGPS;

long lastTime = 0; //Simple local timer. Limits amount if I2C traffic to Ublox module.

void setup()
{
  Serial.begin(115200);
  while (!Serial); //Wait for user to open terminal
  Serial.println("SparkFun Ublox Example");

  Wire.begin();

  if (myGPS.begin() == false) //Connect to the Ublox module using Wire port
  {
    Serial.println(F("Ublox GPS not detected at default I2C address. Please check wiring. Freezing."));
    while (1);
  }

  myGPS.setI2COutput(COM_TYPE_UBX); //Set the I2C port to output UBX only (turn off NMEA noise)
  myGPS.saveConfiguration(); //Save the current settings to flash and BBR
}

void loop()
{
  //Query module only every second. Doing it more often will just cause I2C traffic.
  //The module only responds when a new position is available
  if (millis() - lastTime > 1000)
  {
    lastTime = millis(); //Update the timer
    
    long latitude = myGPS.getLatitude();
    Serial.print(F("Lat: "));
    Serial.print(latitude);

    long longitude = myGPS.getLongitude();
    Serial.print(F(" Long: "));
    Serial.print(longitude);
    Serial.print(F(" (degrees * 10^-7)"));

    long altitude = myGPS.getAltitude();
    Serial.print(F(" Alt: "));
    Serial.print(altitude);
    Serial.print(F(" (mm)"));

    byte SIV = myGPS.getSIV();
    Serial.print(F(" SIV: "));
    Serial.print(SIV);

    Serial.println();
  }
}

@dyso I believe that on line 52 the program turns off NMEA noise although I'm not sure what that entirely means because this is my first GPS breakout. What do you mean by "connect the tx and rx and read serial data..." I believe that the GPS communicates over I2C. Also, what does "fix" mean.
Based on the description, the program is supposed to print the Longitude and Latitude coordinates. I believe that "SIV" represents the number of satellites...
Thanks again.

UPDATE:

My bad.... I am a complete idiot.... I didn't realize that I had to be "Outside" in order for the GPS Module to work...

I guess the module was unable to get a signal "next to a window"

Next time, I will troubleshoot longer before I create post because I value your time.

Hopefully, this can help anyone with similar GPS related problems in the future.

Thank you so much !!!

What kind of antenna do You use? My GPS run well indoors.

I believe that the antenna is built into the GPS module.

Sparkfun Product: SparkFun GPS Breakout - Chip Antenna, SAM-M8Q (Qwiic) - GPS-15210 - SparkFun Electronics

I use an external antenna connected to the GPS. That surely make a difference.

When I was experimenting with a GPS module I had to keep it away from sources of noise. In my case it was a Nextion display that cause a problem, but no doubt other devices could be a problem.