I2C stands for Inter-Integrated-Circuit communications, its meant for short distances on a PCB or subassembly. But, hey, Adafruit are engineers and Adafruit like to push the limits of technology, right? So why not try to have I2C run over a meter long cable, or even longer?
I’m after more detail on how to use this product. I appreciate that the last photo shows it connected with other devices … but I had trouble zooming in enough to make out much detail of the connections.
In my bench test most items are connected by i2c … but in my project (even in my small 1.8m square greenhouse) it doesn’t make sense for all the sensors and devices to be in one place. I can certainly use longer wires, at least for some devices, but I expect that could quickly become unreliable.
my ESP32-S3 (with pcb aerial) should be high, in the corner closest to my home wi-fi signal.
I have a rain gauge and solar panel which need to be outside and high.
I have a water flow solenoid and water flow meter for the misting, maybe 2 metres away.
I have a couple of sol moisture sensors to try, and may get more.
I have come across the Sparkfun QwiicBus endpoint which seem obvious to need 2 endpoints and ethernet cable between them. However that is at double the cost of this Adafruit LTC4311 I2C Extender / Active Terminator, and both claim to extend i2c communications.
If the LTC4311 I2C Extender / Active Terminator is to be placed at the beginning (or end) of the chain of i2c devices, why does it need 2 STEMMA QT connectors ?
I assume the photo shows the LTC4311 in the centre of the photo, connected to the display, which in turn is connected by dupont breadboard connectors to both the microcontroller and an ethernet cable adaptor. At the other end on the ethernet cable (bottom of the photo) we can see that the i2c wires are connected to separate pairs of the ethernet cable, and to the temperature sensor (possibly a BMC680 ?).
I assume that it is not necessary to use ethernet cable with the LTC4311 - any cable will do, especially for shorter distances.
Would it be better for me to connect all my i2c devices in one long string (with one LTC3411), or use a star topology with separate links to the other locations where my sensors are located ?
If the star topology is better, should I use one LTC3411 for each remote link - or should one LTC4311 serve the whole network ? Should the LTC4311 be positioned at the end of the shortest chain ?
Definitely some interesting questions. I believe that the product photo shows one specific edge case in which this device can be used. It looks to me like the best way to use this I2C extender would be in line between your controller and the I2C modules you are using.
Controller → LTC4311 I2C Extender → Long wire → Other I2C modules
Any cable should do for this module although I believe ethernet cables are used for this kind of thing mainly because they are easy to find in longer lengths than STEMMA QT or other equivalent cables.
I would personally use a star topology configuration so that if one module fails the others are not relying on it to pass a signal through. I’m by no means an expert in I2C but I don’t believe daisy chaining these devices provides any significant advantage apart from maybe resulting in a shorter overall cable length depending on your setup.
I would ignore the product photo setup and position this I2C extender at the beginning of your chain for the best results. The product description mentions that this is the best configuration and while you can add this extender to the end of your chain, this is a less effective option.
Had a sudden flash of inspiration - since it’s an adafruit product, to go look and ask on their forum. Doh !
Found https://forums.adafruit.com/viewtopic.php?t=213321&hilit=LTC4311, which also suggest and confirms that it can be looked at as a “three port hub + booster” - for example connecting my microcontroller to the header pins, and then two separate “chains” of i2c devices connected to either StemmaQT connector.
This page suggests a way to use cat5 cables … however some community members have suggested, “… better to use 1 pair for ground and power, 1 pair for ground and clock and 1 pair for ground and data… It seems like this would mitigate EMI on the power and signal wires relative to ground.”
So to summarise, the answers are:
i2c is designed for short distances, like on a circuit board, but can be OK up to 1m total distance. The LTC4311 is one approach to overcome the added capacitance of longer wires.
It doesn’t matter where LTC4311 is connected, but closer to to my ESP32. The LTC4311 header pins and STEMMA connectors are in parallel, so it doesn’t matter which to use for what.
no additional info
Correct. Cat5 cable wired in pairs as mentioned above helps to reduce effects of longer cables.
Topology doesn’t matter, but total cable length does. Use whatever minimises the total cable length.
Since all i2c devices are all in parallel, in theory it doesn’t matter where the LTC4311 is - the whole i2c network benefits.
1 Like
And you can get our latest projects and tips straight away by following us on: