Electronic – arduino – I2C bus extender

arduinoi2crs232serial-busslave

I am working on a project which requires a long I2C bus which can be long as 200m or more.I searched on the internet and found a chip nxp PCA9600.I would like to know is there any alternate for this chip and if I am using this chip should I keep this at both the ends.(master- Arduino mega, slave mcp23017)

Iam new to i2c protocall and its wiring.

Best Answer

200 meters is pretty far to go for I2C, since it was originally intended for short-distance intra-board communication. However, using a bus buffer as you describe and running at lower clock speeds will make long cable runs possible.

This application note from NXP shows 50m performance for the PCA9600 you're looking at:

NXP app note

The PCA9615 is a related part that uses a differential I2C protocol, and is rated to 3 meter lengths at full speed (1MHz). I've used this part without issue operating at 400kHz over a 10 meter CAT6 cable.

Ethernet may be worth looking into, as it was designed for long distances--perhaps a Raspberry Pi on each end, acting as master and slave respectively?

Related question here regarding max length of an I2C bus, with notes regarding bus capacitance.