user47400: Is I2C a good option for such application or are there other protocols? I know that modules like these exists to extend I2C range, and I'm planning to use this one (P82B96).
I'd like to use a frequency of 100kHz for I2C and use DMX cables of 20m connected in series.
So, is there any alternative that is more adapted for Arduino to Arduino data transmission over a cable?
EDIT : The solution here is CAN because it allows to have multiple devices on the bus. But if it is a simple communication between two arduinos, then go for the RS-232. 
Solution mentionned by @Dmitry Grigoryev and @Joe S
Thanks in advance.

user4143: I2C is perhaps the worst possible choice for this type of communication. Instead you should be using something like RS-485 (which is incidentally what DMX uses) with differential signalling.

user13327: With I2C, you're unlikely to get reliable communication on a cable longer than 1m. For your reference, here's a table showing what you can achieve with regular RS-232:
Length (m)  Maximum Baud Rate
1600        600
800         1200
400         2400
200         4800
100         9600
50          19,200
25          38,400
16          57,600
8           115,200

So, if you don't really need 100 kHz data rate, you could use regular RS-232 (which is cheap). If RS-232 is not fast enough for you, consider more complex solutions. RS-485 is one possiblility. Another one is CAN, which supports topologies up to 500m at 100kHz. The key difference of CAN is that it's a bus, meaning that all devices will share the same pair of wires.

47400: <p>Is I2C a good option for such application or are there other protocols? I know that modules like <a href="https://www.tme.eu/fr/Document/71a9aa14de9dc59baffc455b8858ae1c/P82B96TD.pdf" rel="nofollow noreferrer">these</a> exists to extend I2C range, and I'm planning to use this one (P82B96).</p>

<p>I'd like to use a frequency of 100kHz for I2C and use DMX cables of 20m connected in series.</p>

<p>So, is there any alternative that is more adapted for Arduino to Arduino data transmission over a cable?</p>

<p>EDIT : The solution here is CAN because it allows to have multiple devices on the bus. But if it is a simple communication between two arduinos, then go for the RS-232. 
Solution mentionned by @Dmitry Grigoryev and @Joe S</p>

<p>Thanks in advance.</p>
 4143: <p>I2C is perhaps the worst possible choice for this type of communication. Instead you should be using something like RS-485 (which is incidentally what DMX uses) with differential signalling.</p>
 13327: <p>With I2C, you're unlikely to get reliable communication on a cable longer than 1m. For your reference, here's a <a href="http://www.seabird.com/faq/what-maximum-cable-length-real-time-rs-232-data" rel="nofollow noreferrer">table</a> showing what you can achieve with regular RS-232:</p>

<pre><code>Length (m)  Maximum Baud Rate
1600        600
800         1200
400         2400
200         4800
100         9600
50          19,200
25          38,400
16          57,600
8           115,200
</code></pre>

<p>So, if you don't really need 100 kHz data rate, you could use regular RS-232 (which is cheap). If RS-232 is not fast enough for you, consider more complex solutions. RS-485 is one possiblility. Another one is CAN, which supports topologies up to 500m at 100kHz. The key difference of CAN is that it's a bus, meaning that all devices will share the same pair of wires.</p>
