Uno R4 + MKR GPS shield?

Hello everyone,

I am hooking up a MKR GPS shield with my brand new arduino uno R4, but have not yet managed to make it work. Any hint would be valuable.

First, hardware: I managed to have the qwiic connector of the R4 hooked up to the ESLOV connector of the MKR shield by tweaking two cables (the ESLOV cable shipped with the MKR shield, and a qwiic cable that was liying around in my office). There appear to be ready-made cables for that as well. Running the I2C scanner (Arduino Playground - I2cScanner replacing all occurrences of "Wire" by "Wire1") ensures the GPS shield is indeed recognized by the arduino.

Now with the provided arduino library for MKR GPS shield. I found that I have to set Wire1 to the GPS.cpp file to have the board recognized by the arduino. It looks that this library cannot get passed the Wire1 bus as parameter like for other libraries. However, for now I am stuck here: I do not get any NMEA printout on the arduino (with the #define GPS_DEBUG), meaning that the I2C bus get stuck at some point.

I tried with another board that has also a qwiic connector (specifically the sparkfun micromod weather carrier with a micromod nRF52840 Processor board), and it simply works...

Would you be able to help me in that matter?

I believe from my quick look at the product page, that this shield runs at 3.3v.

So running this on the WIFI boards main Wire object would probably be an issue. However the Wire1 object is setup for QWIIC setup which the WIFI board has built in level shifters to handle:
image

So that should be fine.

It might help to get a link to which library you are using and simple example code that you are trying. I don't have one of these boards, but maybe something will jump out.

Thanks for the heads up! (I was thinking I had fried the MKR GPS board :grimacing: , but that looks finally OK :partying_face:).
The library I use is the following:

and I just try to use the GPSLocation.ino example sketch with the Wire1 tweak described above in the src/GPS.cpp file.

I took a quick look through, but I have not done much with I2C on the UNO R4
I know there are a few open issues with Wire on these boards.

Like:

Wire::setClock() only allows exact values of 100kHz, 400kHz, and 1 MHz · Issue #68 · arduino/ArduinoCore-renesas (github.com)
But my quick look through I believe it is using 400000 as the clockspeed.

Wire clock is slow for some 3.3V devices. · Issue #69 · arduino/ArduinoCore-renesas (github.com)

@Merlin513 - I doubt you have this board either. But wonder if you have any other ideas?

Okay, searching a bit this evening, so it seems that the sparkfun library for qwiic GNSS boards works with the Uno R4 wifi and MKR GPS board! No idea why, except it is supposed to work for the same GNSS receiver (SAM M8Q) ¯_(ツ)_/¯

1 Like