I'm designing a communication network for private home automation. My design goals are:
- Local wrt network changes. That is, changing one part of the network should not require modification of the network as a whole.
- Easy to use. Adding or removing devices should be simple.
- Allow complex topologies, ideally multi-star.
- Being able to use existing infrastructure (CAT 5 cables).
Originally I considered 1-Wire, but further investigation lead me to the conclusion that it doesn't cope well with EMI noise and that the available hardware is becoming obsolete.
Learning about CAN, I then considered ISO 11898-3 physical layer, which does allow multi-star topology. However, it seems that it's not being widely used nor supported, and I only found a very few ICs that support it. And most importantly, it's lacking the locality property: The terminator resistance should be split equally between all terminal nodes, which means either updating the whole network after adding a new node, or accepting improper termination.
Eventually I came to the idea to make the CAN bus internally linear, and achieve arbitrary topology by connecting each node to it by two pairs of wires. One pair connects to the "left" part of the bus (pins 3 and 4 below) and the other pair to the "right" part (pins 5 and 6). Both ends of the bus will be terminated in the master node. Essentially this is traversing the network tree:
Parts of the bus could be connected as follows (Vcc is power distributed from the master node to all the others):
I see these advantages:
- The bus will be linear, adhering to the standard and making its behavior predictable.
- Can use standard ISO 11898-2 components.
- Satisfies my design criteria above.
And potential disadvantages:
- Uses 2 pairs of wires instead of 1, making the bus twice as long, However, the actual length of cabling will be the same, since I'd use CAT 5 cables anyway.
- Somewhat less resilient - a broken connection cuts off the rest of the bus, not just a sub-tree.
- All sockets need to be plugged in, otherwise the bus gets broken. So if a node is removed, either its closest split needs to be removed as well, or it needs to be replaced by a stub that connects 3⬌5 and 4⬌6.
Is this a viable, or commonly used approach? Are there any potential pitfalls?