SISTEMA OPERATIVO · ÚLT. ACTUALIZACIÓN: 16/07/2026
TFG · Ingeniería de Telecomunicación · UC3M

Drone-SAR
Diario de tareas

Registro cronológico del trabajo realizado en el desarrollo del sistema de búsqueda y rescate basado en UAV.

AUTORA: Nerea Gorostidi García NODO EDGE: Raspberry Pi 5 CLOUD: AWS EC2 · InfluxDB
Situación actual · 16 jul 2026

Dónde está el proyecto ahora

El proyecto tiene ya resuelta toda la base sobre la que se construirá el resto del sistema. Está cerrada la parte normativa —certificado de piloto A1/A3 y número de operador AESA— y el acceso a un espacio de vuelo seguro, gracias a la federación en el club Alas de Galapagar, cuya licencia de socio incluye el seguro obligatorio. He realizado además un primer vuelo de referencia, cuyo registro GPS me sirve para planificar misiones en simulación.

En el plano técnico, la infraestructura extremo a extremo está operativa: el nodo edge (Raspberry Pi 5 con el sensor ambiental BME680) publica sus lecturas por MQTT hacia el servidor en la nube (AWS EC2 con Mosquitto e InfluxDB), con almacenamiento intermedio local para no perder datos ante cortes de red. El dominio, los servidores web y la publicación del código en GitHub también están en marcha.

En cuanto al vuelo, he llevado el control autónomo de la simulación a la Raspberry Pi: la Pi comanda el dron simulado (Mission Planner + ArduPilot SITL) por MAVLink a través de la red. Sobre esa base he montado el control por MQTT —un publicador en el EC2 y un receptor en la Pi que traduce las órdenes a MAVLink— y una API REST con una página de botones para teleoperar el dron (armar, despegar, aterrizar, RTL, misión) desde el navegador.

Próximos pasos: montar el acceso HTTPS del panel de control, avanzar hacia el montaje del dron definitivo (chasis Tarot 650) y desplegar la detección de personas por visión artificial (YOLO sobre el acelerador Hailo-8L).

Hasta 11 julio
  • Índice de contenidos de la memoria planteado.
  • Lectura e investigación sobre la normativa. Certificado A1/A3 de AESA y número de operador obtenidos.
  • Investigación sobre dónde volar el dron y cómo pedir permisos: consulta a clubes de aeromodelismo (Majadahonda y Alas de Galapagar) por sus condiciones. Inscripción como socia en Alas de Galapagar, ya que no requiere pedir permisos a AESA y ofrece un lugar seguro y cómodo para volar cuando quiera.
  • Compra de la Raspberry Pi 5 y del primer sensor, el BME680 20,85 € — sensor ambiental que mide temperatura, humedad relativa, presión barométrica y resistencia de gas.
    • Conexión sensor – Raspberry configurada.
  • Instancia EC2 configurada en AWS ~4 $/mes (24 h):
    • AMI Ubuntu sobre t3.small.
    • Grupos de seguridad creados: puerto 1883 para la comunicación MQTT con el broker Mosquitto, puerto 22 para SSH y puerto 8086 para el acceso a la base de datos InfluxDB.
    • Instalación del servicio broker Mosquitto en la EC2 para la comunicación con el sensor.
    • Creación de IP elástica (sin ella la IP pública de la EC2 cambiaba al reiniciarse, obligando a modificar los scripts, peticiones HTTP…).
  • Publicación de datos (del sensor a la EC2):
    • La Raspberry Pi actúa como cliente publicador y en el servidor un segundo cliente actúa como suscriptor, recibiendo los mensajes y publicándolos en InfluxDB. Scripts creados: sensor.py en la Pi y mqtt_to_influx.py en la EC2.
    • Implementación de la arquitectura store-and-forward en sensor.py para que ningún dato se pierda ante una caída temporal de la conexión (cada lectura se almacena primero en una base de datos local SQLite, buffer.db).
  • Recepción y almacenamiento en el servidor:
    • mqtt_to_influx.py actúa como cliente suscriptor; se ejecuta en la EC2 dentro de un entorno virtual propio (env) con las librerías paho-mqtt (comunicación con el broker) e influxdb-client (escritura en la base de datos).
    • Cada lectura recibida se almacena en InfluxDB.
  • Almacenamiento en InfluxDB:
    • Abierta una entrada en el grupo de seguridad para el puerto 8086, de forma que se pueda acceder desde el navegador mediante la dirección pública de la EC2.
  • Configuración de servicios systemctl de Linux en la Pi y en el servidor, para que inicien sus procesos automáticamente en cada arranque sin intervención manual.
  • Publicación de los scripts en GitHub. Cada repo incluye README (documentación de uso), .gitignore (evita subir archivos sensibles o innecesarios), requirements.txt (dependencias reproducibles) y .env.example (plantilla de credenciales, que se mantienen fuera del repositorio).
  • Compra del dominio gorostiditfg.com en Cloudflare 10,41 $, para acceder a los servicios mediante subdominios legibles en vez de la IP del servidor.
  • Creación de dos páginas (HTML + CSS sencillo) que usaré más adelante: una para la presentación del proyecto y otra para el control del dron.
