Problems: SparkFun Qwiic Shield for Arduino (DEV-14352)

I bought one of these, and an Arduino Uno WiFi R2 (DEV-1487), with the intent to add Qwiic capabilities to the board.

It turns out this board is not compatible with this version of an Arduino board. The shield expects SLA/SLC to be on A4/A5 but it is not. I had to clip pins off the A4/A5 headers and jump SLA/SLC over to A4/A5.

However, I found the board did not always work with all devices, or with many devices chained. I connected a SparkFun Environmental Combo Breakout - CCS811/BME280 (Qwiic) to the shield (the only device connected to the shield) and found I could almost always talk to the BME280 but could almost never speak with the CCS811. It always returned an error during the initial connection.

Chaining devices – GPS, openlog, etc. – only made things worse. I suspect there is a power problem. Perhaps the power converter is not providing enough amperage to drive all the boards attached?

Is there some additional incompatibility. Should I clip the 5v or 3.3v pin to isolate the power supplied to the board?

I would like to use this board to enable Qwiic support on the WiFi enabled Arduino board. Any help will be appreciated.

Thanks.

–J

We had a similar problem only we tried to use it with a MEGA because they advertised that it would work only it never could without being modified. Looks like they recently revised that on their site.

It actually can work if you use a Ruggeduino and jumper J12 to position 2. Or do what you did and manually reroute it.

They really should come out with a slightly updated version that lets you select where the I2C pins are exactly and also make it MEGA compatible.

It’s also unclear how well it works with 5V boards exactly or if the level translation has an impact on I2C or SPI.

Also, it is unclear what limitations there are on bus speeds, total wire lengths, number you can daisy chain or current consumption. The shield only seems to do very basic voltage translation, which is one way of doing things but has some downsides compared with other typically more advanced methods. That might be part of why you are having some issues?

It is seriously annoying that we can’t edit posts past something like 10 minutes.

Note that the QWIIC shield uses BSS138s for logic level conversion.

It’s the same used on their SparkFun Logic Level Converter - Bi-Directional (BOB-12009) product. Should handle I2C, probably not SPI. Which is fine if you are breaking out QWIIC since it only uses I2C anyway.

It is seriously annoying that we can’t edit posts past something like 10 minutes.

Sorry about that! This is something we will look into and hopefully have fixed in the future.

We changed edit and delete time to 60 minutes.

Thanks for the feedback!

Thanks for the replies but I think the time-to-edit discussion got us off track.

I was hoping the community or tech support could speak to the capabilities of the board with regard to the logic converter and how long the I2C bus can be. For the board I am attaching to can it actually drive several I2C devices? Should I clip the 5v pin and wire up the 3.3v directly? Or vice-versa?

Thanks.

–J

We asked them. They didn’t really answer us much so now we are spending hours trying to actually figure out the details about wire lengths, level conversion, how the wave form changes, cheap and quick vs midrange vs proper I2C conversions. Limitations for SPI conversions as well because those are different. Plus where to source all of this as well. We are kind of hoping the 2 technical representatives here will weigh in and maybe create updated guides but we don’t think that is super likely either.

The annoying thing is that all of these items are a fundamental part of the Qwiic ecosystem and if everyone who wants to use it has to go through this, adoption is going to be significantly held back. These are already expensive devices. $25 for a board with a $4 chip on it is not exactly very competitive as it is but we are willing to support value add items. But here, not even knowing what lengths you can do or how many devices you can string together or even knowing you cannot really connect more than 4 feet is likely to be a very common occurrence for literally every new user and really isn’t being well addressed.

Hi jeffp.

Yeah, I think we did get a bit off track. Let me start over with you on this.

I bought one of these, and an Arduino Uno WiFi R2 (DEV-1487), with the intent to add Qwiic capabilities to the board.

It turns out this board is not compatible with this version of an Arduino board. The shield expects SLA/SLC to be on A4/A5 but it is not. I had to clip pins off the A4/A5 headers and jump SLA/SLC over to A4/A5.

Yep, that’s correct. Only A4 and A5 are connected to the Qwiic sockets on this board. Clipping A4 and A5 and then running jumper wires over to SCL and SDA (or pins 21 and 20 on a Mega) will fix that issue for you. I believe we’re working on a revision to allow you to select what pins to use. I don’t know if its jumpers or something else though.

However, I found the board did not always work with all devices, or with many devices chained.

Could be a few different issues causing this. First, the I2C bus was never intended to be very long so the shorter your bus, the better chances you have that it will work correctly. The longer the bus, the slower you need to run it at for it to be reliable. If speed isn’t a factor for you and the parts you’re connecting will work at a lower speed, slowing the bus down might help. The Arduino [Wire.setClock() command will allow you to change the bus speed and I couldn’t find much in the way of example code, but this [Arduino forum post might be helpful

Another thing that could be causing you issues is most Qwiic board have a set of pullup resistors on them that are needed for the I2C bus to work. You only need one set of pullups on the entire bus and having too many makes it harder for your I2C devices to pull SDA (or SCL) to ground. Open the pullup jumpers on all devices except for one device on your bus and see if that helps.

Chaining devices – GPS, openlog, etc. – only made things worse. I suspect there is a power problem. Perhaps the power converter is not providing enough amperage to drive all the boards attached?

Is there some additional incompatibility. Should I clip the 5v or 3.3v pin to isolate the power supplied to the board?

This could be an issue too. Most Qwiic devices don’t consume much current, but you could have enough current draw on the bus that voltage drops are beginning to happen and that could cause devices to not respond or lock up. You could try snipping the red 3.3 volt wire between the shield and first Qwiic device and then supplying your own 3.3 volt power source somewhere in the middle of the bus to see if that helps. Another option would be to connect 3.3 volt power to the last device on the bus with some heavier gauge wire and see if that clears things up.

I would like to use this board to enable Qwiic support on the WiFi enabled Arduino board. Any help will be appreciated.

If you're talking about the new Arduino Uno WiFi R2, I don't know a whole lot about that board, but it's probably looking for I2C on the SDA and SCL pins next to the reset button. There is a really good chance that a lot of libraries won't work on this board since it's based on a different processor than most Arduino boards and a lot of libraries haven't had time to catch up to the new tech.

Hope this helps, and sorry the forums were down for maintenance over the weekend. That caught us by surprise too!](how to test by i2c scanner at different Wire.setClock(i2cclock) reliably - Programming Questions - Arduino Forum)](Wire - Arduino Reference)