This is a great lead-in to the question I was planning on posing anyway. My inquiry is:
Assuming I get the contract I'm hoping for, in about a month I'll be designing a robotic device with several on-board processors, which will be connected by a network of some sort. I'm wondering if anyone has any suggestions for the network, before I roll-my-own YANP (yet another network protocol). Significant design criteria are:
- Multi-master protocol: I'd prefer not to use collision detect, although with a CAN-like priority scheme this might be OK. Alternatively, some sort of token-passing scheme might work. One of the processors will be acting as a watchdog to kick-start things if the packet gets lost. However, I'd like the ability to dynamically add/remove nodes while causing only a transient disturbance to the network.
- Relatively low data rates: 9600 baud *might* be barely enough, although I'd feel much more comfortable at about 10 times that rate. There may be video, but if so the image processing will occur at the camera processor, so only object information needs to go over the network.
- A variety of processors on the net, ranging from embedded-PC power all the way down to 8051-class devices. In general, code space probably won't be too much of a problem, but available RAM probably will be. For ease of writing/debugging, I'd prefer a fairly simple protocol.
- The physical layer will be a CAN bus, probably using the same MCP2551 transceivers that Wayne selected. This limits my minimum data rate to 16.5 kbps before the transceiver decides the node is sick and turns itself off. If possible, I'd like to use something based on 8-bit bytes, so that I can use the built in UART in the 8051s.
So, any ideas? I need open-source of some sort, since I'll be porting it to a variety of processors. Just a description of the protocol itself is enough, since I can code it myself (see "ease of wiring/debugging", above!).
-- Mark Moulding