
94. Por qué usar las interrupciones en Arduino, todo lo que necesitas saber
09/27/16 • 32 min
En el proyecto que estoy llevando a cabo, el tiesto inteligente, me han surgido varios problemas que debo de resolver. Sobre todo a la hora de implementar el algoritmo que permita que el DFRobot se mueva solo. La idea es poder usar interrupciones en Arduino que me permitan centrarme en lo verdaderamente importante y organizar el código de una manera más limpia y eficaz.
Antes de continuar te quiero hacer dos recomendaciones. La primera es que escuches el capítulo 42 del podcast La Hora Maker, donde César y Uribex tratan un tema muy interesante pero a la vez, muy controvertido.
Por otro lado, el día 8 de octubre de 2016 se celebra en Murcia el Mur Mak, la Murcia Maker Fest a la cual asistiré como visitante. Si estás por los alrededores te recomiendo que vayas. Habrán talleres, cursos y exposiciones muy interesantes.
Y ahora si, vamos a comenzar el capítulo por qué usar las interrupciones en Arduino.
¿Qué son las interrupciones en Arduino?
Vamos a verlo con un símil de la vida real. Imagínate que estás viendo una película o una serie en el salón de tu casa. Te abres una cerveza y estás dispuesto a pasar unas cuantas horas de evasión y fuera de la rutina. Pero estás esperando que te llegue una carta muy importante, tan importante que en cuanto la tengas en tus manos la tienes que abrir sin demora.
Lo normal es que tengas dos opciones. La primera sería que el cartero dejara la carta en el buzón y tu fueras a por ella. Al ser tan importante, si quieres leerla inmediatamente nada más que la deje, tendrías que ir a comprobar cada dos por tres si ha llegado la carta al buzón. Esto sería un poco incómodo ya que deberías parar la película, ir al buzón y comprobar si está. Pero existe una segunda opción, que la carta te llegue con acuse de recibo es decir, que el cartero llame a tu puerta y tu recibas la carta firmando el recibo.
Esto es lo que sucede dentro del código de nuestro proyecto. Cuando queremos leer un pin digital lo podemos hacer de dos maneras. Estar leyendo constantemente el pin con la función digitalRead(numPin) o usar un mecanismo por el cual, se interrumpa la ejecución del programa normal o principal para hacer algo concreto.
Las interrupciones permiten que el microcontrolador esté pendiente de un evento para realizar una acción concreta. No hace falta estar consultando constantemente el pin digital que queramos leer. El sistema es totalmente automático y está implementado dentro de la electrónica del microcontrolador.
¿Por qué usar las interrupciones en Arduino?
Lo primero que hay que decir es que no siempre es conveniente usar las interrupciones en Arduino. Dependerá de cada situación. La norma dice que siempre que el código que se vaya a ejecutar interrumpa el funcionamiento normal, deberemos utilizar una interrupción. Si por el contrario, ese código es como consecuencia de que se termina una acción, no se deben utilizar interrupciones.
Se trata de un proceso asíncrono, algo que sucede en cualquier momento mientras se ejecuta el programa normal. El microcontrolador es el encargado de estar pendiente del evento que lanza la interrupción. Nosotros solo indicamos cuándo y qué se tiene que ejecutar.
No hay que confundir esta técnica con la multitarea. Los microcontroladores en la mayoría de los Arduino, no soportan la ejecución de procesos en paralelo. El funcionamiento normal consiste en ejecutar una tarea tras otra, de forma secuencial.
Por lo tanto, usar interrupciones en Arduino, no vamos a conseguir multitarea. Pero si que vamos a conseguir que nuestro código sea más eficiente y más legible. Aunque sea un proceso asíncrono, nos permitirá sincronizar de una manera precisa ya que capturamos el evento justo en el momento que se produce evitando así que se pierda en el olvido.
El ejemplo típico es capturar un pulsador. Si queremos capturarlo en cualquier momento, de forma asíncrona, el método más optimo es a través de interrupciones.
Dentro de las interrupciones existen varios tipos.
Tipos de interrupciones en los microcontroladores
Podemos catalogar las interrupciones en 3 tipos.
Interrupciones externas
Ya hemos visto el símil de la carta que llega a nuestra casa. Este sería el caso de una interrupción externa. Es algo que sucede fuera del microcontrolador y que es captado por los pines destinados a las interrupciones.
Arduino UNO tiene do...
En el proyecto que estoy llevando a cabo, el tiesto inteligente, me han surgido varios problemas que debo de resolver. Sobre todo a la hora de implementar el algoritmo que permita que el DFRobot se mueva solo. La idea es poder usar interrupciones en Arduino que me permitan centrarme en lo verdaderamente importante y organizar el código de una manera más limpia y eficaz.
Antes de continuar te quiero hacer dos recomendaciones. La primera es que escuches el capítulo 42 del podcast La Hora Maker, donde César y Uribex tratan un tema muy interesante pero a la vez, muy controvertido.
Por otro lado, el día 8 de octubre de 2016 se celebra en Murcia el Mur Mak, la Murcia Maker Fest a la cual asistiré como visitante. Si estás por los alrededores te recomiendo que vayas. Habrán talleres, cursos y exposiciones muy interesantes.
Y ahora si, vamos a comenzar el capítulo por qué usar las interrupciones en Arduino.
¿Qué son las interrupciones en Arduino?
Vamos a verlo con un símil de la vida real. Imagínate que estás viendo una película o una serie en el salón de tu casa. Te abres una cerveza y estás dispuesto a pasar unas cuantas horas de evasión y fuera de la rutina. Pero estás esperando que te llegue una carta muy importante, tan importante que en cuanto la tengas en tus manos la tienes que abrir sin demora.
Lo normal es que tengas dos opciones. La primera sería que el cartero dejara la carta en el buzón y tu fueras a por ella. Al ser tan importante, si quieres leerla inmediatamente nada más que la deje, tendrías que ir a comprobar cada dos por tres si ha llegado la carta al buzón. Esto sería un poco incómodo ya que deberías parar la película, ir al buzón y comprobar si está. Pero existe una segunda opción, que la carta te llegue con acuse de recibo es decir, que el cartero llame a tu puerta y tu recibas la carta firmando el recibo.
Esto es lo que sucede dentro del código de nuestro proyecto. Cuando queremos leer un pin digital lo podemos hacer de dos maneras. Estar leyendo constantemente el pin con la función digitalRead(numPin) o usar un mecanismo por el cual, se interrumpa la ejecución del programa normal o principal para hacer algo concreto.
Las interrupciones permiten que el microcontrolador esté pendiente de un evento para realizar una acción concreta. No hace falta estar consultando constantemente el pin digital que queramos leer. El sistema es totalmente automático y está implementado dentro de la electrónica del microcontrolador.
¿Por qué usar las interrupciones en Arduino?
Lo primero que hay que decir es que no siempre es conveniente usar las interrupciones en Arduino. Dependerá de cada situación. La norma dice que siempre que el código que se vaya a ejecutar interrumpa el funcionamiento normal, deberemos utilizar una interrupción. Si por el contrario, ese código es como consecuencia de que se termina una acción, no se deben utilizar interrupciones.
Se trata de un proceso asíncrono, algo que sucede en cualquier momento mientras se ejecuta el programa normal. El microcontrolador es el encargado de estar pendiente del evento que lanza la interrupción. Nosotros solo indicamos cuándo y qué se tiene que ejecutar.
No hay que confundir esta técnica con la multitarea. Los microcontroladores en la mayoría de los Arduino, no soportan la ejecución de procesos en paralelo. El funcionamiento normal consiste en ejecutar una tarea tras otra, de forma secuencial.
Por lo tanto, usar interrupciones en Arduino, no vamos a conseguir multitarea. Pero si que vamos a conseguir que nuestro código sea más eficiente y más legible. Aunque sea un proceso asíncrono, nos permitirá sincronizar de una manera precisa ya que capturamos el evento justo en el momento que se produce evitando así que se pierda en el olvido.
El ejemplo típico es capturar un pulsador. Si queremos capturarlo en cualquier momento, de forma asíncrona, el método más optimo es a través de interrupciones.
Dentro de las interrupciones existen varios tipos.
Tipos de interrupciones en los microcontroladores
Podemos catalogar las interrupciones en 3 tipos.
Interrupciones externas
Ya hemos visto el símil de la carta que llega a nuestra casa. Este sería el caso de una interrupción externa. Es algo que sucede fuera del microcontrolador y que es captado por los pines destinados a las interrupciones.
Arduino UNO tiene do...
Episodio Anterior

