LCD + GPS on QWIIC bus not working together

I am hooking up a an Arduino Uno Wifi R2 to a NEO-M9N GPS (GPS-15733) and then a 20x4 SerLCD LCD-16398 via QWIIC connectors. Uno - GPS -LCD . The first QWIIC cable is pins on one side and quick on the other, to plug into the Uno.

When both are plugged in the Uno cannot connect to GPS and only sporadically writes to the LCD.

When either one (LCD or GPS) is plugged in directly to the Uno and the other not plugged in they each work fine.

Now for one last weird tidbit, when trying to debug this I

  1. plug all 3 together in a line as described above.

  2. Observe nothing working (GPS not findable, enter freeze condition in the example codes, LCD won’t update, etc)

  3. Put an O-scope probe (high impedance) across ground and the SCA or SCL pins to see if data was on the bus and if the levels looked ok. Data is there, levels ok.

  4. Then notice that the LCD does update!

  5. Remove the probe, it stops updating the LCD, add the probe and it keeps updating, …

I’ll note I’ve tried a couple of different cables for the second leg of the QWIIC bus and observed the same behavior.

I have no experience with this I2C so I’m hoping someone can just tell me what I might be doing wrong.

Thanks for reading!

Try taking the LCD out of the system and replace with just printing to the Arduino Serial monitor. Does everything run as expected, minus the LCD screen? Can you try using the LCD screen separate of the rest of the system with our example sketches: https://learn.sparkfun.com/tutorials/av … -guide/all?

Thanks Brandon.

I have taken the LCD out of the system already. If I simply unplug it, I can run the GPS just fine (ie mygps.getLongitude(), etc) and print the results to serial or even send them over wifi, using the uno as an wireless access point, receiving the data using UDP sockets in a python program.

Similarly I can run the LCD just fine on its own via the i2c QWIIC interface using the I2C examples you point to.

The problem comes when I put them both on the same QWIIC bus. Then neither of the 2 separate sketches (ie the GPS code described above or the LCD code) will work and any attempt to use both fails too. For instance, I can take code that reads the GPS receiver and does a bunch of stuff with the data then, I plug the LCD into the other QWIIC connector on the GPS receiver break out board and rerun the GPS code and it no longer can find the GPS (ie myGPS.begin()=false) and so, since I based my code on sparkfun examples, you see “Ublox GPS not detected at default I2C address. Please check wiring. Freezing.”

Thanks again for any help, been stuck on this for a couple days now.

Figured it out. It was a dumb error.

Uno WIFI R2 has 5V logic and QWIIC and quick sensors should be 3.3V. So I ordered a the sparkfun QWIIC shield for UNO and it fixed me right up.

Note however that the shield is for UNO not UNO WIFI R2 so you have to run a wire from SDA/SCL to the A5/A4 pins on the shield to make it work. I also bent the A4 and A5 shield pins over so they wouldn’t interfere with the A4/A5 channels.