11 julio
  • Creación de servidores web:
    • Instalación del servidor web nginx y aprendizaje de la configuración de varios servidores virtuales web en la misma máquina.
    • Alta en el servidor DNS de Cloudflare de los nombres de host necesarios (ya puedo acceder a las páginas creadas con el dominio): www.gorostiditfg.com y control.gorostiditfg.com.
    • Configuración de nginx como reverse proxy para acceder a la interfaz de InfluxDB igual que a las demás webs: como usa el puerto 8086 en la petición HTTP, había que indicarlo y ya no es necesario especificarlo → influxdb.gorostiditfg.com.
  • Gestión de claves públicas / privadas:
    • Limpieza y ordenación de las claves públicas/privadas, que estaban mezcladas. Configuración del fichero .ssh en la EC2 para permitir el acceso con mi clave pública en lugar del .pem (habilitando esta otra forma editando el .ssh).
  • Mission Planner:
    • Configuración del simulador de vuelo Mission Planner. Vuelos de prueba en dos zonas distintas.
    • Desarrollo de un script en Python (con pymavlink) que se conecta al simulador vía MAVLink para enviar comandos de vuelo: armado/desarmado, despegue y modo AUTO para ejecutar misiones por waypoints. La conexión se establece mediante reenvío UDP de Mission Planner al puerto local 14550.
12 julio
  • Visita al club de Galapagar: recogida del carnet de socia y las llaves de acceso, y presentación con el presidente.
  • Contactos en el club:
    • Presidente: Darco.
    • Primer vuelo acompañada por José Manuel.
    • Contacto por correo: Paco (Francisco). También me presentan a otro socio con un DJI (me enseña su maletín) y a alguien con mucho conocimiento sobre baterías.
  • Me muestran en Mission Planner la zona por la que debo volar, y por qué aparece marcada en amarillo.
  • Primer vuelo real de un dron: uso de la cuenta de mi padre (instalación y configuración de la app DJI en mi móvil).
  • Me recomiendan comprar mejores adaptadores/cables para el dron (uno de carga más rápida).
  • Grabación de vídeos con el DJI en el primer vuelo. Los datos deberían quedar almacenados.
  • Importante: pegar en el dron mi número de operador.
13 julio
  • Investigación sobre la posibilidad de volar el dron en Comillas (Cantabria), con vistas a realizar un vuelo allí este fin de semana: consulta de la normativa y de las restricciones de la zona.
  • Configuración del dron en su aplicación y colocación física de mi propio número de operador sobre el dron, según exige la normativa.
  • Actualización y mejora de la página web del proyecto para dejarla presentable de cara al tutor.
    • Creación de la página del diario de tareas y de la página de operador.
    • Generación de un código QR que enlaza con la página de operador, para pegarlo en el dron: al escanearlo muestra los datos del operador.
  • Subida de los logs del primer vuelo a Airdata y a PhantomHelp Log Viewer para revisar y analizar los datos del vuelo.
  • Eliminación del puerto 8086 del grupo de seguridad de la EC2, ya innecesario: el acceso a la interfaz de InfluxDB se realiza ahora a través de nginx configurado como reverse proxy (influxdb.gorostiditfg.com), sin exponer el puerto directamente a internet.
  • Comunicación al tutor del avance del proyecto, compartiéndole la web para que pueda hacer el seguimiento del progreso a través del diario de tareas.
14 julio
  • He retomado el control del dron simulado desde Python (Mission Planner + ArduPilot SITL): Había un problema del armado (los pre-arm checks y el GPS del simulador) y he conseguido que vuelva a funcionar. He comprobado que efectivamente funcione el ciclo completo —armado, despegue y misión por waypoints en modo AUTO—, viendo el dron moverse en Mission Planner.
  • Pasar el control de vuelo a la Raspberry Pi, para que las órdenes salgan del nodo edge y no del PC:
    • Configuración de la conexión por red entre la Pi y Mission Planner, usando las IP reales de cada máquina en lugar de 127.0.0.1, el reenvío UDP y el puerto 14550.
    • Entender la lógica de quién envía y quién escucha (udpin/udpout) y por qué en MAVLink la Pi escucha mientras recibe la telemetría del autopiloto.
    • Conseguir que la Pi de órdenes al dron simulado por MAVLink a través de la red, validando así la arquitectura edge-first.
15 julio
  • Implementación del control del dron por MQTT, montando el patrón publicador–receptor:
    • Cración de un publicador (comandos.py, en el EC2) que envía las órdenes por MQTT, y de un receptor (receptor.py, en la Pi) que las traduce a MAVLink y las ejecuta sobre el dron simulado.
    • He empezado por argumentos como armar/desarmar para comprobar que funcione y después he añadido más: despegue, aterrizaje, RTL (volver a casa), mantener posición e iniciar misión.
  • Conversión del publicador en una API REST con Flask (api.py, en el EC2) para poder invocar los comandos por HTTP en lugar de por terminal, y para ello se ha abierto el puerto 5000 en el grupo de seguridad de AWS.
  • Modificación de la página de control web añadiendo botones para cada comando, que llama a esa API: control.gorostiditfg.com