Cuando queremos llevar a cabo un proyecto o prototipo con Arduino o cualquier otro hardware, debemos seguir un proceso. Este proceso nos guiará y ayudará a través de diferentes fases que debemos ir afrontando a lo largo de la creación de un prototipo.
Podemos dividirlo en tres grandes partes, la idea general, el prototipo mínimo y el diseño incremental. Cada una de ellas intenta sumergirnos dentro de nuestro proyecto para poder ir avanzando poco a poco.
Pero quizás lo más importante es poder ver resultados lo antes posible. Cuando estamos aprendiendo algo nuevo, es importante obtener resultados lo antes posible y esto es en lo que se basa el proceso del prototipado.
Indice de contenidos
El proceso que debe seguir nuestro prototipo con Arduino
Si hay una característica que cabe destacar dentro de Arduino es el prototipado. Todo dentro de la placa está pensado para que podamos hacer un prototipo lo más rápido y sencillo posible. Además, la facilidad de uso es una característica que nos acompañará en este proceso.
Todo esto junto con los cientos de sensores, shields y componentes alrededor de Arduino que nos facilitan esta tarea. Puedes conectar a Internet, mover motores, servos, sensores de todo tipo, Bluetooth, etc…, hará que avancemos muy rápidamente.
Pero claro, no estamos trabajando con una tecnología plug-and-play como un ratón o teclado USB. Cuando conectas un dispositivo de este tipo, solo te preocupas de encajar bien el USB y ya puedes utilizarlos. Con Arduino la cosa cambia.
Para que un componente o sensor funcione, requiere que lo programes en el código de Arduino. Por lo tanto, aunque las barreras de entrada a la programación de electrónica con Arduino estén muy bajas, es necesario esforzarse en aprender como hacer que todo funcione correctamente en tu prototipo.
La idea general del prototipo
Vamos a comenzar como comienzan los artistas, con un folio en blanco. Para ellos es la parte más complicada ya que en ese folio en blanco tienen que plasmar su obra ya sea literaria, escultura o pintura. Para nosotros, los Makers, es algo más sencillo porque tenemos en la cabeza cientos de ideas.
Esta es la parte más divertida de todo el proceso para conseguir un prototipo con Arduino. El material recomendado es lápiz y papel únicamente aunque podemos utilizar un ordenador para hacernos un esquema. Vamos a verlo con un ejemplo, una estación meteorológica.
No sé por qué, pero por lo menos en España vivimos obsesionados con el tiempo. Yo creo que por este motivo uno de los primeros proyectos que hacemos es una estación meteorológica :).
Así que vamos a ello, saca al Homer que llevas dentro y empieza a plasmar la idea general de tu proyecto. Esta parte la voy a dividir en 3 fases.
#1 Utiliza dibujos e imágenes y crea tu esquema general
Utiliza lápiz y papel, es la forma más sencilla y práctica de plasmar tu idea. Estas herramientas junto con tu imaginación, serán las armas más poderosas. Lo importante es ponerse en acción y, aunque antes te he mencionado que puedes utilizar un ordenador, necesitas ser ágil y avanzar rápido.
No pierdas el tiempo en buscar un software, un plugin o una extensión para Chrome que te permita dibujar en el ordenador. Todos sabemos coger un lápiz y pintar así que ¡¡¡ PONTE EN ACCIÓN YA MISMO !!!
Mi diseño de estación meteorológica es el siguiente. Es muy básico (con respecto al dibujo) y tiene todo lo deseable y alguna cosa más para que sea un proyecto Maker.
Buaaaa !!!!! me ha quedado genial jejejejeje. Se nota que no soy un buen dibujante :). Con esto terminamos esta fase y damos pié a la siguiente que es traducir este dibujo en palabras.
#2 Esquema general con palabras
Hasta ahora solo hemos plasmado un dibujo de nuestro proyecto. En grande he puesto el concepto o idea general «ESTACIÓN METEOROLÓGICA». Ahora tenemos que ir desmenuzando esa idea primitiva en sus diferentes partes.
El objetivo de esta fase es tener un listado de ideas que sacamos del dibujo del esquema general. Las primeras veces te costará algo más convertir el dibujo en palabras, pero según vas teniendo experiencia verás como resumirás mucho mejor el concepto de cada componente.
Manos a la obra y a empezar a escribir.
Objetivo de la estación meteorológica: medir variables meteorológicas.
- Microcontrolador: para conectar con los sensores y comunicarse con la nube.
- Sensor que mida la temperatura
- Sensor que mida la humedad
- Sensor que mida la presión atmosférica
- Sensor que mida la luminosidad
- Sensor que mida el ruido
- Sensor que mida el monóxido de carbono
- Sensor que mida el dióxido de nitrógeno
- Panel solar para alimentar el sistema
- Batería para almacenar energía para la noche
- Anemómetro para medir la velocidad y dirección del viento
- Pantalla para mostrar la información
- Plataforma en la nube para guardar histórico
- Aplicación web para ver la información en diferentes dispositivos
Ha sido sencillo, solo he tenido que coger componente por componente y describir que tiene que hacer. De momento no he puesto ninguna marca o modelo, en esta fase solo estamos plasmando las ideas.
Si más adelante, según vas avanzando en el proyecto, se te ocurre alguna mejora, no dudes en apuntarla en esta lista. Es importante seguir el proceso con cada nueva funcionalidad.
Con estos datos ya podemos centrarnos en las especificaciones y requerimientos. Todo esto lo vemos a continuación.
#3 Especificaciones y requerimientos del esquema general
Lo fundamental en esta fase es ir cogiendo cada miembro de la lista anterior y hacernos la pregunta ¿hay algún requerimiento especial que necesitemos para incorporar ese elemento a nuestro proyecto?
Vamos a ir viendo como plantear las especificaciones según el componente y los requerimientos. Como en la fase anterior, la experiencia es un grado. No te preocupes si al principio tardas más de lo debido y apuntas más cosas de las que se deberían apuntar.
Ideas | Requerimientos |
Microcontrolador: conexión a Internet | Al necesitar conexión a Internet necesitamos conexión con WiFi pero, ¿es necesario desde el primer momento? |
Temperatura | Dependerá de donde vivas. No es lo mismo medir la temperatura en Sevilla que en Estocolmo. El rango que debe medir es totalmente diferente. |
Humedad | Puedes usar un sensor específico para medir la humedad o uno combinado para medir temperatura y humedad a la vez. |
Presión atmosférica | Igual que en el caso anterior, ¿existe algún sensor que mida temperatura, humedad y presión? |
Luminosidad | Con una resistencia LDR te puede servir, dependerá de dónde vivas. |
Ruido | ¿En dónde vives? No es lo mismo vivir al lado de las vías de un tren que al lado de un parque. |
Monóxido de carbono | Sensor que sea capaz de medir este gas. |
Dióxido de nitrógeno | Sensor que sea capaz de medir este gas. |
Panel solar | ¿Vives en un sitio muy soleado o siempre está nublado? |
Batería | ¿Qué consumo necesita el sistema?¿Soporta la alimentación con baterías? ¿Voltaje de operación? |
Anemómetro | ¿Es útil esta información donde vives?¿No vivirás en Tarifa o algún otro sitio donde hace mucho viento? |
Pantalla información | ¿Qué información hay que mostrar? Temperatura, humedad, presión, decibelios, contaminación, nivel de batería, velocidad del viento, etc…. Dependerá elegir una pantalla u otra de la información que quieras mostrar. |
Plataforma en la nube | ¿Realmente es útil para ti almacenar la información?¿toda la información? |
Aplicación web | Debe ser responsive para que se vea en todos los dispositivos. |
Es importante plantearte dudas y preguntas con respecto a los componentes. Esta es la fase previa antes de elegir un componente u otro para el proyecto. El sensor, placa o dispositivo elegido debe cumplir con las especificaciones y requerimientos.
No te cortes a la hora de apuntar cosas, estoy seguro que a ti te surgen muchas más dudas. Siempre hay tiempo de volver atrás y plantear cosas nuevas o eliminar cosas que ya hayas puesto.
Con todo esto, ya tenemos una base por donde empezar a crear nuestro prototipo con Arduino mínimo.
Prototipo con Arduino mínimo, rápido y económico
Bien, ya tenemos un punto de partida. Hemos plasmado sobre un papel la idea general y hemos dado un repaso por las características que debemos tener en cuenta en el sistema. En esta fase del proceso del prototipo con Arduino vamos determinar la solución mínima.
No me cansaré de repetirlo, DEBES PONERTE EN ACCIÓN. Tienes que ser rápido y ágil. Para conseguir esto debes buscar la esencia, la idea principal del proyecto. Recuerda que estás aprendiendo y cuanto antes funcionen las cosas, más aprenderás.
Céntrate en la idea principal
Ahora vamos a ir hacia atrás, a esa lista de ideas que hemos plasmado en la lección anterior. En ella identificaremos la idea o ideas principales. Si lo que quieres construir es una estación meteorológica, céntrate en ello y olvida todo lo demás.
Ya tendrás tiempo de añadir nuevas funcionalidades pero por ahora, necesitas obtener un prototipo con Arduino mínimo lo más rápido y económico posible. En la lista de ideas tacha todo lo que se sale fuera de la idea principal.
- Microcontrolador: para conectar con los sensores y comunicarse con la nube.
- Sensor que mida la temperatura
- Sensor que mida la humedad
Sensor que mida la presión atmosféricaSensor que mida la luminosidadSensor que mida el ruidoSensor que mida el monóxido de carbonoSensor que mida el dióxido de nitrógenoPanel solar para alimentar el sistemaBatería para almacenar energía para la nocheAnemómetro para medir la velocidad y dirección del vientoPantalla para mostrar la informaciónPlataforma en la nube para guardar históricoAplicación web para ver la información en diferentes dispositivos
Como ves, he tachado prácticamente todo. He dejado solo el microcontrolador, el sensor de temperatura y el de humedad. Incluso podría haber tachado el de humedad lo que pasa que aquí la experiencia es un punto a mi favor.
Gracias a que ya me he peleado con el DHT11, se que con un único sensor puedo medir las dos magnitudes. Esto implica que, aunque tenga que hacer algo más de trabajo en la programación, no supondrá un retraso excesivo ni aumentará mucho el coste en el prototipo mínimo.
Respecto al microcontrolador hay que tomar una decisión. El factor determinante para elegir una placa de prototipado u otra, dependerá de si ya dispones de una o no. Veamos mi caso por ejemplo. Yo tengo un Arduino UNO, un NodeMCU (basado en el ESP8266) y un Arduino MKR1000.
Analizando la situación puedo optar por varias opciones. Por un lado, puedo olvidar la idea de conectar la estación meteorológica a Internet (por el momento) y utilizar un Arduino UNO, sin conexión a la red. Sería una buena opción sin embargo, esto supondría que si en un futuro quiero mandar información a la nube tendría que cambiar la placa.
Elegir el NodeMCU también es una opción. Si en tu caso solo dispones de un Arduino UNO, da lo mismo que no tengas conexión a Internet ya que el objetivo es crear un prototipo lo más rápido y económico posible.
Lo que quiero que veas es que muchas veces perdemos el foco debido a que no tenemos los materiales necesarios para resolver el problema en su totalidad. Pero esta fase lo que pretende es que te olvides de eso y trabajes con lo que tienes.
Si la idea principal es un dispositivo que mida la temperatura y la humedad, ¿dónde está escrito que se debe conectar a Internet? Eso sería una funcionalidad extra que cuando llegue el momento, deberás afrontar.
Sin embargo, si tienes una placa con WiFi como el Arduino MKR1000, como es mi caso, podrías utilizarla y así ya te estás adelantando a lo que vendrá en el futuro.
Te he hablado del prototipo con Arduino rápido y económico pero ¿de dónde viene esto?
El triángulo del proyecto
En las obras y proyectos de ingeniería, es muy común encontrarse el triángulo del proyecto. Este esquema nos muestra las diferentes formas de cómo te puedes enfrentar a la realización de un proyecto.
En la fase de crear un prototipo con Arduino mínimo tenemos que ser rápidos y económicos. Dentro del triángulo deberíamos estar en la esquina superior donde el coste es bajo y la velocidad rápida. En la medida de lo posible tenemos que evitar deslizarnos por los bordes.
Esto supondría o que se aumentaría el coste o que tardaríamos mucho en realizar el proyecto. Ninguna de estas dos características nos interesan en este momento.
Ten siempre presente este triángulo y piensa cuales son las consecuencias antes de actuar.
¿Por dónde empezamos?
Esta es la pregunta del millón. ¿Por dónde empezar, por lo fácil, por lo difícil o da lo mismo?
El objetivo es ver resultados lo antes posible y por lo tanto mi consejo es empezar por lo más fácil. En este caso no tenemos mucho donde elegir pero, ¿qué sucedería si eliges un Arduino MKR1000 y no un UNO?
Imagínate que puedes elegir entre utilizar un Arduino UNO o un Arduino MKR1000. Si tus conocimientos con el Arduino MKR1000 son extensos, adelante empieza con esta placa. No tendrás que perder el tiempo en investigar y configurar este dispositivo.
Sin embargo, si tus conocimientos son escasos o nulos, empieza con el Arduino UNO. Hay que eliminar todas las dependencias posibles y evitar deslizarnos por cualquiera de los lados del triángulo del proyecto.
Creando el prototipo mínimo a través del diseño incremental
Ya hemos avanzado mucho en las dos fases anteriores. Hemos diseñado nuestro esquema general, obtenido las características del proyecto y hemos filtrado para empezar con algo sencillo que nos permita tener un prototipo con Arduino rápido y económico.
Ya es hora de ponernos manos a la obra. Hasta ahora podemos decir que hemos estado haciendo trabajo de oficina y ahora tenemos que bajar al taller. Pero antes de coger las herramientas, tenemos que trazar un plan.
En eso consiste el diseño incremental, en detallar una ruta bien estructurada hasta el prototipo con Arduino mínimo. La base de esta fase del proceso de prototipado es divide y vencerás.
Escribir el algoritmo
Empezar a escribir el algoritmo es una de las mejores ideas que puedes tener. Antes de continuar ¿sabes lo que significa algoritmo? Seguramente hayas hecho cientos o miles de algoritmos sin darte cuenta.
¿Qué es un algoritmo?
Un algoritmo es una secuencia de pasos ordenados y bien estructurados que tiene como objetivo dar solución a un problema. ¿Cuántas veces has quitado el lavavajillas de tu casa o puesto el horno para hacer una pizza? Pues para hacer esas tareas necesitas tener un algoritmo.
Lo más común es que no nos demos cuenta de lo que hacemos pero si te paras a pensar, aplicamos técnicas complejas de ordenación y optimización.
No se tu, pero yo cuando quito el lavavajillas de mi casa hago lo siguiente:
- Abro el lavavajillas
- Saco la parte de inferior de los platos
- Abro el armario de los platos
- Según el orden en el que estén colocados en el armario
- Coloco los platos llanos granes
- Coloco los platos llanos pequeños
- Coloco los platos hondos
- Saco todos los táper encima de la mesa
- Compruebo que están secos
- Si no lo están los seco
- Saco los cubiertos
- Tenedores
- Cucharas
- Cuchillos
- Saco la parte superior de los vasos
- Abro armario de vasos
- Saco primero los que están al fondo
- Luego ordenadamente hacia afuera
- Luego saco las tazas
Como puedes comprobar, se trata de una secuencia de pasos ordenada, bien estructurada y que resuelve el problema de colocar la vajilla que está en un lavavajillas. ¿Te imaginas hacerlo de forma desordenada? Sacas un plato llano, luego un vaso, luego plato hondo, luego un cuchillo, luego una taza, etc….
El coste en tiempo (equivale al coste computacional en el código del proyecto) sería muy alto. Necesitamos imperiosamente poner orden en las tareas repetitivas de nuestra vida. Eso lo conseguimos a través de los algoritmos.
En la programación de electrónica pasa exactamente lo mismo. La diferencia es que seguramente no estés acostumbrado pero la práctica hará que se convierta en un hábito saludable para tus proyectos. Verás como con el tiempo es algo natural a la hora de plantear tu prototipo con Arduino.
El algoritmo de la estación meteorológica
Es evidente que lo que hemos visto antes lo hacemos de forma inconsciente. La cuestión ahora es trasladar esos conocimientos a nuestros proyectos. Nos movemos en otro terreno, en un mundo virtual que no conocemos, pero tenemos las habilidades innatas que nos da la vida misma.
Plasma tu algoritmo de la estación meteorológica y luego lo puedes comparar con el que yo planteo. Seguro que hay diferencias pero el resultado tiene que ser el mismo.
- Configurar placa
- Configurar sensores
- Leer temperatura
- Obtener X medidas temperatura
- Promediar temperatura
- Mostrar temperatura
- Leer humedad
- Obtener X medidas humedad
- Promediar humedad
- Mostrar humedad
Sencillo ¿no? ¿cómo has hecho tu algoritmo? Me gustaría que lo compartieras en los comentarios de este artículo, no te cortes y que no te de vergüenza, todos hemos tenido que empezar alguna vez.
Investiga el software y el hardware que vas a utilizar
Hasta ahora lo que hemos hecho es plasmar ideas, requerimientos y funcionalidades. Todavía no hemos visto ningún componente bueno sí, te he hablado de un sensor y de la placa de prototipado :)
En esta parte del proceso donde estamos construyendo un prototipo con Arduino, debemos investigar tanto a nivel de software como de hardware los componentes que vamos a utilizar. Un buen punto de partida son las hojas de características técnicas de los componentes. Estos documentos describen al detalle el componente y se obtiene casi toda la información.
Por ejemplo, te debes plantear las siguientes preguntas con respecto al sensor de temperatura y humedad:
- ¿Cómo funciona a nivel eléctrico?
- ¿Qué alimentación soporta (voltios y amperios)?
- ¿Con la placa que has elegido puedes alimentar el sensor?
- ¿Necesitas alguna librería externa?
- ¿Cómo se comunica con la placa de Arduino? ¿Qué protocolo I2C, pin digital, pin analógico?
- ¿Cuál es el rango de temperatura?
- ¿Cuál es el rango de humedad?
Todo esto son reglas no escritas que debemos coger con pinzas. Ya te comenté que dependerá del material que tengas a tu disposición, si tienes un sensor de temperatura y no de humedad, utiliza solo el de temperatura. Crea tu prototipo con Arduino mínimo rápido y económico.
Cuando llegues a esta parte, tienes que tener más o menos claro que componentes vas a utilizar para investigarlos. Una vez lo tengas claro, deberás escribir el pseudocódigo, ahora te explico que narices es esto.
Pasar tu algoritmo a pseudocódigo
El pseudocódigo es el paso intermedio entre el algoritmo y el lenguaje de programación. Escribir esta parte depende mucho de tus conocimientos en programación. Si estás empezando es muy recomendable hacer este proceso ya que te permite ordenar el algoritmo según la estructura lógica de un programa o software.
En la medida de lo posible utiliza sentencias del lenguaje nativo de Arduino. En un lenguaje de programación de alto nivel las sentencias describen lo que hacen, por lo tanto es algo natural y que entendemos todos. El gran inconveniente es el inglés ya que todos los lenguajes de programación tienen como lengua materna este idioma.
Por ejemplo, cuando queremos poner un pin digital en modo salida o entrada se utiliza la sentencia pinMode. Como puedes comprobar, la propia sentencia te dice lo que hace, poner el modo del pin.
Aunque hay ciertas reglas a la hora de escribir el pseudocódigo, no deja de ser algo personal que nos facilitará la tarea de programar nuestro algoritmo.
Cuando vayas cogiendo experiencia en muchas ocasiones te saltarás este paso y pasarás del algoritmo al código. Así es como lo hago yo en casi todos los proyectos. En esta ocasión vamos a ver cómo tendríamos que hacerlo.
Incluir librería DHT
Definir pin DHT11
Definir tipo DHT
función setup
Iniciar comunicación serie
Iniciar sensor DHT
fin setup
función loop
repetir 10 veces
obtener temperatura
acumular temperatura
fin repetir
obtener media temperatura
repetir 10 veces
obtener humedad
acumular humedad
fin repetir
obtener media humedad
mostrar temperatura
mostrar humedad
fin loop
Esto sería un posible pseudocodigo del algoritmo descrito con anterioridad. De momento no he querido poner las sentencias del código nativo del Arduino.
Por eso te digo que hay una delgada línea entre el pseudocódigo y el código final. A mi de forma natural me sale directamente el código nativo :).
La idea que hay detrás es ir haciendo un bosquejo como si fueras un pintor. Cuando un artista empieza una obra, no empieza a hacer todos los detalles desde el principio. Poco a poco va dando forma a su obra hasta que consigue llegar a los más mínimos detalles.
Eso precisamente es lo que tienes que hacer tu. Partir desde un folio en blanco y poco a poco ir moldeando tu proyecto para ir viendo resultados lo antes posible gracias al prototipo con Arduino mínimo.
Conclusión del proceso para conseguir un prototipo
Debemos ser prácticos y coherentes cuando estamos realizando un proyecto con Arduino o cualquier otra placa de electrónica. Esto lo conseguimos a través del proceso del prototipado.
En todos los proyectos aprendemos. Da lo mismo la experiencia que tengas, siempre hay algo que aprender. Si realmente quieres que tu proyecto llegue a buen puerto, sigue algún tipo de proceso que te permita ver resultados lo antes posible y te permita aprender.
¿Conoces algún otro proceso para obtener un prototipo con Arduino?
¿Te ha resultado útil este proceso de prototipado con Arduino?
Me encantaría que dejaras un comentario en las notas de este artículo, en el siguiente podcast habrá una sorpresa para todos aquellos que dejen su comentario :)
Puedes escuchar este programa en, iVoox, iTunes y en Spreaker. Si lo haces, por favor valora y comenta, así podremos llegar a más gente.
Gracias a Shutterstock por ceder los derechos de las imágenes siguientes: