CAN es definitivamente el camino a seguir. Hay muchos PIC que tienen un periférico CAN incorporado. La interfaz eléctrica y hasta la capa de paquetes, incluida la generación y comprobación de la suma de comprobación, está integrada en el hardware. El hardware también maneja la detección de colisiones y el reintento de transmisión. A 20 metros debería poder ejecutar el bus CAN a 1 Mbit / s, pero si la velocidad no es una prioridad, puede hacerlo con bastante seguridad a 500 kbits / s.
RS-485 es muy anticuado y te hace hacer mucho más en firmware. La especificación RS-485 solo le informa los niveles de señalización y le deja el resto a usted. Puede usar el hardware de UART para al menos enviar y recibir bytes completos, pero aún necesita hardware externo para cambiar explícitamente cada nodo entre transmisión y recepción, y luego un firmware que sepa cuándo cambiar. CAN puede parecer intimidante la primera vez que lee sobre el periférico en la hoja de datos, pero después de escribir todas las capas de protocolo para una interfaz de comunicación de múltiples nodos robusta , habrá gastado mucho más esfuerzo que usar CAN. Con CAN, usted envía y recibe paquetes completos que contienen una ID de 11 o 29 bits y hasta 8 bytes de datos. El hardware se encarga de enviarlos y recibirlos a nivel de paquetes, y no tiene que preocuparse por quién envía cuándo, maestro o esclavo, etc.
No escuches a las personas que se atascaron en la década de 1990 y siguen usando RS-485. Hay una mejor manera, y ha existido por un tiempo. Debe tener en cuenta que muchos de los protocolos principales que fueron RS-485 en el pleistoceno ahora tienen versiones más nuevas que usan CAN. Estos incluyen buses de comunicación automotriz y a bordo.