Configurar el software para extraer nuevos datos de sensores personalizados a través de MAVLink parece ser más difícil de lo que debería ser.
El primer paso es hacer que el quadcopter envíe los datos.
- Primero, debe definir un nuevo tipo de mensaje MAVLink usando XML en mavlink / message_definitions. Puede crear un nuevo entero sin usar para el message_id.
- En segundo lugar, genera las funciones de paquete / desempaquetado de mensajes utilizando el generador MAVLink.
- Luego deberá agregar código a ArduCopter / GCS_Mavlink.pde en data_stream_send para compilar y enviar su mensaje. Debe tener un poco de cuidado aquí, porque la dinámica de vuelo comienza a degradarse si las lecturas de su sensor detienen el bucle principal durante más de unos pocos milisegundos, especialmente para un pequeño quad o volar en interiores (de eso se trata el negocio "gcs_out_of_time" ) Agregaría un nuevo sensor al disparador STREAM_EXTRA3.
- Reconstruya y cargue el nuevo firmware de vuelo.
La otra mitad del proyecto está en la PC, donde necesita modificar el software de la estación terrestre para leer sus paquetes MAVLink fuera del flujo de telemetría. No tengo idea de dónde comenzarías a hacerle esto a Mission Planner, que parece un software realmente sofisticado. Pero afortunadamente, descarga la telemetría de radio sin procesar al "tlog" , por lo que es posible que pueda crear un programa completamente separado que busque su nuevo paquete MAVLink del tlog. (Ciertamente no quieres un Arduino Sketch para esto, ya que un Sketch se ejecuta en Arduino, no en la PC).
Si esto te suena intimidante, ¡no estás solo! Para nuestro quad interior, terminamos construyendo nuestro propio protocolo de comunicación por radio y "estación terrestre", ya que no podíamos usar GPS o puntos de referencia u otras funciones de MAVLink, y lidiar con la complejidad de MAVLink no valía para nosotros.