Cómo fabricar un dron de bajo costo con ESP32
(digikey.com)- Un dron DIY basado en ESP32 permite implementar un dron WiFi pequeño controlado desde un smartphone con componentes económicos, y practicar control de drones, PCB y firmware en un solo proyecto
- El centro del diseño es una PCB integrada que incorpora USB Type-C, circuito de carga de batería, ESP32, USB-UART CP2102, MPU6050 y drivers de motor SI2302
- El firmware se basa en el firmware ESP-drone de Espressif, y se puede compilar directamente con ESP-IDF 4.4.5 o flashear el
ESPDrone.binproporcionado - Después de encenderlo, se conecta al hotspot WiFi que crea el dron con la contraseña
12345678, y se controla desde la app para iOS o Android - Si la batería no tiene suficiente capacidad de descarga, la conexión con la app puede cortarse o el dron puede reiniciarse al despegar, por lo que se necesita una batería con alta tasa de descarga, como la del ejemplo de 1300mAh 30C
Descripción general y funciones del proyecto
- Este proyecto consiste en fabricar directamente un dron WiFi controlado desde un smartphone usando un ESP32 y componentes periféricos
- Usa un módulo ESP32, una IMU MPU6050, motores coreless y hélices de plástico en una estructura pequeña y liviana
- Sus funciones principales son las siguientes
- Control por WiFi desde smartphone
- IMU MPU6050 para control de estabilidad
- PCB integrada que no requiere piezas impresas en 3D
- Posibilidad de agregar position hold o height hold mediante módulos externos
- Cargador de batería integrado
- Interfaz USB integrada para programación y depuración
- Compatibilidad con apps de Android e iOS
- Código abierto
Configuración del circuito
- El puerto USB Type-C se encarga tanto de la carga como de la programación
- El control de la ruta de alimentación usa el MOSFET P-Channel U2 y el diodo D1 para alternar entre la alimentación por USB y la batería
- La regulación de voltaje está a cargo del LDO MIC5219 de 3.3V de Microchip
- El controlador de carga TP4056 gestiona la carga de la batería, y la detección de voltaje se maneja con un circuito divisor de voltaje
- La unidad de control principal está compuesta por el SoC ESP32, el controlador USB-UART CP2102 y el chip IMU MPU6050
- El CP2102 y el MOSFET dual simplifican la función de reset del ESP32
- El MPU6050 se conecta a pines GPIO del ESP32 y se usa para la estabilización de vuelo y el control de movimiento
- El circuito driver de motores controla los motores con MOSFET SI2302 N-Channel, junto con diodos de protección y resistencias
- Los LED de depuración se usan para verificar el estado
- LED azul: calibración
- LED verde: detección de conexión
- LED rojo: batería baja
- También incluye indicadores de alimentación y carga
PCB y ensamblaje
- Para que el producto final sea pequeño y fácil de ensamblar, se usa una PCB personalizada
- Las patas del dron también están incluidas en la PCB y se pueden separar fácilmente de la PCB principal
- Las hélices A y B deben montarse respetando la orientación especificada
- Durante la autoprueba de encendido, hay que verificar que las hélices giren correctamente y en la dirección adecuada
Firmware y flasheo
- El firmware se basa en el firmware ESP-drone de Espressif, y se debe usar el código fuente de GitHub de Circuit Digest modificado para este diseño de PCB
- El código está escrito con ESP-IDF, y la versión usada para compilarlo es ESP-IDF 4.4.5
- Hay tres formas de aplicar el firmware
- Compilar el código fuente con ESP-IDF
- Instalar y configurar ESP-IDF 4.4.x
- Clonar el repositorio con
git clone https://github.com/Circuit-Digest/ESP-Drone.git - Ir a la carpeta
ESP-Drone/Firmware/esp-drone - Se puede cambiar la configuración con
idf.py menuconfig, aunque la configuración predeterminada es suficiente - Compilar y flashear con el comando
idf.py -p PORT flash
- Usar ESPTOOL
- Después de instalar ESP-IDF, ejecutar desde la carpeta de la imagen de firmware
- Flashear con el comando
esptool.py write_flash --flash_size detect 0x0 ESPDrone.bin
- Usar ESP32 Flash Download Tool
- Descargar y ejecutar la herramienta, y seleccionar ESP32 como tipo de chip
- Seleccionar el archivo
ESPDrone.biny configurar la dirección como0x00 - Seleccionar el puerto COM correcto, borrar y luego flashear con START
- Compilar el código fuente con ESP-IDF
Conexión con la app y control
- Al colocar el dron sobre una superficie plana y encenderlo, el controlador de vuelo crea un hotspot WiFi
- Desde el smartphone, conectarse con la contraseña
12345678y luego abrir la app para usarlo - La app de iOS se puede obtener buscando
ESP-Drone APPen App Store - La app de Android se puede obtener desde el enlace proporcionado; como la app fue creada y alojada por un tercero, el usuario debe decidir si la instala
- Al presionar el botón connect en la app, comienza la comunicación con el dron
- Si la conexión es exitosa, el LED del dron parpadea en verde
- El botón turn lock se usa para bloquear el controlador izquierdo de modo que solo use arriba/abajo, o para que use arriba/abajo/giro a la izquierda/giro a la derecha
- El stick izquierdo se encarga del despegue y el aterrizaje, y el stick derecho controla el movimiento
- Si la conexión de la app se corta o el dron se reinicia al despegar, puede que la batería no esté suministrando suficiente potencia
- La batería del ejemplo es 1300mAh 30C
- Se necesita una batería con una tasa de descarga más alta
Revisión previa al vuelo
- Colocar el dron con la cabeza hacia adelante y la parte de la cola, donde está la antena, hacia atrás
- Poner el dron sobre una superficie nivelada y encenderlo sin moverlo
- Después de establecer la comunicación, verificar que el LED de la cola del dron parpadee rápidamente en verde
- Si el LED rojo parpadea, indica batería baja, por lo que hay que cargarla
- Empujar ligeramente hacia adelante el control de aceleración para verificar que el dron responda al comando
- Comprobar con el controlador derecho que el control de dirección funcione correctamente
Componentes principales
- ESP32-WROOM-32E-H4: módulo RF TXRX BT/WiFi de Espressif Systems
- MPU-6050: IMU con acelerómetro y giroscopio de 3 ejes de TDK InvenSense
- CP2102N-A02-GQFN28R: puente USB-UART de Silicon Labs
- 2N7002DW-G: MOSFET dual N-Channel de onsemi
- MIC5219-3.3YM5-TR: regulador lineal de 3.3V 500mA de Microchip Technology
- AO3401: MOSFET P-Channel de Alpha & Omega Semiconductor
- SI2302DDS-T1-BE3: MOSFET N-Channel de Vishay Siliconix
- JS102011SAQN: interruptor deslizante SPDT de C&K
- 1N4148W: diodo estándar de Diotec Semiconductor
- SS34: diodo Schottky de 40V 3A de MDD
1 comentarios
Opiniones en Hacker News
Para quienes no estén familiarizados, ya existe un ecosistema de drones FPV bastante activo que puedes construir tú mismo.
Una configuración común combina una pequeña PCB cuadrada con un MCU de control de vuelo basado en STM32 y sensores, una PCB de drivers para motores, un marco de fibra de carbono, una PCB con módulo de radio LoRa, una cámara y un sistema de transmisión de video (analógico al estilo de cámaras de seguridad de los 90, o digital), motores DC sin escobillas y hélices, entre otros componentes.
El firmware puede ser Betaflight, ArduPilot, iNav, PX4, o incluso uno escrito por ti. El marco de PCB del artículo es prolijo y sin duda práctico, pero me pregunto si tendrá suficiente rigidez para lograr las características de control deseadas en situaciones de alta aceleración.
Para software de ESC están https://github.com/am32-firmware, https://github.com/mathiasvr/bluejay, y para controladores de vuelo están https://github.com/betaflight, https://github.com/ArduPilot, https://github.com/iNavFlight.
Para el enlace de control está https://github.com/ExpressLRS, que también usa chips ESP32/ESP82. Para radios de control está https://github.com/EdgeTX.
Hace apenas 5 años casi todo era tecnología propietaria y entrar al hobby costaba miles de dólares, pero hoy se puede empezar desde unos 500 dólares. En FPV, el gran gasto son las gafas, aunque unas gafas analógicas baratas se pueden conseguir por unos 100 dólares.
El software de control de vuelo ha mejorado de forma gradual y el subsistema de video en general pasó de analógico a digital en 2.4/5.8 GHz, pero la arquitectura general no es muy distinta de la de hace 5 años. Transmisores y receptores R/C de hobby pasan por un controlador de vuelo (normalmente STM32) y activan ESC de hobby mediante salidas PWM, y los ESC controlan los motores. Los ESC están basados en microcontroladores, así que se pueden reflashear, pero es engorroso y molesto. La telemetría suele estar separada del control, el control también está separado del video, todo es de corto alcance y no está basado en IP.
En cambio, los cuadricópteros comerciales listos para usar como los de DJI manejan control, video y telemetría entre la aeronave y el control remoto sobre un único backhaul, con una latencia de video sorprendentemente baja. Probablemente sea algo del estilo de chipsets tipo WiFi emitiendo tramas raw del proveedor, y el receptor tomando todo lo que pueda, en modo best-effort. Parece que algo similar podría hacerse con el modo ESP-NOW del ESP32. He visto intentos de ingeniería inversa del protocolo de DJI, pero no conozco una implementación totalmente compatible ni una alternativa equivalente en el mundo open source.
En la gama alta del ámbito comercial y propietario hay sistemas que incluso traen autonomía lista para usar, múltiples backhauls basados en IP (radio con/sin línea de vista, LTE, comunicaciones satelitales, etc.), integración con beacons de navegación para reducir la dependencia del GPS, motores/generadores híbridos y sistemas de alimentación redundantes.
No parece que esta brecha tenga que existir por otra razón que no sea el interés de los desarrolladores. Casi todos los componentes se consiguen, y una Raspberry Pi con un buen sistema operativo en tiempo real tiene mucha más capacidad de procesamiento que un STM32, suficiente para hacer fusión multisensor al estilo de sistemas comerciales. Los módems LTE también son baratos, y un hexacóptero o avión de ala fija más grande podría levantar incluso una antena pequeña de Starlink. Algo como “perching”, aterrizar sobre paneles solares para recargarse, también parece perfectamente posible.
Dicho eso, la vanguardia de los drones open source parece estar ocurriendo a puertas cerradas en Ucrania e Irán. Con gusto aceptaría correcciones si me perdí alguna tecnología nueva, pero la brecha entre “lo posible” y la práctica actual parece grande. Al mismo tiempo, eso significa que también hay muchas oportunidades.
Siempre me cuesta encontrar información sobre drones abiertos que vuelen como los DJI, y quizá ni siquiera sé bien qué debería buscar.
El hobby de los “modelos de aeronaves/vuelo por control remoto” también ha prosperado durante décadas, y solo ver sus categorías ya muestra lo abundante que es: https://www.rcgroups.com/forums/index.php
Si revisas en serio varios subforos, puedes encontrar diseños sorprendentes que rompen con la idea “normal” de cómo debería verse una aeronave desde una perspectiva común. Términos de búsqueda como Magnus, aerostat y Fettler son bastante buenos.
Me pregunto si esto no será que alguien resubió esp-drone de Espressif (https://github.com/espressif/esp-drone) y lo está presentando como propio. DigiKey terminó publicándolo en su sitio
Dicen que hicieron un PCB personalizado, pero se ve casi igual. El repositorio enlazado en el artículo (https://github.com/Circuit-Digest/ESP-Drone) también tiene un issue que dice que hay malware, y el historial de commits se ve un poco sospechoso. Podría estar equivocado
La mayor parte del repositorio son archivos de texto plano, y los zip y bin no parecen necesarios para compilar, así que si te incomodan, puedes borrarlos antes de compilar
https://www.bitcraze.io/products/old-products/crazyflie-2-0/
https://github.com/Circuit-Digest/ESP-Drone/blob/main/Firmwa...
Yo diría que es una violación de licencia. Se ve muy mal que DigiKey haya contratado a gente así
El timing de este artículo es perfecto. En EE. UU. está ocurriendo algo parecido a una histeria colectiva, y resulta que se pueden producir drones DIY por 12 o 13 dólares cada uno; qué época tan increíble
Como hoy en día hay gente que ve UFOs por todos lados, quizá incluso un dron barato sea demasiado: un paquete de 20 linternas chinas podría bastar para mantener aterrorizado a un barrio promedio de EE. UU. o para ver cuánto tarda en llegar a la portada de /r/UFOs
Está interesante. Antes hice un Crazyflie[1]; en ese entonces ni existía el ESP32, así que usábamos un protocolo personalizado de 2.4 GHz, y esto es una gran actualización frente a aquello
Usar un solo MOSFET de lado bajo como controlador de motor también lo vuelve más simple y barato, a cambio de renunciar a parte del comportamiento que ofrecen los motores BLDC. En conjunto, 10 a 15 dólares es un muy buen precio, y me pregunto si terminará en Hackerbox[2]. Es justo el tipo de cosa que ellos harían
Me divertí mucho con el microdrón CF, y definitivamente pienso armar uno de estos
[1] https://github.com/bitcraze/crazyflie-firmware
[2] https://hackerboxes.com/
Estoy investigando cómo convertir un iPhone viejo en un dron. Ya tiene buen hardware para encargarse de tareas de alto nivel, y las cosas más de tiempo real, como accionar los motores según las entradas de los sensores, se las puedes dejar a un ESP32
Incluso un iPhone 6 viejo tiene GPS, giroscopio, acelerómetro, varias cámaras, un procesador bastante potente, Bluetooth/WiFi/LTE, sonido y luces, sensores de luz ambiental y de proximidad. Si le quitas la carcasa, queda como una excelente minicomputadora capaz de percibir el entorno y comunicarse
En iPhones más recientes, con tecnologías avanzadas como ARKit, también podrías obtener comprensión espacial del dron y su entorno para construir un dron autónomo. Con un iPhone 15 incluso habría video espacial. Suena increíble
Ojalá Apple ofreciera una forma sencilla de liberar restricciones a nivel del sistema operativo para usar teléfonos viejos en proyectos DIY
Tal vez un teléfono viejo serviría mejor como control remoto
Si no quieres construirlo desde cero, puedes pagar un poco más y comprar un producto terminado programable: https://shop.m5stack.com/products/m5stamp-fly-with-m5stamps3...
La pila de software incluida es muy básica, y para aviónica open source puedes buscar entre los nerds japoneses de Twitter
Impresionante. Hasta el tren de aterrizaje (¿soportes?) forma parte del PCB. Sería genial que el autor vendiera kits o lo tercerizara a un lugar como Seeed Studio. Vivo en un país donde el envío de pedidos de DigiKey es bastante caro.
El autor estima el costo de la lista de materiales en poco menos de 13 dólares. A ese precio, sería divertido armar una flotilla para un show de luces con drones DIY.
[1] https://circuitdigest.com/microcontroller-projects/DIY-wifi-...
Pero, con proveedores que yo podría usar, una unidad parece estar más cerca de los 50 dólares, y 10 unidades rondarían los 150 dólares.
Aun así, parece que se podría reducir un poco el costo. El chip USB a serial cuesta casi 6 dólares, pero otro encapsulado sale 4.40 dólares por unidad, o 3.99 dólares cada uno comprando 10, y un chip alternativo que parece suficiente podría ser más barato. El regulador de voltaje elegido es de 500 mA y cuesta 1 dólar cada uno, mientras que el que yo suelo elegir es de 1000 mA y cuesta 0.22 dólares por unidad, bajando hasta 0.13 dólares cada uno si se compran 10.
Siento que no encaja muy bien por la cantidad limitada de núcleos disponibles.
Algo como el rp2350 estaría bueno, porque tiene un núcleo de I/O de ultra bajo consumo que puede funcionar tanto si el núcleo principal está encendido como si no. Los sistemas embebidos son una de las áreas donde el multinúcleo tiene más sentido, pero es rarísimo encontrar buenas arquitecturas de offloading y un sistema de Programmable IO que no sea pobre.
También vale la pena mencionar productos como GreenPAK de Silego/Dialog/Renesas. Son lógica programable de señal mixta muy pequeña pero interesante, con bastantes periféricos integrados.
En cambio, para este tipo de uso el coprocesador de ultra bajo consumo del ESP32 podría ser justo lo indicado, pero en la práctica no vale el esfuerzo. La potencia de cómputo es insignificante comparada con la energía que requieren el WiFi y los rotores, y ejecutar varias tareas en tiempo real en un solo núcleo tampoco es ciencia espacial.
Enviamos gente a la Luna con hardware más débil que eso. Más núcleos solo aumentan la complejidad.
Jugaba con un dron WiFi plegable de Lidl de 25 euros hasta que la UE empezó a exigir una tarifa anual de 30 euros para drones con cámara.
No se me ocurren muchos usos prácticos para un dron sin cámara. La pesca con mosca podría ser uno, pero habría que programarlo para que suelte la línea y vuelva en cuanto se sienta el tirón del pez.
https://www.iaa.ie/general-aviation/drones/drone-register
Si lo vuelas lo suficientemente rápido, en cuanto la línea se tensa se sale del clip y cae.
Es raro que sea un artículo de DigiKey y no tenga un botón de Buy now.
Si pudiera recibir todos los componentes y tuviera la certeza de que no olvidé nada, creo que lo intentaría de inmediato.
Pero un componente ya está descontinuado y no se consigue, y en dos casos la cantidad mínima de compra es mayor que la que se necesita aquí, así que no está tan bien.