Como hacer un drone con Arduino, paso a paso (actualizado 2024)
En este blog os voy a enseñar cómo construir y programar vuestro propio drone con Arduino desde cero. Estudiaremos todos los conceptos necesarios en profundidad hasta llegar a ser capaces de construir y programar el drone paso a paso y sabiendo lo que estamos haciendo.
He dividido el blog en 10 apartados, que recomiendo leer en el mismo orden que os dejo. Cada apartado presenta un componente y expone como programar cada una de las partes más importantes de nuestros futuro drone.
Índice ‘Drone con Arduino’
- ⇒ Conceptos generales sobre drones
- ⇒ Material necesario y montaje de los componentes hardware
- ⇒ Mando RC y receptor. Programación en Arduino
- ⇒ MPU6050 y su programación en Arduino
- ⇒ Batería LiPo
- ⇒ Control de estabilidad y PID
- ⇒ Motores, ESC y su programación en Arduino
- ⇒ Calibración de hélices y motores
- ⇒ Software completo y esquema detallado
- ⇒ Probando el software completo antes de volar
- ⇒ Como leer variables de Arduino en Matlab
¡NUEVO curso de diseño PCB ! Controlador de vuelo para drones 100% Arduino
Ya disponible el nuevo curso de diseño de tarjetas electrónicas (PCB). A lo largo de las 52 lecciones que tiene el curso, aprenderemos a diseñar tarjetas electrónicas de acabado profesional utilizando el programa KiCad. Para llegar a este objetivo, vamos a diseñar desde 0 un PCB controlador de vuelo para drones basado 100% en Arduino, donde como punto final enviaremos el PCB a fabricar para recibirlo en casa completamente montado y listo para ser programado. Saldréis del curso siendo capaces de diseñar circuitos impresos complejos con la confianza necesaria, y con una base solida para poder seguir creciendo.
Más INFORMACIÓN sobre el CURSO
¿Por dónde empezar con Arduino?
En esta pequeña entrada os voy a dar una serie de recomendaciones claves para iniciaros en este mundo, para que lo hagáis motivados y no acabéis tirando la toalla, como muchas veces sucede.
Muy buen blog amigo… me sirvio de mucho.
Sigue así
Gran aporte!!
Gracias!
Gracias!
Buenos días,
Es compatible con ArduPilot?
Saludos
Buenas!! No, no es compatible.
Hola,
Muy buen trabajo!
Estoy mirando para empezar uno..
Una preguntilla, tienes intención de publicar las mejoras en el dron (barómetro, camara, etc..)?
Muchas gracias
Buenas Josep,
– El alcance del mando es de unos 300m sin obstáculos.
– Pues no sabría decirte, pero estoy casi seguro de que si. El drone despega con el throttle al 70% aprox por lo que admite una carga pequeña como una gopro.
Un saludo
Buenas Josep,
Si tengo pensado hacerlo. Lo que no se es cuando… todavía no creo que lo haga.
Aun no lo he probado del todo.
Un saludo
hola buenas, tengo que hacer un trabajo de la escuela y me sería de gran ayuda que subieses las mejorar de cámara y gps. Almenos la de la cámara. Me ayudarías mucho enserio. Grácias.
Buenas Sergi, de la cámara y GPS no tengo nada preparado. Lo siento.
Otra pregunta, cuanto dura la bateria del dron?
Si has usado una de la misma capacidad que yo, unos 15-20mins.
tengo una duda, ¿es normal que el receptor te mande valores diferentes a cero cuando aun nisiquiera has encendido el control? la verdad no estoy seguro pero creo que dañe el receptor y quiero saber si con el control apagado te manda valores en el programa de mando completo, ademas no se si influya pero estoy usando un arduino mega para probar o quisiera saber si existe alguna manera de saber si el receptor esta bien.
Actualmente con el arduino mega solo me esta leyendo pitch aparentemente y ningun otro pin me da lecturas, pero si conecto cualquier otro pin ahi mismo de los otros canales puedo leerlos, no he modificado el sketch e incluso ya probe con servos el receptor.
Buenas Marco. Con el receptor apagado que lees exactamente? un valor fijo o varía?
Hola tengo un frame de 450g y una bateria de 400g , crees que los motores los soporte ? , cual es el peso total de tu drone ?
El peso de mi drone la verdad que no lo he medido, pero creo que 450g de frame + 400g de batería me parece bastante elevado. Intenta buscar componentes de menor peso. En la entrada ‘Material necesario y montaje de los componentes hardware’ hay enlaces con los componentes que he utilizado yo.
Un saludo!
Buenas tardes, me parece muy interesante el blog. La verdad que es un trabajazo con el que voy a intentar construirlo. Se me ocurren muchas preguntas, pero la primera es si el drone cuenta con algún dispositivo para que cuando se aleje de los 300 m, que comentas que tiene tu mando, o se vaya a quedar sin batería, regrese a casa.
Saludos.
Gracias por los comentarios Daniel, se agradecen!! no, el drone que explico en este blog es bastante básico. Para ello habría que incorporar un módulo GPS y hacer un desarrollo a parte de lo que se explica aquí.
Pero ya sabes que todo es posible, puedes partir de esta base e ir sumando nuevas funciones.
Suerte !! 😉
Hola,
Los contacta Esteban desde Paraguay.
Ya hice el dron que Ud proponen en arduproject.es, pero le hice el agregado de un destornillador eléctrico que es activado desde arduino con un relé y un puente H, ya que pretendo ajustar algunas tuercas y/o tornillos en altura.
Si bien lo levanta y vuela, me estoy encontrando que el dron deja de ser preciso y no lo logro que los motores lo estabilicen en su posición, probablemente sea por el peso que le sumé (aprox 600 gramos).
Podrán ayudarme a hacer algún calculo para estabilizar el dron, calcular nuevos motores o balancear el peso dentro del diseño propuesto?
Gracias y te mando un gran abrazo!
Muy buenas Esteban… increíble lo del destornillador eléctrico jajajaj nunca se me habría ocurrido.
Necesito mas pistas.
Has probado sin el destornillador?? el drone es estable sin este destornillador??
Probablemente tengas que ajustar los parámetros de PID.
Un saludo
Buen día. Escribo desde Colombia, felicito por el aporte, la verdad me parece un proyecto muy interesante. En estos días, he comenzado armar mi propio dron con elementos similares, algo mas pequeño. Tengo una consulta, entiendo que desde el mando, el canal Throttle es para la aceleración (ascenso y descenso), yaw permite que el dron gire alrededor del centro, pitch controla el movimiento de adelante y atrás y Roll inclinación a un lado y al otro. En el video, observo que todos funcionan menos el canal yaw, no se si depronto fue que no lo probaste en ese instante de la grabación o depronto tuviste inconvenientes con este.
Agradezco la atención prestada y quedo atento
Muchas gracias
Buenos días Danny,
Efectivamente el canal Throttle es para la aceleración (ascenso y descenso), yaw permite que el dron gire alrededor del centro, pitch controla el movimiento de adelante y atrás y Roll inclinación a un lado y al otro.
El eje Yaw no se muestra en e vídeo tienes razón, pero funciona también. No lo grave por que no era mi objetivo tampoco ensañar todos los ejes.
🙂
Buenas.
Primero felicidades por el blog, soy nuevo con arduino pero tengo algo de experiencia en PIC, estoy haciendo proyectos con arduino UNO para familiarizarme. He empezado a comprar las piezas (que me llevara meses(precio)) , compile el programa y no me dio errores, agradecerte el curro que has hecho es impresionante y a los novatos nos lo pones fácil, decir que intentare comprender toda la programación y no solo copiarla, mil gracias.
Buenas Edu,
Gracias!! que bien que os esté ayudando.
Muchas suerte y ánimo!!!
Te felicito por este proyecto. Me parece interesantísimo. Yo dejé un proyecto de construcción de un dron precisamente por usar una APM. No tenía una forma sencilla de ver porque no funcionaba. Hay varias parte en conflicto. Los variadores ESC y la controladora, parece que no se ponen de acuerdo. Son dos controladores que tienen que dialogar entre ellos. Probé cambiando de vairadores y no tuve suerte. Seguramente la APM hace algo que no es del todo correcto. Parece que los variadores se dejan calibrar, pero no arrancan. Puede ser también problema de calibración del mando. Si tuviera más tiempo lo habría averiguado. Mi idea es hacer circuitos de prueba en Arduino que me sirvan para ir diagnosticandp el funcionamiento de los variadores de la salida de receptor, de la salida de la APM, etc. En Arduino sí tengo experiencia de programación. (Automatización de acuarios con Arduino)
En un proyecto como el tuyo tienes acceso al código y si algo no va bien, es más fácil hacer pruebas unitarias muy sencillitas y luego ir integrando todo aquello que sabes que funciona.
Lo dicho felicidades. Me ha encantado tu proyecto. Me da mucha envidia. 😉
Buenas Antonio!! Muchas gracias por el cumplido 😉
Me alegra que os sea útil. Tienes pensado retomar el proyecto del drone?
Muchas suerte!
buenas una consulta. ¿Es compatible con arduino UNO?
Buenas Jose!
Es compatible si.
Buenas Tardes, tengo un par de dudas.
Antes que nada felicitarte por tu proyecto.
Estoy usando un dispositivo ESP32 el cual es compatible con el IDE de Arduino, y me gustaría saber si es compatible.
La otra duda es sobre si en vez de por mando podría controlarse mediante WiFi.
Saludos,
Buenas Sergio,
Claro que es compatible, pero ten en cuenta que solo podrán volar en interiores o donde haya red WIFI.
Un saludo !
Buenas, gracias por tu respuesta!
ESP32 cuenta con un módulo WIFI, el cual pretendía realizar una conexión Dron-Smartphone a través de una aplicación, si es compatible, supongo que realizará la conexión sin problemas.
Gracias de nuevo!
Guillermo
Estoy intentando montar un drone y me preguntaba dos cosas respecto a los motores. Iba a usar unos A2212 KV2200 y no se exactamente que bateria deberia utilizar, ademas me preguntaba cuanto peso podrian devantar cuatro de estos motores para drones. Simplemente para saber cual es el peso maximo que deberia tener mi drone. Respecto a lo de la bateria me refiero a cuantos mAh deberia tener esta para que el drone volase unos 20min. como mínimo.
El drone lo haré con arduino siguiendo las pautas de este proyecto por supuesto, pero tengo que utilizar estos motores y me preguntba que batería me convendría.
Muchas gracias.
Buenas Guillermo,
Cuanto peso podrán levantar los motores no sabría como calcularlo, aunque seguro que si buscas en Internet encintarás la respuesta.
Para calcular el consumo utiliza el consumo de corriente de los motores, los demás componentes no consumen nada en comparación con los motores. Busca el consumo de tus motores (que dependerá de la consigna de throttle) y multiplícalo por 4. De ese consumo podrás hacer una estimación de tiempo de vuelo con diferentes baterías.
Un saludo
Muchas gracias por la ayuda pero ya llevo buscando por todo internet y no encuentro la consigna throttle. ¿Tiene algun otro nombre por el que pueda buscar? Si alguien concoe el throttle de un A2212 de 2200kv me iria bien saber que bateria necesito para estos cuatro motores y un tiempo de vuelo corto de 10 a 15min.
Muchas gracias por tu ayuda arduproject y si conoces otra manera de calcular que bateria necesito dependiendo del voltage y los amperios de los motores utilizdos, hazmelo saber por favor..
Un saludo
Buenas Guillermo,
No tienes que buscar nada relacionado con ‘throttle’, solo lo que consumen esos motores (20A, 30A.. lo que sea), y partiendo de ahí podrás seleccionar la batería adecuada. Con una batería de 4400mAh vas sobrado.
Un saludo
¿Se puede conectar una cámara?, si es así que tipo de cámara recomendarías, muchas gracias por el apoyo 🙌
Buenas!
Claro que se le puede añadir una cámara. Intenta que sea liviana. Las que mas se utilizan son la cámaras FPV.
Un saludo!
Buenas, muy interesante y muy buen trabajo, tengo interés de hacerlo pero a mayor escala, aumentando tamaños de motores, la estructura, etc. La idea es hacer un drone que pueda llegar a levantar 10kg. ¿Es posible partiendo de tu proyecto?.
Muchas Gracias.
Saludos.
Buenas Manuel,
10kg me parece mucho peso.
Partiendo de este proyecto conseguirás un drone en su versión mas básica. Con los motes, esc, frame… adecuados no debería haber problemas. Pero no puedo asegurarlo.
Si lo haces por afición puedes probar, si lo quieres para algo comercial, para algún trabajo, no partas de este blog, y recurre a drones comerciales.
Hola, quería preguntar como se juntan todos los programas en arduino para cargarlos. Soy novato en programación y no entiendo eso. Y otra cosa es que si es compatible el arduino mega para este proyecto
Buenas Alex,
No hay que hacer nada… estando todos en la misma carpeta, abres cualquiera y se abrirán todos en pestañas. Simplemente dale a ‘Subir’ y se cargarán todos.
Me refiero a por ejemplo el del mpu, con el de mando Rc y eso por si no lo había dejado claro. Si me pudieras explicar un poco te lo agradecería que tengo que entregar este proyecto para final de curso y la verdad me parece bastante complicado
Hola, Primero de todo felicitarte por tu proyecto suena interesante, mis respetos, te lo curraste mucho. Por otra parte, te quería preguntar cúantas horas aprox. has invertido en tener el Drone funcionando al 100% y cuánto dinero has invertido en piezas para el drone, sin contar las herramientas como el Soldador, Estaño, osciloscopio, multímetro, etc… GRACIAS de antemano!
Buenas!! La verdad que en horas han sido muchas. Cuando yo lo construí y programé no había ningún blog como este, tuve que hacer todo desde cero. Me costó año y medio, y lo hice con una Arduino Mega, pero no me quedo bien… había conexiones que no hacían buen contacto, y problemas de cableado… después comencé a investigar, y vi que con una Nano iba de sobra. Monte todo de nuevo, de forma mas robusta, mejoré el SW bastante también, y el resultado es el que veis.
🙂
Respecto al dinero… unos 100€ o 120€ según donde compres el material.
Disculpa ¿Que clase de cable utilizaste y cual es la herramienta con la que se ponen los conectores de bala?
Fuerza bruta jejejej utilicé unos alicates.
Un saludo
Hola, me gustaria saber si es posible controlar este tipo de drone a través de un smartphone, y si después se le pueden añadir más funciones como cámara, GPS y carga. Gracias
Hola, cuando entro a la pagina de materiales no me arroja ningún resultado, pensé que podría ser una problemática de origen, me podrías ayudar esto o en su defecto compartirme la lista de materiales.
Mil gracias.
Buenas, creo que el problema ya está solucionado. Un saludo y gracias por avisar.
Hola,
Muy interesante, me ha
ayudado mucho para aprender un poco más sobre arduino.
Sigan así.
😉 Gracias! me alegro
Perdona, pero tengo una pregunta. ¿El recpetor que utilizas en el proyecto es compatible con cualquier mando de drone barato, del estilo de los mandos de drone de juguete?
Buenas,
Sin modificar el software posiblemente no. No todos los mandos funcionan igual. Si controlas el código y lo entiendes, no tendrás problemas en usar cualquier tipo de transmisor. Hay gente que prefiere usar bluethooth a pesar de que tenga menor alcance.
Un saludo
Y utilizar un arduino Uno en vez de un arduino Nano no variaria el codigo en ningun aspecto verdad?
Muchas gracias.
Hola, me preguntaba si el receptor que utilizas en el proyecto es compatible con cualquier mando, del estilo de los típicos mandos de drones de juguetes.
Muchas gracias
Buenas,
Pues no veo por que no, aunque es posible que haya que hacer modificaciones de el código.
Un saludo
buenas, es compatible la librerías que se utilizan en todo el proyecto con el arduino nano pro?
Muye buenas,
No conozco el Nano Pro, pero no deberías tener ningún problema.
Un saludo
Buenos días, tu proyecto es genial, hasta ahora siguiendo tus pasos logré poner el dron en vuelo. Mil graciasss. Una consulta más, estuve pensando también colocar una cámara integrada para poder transmitir y recibir video, lo que me preocupa en este caso es que mi cámara es un OV7670, pero me preocupa que tiene 16 pines de salida, lo cual es demasiado para la placa Arduino uno. Hay alguna forma de reducir esa cantidad de pines?? Desde ya muchísimas gracias por tu tiempo.
Hola amigo, soy Juan de Uruguay.
Se que lo tuyo son los drones, tienes algo pensado para un simple avion estabilizado con MPU?
saludos
Esta diseñado para aguantar 1 a 2 kilos?
Hola! Primero que nada, muchas gracias. He podido aprender un monton con su artículo. Me gustaría expresar una duda. Estoy usando un ESP8266 como micro en vez del arduino, por que es mas pequeño, ligero y barato, y hasta el momento pude enlazar el MPU6050, medir la bateria y mandar pulsos PWM.
Estoy usando la libreria Adafruit_MPU6050 para leer los datos del sensor, y me devuelve ya en radianes/s la rtoacion del giroscopio y en m/s^2 los datos del acelerometro.
En Acc.Z estoy obteniendo como 9.4-9.5 y no los 9.81 que me enseñaron en la escuela, no se si sera correcto.
Sin embargo no estoy seguro de que lo que estoy recibiendo y graficando sea adecuado, y me gustaría que me dijera si lo es o no.
Basicamente giro la tableta de desarrollo y me detecta el movimiento, y en el potter se ve como se amplia la onda, pero si dejo inclinada la tableta durante unos momentos, la onda regresa a cero. Eso es correcto?
Por que me causa dudas, si se queda inclinado pues el dron estaria inclinado, pero imagino que al estar inclinado automaticamente seguiria teniendo aceleracion y giro, lo que lo obligaria a moverse hasta quedar en un punto estable, pero no estoy seguro de ello.
Por otro lado, estoy usando para el PWM la funcion analogWrite, que me permite generar el PWM de 0 a 1023 (https://randomnerdtutorials.com/esp8266-pwm-arduino-ide/) Y considerando que el ESP8266 soporta hasta 1kHz creo que si se puede obtener los 1 y 2 ms.
No me queda muy claro respecto al PWM que % del rango equivale a 1ms y cual a 2ms. Segun entiendo si la frecuencia es de 1kHz, el 100% del dutyCycle es encendido todo el tiempo, osea 1000ms, si le pongo 50% estaria prendido la mitad del ciclo, osea que estaria emitiendo pulsos de 1ms?
Gracias por todo y por sus respuestas.
Encontre la libreria Servo.h, que ya emite a 50Hz el PWM y probe usar la funcion writeMicroseconds enviando de 1000us a 2000us, lo medi con un multimetro para ver el dutycycle y me marca 5% y 10%, que segun entiendo corresponde a 1ms y 2ms, por lo que deberia de estar bien el PWM.
Segun esto usa timers del micro controlador, y basicamente no interrumpe al resto del programa, y se encarga de estar enviando los pulsos sin necesidad de correrlo. Lo unico es que cada write que hago consume algo de recursos, pero una vez que hago el write, si ya no mando nada nuevo, todo sigue funcionando bien y la frecuencia continua bien. Y al probarlo con los motores ya los mueve, giro la protoboard para el movimiento, y si me aumenta o disminuye la velocidad de giro 😀
Muy agradecido. Quiero pedirle su asesoría ya que usted es el indicado un maestro en esto.
Es posible que se pueda programar al drone para que ejecute ciertas funciones mediante GPS. Me explico lo que tengo en mente es que el drone pueda seguir un GPS en movimiento capturar fotos y retornar a su base de manera autónoma es eso posible? Le agradecería su respuesta y su conocimiento.
Me despido reiterando mis agradecimientos a toda la enseñanza impartida. Muchas gracia de verdad.
Muy buen articulo, me ha encantado el proyecto yo estoy consiguiendo los materiales para fabricar un prototipo de UAV