Hi!
I would like to connect all of the below to a RasPi 3B.
I know there is a limit of about a meter for an I2C chain. If I use the Qwiic HAT for Raspberry Pi, I assume it is the length of the string on each port that matters, not the total string length of all four ports together.
It appears that the VR IMU Breakout - BNO080 and Digital Temperature Sensor Breakout TMP102 can use the same I2C address. Can I use them together if I use 0x48 or 0x49 for the TMP102?
What is the I2C address for the Pro RF - LoRa, 915MHz (SAMD21)? I have searched for a while, but cannot find it.
Do you see any conflicts or issues that I have not considered?
Here is the list of devices:
0x42 GPS (either XA1110, GPS-RTK, GPS-RTK2, ZOE-M8Q or SAM-M8Q)
0x48, 0x49, 0x4A or 0x4B Four of the Digital Temperature Sensor Breakout TMP102, each with a Qwiic adapter
0x4A or 0x4B VR IMU Breakout - BNO080
0x5B or 0x5A, and 0x77 or 0x76 Environmental Combo Breakout - CCS811/BME280
0x6D or 0x6C Qwiic Quad Relay
0x68 or 0x69 SparkFun IMU Breakout - MPU-9250
0xD2 Real Time Clock Module - RV-1805
Thank you!
Mark Goergen
Hi Mark. Thanks for posting your question on the forums!
I know there is a limit of about a meter for an I2C chain. If I use the Qwiic HAT for Raspberry Pi, I assume it is the length of the string on each port that matters, not the total string length of all four ports together.
It’s the total length that matters so you’d need to add the length of each string on all four ports.
It appears that the VR IMU Breakout - BNO080 and Digital Temperature Sensor Breakout TMP102 can use the same I2C address. Can I use them together if I use 0x48 or 0x49 for the TMP102?
Unfortunately no. Every device on the bus must have a unique address for them to all work together. You could either connect the BNO080 via UART or serial to your Pi, or you could add a Mux like the Qwiic Mux and split your I2C bus and put the BNO080 on it’s own segment.
What is the I2C address for the Pro RF - LoRa, 915MHz (SAMD21)? I have searched for a while, but cannot find it.
The Pro RF is a master device just like the Pi is so it technically it doesn’t have an address. You could theoretically write firmware for the Pro RF that turns it into a slave and that would allow you to pick whatever available address you choose.
Do you see any conflicts or issues that I have not considered?
Noting is popping out at me, but I could have missed something. You will need to write code for the Pi to drive all these devices and unfortunately we don’t have any example code for the Pi for them. You might want to develop code for each device on their own before trying to connect them all together.
Just to expand a bit on the point regarding the conflicting I2C addresses. Both the TMP102 Breakout and the BNO080 have address select jumpers so you can use both on the same I2C bus after you have changed one or the other so they are not both at 0x4A.
Also, in regards to having all of the devices on the same bus, you may need to disable the pull-up resistors of one or more of your connected slave devices so the total resistance on those lines does not prevent the Pi from being able to pull them low. Our [I2C Tutorial and [Pull-Up Resistors Tutorial will go into more detail on adjusting for high-resistance on your I2C bus.
I hope this helps you figure out how to get all of these devices working on your Pi.](https://learn.sparkfun.com/tutorials/pull-up-resistors)](https://learn.sparkfun.com/tutorials/i2c)
Thank you both for your thorough responses. I can either change the BN0080 address and use three TMP-102s or use the MPU-9250 and four TMP-102s.
I saw the mux, but had not looked carefully. It will fix my hardware limitations.
I know Qwiic is primarily an Arduino thing, but I’m surprised there is no code for the Pi. I will probably need to wait to move to Qwiic.
Hi,
As you mentioned that BNO080 can be used with a Serial/ UART_RVC mode rather than I2C.
Can you specifically point out to any example code which can help me run this particular mode with an Arduino Uno.