Max cable length depends on the I2C devices, pull-up resistance (or pull-up current) and cable capacitance.
With standard I2C devices and standard pull-up resistors and standard speed, max bus capacitance is 400pf.
Cable could be ~40-60pf/m. 32m of cable wold be too much.
Clock and data have to be on different pairs, or separated with a ground in between (flat cable).
Fast Mode Plus (FM+) devices can be used on higher capacitance busses.
If you use an Arduino to only SEND I2C to other devices, you could lower the pull-up resistor value to as low as 220ohm, to counteract cable capacitance. Try 470ohm first.
Standard mode devices might not be able to answer back.
You could also use standard pull-up resistors (>1k5?), normal wiring, and a lower bus speed.
Leo..
Wawa: 4.7K for the pull up (1 on SDA and 1 on SCL)
As of now, there are no issues (but not all the cables are in place) but from a previous post, some people scared the s*** out of me, so I'm getting ready..
Signal distance: I have a main Pcb from which all cables are originating from. Traces (SCL & SDA) on the PCB are 2-3 mm apart for about 15 cm. On that PCB, there are 16 RJ11 jack, each leading to a slave devices. The cables are telephone patch cord so they are fairly close. It's a flat cable, and I have them in the following order: +5V, SCL, Gnd, SDA.
Right now, only 9 out of the final 16 cables are connected (waiting for parts)
If this 9-slave setup still works with 4k7 pullups, I wouldn't worry.
But you most likely have to lower that resistance when you add more modules.
If you use 2k2 pullups, you are still within the specs of standard I2C.
2k2, because the Arduino might also have internal pullups enabled in the I2C library.
Some Arduinos, e.g. the Mega, have 10k pullup resistors soldered on the board.
AFAIK, the minimum total resistance for standard I2C is ~1K7 (3mA).
Good to see that clock and data are separated by a ground wire.
Leo..