Communication Question

I'd pick between RS-485 and CANBUS. But I like a challenge.

RS-485 is only the physical layer. Even though examples abound, all of the protocol has to be developed. There is almost no driver work but lots of protocol work.

CANBUS provides a data-link layer (e.g. retries and error detection are provided by the CANBUS controller). I have not searched but I suspect good examples for Arduino / AVR are probably a bit hard to find. There is lots of driver work but not much protocol work.