Os comprimentos insanos de som como 10,25 e 100m são perfeitamente possíveis, e eu uso o método frequentemente (com UART não I2C, mas o método permanece) quando preciso juntar as coisas rapidamente. Não é exatamente o melhor caminho, no entanto.
A chave é conhecer seu limite de tensão de entrada. Verifique se a queda de tensão no fio terra está bem abaixo disso, caso contrário, um transmissor com alto potencial de terra não poderá puxar a tensão suficientemente baixa. Falta de tolerância para desvios de terra O IMHO é o maior motivo para usar transceptores RS485 ou pode (o I2C sobre CAN é mencionado em algumas notas de aplicação).
Idealmente, todos os dispositivos terão sua própria verruga e bateria e nenhuma energia será enviada pelo fio terra entre os dispositivos.
Mas, vamos usar o CAT5, por exemplo. O CAT5 não pode ser superior a 52pf / m, ou não é CAT5.
100m de cabo 52pf tem uma capacitância de 5200pf ou 5.2nf.
5,2n vezes 20kohms (pullup) fornece uma constante de tempo de cerca de 104 microssegundos. Isso limita a velocidade a cerca de 10kHz.
Usando pullups de 2.2kohm, você provavelmente chegaria a 100kHz.
Ouvi dizer que os dispositivos devem ter um resistor no SDL e no SCK, devido à grande carga capacitiva que estão conduzindo, algo como 180 ou 200 ohms.
Mas, honestamente, o I2C não é o caminho a percorrer longas distâncias. Os transceptores CAN ou RS485 usados com UART normal são uma solução robusta com muito boa proteção contra falhas, resistência ESD, velocidade, distância, etc., a um custo de um dólar por chip ou mais, as compensações de terra não importam tanto quanto você livre para transportar energia junto com os dados.
A única desvantagem é que um transceptor pode atingir 70ma de transmissão e 1 ou 2ma apenas de audição; portanto, o I2C ou o TTL UART direto podem ser úteis em situações extremas de baixa energia, mas considere quanto tempo você realmente passa enviando.