I2C Communication Bus Length for 100metres

Discussion in 'General Electronics Chat' started by uppi_777, Feb 26, 2018.

  1. uppi_777

    Thread Starter New Member

    Feb 26, 2018
    Hello All,

    Currently, i am working on raspberry pi project for triggering camera
    I am very much interested to use I2C bus for exactly about 100metres.
    Could some one please explain me how can i reach my target 100metres with I2C bus.
    Any other ideas and inputs is much appreciated

    Thanking you
  2. shteii01

    AAC Fanatic!

    Feb 19, 2010

    I2c was specifically created for pcb boards. Which means it is best used for distances of a few centimeters.

    I have used i2c for distances of 2-3 meters, it worked. One trick u can use to extend range is to use slower clock rate. One last option is to use i2c extender chips, they do exist, but they will need power so u will need sda, scl, vcc and ground to power extender chip, 4 wires total.
    Last edited by a moderator: Feb 26, 2018
  3. MrChips


    Oct 2, 2009
    Abandon the idea of I2C over 100m.
    Go with RS-485 and NRZI UART or phase-encoded data signalling.
    Reduce your clock rate for increased reliability.
  4. mcgyvr

    AAC Fanatic!

    Oct 15, 2009
  5. ebp

    Well-Known Member

    Feb 8, 2018
    With the right drivers and receivers you can run i2c 100 metres. One of my clients routinely did it at about half that distnce 20 years ago. I think it was over twisted pairs but I don't remember for sure. Some years ago they extended the distance, possibly to over 100 metres, after the bozos on the ship broke a huge steel cable that unbraided itself as it sprang back at high velocity into the "firing line" (pipe welding line). It could easily have killed a bunch of people, so it was decided that maybe they should rearrange where people worked, necessitating longer cables for a control console.
  6. uppi_777

    Thread Starter New Member

    Feb 26, 2018
    Thank you it was helpful but what do you mean by slower clock rate
  7. uppi_777

    Thread Starter New Member

    Feb 26, 2018
    Thank you. What do you mean by reducing the clock rate
  8. dendad

    Distinguished Member

    Feb 20, 2016
    Read up on I2C.
    It has a clock signal that synchronizes the data transmission and the data itself.
    You can use a slower clock a lot of the time and that will travel further. But, although you may get I2C running over those distances, using balanced drivers, something like RS485 that is designed to run for well over a KM is the way to do. So the RasPi will need to talk to a remote Pi or Arduino or PIC or some such and have the remote do the work under command of the master Pi.
    Or use some radio link.
  9. ericgibbs


    Jan 29, 2010
    hi 777,
    Another alternative would be two lost cost transceiver modules, HC12 type.
    Work at different Baud rates, range upto 1000 mtrs line of sight, typically 100+ mtrs in built up area's.

  10. MrChips


    Oct 2, 2009
    RS-485 can transmit to 1200m at 100kbps.
    Clock speed refers to how quickly the bits are being transmitted, i.e. the inverse of the duration of one bit. If you slow down the clock frequency (lengthen the bit width) and at the same time slow down the data slew (i.e. slow down the rising and falling edges, i.e. decrease signal bandwidth) you will reduce the reflections in the cable.
  11. Papabravo


    Feb 24, 2006
    The I2C clock line is unidirectional at all times. The I2C master is always the driving source for this signal. The I2C data line must be bi-directional at all times so the ACK pulse can be returned from the slave device to the master. A decade ago we tried to implement an I2C repeater and we failed causing a huge delay in our project. I understand such chips now exist, and they must implement a protocol to keep track of the bits so they can change the bus direction during the ACK slot. If this post does not make sense to you, then I don't rate your chances of success as favorable.