SparkFun GPS Breakout - Chip Antenna, SAM-M10Q doc ?

trying to following the tutorial for this board, install guide https://docs.sparkfun.com/SparkFun_u-bl … resources/

SparkFun u-blox GNSS Arduino Library - v3

https://github.com/sparkfun/SparkFun_u-blox_GNSS_v3 but the SAM-M10Q is not listed ?

Also somewhere in the tutorial it implied to download ucenter2 windows utility which I did but how do you attach the board to configure it ?

Hi,

The SAM-M10Q works fine with our GNSS Library v3.

For u-center2, you will need to attach a 3.3 Volt “FTDI” cable / adapter, to make the UART pins appear as a USB COM port. Please be careful as some “FTDI” cables output 5V. The parts listed below will get you going:

https://www.sparkfun.com/products/15096

https://www.sparkfun.com/products/553

Snap off 6 header pins and solder them to the UART connections. Attach the Serial Basic (GND to GND). Attach a USB-C cable and connect to your computer. The Serial Basic will appear as a COM port, select that in u-center2. The Serial Basic provides power, you do not need to attach a Qwiic cable if you are using a Serial Basic. u-center (1) works too, but u-blox recommend u-center2 for M10 modules.

Best wishes,

Paul

hi Paul, thanks for the quick reply. Just to confirm if I order the SparkFun Serial Basic Breakout you mention above I would solder headers on the GPS UART pads . I noticed the pinouts between the Serial basic board and the GPS board for RX and TX are reversed, but I assume that is by design ? thanks!

Hi,

Correct. TX on the GNSS goes to RX on the Serial Basic, and vice versa. The Serial Basic will plug in direct, no need for pin swapping.

I forgot to mention: the SAM-M10Q defaults to 9600 baud on the UART. You may need to select that in u-center2.

Best,

Paul

Thanks Paul !

Holy cow this fixed hours of agony, thank you!

Thanks for the post - glad we were able to help! :smiley:

Best wishes,

Paul

Hi Paul,
I found this is related to my need. I’d like to know if it’s possible to connect like this: M10Q->(Qwiic)RedBoard Plus->U-center 2 on windows ? I’m asking because it’s way easier to use Qwiic than soldering. Thanks.

Not really.
You will need to solder male header pins to the board then connect a FTDI to those for ucenter to work.

Hi @i3 ,

In all these years, I don’t think anyone has asked for a I2C - Serial Passthrough code example before. It is time we had one!

Please give this new example a try:

Best wishes,
Paul

1 Like

I think it’s come to a head due to the M10 lacking a USB port, and a UART doesn’t share well with others. Frequently used a “Diode AND” to combine multiple normally high inputs. The NEO-F10 is a bit of a pain due to I2C not getting provided at all, and actually requiring a port remap to escape. So UART or I2C, in an either or sense.

At the beginning of the year there seemed to be enough background pressure to have something. Whether it was to have a secondary input to an EVK, or prove it works as advertised.

I didn’t want to spring for an Aardvark I2C adapter uBlox supports, so used an RPi Pico, but any Arduino with some serial buffering will likely suffice.

Hi @PaulZC ,

Yes, Yes, it’s exactly what I asked. Thank you so much!

I uploaded it to my RedBoard Plus and then connected it to SAM-M10Q and u-center 2. Nothing was read from the serial. I dig and found gnssI2cAvailable() always return 0. The RedBoard Plus doesn’t get any data from SAM-M10Q if I’m not wrong. I’m trying to figure it out.

Any hint Please?

UPDATE: Don’t know what’s going on but it works after I plugged it into my windows just after I submitted this reply. Right now u-center 2 can read it successfully! Nothing changed except I just unplugged it in the morning and now plugged it in. Thanks again!

Hi @i3 ,

The I2C port may need a “kickstart” to make it output data. u-center2 should provide this by requesting data from the module when you open the port. Certainly u-center (1) does this. But if you are using the Arduino IDE Serial Monitor or a terminal emulator, you may need the kickstart.

Please change setup to:

void setup()
{

    delay(2000); // Wait for ESP32 and GNSS to start up

    mySerial.begin(115200); // Baud rate for u-center

    myWire.begin();          // Start I2C
    myWire.setClock(400000); // 400kHz

    // Give I2C a kickstart - if needed. Request UBX-MON-VER
    const uint8_t pollUbxMonVer[] = { 0xB5, 0x62, 0x0A, 0x04, 0x00, 0x00, 0x0E, 0x34 };
    for (int i = 0; i < (sizeof(pollUbxMonVer) / sizeof(uint8_t)); i++) {
        addToUartI2cBuffer(pollUbxMonVer[i]);
    }

} // /setup

Best wishes,
Paul

I2C is demand driven, whereas the UART keeps flowing and you can ignore it. If you leave the I2C unattended for over 1.5 seconds it stalls, and you have to send a polled/request form empty packet to restart. UBX-MON-VER is often used, but there are others with a shorter response that would work as well. Perhaps a message you’re already geared up to process?

The polled UBX-NAV-PVT would be
B5 62 01 07 00 00 08 19

See CFG-I2C-EXTENDEDTIMEOUT

Thanks Clive,

Yeah. I should probably add a helper method for CFG-PRT flags.extendedTxTimeout in v2 of the library. (There’s probably no point adding one in v3 as it would be best to do it through the Configuration Interface…)