Communication Between Arduinos in an NTCA

Hi Guys (and Ladies)

I'm busy with a project to monitor the engine of a NTCA (non type certified aircraft), perform a number of diagnostic operations (temperature, oil pressure, fuel flow, vibration levels etc) and transmit some of this data to another arduino which is the pilot interface consisting of a number of buttons, LED's and a display. I need to communicate between the two arduinos in a highly reliable manner (for obvious reasons) and over a distance oft least 20m (conservatively) and can't decide what method to use. At this point I'm using a Due for the motor monitor (need some serious processing power) and an Uno for the interface control but I will probably move to another Due for the pilot interface at a later stage because it can drive a decent sized LCD touch display quickly. I may also want to expand the system at a later stage to include a second engine and other sensing nodes.

Now the two methods I'm considering are:

  1. RS485 with a custom error checking library (there are a number available it seems) as the implementation appears to be very straightforward and this project has enough complexities to keep me busy for many months without reinventing the wheel. It will easily cover the distance and can run at 10Mbps

  2. AIRINC 825 CAN protocol & I can use the on-board can drivers of the Due & the development of the CAN library seems fairly advanced and will only get better. Also the use of CAN in aviation seems to be gaining serious traction because of it's robustness and error rejection. I have a CAN shield for the Uno so I'm not limited to buying another Due straight away but it does mean a considerable amount of work implementing the protocol and possibly writing a library.

Because it doesn't need certification I have a lot more freedom to play around but that's no reason to cut corners and the error checking and rejection on RS485 seems to be less of a priority than on CAN (both at a hardware and software level). Time is a constraint though and implementing a protocol from scratch is a daunting prospect.

I would appreciate anyone's thoughts on the matter and suggestions of possible alternatives. (offers of help would be very welcome too :grin:, I'm prepared to offer beer if you come to South Africa to fetch it)