93. ESP8266 todo lo que necesitas saber del módulo WiFi para Arduino
Cuando estamos inmersos en nuestro mundo, muchas veces no nos damos cuenta de lo que sucede a nuestro alrededor. Esto es precisamente lo que me ha pasado con el ESP8266. Siempre he estado rodeado de Arduino y soy un fiel defensor de esta placa. Hace ya algún tiempo cayó en mis manos un módulo ESP-01. Estuve trasteando con el varios meses y jugando con los comandos AT. Pero realmente cuando he visto el potencial que tiene, ha sido preparando este capítulo del podcast.
Gracias a Germán Martín, un fiel seguidor de Programarafacil, he podido descubrir el abanico de posibilidades que nos brinda. Hoy vamos a hablar de todo esto. Analizaremos la actualidad de este microcontrolador y pondremos todas las cartas sobre la mesa. Si en apenas dos años ha conseguido crear diferentes módulos destinados a diferentes fines, lo mejor está todavía por llegar. Comenzaremos hablando de sus orígenes y sus posibles usos. Luego veremos detalladamente sus especificaciones técnicas. Por último analizaremos los diferentes módulos que podemos encontrar en el mercado y los diferentes métodos para programar el ESP8266.
Qué es el ESP8266
Cuando salió el Arduino MKR1000, afirmé que revolucionaría el mundo de los objetos conectados, sobre todo por la facilidad de uso que caracteriza a estas placas. Acercaba de una manera sencilla el IoT a la población civil. Pero lo que está ocurriendo con el ESP8266, puede reventar las nuevas tendencias de muchos sectores. Se trata de un chip integrado con conexión WiFi y compatible con el protocolo TCP/IP. El objetivo principal es dar acceso a cualquier microcontrolador a una red.
En este artículo haré referencia en varias ocasiones a Arduino y es que, sin duda alguna, es la competencia del Shield WiFi para esta placa. Pero no solo eso, Atmel, el fabricante que provee de microcontroladores a Arduino, sacó al mercado el ATSAMW25, competencia directa del ESP8266. Este microcontrolador es el que incorpora el Arduino MKR1000.
La gran diferencia entre el ESP8266 y el ATSAMW25 es el precio. Mientras que podemos encontrar módulos con el chip ESP por 3€, el Arduino MKR1000 sale por unos 40€ con gastos de envío.
La diferencia es abismal aunque tiene su sentido. La versión más básica del ESP es la 01 y dista mucho de la facilidad de uso que tiene el Arduino MKR1000, aunque el objetivo de este artículo no es hacer una comparativa entre ellos.
La gran ventaja del ESP8266 es su bajo consumo. Es el producto ideal para wereables y dispositivos del IoT.
Un poco de historia
No voy a profundizar en la historia detrás de este chip. Puedes encontrar mucha información en la red. La empresa que lo creo y lo fabrica es Espressif, una empresa China situada en Shangai.
Aunque parece que lleva con nosotros mucho tiempo, lo cierto es que vio la luz en agosto del 2014, en su versión básica el módulo ESP-01 de la mano de AI-Thinker. Ese mismo mes comenzó la era de reinado del ESP. Todos aquellos que pudieron hacerse con uno quedaron fascinados por su bajo precio y las posibilidades que tenía. En aquella época el gran problema era la documentación, estaba toda en Chino.
Poco a poco, la gran comunidad que hay detrás, comenzó a traducir la documentación y crear firmwares pare el ESP8266. Un firmware no es más que el software de bajo nivel, la lógica que controla los circuitos electrónicos. Todo empezó a crecer y las aplicaciones se multiplicaron. En la actualidad podemos encontrar multitud de módulos que incorporan este microcontrolador.
A mediados de este año (2016), la empresa anunció una nueva versión, el ESP8285. Parecía un clon de su predecesor. La gran diferencia es que incorpora una memoria Flash de 1MB integrada dentro del propio chip. El ESP8266 no dispone de esta memoria y necesita de un módulo externo para almacenar los programas. Esto va a permitir crear dispositivos del IoT, o de otro tipo, del tamaño de una tecla de un teclado, todo un reto. Todo gracias a la conectividad y a la memoria Flash que incorpora.
Posibles usos del ESP8266
En este punto debemos de distinguir entre los módulos y los microcontroladores. El ESP8266 y el ESP8285 son microcontroladores. Podemos trabajar con ellos sueltos o podemos comprarlo integrado dentro de un PCB (Printed Circuit Board o Circuito Impreso).
Ocurre lo mismo que con Arduino. Tenemos la posibilidad de comprar un microcontrolador Atmel o comprar la placa de Arduino donde ya viene integrado.
Dicho todo esto, el uso que le demos dependerá de si lo tenemos como chip o como módulo. Dentro de la gran cantidad de usos caben destacar los siguientes:
Electrodomésticos conectados.
Automatización del hogar.
Casas inteligente. ITEAD es puntera en este sector.
Automatización de la industria.
Monitor de bebés.
Cámaras IP.
Redes de sensores.
Wereables.
IoT (Internet of Things o Internet de las Cosas)
IIoT (Industrial Internet of Things o Internet de las Cosas para el sector Industrial)
Y cualquier aplicación donde...
Siguiente Episodio

