1 puntos por GN⁺ 2024-12-25 | 1 comentarios | Compartir por WhatsApp
  • 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.bin proporcionado
  • 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.bin y configurar la dirección como 0x00
      • Seleccionar el puerto COM correcto, borrar y luego flashear con START

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 12345678 y luego abrir la app para usarlo
  • La app de iOS se puede obtener buscando ESP-Drone APP en 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

 
GN⁺ 2024-12-25
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.

    • Gran parte de este ecosistema es open source.
      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.
    • En general es cierto, pero hay que ajustar las expectativas. Si no hay algún rincón del ecosistema open source que esté avanzando especialmente rápido, este parece estar bastante por detrás de las opciones comerciales propietarias.
      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.
    • ¿Qué debería hacer alguien que realmente es malo pilotando drones? Probé FPV por mi cuenta, pero nunca logré mejorar mucho; en cambio, disfruto muchísimo el DJI Mini.
      Siempre me cuesta encontrar información sobre drones abiertos que vuelen como los DJI, y quizá ni siquiera sé bien qué debería buscar.
    • Se menciona como ventaja que, al ser una PCB todo en uno, “no se necesitan cosas como piezas impresas en 3D”, pero aunque en casa puedo hacer impresión 3D y corte láser bastante bien, no tengo equipo para fabricar PCB y mi habilidad para soldar no pasa mucho de componentes through-hole.
    • Para complementar lo de que existe un ecosistema activo de drones FPV que uno puede construir, desde la perspectiva de quienes llevamos décadas haciendo aeronaves que en cualquier momento podían convertirse en drones, rcgroups.com ya era prácticamente el ecosistema al que había que acudir mucho antes de que los drones se volvieran tan populares.
      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

    • Es pura especulación, porque quien abrió el issue ni siquiera dice qué archivos están afectados, pero el problema del virus parece un falso positivo. El firmware precompilado incluido en el repositorio puede activar fácilmente los antivirus
      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
    • Ambos proyectos mencionan a Crazyflie como inspiración, así que la similitud podría venir de ahí
      https://www.bitcraze.io/products/old-products/crazyflie-2-0/
    • Sí, parece que tomaron tal cual código con copyright de esp-drone
      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í
    • Pensé que Espressif solo había escrito el firmware, pero incluyendo hasta los soportes del PCB, es realmente parecido a este dron publicado
  • 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

    • Por los posts que he visto, ya hay gente que empezó. Hace unos días alguien le puso velas romanas encendidas a un dron. O era eso, o eran alienígenas que respetaban las normas de la FAA; una de dos
    • La única forma de encubrir avistamientos reales es sembrar avistamientos falsos
    • Lo interesante y aterrador es que no es difícil convertir en armas estos drones. Podrían soltar explosivos caseros, moverse de forma totalmente autónoma y luego estrellarse en el agua. Todo por mucho menos que un arma de fuego
    • ¿A qué te refieres con histeria colectiva en EE. UU.? ¿Lo del globo meteorológico chino no fue hace unos años?
  • 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

    • ¿De verdad hace falta un teléfono? Un ESP32 de doble núcleo a 240 MHz también parece capaz de hacerlo con menos peso y consumo
      Tal vez un teléfono viejo serviría mejor como control remoto
    • Para este uso, realmente evitaría el hardware hecho por Apple. Mejor no desperdiciar tiempo de vida en eso
    • Aun así, no es un sistema operativo en tiempo real
  • 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

    • Sí, pero cuesta el triple y está agotado :(
  • 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-...

    • Como referencia, incluso haciendo solo 10 unidades, el precio de 13 dólares podría bajar bastante.
      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.

    • Llamar a la unidad PIO del RP2350 un “núcleo de I/O de bajo consumo” es bastante exagerado. Con muchos hacks, en teoría es Turing-completa, pero es realmente pésima para cualquier tipo de cálculo. Ni siquiera le encargaría calcular la paridad de una UART.
      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.
    • No se necesitan más núcleos. ArduPilot corre incluso en hardware mucho menos potente: https://ardupilot.org/copter/docs/common-autopilots.html#com...
      Enviamos gente a la Luna con hardware más débil que eso. Más núcleos solo aumentan la complejidad.
    • Para hacer funcionar un dron básico, con un RP2040 alcanza. Aprendí mucho con este proyecto: https://github.com/holsatus/holsatus-flight
  • 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.

    • La UE no exige una tarifa anual de 30 euros para drones con cámara. Tal vez tu país sí, pero el mío definitivamente no.
    • En Irlanda, hay que registrar los drones si pesan más de 250 g o si tienen cámara, y cuesta 38 euros por 2 años.
      https://www.iaa.ie/general-aviation/drones/drone-register
    • ¿Cuánto puede levantar un dron de 30 euros? Incluso una trucha de 600 g podría arrastrarlo fácilmente al agua, a menos que el dron tenga una potencia absurdamente sobredimensionada.
    • Lo hice con mi dron. Pegué un clip pequeño de papas, de apertura lateral, en la parte inferior del dron.
      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.

    • Al final hay un enlace pequeño que dice “Add all DigiKey Parts to Cart”.
      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.