INSTITUTO TECNOLOGICO SUPERIOR DE ACAYUCAN
PROYECTO – DRON ESP32
PROGRAMACION AVANZADA
PROFESOR
HENRY IZQUIERDO RAMIREZ
- INGENIERIA MECATRONICA -
ALUMNO(S)
GRUPO 706 - A
ACAYUCAN, VER., 18 DE DICIEMBRE DEL 2025
INDICE
RESUMEN (ABSTRACT)................................................................................................3
INTRODUCCION.............................................................................................................4
PROBLEMÁTICA............................................................................................................ 5
JUSTIFICACION............................................................................................................. 6
OBJETIVO GENERAL Y ESPECIFICOS........................................................................7
ALCANCES Y LIMITACIONES........................................................................................8
MARCO TEORICO..........................................................................................................9
RESULTADOS.............................................................................................................. 10
REFERENCIAS BIBLIOGRAFICAS..............................................................................11
RESUMEN (ABSTRACT)
El presente proyecto consiste en el desarrollo de un dron multirrotor empleando un
Flight Controller (FC) comercial como núcleo del sistema de control de vuelo,
integrando sensores, actuadores y un sistema de alimentación adecuados para
garantizar estabilidad, maniobrabilidad y seguridad operativa. El enfoque del proyecto
se centra en la implementación práctica de conceptos de control, electrónica y
mecatrónica, optimizando recursos y reduciendo la complejidad del diseño mediante el
uso de hardware especializado existente. El desarrollo contempla el ensamblaje,
configuración, calibración y pruebas de vuelo del dron, evaluando su desempeño y
confiabilidad en condiciones controladas.
INTRODUCCION
Los vehículos aéreos no tripulados, comúnmente conocidos como drones, han
adquirido una relevancia significativa en diversos sectores como la industria, la
investigación, la vigilancia, la agricultura y la educación. Su capacidad para operar sin
piloto a bordo y ejecutar tareas de manera autónoma o semiautónoma los convierte en
una herramienta tecnológica de alto impacto.
En el ámbito académico, el desarrollo de un dron representa una plataforma ideal para
la aplicación de conocimientos de control automático, electrónica, programación y
sistemas embebidos. Este proyecto aborda el diseño e implementación de un dron
multirrotor utilizando un Flight Controller comercial, lo cual permite concentrar los
esfuerzos en la integración del sistema, el análisis de su comportamiento dinámico y la
comprensión del funcionamiento de los algoritmos de control de vuelo, evitando una
complejidad excesiva en el diseño desde cero.
PROBLEMÁTICA
El desarrollo de drones enfrenta limitaciones en accesibilidad, costo y flexibilidad de
control, debido a que los sistemas tradicionales dependen de controladores
comerciales con protocolos cerrados y mandos especializados. Esto dificulta la
personalización, la integración con dispositivos modernos (smartphones, IoT) y el
diseño de plataformas educativas o de investigación. Surge la necesidad de
implementar un dron que, utilizando un FC ya probado para garantizar la estabilidad de
vuelo, pueda ser controlado mediante un ESP32, lo que abre la posibilidad de añadir
comunicación inalámbrica, control remoto mediante Wi-Fi/Bluetooth, y funciones
personalizadas sin recurrir a equipos costosos o propietarios.
JUSTIFICACION
La realización de este proyecto se justifica por su alto valor académico y práctico, ya
que permite aplicar de manera integrada conocimientos de electrónica, control,
programación y sistemas mecánicos. El uso de un Flight Controller comercial reduce
riesgos técnicos, optimiza tiempos de desarrollo y garantiza un desempeño estable del
dron.
Además, el proyecto contribuye a la formación del estudiante al proporcionar una
comprensión profunda del funcionamiento interno de los sistemas de control de vuelo,
así como de los procesos de calibración, ajuste y pruebas experimentales. Asimismo,
el dron desarrollado puede servir como plataforma didáctica para futuras prácticas y
proyectos relacionados con robótica aérea.
OBJETIVO GENERAL Y ESPECIFICOS
Objetivo General
Desarrollar un dron funcional utilizando un controlador de vuelo existente para
garantizar la estabilidad, complementado con un módulo ESP32 encargado de la
comunicación inalámbrica y el control remoto, con el fin de obtener una plataforma
accesible, personalizable y orientada a aplicaciones educativas y de investigación.
Objetivos Específicos
1. Diseñar e implementar la integración entre el ESP32 y el flight controller
mediante protocolos de comunicación (UART, SBUS o MSP) para asegurar el
envío y recepción confiable de comandos y telemetría.
2. Configurar el flight controller con firmware especializado (Betaflight, INAV o
Ardupilot) que permita la estabilización automática y la correcta gestión de los
motores mediante ESC.
3. Desarrollar una interfaz de control inalámbrico (aplicación móvil o dashboard
en PC) que se conecte al ESP32 a través de Wi-Fi o Bluetooth.
4. Realizar pruebas de vuelo controladas para validar la estabilidad del dron y la
eficiencia de la comunicación ESP32–FC.
5. Evaluar el desempeño energético y de comunicación del sistema,
identificando limitaciones y posibles mejoras para aplicaciones futuras.
ALCANCES Y LIMITACIONES
Alcances
Ensamblaje completo del dron multirrotor.
Configuración básica del sistema de control de vuelo.
Pruebas de vuelo manual asistido.
Documentación del proceso de diseño e implementación.
Limitaciones
No se desarrollan algoritmos de control desde cero.
No se implementa navegación completamente autónoma.
Las pruebas se realizan en entornos controlados y de corta duración.
MARCO TEORICO
1. Vehículos aéreos no tripulados (UAV)
Un vehículo aéreo no tripulado (UAV) es una aeronave capaz de operar sin piloto a
bordo, ya sea mediante control remoto o de forma autónoma. Dentro de esta categoría,
los drones multirrotor destacan por su simplicidad mecánica, alta maniobrabilidad y
capacidad de despegue y aterrizaje vertical (VTOL), lo que los hace especialmente
adecuados para aplicaciones educativas y experimentales.
Los multirrotores más comunes son el cuadricóptero, hexacóptero y octocóptero. En
este proyecto se adopta una configuración multirrotor básica debido a su equilibrio
entre estabilidad, costo y facilidad de control.
2. Principio de funcionamiento de un dron multirrotor
El principio de funcionamiento de un dron multirrotor se basa en la generación de
fuerzas de empuje vertical mediante hélices accionadas por motores eléctricos. El
control de la actitud (roll, pitch y yaw) se logra variando la velocidad angular de cada
motor.
Tabla 1. Relación entre variación de velocidad y movimiento del dron
Movimiento Acción sobre los motores
Ascenso/Descenso Incremento o decremento uniforme de la velocidad de
todos los motores
Roll Diferencia de velocidad entre motores laterales
Pitch Diferencia de velocidad entre motores frontales y
traseros
Yaw Diferencia de par entre motores en sentido horario y
antihorario
Este método de control elimina la necesidad de superficies aerodinámicas móviles,
simplificando el diseño mecánico.
3. Flight Controller (Controlador de vuelo)
El Flight Controller (FC) es el núcleo del sistema de control del dron. Se trata de una
tarjeta electrónica basada en un microcontrolador de alto rendimiento que ejecuta
algoritmos de control en tiempo real. Su función principal es mantener la estabilidad del
dron y traducir las entradas del piloto o del sistema autónomo en señales de control
para los motores.
Un FC comercial integra los siguientes elementos:
Microcontrolador (STM32 u otros).
Sensores inerciales (IMU).
Interfaces de comunicación (UART, I2C, SPI).
Reguladores de voltaje y circuitos de protección.
El uso de un FC comercial permite garantizar estabilidad, reducir errores de diseño y
enfocarse en la integración del sistema.
4. Sensores utilizados en el control de vuelo
4.1 Unidad de Medición Inercial (IMU)
La IMU combina acelerómetros y giroscopios para medir aceleraciones lineales y
velocidades angulares. Estos sensores permiten estimar la orientación del dron en el
espacio.
4.2 Magnetómetro
El magnetómetro se utiliza para determinar la orientación respecto al norte magnético,
siendo fundamental para el control de yaw y navegación.
4.3 Barómetro (opcional)
Permite estimar la altura del dron mediante la medición de la presión atmosférica,
mejorando la estabilidad vertical.
Tabla 2. Sensores comunes en un Flight Controller
Sensor Variable medida Aplicación
Acelerómetro Aceleración Estimación de inclinación
Giroscopio Velocidad angular Estabilidad y control
Magnetómetro Campo magnético Orientación (yaw)
Barómetro Presión Control de altura
5. Fusión de sensores
La fusión de sensores es el proceso mediante el cual se combinan las lecturas de
múltiples sensores para obtener una estimación más precisa del estado del sistema.
En los drones, se emplean filtros como el filtro complementario y el filtro de Kalman.
El objetivo es reducir el ruido y compensar las limitaciones individuales de cada sensor,
logrando una estimación confiable de la orientación y posición del dron.
6. Algoritmos de control
El control de vuelo en drones multirrotor se basa principalmente en controladores PID
(Proporcional–Integral–Derivativo). Cada eje de movimiento (roll, pitch y yaw) cuenta
con un controlador independiente que actúa sobre la velocidad de los motores.
Tabla 3. Función de los términos PID
Termino Función
Proporcional (P) Corrige el error instantáneo
Integral (I) Elimina el error acumulado
Derivativo (D) Anticipa cambios rápidos
El ajuste de estos parámetros (PID tuning) es fundamental para evitar oscilaciones,
sobre impulsos o inestabilidad en el dron.
7. Actuadores: motores y ESC
Los motores brushless son los actuadores principales del dron y generan el empuje
necesario para el vuelo. El empuje aproximado producido por una hélice puede
expresarse de forma simplificada como:
Los Controladores Electrónicos de Velocidad (ESC) regulan la potencia suministrada a
los motores a partir de señales PWM o protocolos digitales, generadas por el
microcontrolador.
8. Sistema de alimentación
El sistema de alimentación del dron se basa en una batería LiPo debido a su alta
densidad energética. La autonomía del dron puede estimarse de forma aproximada
mediante:
t = C / Iprom
Donde:
t es el tiempo de vuelo.
C es la capacidad de la batería.
Iprom es la corriente promedio del sistema.
Una selección incorrecta de la batería puede provocar caídas de voltaje que afecten el
desempeño del microcontrolador y los sensores.
9. Arquitectura de hardware del dron
El prototipo desarrollado utiliza un microcontrolador ESP32 como unidad central de
procesamiento, encargado de ejecutar el software de control, adquirir datos de
sensores y generar las señales de control para los actuadores.
Tabla 4. Componentes principales de hardware
Componente Función
ESP32 Procesamiento y control principal
IMU Medición de orientación y aceleración
ESC Control de velocidad de motores
Motores brushless Generación de empuje
Batería LiPo Alimentación del sistema
10. Arquitectura de software
El software del dron se implementa sobre el ESP32 y se organiza de forma modular:
Adquisición de sensores (IMU vía I2C/SPI)
Procesamiento y fusión sensorial
Algoritmos de control PID
Generación de señales para ESC
Comunicación con estación de control
11. Programación del microcontrolador ESP32
El ESP32 se selecciona por su alto rendimiento, capacidad de procesamiento en
tiempo real y conectividad integrada. La programación se realiza en C/C++ usando
Arduino IDE o ESP-IDF.
Ciclo básico de control:
loop():
leer_sensores()
estimar_estado()
calcular_PID()
enviar_senales_motores()
12. Modelo dinámico simplificado del cuadricóptero
Para un cuadricóptero en configuración tipo X, el empuje total generado es la suma del
empuje individual de cada motor:
T_total = T1 + T2 + T3 + T4
Para lograr el vuelo estacionario (hover), el empuje total debe equilibrar el peso del
sistema:
T_total = m · g
Donde:
m es la masa total del dron.
g es la aceleración de la gravedad.
Los momentos de control alrededor de cada eje se generan mediante diferencias de
empuje:
Donde l es la distancia del motor al centro de masa y ω la velocidad angular de cada
motor.
13. Criterios de diseño del sistema
El diseño del prototipo se basó en los siguientes criterios:
Estabilidad: uso de control PID y fusión sensorial.
Modularidad: separación clara entre hardware y software.
Costo y disponibilidad: componentes comerciales accesibles.
Capacidad de procesamiento: selección del ESP32 por su doble núcleo y
periféricos.
14. Programación y lógica de control
El software del dron sigue una lógica de control cíclica en tiempo real.
Diagrama de flujo del software de control:
Inicio
|
Inicializar ESP32
|
Configurar sensores
|
Bucle principal
|
Leer IMU
|
Filtrar datos
|
Calcular PID
|
Enviar señales a ESC
|
Repetir
15. Asignación de pines del ESP32 (referencial)
Tabla 5. Asignación típica de pines
Función ESP32
I2C SDA GPIO 21
I2C SCL GPIO 22
Motor 1 GPIO 25
Motor 2 GPIO 26
Motor 3 GPIO 27
Motor 4 GPIO 14
16. Diagramas del sistema
Diagrama 1. Arquitectura general del sistema del cuadricóptero
Batería LiPo
|
Regulador / ESC
16. Diagramas del sistema
Diagrama 1. Arquitectura general del sistema del cuadricóptero
|
Motores (4)
^
|
ESP32
|
IMU (I2C)
|
Comunicación
Diagrama 2. Lazo de control del cuadricóptero
Referencia (piloto)
|
Control PID
|
Cuadricóptero
|
Sensores
+------> Retroalimentación
RESULTADOS
A continuación, se presenta una lista completa de hardware para construir el dron
cuadricóptero. El diseño está pensado para ser estable, programable con ESP32.
1. Parámetros generales del dron.
Parámetro Valor definido
Tipo Cuadricóptero
Peso objetivo (sin batería) ~900 g
Peso máximo al despegue (MTOW) ~1.2 kg
Tiempo de vuelo estimado 10–15 min
Diámetro de hélice 8–10 pulgadas
Tensión del sistema 11.1 V (3S LiPo)
Controlador principal ESP32
2. Lista completa de hardware.
2.1 Estructura mecánica.
Componente Especificación
Chasis Frame F450 (450 mm, fibra o plástico reforzado)
Brazos Integrados al frame
Tren de aterrizaje Tipo fijo, plástico o impreso en 3D
Tornillería M3 y M2.5 (acero o aluminio)
Soportes antivibración Para IMU/ESP32
2.2 Sistema de propulsión.
Componente Especificación
Motores (×4) Brushless 2212 – 920 KV
Hélices 9×4.5 pulgadas (2 CW + 2 CCW)
Empuje por motor ≥ 800 g
Empuje total ≥ 3.2 kg (factor de seguridad > 2.5)
2.3 Controladores de velocidad (ESC)
Componente Especificación
ESC (×4) 30 A, BLHeli o SimonK
Protocolo PWM o DShot
Voltaje Compatible con 3S LiPo
BEC 5 V / 3 A (uno activo, otros deshabilitados)
2.4 Control y procesamiento (núcleo del sistema)
Componente Especificación
Microcontrolador ESP32 Dev Module
Frecuencia 240 MHz
Comunicación I2C, UART, PWM
Montaje Con aislación de vibraciones
2.5 Sensores (IMU y navegación básica)
Sensor Modelo sugerido Función
IMU MPU6050 o ICM-20948 Acelerómetro + giroscopio
Magnetómetro HMC5883L (opcional) Orientación yaw
Barómetro BMP280 (opcional) Control de altura
GPS NEO-6M (opcional) Posicionamiento
2.6 Sistema de alimentación
Componente Especificación
Batería LiPo 3S (11.1 V)
Capacidad 2200–3000 mAh
Descarga ≥ 30 C
Conector XT60
PDB Power Distribution Board
Regulador Step-down 5 V / 3 A
2.7 Comunicación y control
Componente Especificación
Receptor RC 6–8 canales (SBUS/PPM)
Transmisor RC Compatible (FlySky, FrSky, etc.)
Telemetría UART / WiFi (ESP32)
Interruptor Corte general de energía
2.8 Seguridad y monitoreo
Componente Función
Buzzer Alarma de bajo voltaje
LED Indicador de estado
Sensor voltaje Monitoreo batería
Failsafe Programado en software
A continuación, se presenta el cálculo de corriente y autonomía, seguido del
diagrama eléctrico funcional del cuadricóptero.
1. Supuestos técnicos de diseño (base de cálculo)
Componentes clave definidos previamente:
Motores: Brushless 2212 – 920 KV
Hélices: 9×4.5
Batería: LiPo 3S (11.1 V), 2200–3000 mAh, 30 C
Peso total estimado (MTOW): 1.2 kg
Empuje máximo por motor: ≈ 800 g
Empuje total máximo: ≈ 3.2 kg
2. Cálculo de empuje en vuelo estacionario (hover)
Empuje necesario para hover:
Relación respecto al empuje máximo:
El dron vuela en hover usando ~40% de potencia → zona eficiente.
3. Consumo de corriente por motor
Datos típicos para motor 2212–920KV con hélice 9×4.5:
Condición Corriente por motor
Máxima potencia 18–20 A
Hover (~40%) 6–7 A
4. Corriente total del sistema
4.1 Motores
4.2 Electrónica auxiliar
Sistema Corriente
ESP32 0.25 A
IMU + sensores 0.10 A
Receptor RC 0.10 A
LEDs + buzzer 0.05 A
4.3 Corriente total en hover
5. Verificación de la batería (criterio C)
Para una batería 3S 2200 mAh – 30C:
Corriente requerida (26.5 A) << corriente máxima admisible (66 A)
La batería trabaja con amplio margen de seguridad.
6. Cálculo de autonomía de vuelo
Se usa solo el 80% de la batería (criterio de vida útil):
6.1 Batería 2200 mAh
6.2 Batería 3000 mAh
7. Diagrama eléctrico del cuadricóptero
7.1 Diagrama funcional general
┌─────────────┐
│ Batería │
│ LiPo 3S │
│ 11.1 V │
└──────┬──────┘
[XT60]
┌────────▼────────┐
│ PDB / Power │
│ Distribution │
└─────┬─────┬─────┘
│ │
┌─────▼┐ ┌─▼─────┐
│ ESC 1 │ │ ESC 2 │
└──┬────┘ └──┬────┘
│ │
Motor 1 Motor 2
┌─────▼┐ ┌─▼─────┐
│ ESC 3 │ │ ESC 4 │
└──┬────┘ └──┬────┘
│ │
Motor 3 Motor 4
7.2 Alimentación de control y sensores
PDB (11.1 V)
┌───▼───────────┐
│ Step-down 5 V │
└───┬───────────┘
┌───▼─────────┐
│ ESP32 │
└───┬─────┬───┘
│ │
IMU Receptor RC
7.3 Señales de control
ESP32
││││
│ │ │ └── PWM → ESC 4
│ │ └──── PWM → ESC 3
│ └────── PWM → ESC 2
└──────── PWM → ESC 1
1. Objetivo del control PID en un cuadricóptero
El controlador PID tiene como finalidad:
Mantener la estabilidad angular del dron
Corregir perturbaciones externas (viento, cambios de carga)
Seguir referencias de:
o Roll (φ)
o Pitch (θ)
o Yaw (ψ)
En un cuadricóptero, el control se realiza sobre velocidades angulares y ángulos, no
directamente sobre posición.
2. Variables del sistema
2.1 Variables controladas
Eje Variable
Roll φ (rad)
Pitch θ (rad)
Yaw ψ (rad)
2.2 Señales
Referencia:
Salida medida (IMU):
Error:
3. Estructura de control (arquitectura clásica)
Se emplea una estructura en cascada, estándar en drones.
Ángulo deseado
[ PID externo ]
↓ → velocidad angular deseada
[ PID interno ]
Mezclador de motores
Motores
Justificación:
El lazo interno es rápido (velocidades angulares).
El lazo externo es lento (ángulos).
Mejora estabilidad y respuesta.
4. Ecuaciones del controlador PID
4.1 Forma continua
4.2 Forma discreta (implementable en ESP32)
5. Control por eje
Se implementan 3 controladores PID independientes:
Eje Entrada Salida
Roll φ_ref − φ τ_roll
Pitch θ_ref − θ τ_pitch
Yaw ψ_ref − ψ τ_yaw
Las salidas son momentos de control, no PWM directos.
A continuación, se presenta la programación para el dron cuadricóptero usando
ESP32.
1. Arquitectura del software del dron
Módulos principales:
1. Lectura de sensores (IMU)
2. Fusión de sensores (ángulos)
3. Control PID (roll, pitch, yaw)
4. Mezclador de motores
5. Generación de PWM (ESC)
2. Librerías utilizadas (ESP32)
#include <Wire.h>
#include <ESP32Servo.h>
#include <MPU6050.h>
3. Definición de pines (ESP32)
#define MOTOR1_PIN 25
#define MOTOR2_PIN 26
#define MOTOR3_PIN 27
#define MOTOR4_PIN 14
4. Objetos y variables globales
MPU6050 imu;
Servo motor1, motor2, motor3, motor4;
// Ángulos
float roll, pitch, yaw;
// PID Roll
float kpR = 4.0, kiR = 0.02, kdR = 0.8;
float errR, prevErrR, intR;
// PID Pitch
float kpP = 4.0, kiP = 0.02, kdP = 0.8;
float errP, prevErrP, intP;
// PID Yaw
float kpY = 3.0, kiY = 0.01, kdY = 0.5;
float errY, prevErrY, intY;
// Tiempo
unsigned long prevTime;
float dt;
// Throttle base
int throttle = 1300;
5. Inicialización (setup())
void setup() {
[Link]();
[Link](115200);
[Link]();
[Link](MOTOR1_PIN);
[Link](MOTOR2_PIN);
[Link](MOTOR3_PIN);
[Link](MOTOR4_PIN);
[Link](1000);
[Link](1000);
[Link](1000);
[Link](1000);
delay(3000); // Armado ESCs
prevTime = millis();
}
6. Lectura de IMU y cálculo de ángulos
void readIMU() {
int16_t ax, ay, az, gx, gy, gz;
imu.getMotion6(&ax, &ay, &az, &gx, &gy, &gz);
roll = atan2(ay, az) * 57.2958;
pitch = atan2(-ax, sqrt(ay*ay + az*az)) * 57.2958;
yaw += gz * dt * 0.000131; // Integración simple
7. Función PID genérica
float PID(float ref, float val, float &prevErr, float &integral,
float kp, float ki, float kd) {
float error = ref - val;
integral += error * dt;
float derivative = (error - prevErr) / dt;
prevErr = error;
return kp * error + ki * integral + kd * derivative;
}
8. Mezclador de motores (Quad-X)
void mixMotors(float rollPID, float pitchPID, float yawPID) {
int m1 = throttle + rollPID + pitchPID + yawPID;
int m2 = throttle - rollPID + pitchPID - yawPID;
int m3 = throttle - rollPID - pitchPID + yawPID;
int m4 = throttle + rollPID - pitchPID - yawPID;
m1 = constrain(m1, 1000, 2000);
m2 = constrain(m2, 1000, 2000);
m3 = constrain(m3, 1000, 2000);
m4 = constrain(m4, 1000, 2000);
[Link](m1);
[Link](m2);
[Link](m3);
[Link](m4);
}
9. Lazo principal (loop())
void loop() {
unsigned long now = millis();
dt = (now - prevTime) / 1000.0;
prevTime = now;
readIMU();
float rollPID = PID(0, roll, prevErrR, intR, kpR, kiR, kdR);
float pitchPID = PID(0, pitch, prevErrP, intP, kpP, kiP, kdP);
float yawPID = PID(0, yaw, prevErrY, intY, kpY, kiY, kdY);
mixMotors(rollPID, pitchPID, yawPID);
}
DISEÑO Y ENSAMBLADO
PRUEBAS Y FUNCIONAMIENTO
REFERENCIAS BIBLIOGRAFICAS
Beard, R., & McLain, T. (2012). Small Unmanned Aircraft: Theory and Practice.
Princeton University Press.
ArduPilot Dev Team. (2023). ArduPilot Documentation.
Betaflight Developers. (2023). Betaflight Firmware Manual.
Bouabdallah, S. (2007). Design and Control of Quadrotors. EPFL.