95. Staticboards, fabricar electrónica para Arduino made in Spain
Hoy vamos a hablar con Javier Loureiro, fundador de la empresa Staticboards. Su objetivo, fabricar electrónica para Arduino desde España. Nos contará su historia de cómo ha llegado hasta este punto donde, en un mercado cada vez más globalizado, el decidió hacer toda su producción en tierras Gallegas y de forma artesanal.
Fabricar electronica
Antes de meternos en faena recuerda, el próximo día de 8 se va a celebrar el Murcia Maker Faire en el Cuartel de Artillería. Me han invitado a dar una charla sobre Arduino. Si estás cerca de Murcia, pásate por la feria. Podrás conocer a mucha gente con la mismas inquietudes que tu, acudir a charlas y talleres. Nos vemos el próximo 8 de Octubre en Murcia.
Por último te quiero pedir un favor, VOTA POR PROGRAMARFACIL EN LOS PREMIOS BITACORAS, GRACIAS :)
Javier Loureiro, de programador gráfico a fabricar electrónica para impresoras 3D
La vida es un conjunto de cosas que nos van sucediendo. Javier es un claro exponente de esto. Pasó de trabajar en la programación gráfica a producir PCBs que ahora mismo son utilizadas en todos los continentes.
De formación informático, cuando apenas contaba con 20 años emigró a Holanda gracias a una oportunidad de trabajo. En ese mismo instante comenzó su andadura como programador gráfico, como el dice ha hacer "renderizado y esas cosas".
Según pasaban los años, fue creciendo pero también se fue dando cuenta que ese sector requería de una vida nómada que no estaba dispuesto a asumir. En su larga trayectoria trabajó en varios proyectos relacionados con la animación 3D. Uno de los más importantes fue Planeta 51, ganadora de un premio Goya en el año 2010.
En un punto de su vida, decidió dejar de recorrer el mundo y echar raíces junto a su mujer Doris Thai, de origen chino, en Malpica de Bergantiños, un pueblo con un entorno natural envidiable. En este momento se convirtió en freelance en proyectos de animación 3D para otras empresas.
La fotografía y un viaje a China, abrió el mundo de la programación física y la fabricación de electrónica
Una de sus pasiones es la fotografía y gracias a ella, llegó a la programación física y a la fabricación de electrónica. El, con un amigo, comenzaron un proyecto que les permitiera disparar una cámara de forma automática. Aunque su amigo tenía conocimientos de electrónica, para Javier fue su primera experiencia en el ensamblado de PCBs y la electrónica. Quedó fascinado.
Algún tiempo después, viajó a China con su mujer. Allí pudo observar, de primera mano, la manufacturación de productos de electrónica de consumo. Este fue el detonante por el cual su vida, tanto personal como profesional, dio un cambio de 180o.
Cuando llegó a Malpica, tomó la decisión de dedicarse a crear productos electrónicos para el mundo Maker. Pero no fue un camino fácil. De los errores también se aprende.
De la primera idea a la creación de Staticboards
La primera idea fue construir una placa que no estuviera en el mercado, algo innovador. Por aquel entonces, la impresión en 3D no estaba en el punto que está ahora mismo. Empezaban a surgir ideas y el mercado estaba creciendo desde que en el año 2004, la patente caducó. Pronto se dio cuenta que eso no era una buena idea.
Crear un producto desde cero implica que debas formar a la gente, dar soporte y resolver problemas. Esto es quizás uno de los grandes problemas que se encuentran las startups que empiezan a desarrollar sus propios productos. Cuando Javier fue realmente consciente de esto, decidió empezar por el hardware libre. Gracias a este tipo de dispositivos, cuentas con una comunidad ya formada y con multitud recursos en Internet. La primera placa que decidió fabricar fue RAMPS (RepRap Arduino Mega Pololu Shield).
Decidió invertir el tiempo en mejorar a nivel de componentes. Hacer un producto espectacular destinado a las impresoras 3D. Aquí es donde empezó lo que es a día de hoy Staticboards.
Staticboards, centrados en dar soluciones de calidad
Si hay algo que caracteriza a esta empresa, es su calidad. Javier pone especial cuidado en que sus productos sean excelentes, tanto en componentes como en conectores. No solo eso, además los fabrica en España. Sí, has oído bien, yo también aluciné cuando pro primera vez entré en su web. Este fue el motivo por el que decidí traerlo al podcast.
Cuando empezó a fabricar en serio, la gente le recomendaba que se llevara la producción a China, "es más económico y más rentable". El dudaba mucho de esa afirmación y tomó la decisión de fabricar el mismo las placas en un taller que su familia le facilitó.
Empezó haciendo tiradas pequeñas, las ensamblaba el mismo. Su capacidad de producción no era muy elevada pero si que era muy fiable. Poco a poco, fue creando su propio método, perfeccionando su montaje y, a la vez, mejorando las placas. Sin darse cuenta, estaba utilizando un modelo de gestión que se conoce como Lean Manufacturing.
Como el mismo era el que montaba todo, empezó a cambiar e...
Si te gusta este episodio, te encantará
Comentarios del Episodio
Generar una insignia
Obtén una insignia para tu sitio web que enlace a este episode
<a href="https://goodpods.com/podcasts/la-tecnolog%c3%ada-para-todos-187698/94-por-qu%c3%a9-usar-las-interrupciones-en-arduino-todo-lo-que-necesitas-sa-17141141"> <img src="https://storage.googleapis.com/goodpods-images-bucket/badges/generic-badge-1.svg" alt="listen to 94. por qué usar las interrupciones en arduino, todo lo que necesitas saber on goodpods" style="width: 225px" /> </a>
Copiar