ZOE-M8Q not working - help requested

I recently purchased the GPS breakout ZOE-M8Q (qwiic), U.Fl antenna (https://www.sparkfun.com/products/15246), and a Redboard (Qwiic). I’m using the Arduino library and examples provided on the Sparkfun ZOE-M8Q website but am not getting any info from any GNSS system. I’m programming the Arduino/Redboard on a Win10 machine w/ Arduino IDE 1.8.15.

Troubleshooting thus far:

  1. Redboard works with separate PHT Qwiic sensor board. Sending info back to the serial monitor.

  2. The red power led on the ZOE-M8Q is illuminated. when connected via Qwiic to the Redboard. The Redboard’s TX pin is flashing green indicating transmission. The green power led is illuminated.

  3. The U.Fl antenna seems to be properly connected to the ZOE-M8Q.

  4. I have the SparkFun_u-blox_GNSS_Arduino_Library properly installed.

  5. uploading Example2_NMEAParsing to the Redboard results in no errors when compiling. When I view on the serial monitor it is continuously outputting “Waiting for fresh data” implying that nmea.isValid() is false. It does not acquire any satellites after running several minutes.

  6. I found this recent post(viewtopic.php?f=116&t=55610) to check the PPS pin. I hooked my multimeter up to PPS (and connected COM to the Arduino GND pin). No cycling of high/low signals observed.

What other troubleshooting things can I try or do I have a bad board?

What antenna are you using and are you testing outdoors or inside a building?

Can you send photos showing how you have everything connected?

Hi Chris - Photos indicate how it is setup when connected to my Win desktop indoors with antenna near the window (sometimes I hold it up). This is the antenna I’m using: https://www.sparkfun.com/products/15959

To test outside I have a ubuntu laptop with the Arduino IDE… same results.

OK, there’s something wrong with either the antenna or the module.

If you purchased these directly off our website, just [fill in the form on this page with your order number and the URL to this forum post and we can replace it for you.

If you purchased from a distributor or Amazon you will need to let them know you have a defective product and arrange with them for an exchange](Return Policy - SparkFun Electronics)

Thanks Chris! I just submitted the RMA request.

Our customer service team should be getting to that shortly. :slight_smile:

Following up:

  1. a new ZOE-M8Q and molex antenna (same as before) were delivered from Sparkfun over the weekend. Antenna clicked into place on the board no problem.

  2. uploaded the Example2_NMEAParsing sketch, took it outside, and opened the serial monitor. Waited several minutes…

  3. same result as before… not working.

Diagnostics:

  1. the program sends “SparkFun u-blox Example” to the serial monitor but then only prints “Waiting for fresh data”. I assume that means this line: myGNSS.checkUblox(); is not returning any new data or any valid data.

  2. I don’t get any errors when I upload to the Redboard but the header file says I should use a Blackboard. Is this relevant? The product’s hookup guide indicates that a Redboard is needed.

  3. The ZOE-M8Q is not listed as one of the supported boards in the sketch header… but then the example sketch is from 2018. Will the ZOE-M8Q work with these example sketches?

General Question:

Has anyone gotten the ZOE-M8Q to work with the examples provided? Hints? Tricks?

Ultimate Goal:

I want to use a lightweight GPS to get location and altitude on a high altitude balloon (~100,000 ft). Best suggestion if the ZOE-M8Q is not going to work? The features for the ZOE-M8Q claim it will go up to 50,000 m which is plenty high enough.

The board and code will work with any ATmega328 based board and most likely many others, it’s not limited to a RedBoard or BlackBoard. Those were chosen because they have a Qwiic connector on them for easy prototyping.

Does example 1, [BasicNMEARead.ino[/i] produce any output?](SparkFun_u-blox_GNSS_Arduino_Library/examples/Example1_BasicNMEARead/Example1_BasicNMEARead.ino at main · sparkfun/SparkFun_u-blox_GNSS_Arduino_Library · GitHub)

Hi Chris - Example1 produces the “SparkFun u-blox Example” text then nothing. When I unplug the Qwiic connect and run it again I get the expected error message “u-blox GNSS not detected at default I2C address. Please check wiring. Freezing.”

OK, we’re going to have you send both GPS receivers and both antennas back to us to see what the issue might be. You should get an email from customer service soon with directions.

Hi Chris - Yesterday afternoon I found this: viewtopic.php?p=226907#p226907 post and tried the modified Example 3 code that Paul suggested to the OP. It seems to have worked. I’m going to try to do a GPS and altitude data run today by driving around. Not sure why Paul’s Example 3 sketch would return data but the other example code (1 & 2) didn’t? Will report back.

I’ve just noticed that I’ve been silly and having used !!! in some of the error messages in that example. !!! can cause avrdude (the standard AVR upload tool used by the Arduino IDE) to crash. I will fix that in the next version of the library. But for now please delete the !!!'s!

Best wishes,

Paul

Will do Paul - thanks for the heads up.

I’m not sure if this is significant but Examples 1 and 2 use a attribute((weak)) function called processNMEA. The idea is that you can overwrite processNMEA with your own function if you want to. In fact Example 2 does exactly that to pass the NMEA data to MicroNMEA. I’m wondering if this is a compiler issue, with it not liking or supporting the weak function? The examples were all (re)tested when we released v2.0 of the library but maybe something has changed. I will investigate…

Best wishes,

Paul

OK. I think I understand what may have happened here.

Most of the library examples (from Example3 onwards) only use the u-blox UBX binary protocol to talk to the module and request the position data etc… Examples 1 and 2 are ‘old school’ and use the NMEA protocol; the NMEA messages are text-based (human-readable) and start with headers like $GPGGA.

Now, in many of the UBX examples, Example3 included, you will find two lines of code:

myGNSS.setI2COutput(COM_TYPE_UBX); //Set the I2C port to output UBX only (turn off NMEA noise)

myGNSS.saveConfigSelective(VAL_CFG_SUBSEC_IOPORT); //Save (only) the communications port settings to flash and BBR

These lines do exactly what they say they do. They disable the NMEA messages completely, and save the configuration in battery-backed memory so the NMEA messages stay disabled next time you power up the module. So if you have run Example3 - or a similar example - your module won’t be producing NMEA data.

But for Example1 and Example2, you need the NMEA messages to be enabled…

You can fix this by adding the following two lines to Example1 or Example2 in the setup code after myGNSS.begin();

myGNSS.setI2COutput(COM_TYPE_UBX | COM_TYPE_NMEA); //Set the I2C port to output UBX both NMEA and UBX messages

myGNSS.saveConfigSelective(VAL_CFG_SUBSEC_IOPORT); //Save (only) the communications port settings to flash and BBR

Please let us know if this works.

Best wishes,

Paul

PS. I didn’t say so, but I have both Example1 and Example2 working on: SparkFun RedBoard Qwiic; ZOE-M8Q Breakout.

I am using a different, roof-mounted, active antenna which has a clear view of the sky…

Best wishes,

Paul

Paul - Thanks for that suggestion. I had to put the two lines you suggest before: myGNSS.setNMEAOutputPort(Serial);

Here is the output with the antenna near a window for example 1:

$GNVTG,N*2E

$GNGGA,170302.00,0,00,99.99,*7F

$GNGSA,A,1,99.99,99.99,99.99*2E

$GNGSA,A,1,99.99,99.99,99.99*2E

$GPGSV,4,1,14,02,59,253,03,04,034,06,78,358,11,62,240,*76

$GPGSV,4,2,14,12,32,316,14,19,142,17,33,074,19,52,051,*78

$GPGSV,4,3,14,20,12,192,24,24,259,25,00,319,46,34,232,*74

$GPGSV,4,4,14,48,37,228,51,46,205,*7D

$GLGSV,3,1,11,66,13,044,67,20,095,68,05,142,73,44,309,*68

$GLGSV,3,2,11,74,04,336,79,12,173,80,56,219,81,05,057,*62

$GLGSV,3,3,11,82,42,024,27,83,52,308,84,09,258,*57

$GNGLL,170302.00,V,N*53

Your hypothesis seems to be correct! Thank you. I really want Example 3 functionality so I will return to that but it is nice to have an answer to the issue w/ Examples 1 & 2.

Chris - I haven’t gotten a box to return the units and antenna yet but when I do I’ll just return one and keep the one I originally paid for, ok?

Chris - I haven’t gotten a box to return the units and antenna yet but when I do I’ll just return one and keep the one I originally paid for, ok?

Yep, that’s OK!

wvslaton,

I got the GPS receiver you sent back yesterday and tested it today and it’s working as it should.

Did you want us to send that back to you or would you rather we refund you for it?