long range serial bus

I’m looking for a serial technology to implement a bi-directional serial bus that could link sensors and microcontrollers over a distance to about 50m. I2C would be fine if it had the range.

My requirements are:

  • 50m range
  • all components can transmit & receive
  • wiring: ground+2 wires or ground+4 wires
  • unrestricted network topology (Y-splits etc.)
  • implementable with Arduino
  • sensor & controller ICs available

Can anyone help?

unrestricted network topology (Y-splits etc.)

Technically 485 has to be a bus that's terminated at both ends and ony has short stubs (300mm max I think) to nodes. However if your data rate is slowish (what is it?) I doubt that would matter.

LIN - 20kbps, 40 metres, no topology requirements, 1 wire

CAN - 1Mbps, 40 metres, bus topology same as 485 I think, 2 wires

may be options as well.


Thank you for the replies.

RS-485 seems about right for my application, which is a DIY building automation system used mainly for controlling lights and actuators & reading sensor data. Data rate can be pretty low, under 100kbps.

The only handicap is that RS-485 describes only the physical layer, where as I2C incorporates a protocol for communicating with arbitrary sensors etc.

The DMX-system for lighting control uses RS-485 as the physical layer. I could actually go with DMX if it supported multiple drivers.

I could actually go with DMX if it supported multiple drivers.

It is no different than I2C, a device only transmits when polled by the master. This is by far the easiest thing to implement, otherwise you get into collision detection or token passing.