Como organizar un proyecto Arduino en 4 pasos
En esta entrada vamos a analizar como llevar a cabo con éxito un proyecto con Arduino de forma eficiente y ordenada, sin morir en el intento. Durante estos años con esta plataforma he aprendido muchas cosas a base de prueba y error, cosas que si hubiese sabido desde el comienzo me habría ahorrado muchas horas de frustración (y de dinero). Para que os hagáis una idea, tuve que construir 2 drones completos hasta conseguir con el último fuera funcional, todo debido a una mala o nula planificación de las necesidades del proyecto. Todo esto hizo que el proyecto se alargara durante varios meses extra (casi un año completo), sin contar el sobre coste que supone construir 2 drones.
A la segunda va la vencida
El montaje del primer drone (Arduino Mega) fue tan desastroso que no me aclaraba ni yo de como había hecho el rutado de los cables y soldaduras, y cuando un motor fallaba no sabía que cable era el que correspondía a ese motor. Como veis en la imágenes, el cableado es un completo desastre. Ni siquiera utilicé conectores, y recurrí a los cables macho/macho que vienen con los kit de aprendizaje para hacer las conexiones, lo que resultó ser un completo desastre, ya que se soltaban con facilidad, y el drone acaba perdiendo el control:
Primera versión del drone, que fue un desastre.
En el segundo intento (Arduino Nano) hice unos esquemas bastante detallados, e identifique todos los componentes del hardware. Tras una planificación adecuada, cubrió las necesidades de este proyecto, dejando la puerta abierta a futuras ampliaciones.
Segundo intento tras planificar todo adecuadamente.
El objetivo de esta entrada es ver como planificar un proyecto con éxito, de forma que nos ahorre mucho tiempo y dinero (y frustraciones) en todos los proyectos que hagamos en el futuro. Voy a orientar la entrada a un proyecto como el que me llevó a lanzar este blog, construir un drone con Arduino desde cero.
Los pasos que recomiendo seguir siempre que comencemos con un nuevo proyectos son:
- Definir y acotar las necesidades del proyecto
- Definir el hardware
- Crear los esquemas
- Montaje del hardware y programación
Pasos que siempre deberíamos seguir
1. Definir y acotar las necesidades del proyecto
El primer punto es definir la idea qué queremos construir, y todo lo que vamos a querer que haga en el futuro. Un drone básico puede funcionar con un hardware mínimo, compuesto por 4 motores, un frame, una batería y un sensor MPU6050. Ahora bien, ¿que pasa si más adelante quiero añadir un control de altitud, un módulo bluethooth, o localización por GPS? hay que planificar todas estas cosas desde el comienzo, para al menos dejar espacio para posibles futuras ampliaciones.
El primer paso tiene que ser definir la idea de lo que queréis hacer y hacer una lista de las funcionalidades que queremos que tenga. Es verdad que cuando comenzamos con un proyecto y todo es nuevo no es fácil hacer una previsión de las necesidades que tendremos en el futuro, de ahí la importancia de una primera fase de investigación y planificación.
¿Que quiero que haga mi drone?
En el caso del drone, en la primera versión solo se incluye el control de estabilidad y control por mando radio control, pero en esta fase de diseño también hay contemplar las funcionalidades que quiero que tenga en el futuro:
- Control por mando radio control ⇒ en la fase inicial
- Control de estabilidad ⇒ en la fase inicial
- Control de altitud ⇒ en el futuro
- Conexión bluetooth para modificar parámetros de control ⇒ en el futuro
- Localización por GPS ⇒ en el futuro
- Telemetría en tiempo real drone-PC utilizando módulos de radio frecuencia ⇒ en el futuro
- Sensor de ultrasonidos para aterrizar de forma automática de forma autónoma ⇒ en el futuro
- Espacio para futuras funcionalidades.
Una cosa que me pasó al construir el drone presentado en este blog fue la siguiente, y es un claro ejemplo de falta de previsión, y de dedicar tiempo a planificar el proyecto:
Caso real de mala planificación
Para poder leer el mando radio control es necesario disponer de tantas entradas digitales con interrupciones hardware como canales tuviera el mando (si no sabéis de que estoy hablando, en la serie de como construir un drone con Arduino desde 0 están todos los detalles). En mi caso, al tener un mando de 4 canales, necesitaba una placa Arduino que me proporcionara 4 entradas digitales con interrupciones hardware. La placa Nano solo tiene 2 entradas de estas características, y no me servía, por lo que tuve que utilizar un Mega, que tiene 4. Esta placa es la mas grande la casa Arduino (y de las mas caras), pero tuve que utilizar esta placa por que necesitaba 4 entradas digitales con interrupciones hardware. Me sobraban la mayoría de las demás entradas y salidas digitales, y solo utilizaba un 20% de la capacidad de la placa, pero la necesitaba si o si para poder leer el mando.
Cuando tuve que reconstruir el drone por segunda vez, esta vez con una concienzuda planificaciones, dedique tiempo a investigar como poder ahorrarme 2 de las entradas digitales con interrupciones hardware que necesitaba, y así poder utilizar un Arduino Nano en vez del Mega que había montado en la versión anterior. Tras una búsqueda por la red, vi que existía una librería que convertía cualquier pin de la placa en una interrupción hardware, y así, con una búsqueda en google, conseguí ahorrarme el mamotreto que es el Mega.
Dedicar tiempo a definir las necesidades y a estudiar el concepto del diseño que queremos desarrollar pueden ahorrarnos mucho tiempo y dinero.
2. Definir el Hardware
El siguiente paso es hacer una selección preliminar de los componentes que vamos a necesitar. Este paso nos permitirá definir en el siguiente paso cuantas salidas/entradas necesitamos (¿nos sirve una Nano o tenemos que dar el salto a Mega?), que alimentación necesitamos (¿3.3Vo 5V?), que interfaz de comunicaciones utilizan los sensores (¿I2C o SPI?), cuantas entradas/ salidas necesitamos…
Para ello, siempre suelo hacer una tabla con todos los componentes electrónicos que necesito incluir, anotando que alimentación necesitan, y que pines de la placa Arduino hay que destinar a cada uno. De esta forma podemos seleccionar la placa Arduino que mejor nos venga.
Componentes | Alimentación | Pines Arduino |
4 x ESC + Motores | Desde batería | 4 x DO (digital output) |
1 x MPU6050 | 3.3V/5V | 1 x 3.3V/GND/SDA/SCL |
1 x Lectura batería | – | 1 x AI (analog input) |
4 x Leds | 5V | 4 x DO |
1 x LCD | 5V | 1 x 5V/GND/SDA/SCL |
… | … | … |
Una vez que la lista componentes ha a sido completada, suelo generar una hoja de excel donde copio una imagen de la placa Arduino que crea conveniente, y hago un esquema preliminar donde identifico qué entrada/salida utilizaré para cada sensor o componente. De esta forma garantizo que la placa seleccionada cubre las necesidades del proyecto, y me ahorro el mal trago que supone haber montado todo el drone, y ver que me he quedado sin suficientes salidas digitales y con componentes aun sin montar, lo que supondría comenzar de nuevo desde cero y con una placa mayor:
Esquema preliminar de entradas/salidas de la placa Arduino, indicando para que utilizaremos cada una de ellas.
No olvidéis contemplar también las necesidades que vuestro proyecto pudiera tener en un futuro. Como veis, en este caso apenas quedan pines disponibles. ¿Y si en un futuro quiero añadir alguna de las funcionalidades que hemos mostrado arriba, como GPS o telemetría en tiempo real? tendría que construir un nuevo drone con una placa mas grande, que es precisamente lo que me sucedió a mi cuando hice este proyecto hace cosa de 2 años.
3. Crear los esquemas eléctricos
Tenemos que hacer esquemas eléctricos de como vamos a hacer el rutado y la soldadura de los cables en todos los proyectos. Estos esquemas tienen que ser detallados al máximo posible. No vale con hacer unos esquemas eléctricos al uso, yo siempre recomiendo hacer esquemas donde pongamos todos los componentes a escala, y tracemos por donde vamos a llevar los cables a cada componente. Los esquemas tiene que ser un espejo de lo que vayamos a montar. No solo hay que definir bien el conexionado, si no por donde llevar los cables.
4. Montaje del hardware y programación
Una vez comprados los materiales, es hora de hacer las primeras comprobaciones. Nunca montéis todo el hardware de golpe, probar primero todo por separado con un protoboard de este estilo.
Utilizando el ejemplo del drone, podemos dividir todo el montaje en 3 grandes bloques, que deberían ser validados por separado antes de ensamblar todo el conjunto:
Para validar estos componentes por separado, tendremos que tener partes de software ya preparadas.
Únicamente cuando hayamos terminado la validación podemos hacer el montaje de todo el sistema, siguiendo los esquemas que hemos generado. Puede pasar que a la hora del montaje, con todo el material sobre la mesa, consideremos hacer alguna modificación respecto a los esquemas. Esto es bastante habitual, ya que al hacer los esquemas aun no habremos comprado el material, y al verlo in situ puede que se nos ocurra una forma mejor de hacer el montaje. Recordad que hay que mantener siempre los diagramas actualizados, cada modificación que hagamos tendrá que tener su versión de esquemas correspondiente.
Seguid siempre estos pasos
Estos son los 3 pasos que yo siempre llevo a cabo en cada proyecto, y considero que son lo mínimo en cuanto a planificar un proyecto. Al principio es normal no hacer nada de lo mencionado, pero a la larga, y a medida que la complejidad de los proyectos aumenta, esta labor se hace cada vez mas necesaria. Me lo agradeceréis 😉
Indice ‘Drone con Arduino desde cero’:
- 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.