Figura 1. Arduino Due conectada vía Serial1 a Pixhawk 4 |
Por una parte, la librería en C de MAVLink v2.0 no cuenta con una cabecera principal la cual importar en nuestro proyecto, como sí sucede en una muy usada adaptación de MAVLink v1.0 para Arduino disponible en el servidor de discusión de ArduPilot.
Para poder importar MAVLink v2.0 en C en nuestro proyecto usando directamente su cabecera principal (#include "mavlink.h"), y consecuentemente nuestro dialecto deseado, necesitamos incluir el siguiente archivo en la raíz de nuestra librería:
No basta con copiar y pegar la cabecera de la versión adaptada v1.0 en la v2.0, debido a que el macro MAVLINK_STX toma el valor 254, que corresponde con el marcador 0xFE que indica el comienzo de un paquete MAVLink v1.0. Por su parte, MAVLink v2.0, cuenta con el marcador 0xFD, que corresponde con el número 253. Más detalles en la documentación oficial.
Figura 2. Estructura de un paquete en MAVLink v2.0 |
Por último, es posible que tengamos problemas con el uso de la memoria, al menos si usamos una versión clon de Arduino Uno como lo es la Adeept Uno, o placas no muy capaces. La mejor solución es comprar una con más memoria o seguir usando la versión adaptada v1.0 que no genera este problema (al menos en mi caso).
Pasando de la Adeept Uno a los modelos Uno, Mega o Due (que son muchísimo más versátiles) no he tenido inconvenientes.
No hay comentarios:
Publicar un comentario