Как уже говорили другие, SPI и I2C могут использоваться на больших расстояниях, если есть подтягивающие резисторы, тактовые частоты и так далее.
Основными альтернативами (которые дадут лучшую помехоустойчивость) являются RS485 и CAN . Оба из них используют дифференциальные линии для минимизации шумовых проблем и лучше подходят для такой длины передачи данных, чем I2C или SPI. Тем не менее, я не думаю, что многие (какие-либо?) AVR поставляются со встроенными периферийными устройствами CAN, которые значительно упрощают использование CAN.
Я бы сказал, что самое важное при выборе шины - это убедиться, что протокол, который вы используете для обмена данными между устройствами, содержит CRC или эквивалентный код, чтобы вы могли определить, было ли сообщение получено правильно (CAN имеет это как часть пакет). Учитывая это, также полезно иметь ответ типа ACK / NACK как часть протокола, так что поврежденное сообщение может быть повторно передано.