Antes de decidirse por CAN, ¿realmente necesita este tipo de bus?
Responde estas preguntas:
1. ¿Tiene la capacidad electrónica (y el equipo) para depurar errores a nivel de bits en el nivel físico?
2. ¿Necesita múltiples suscriptores a los datos?
3. ¿Necesita velocidades de datos altas (más de 100 kbps)?
4. ¿Tiene que lidiar con un entorno EMC ‘ruidoso’?
5. ¿Está contento de desarrollar la especificación de todo lo que sucede por encima de los niveles 1 y 2 de la pila de capas OSI?
Si las respuestas a * todas * de estas preguntas son ‘sí’, entonces CAN * puede * ser la mejor opción para usted, siempre que pueda obtener sensores basados en CAN.
- ¿Cómo es útil el conocimiento de Arduino & Raspberry Pi para un estudiante de informática?
- ¿Qué es mejor para el aprendizaje automático de Arduino o Raspberry Pi?
- Cómo escribir un SO para una frambuesa PI 3 modelo B
- ¿Qué tipo de kits de microcontroladores recomendaría que donara a una escuela: Raspberry Pi o Arduino?
- Cómo leer los niveles de temperatura y enviarlos a una pantalla LCD sin un Arduino o Raspberry Pi
Si ha respondido no a dos o más de estas preguntas, utilizar un protocolo basado en USART puede ser una mejor opción para usted. Si ha respondido ‘no’ al número ‘1’ en particular, entonces puede ser mejor usar el cableado directo de sus sensores a su controlador.
También vale la pena señalar que el rPi no proporciona un transceptor CAN; tendrá que construir uno que venga en una placa separada (o crear una placa transceptora). Puede encontrar un enlace conveniente que explica sobre esto aquí: Acceda a la red interna de un vehículo utilizando una placa Raspberry Pi y CAN-Bus #piday #raspberrypi @Raspberry_Pi
En particular, CAN no especifica cómo se deben compartir los datos (recuerde, las capas 1 y 2 de OSI solo están cubiertas por la especificación del protocolo CAN); tendrá que definir cómo se convierte la señal física en una representación en el bus. Por ejemplo, teniendo en cuenta la temperatura, puede especificar que esto se transmita en el bus usando un flotante IEEE o doble (nota, esto es bastante ineficiente), o puede especificarlo usando un int sin signo de 16 bits (que deja otros 48 bits libres) en un marco para otros datos), y especifique una conversión con un desplazamiento de -40.0 y un factor de 0.01, que para fines de visualización cubrirá la mayoría de los casos (es decir, 0x0 en el bus corresponde a un valor físico de -40 ° C, y 0xFFFE corresponde a 615.34 ° C), este tipo de escala también le permitiría definir valores como 0xFFFF para representar ‘noValidData’ o ‘sensorFault’ y, por lo tanto, realizar algunos diagnósticos si / cuando las cosas salen mal.