Electronic – How to select the most appropriate (serial) bus for controller

Architecturecani2crs485serial-bus

In the context of a robotic project where different 'payloads' and/or robotics arms (end-deflector) should be mated mechanically with power, data and control connections support, I would like to identify the best suited (serial) bus.

I have a hard time putting together the requirements, but the main 5 important ones could be summarized as following:

  1. Minimal wiring: 2-3 pins (or less)
  2. Multi-points/clients, if possible without host/client/server/master aspects
  3. The-wiring-is-the-bus (=no need for repeater/switch/hub)
  4. Hot-pluggable/swappable: adding/removing clients, changing the topology
  5. Support for different topology: straight, meshed, star, fake-loop,…

Speed is not really a constraint.

Currently CAN bus was used in our bread-boarding, in order to inter-connect a few RasPi/Zero with PICANDUO daughter boards, covering almost all 5 requirements except of course #4, as it is not meant to be hot-pluggable and thus gives issues for #5 (especially moving/adapting the 120 ohms termination resistors). We then use a flying master for changing the master of the bus.

Ethernet would be almost covering all 5 (except #1 & #2), but is completely overkill…so is SpaceWire. SpaceFiber could be an option.

I am also considering RS-485, LVDS, I2C, 1-Wire,… But these seems to get trouble with #4 (end resistor) too.

USB would be great (only 2 data wires, powered separately), but it requires a single (stable/single) Host/master (or does it?).

Am I overlooking a specific bus here?
What would you think of other potential candidate(s) here?

Thank you for your hints!

Best Answer

The physical portion of your network could easily be RS-485. Although one normally uses termination resistors on all of the stubs, this can be alleviated by having the termination resistor permanently attached at the longest (furthest) node of the bus..

Or - operate at a sufficiently-low speed that reflections are not an issue and thus do not require termination.

You will need to work out the communication requirements and write your software accordingly.

This can be hot-plugged provided your software is written such that it will tolerate the momentary disruption