Preparando la placa Arduino

En realidad hay poco que “preparar” en la placa Arduino porque se trata de picar el código, grabarlo en la placa y listo. Pero a veces las cosas se complican un pelín, así que de eso va esta entrada, de los materiales necesarios y cómo corregir un par de tropezones que nos pueden salir. Vamos a ver:

    • Soft
    • Driver para placas compatibles
    • Interrupciones en Arduino
    • Eliminar el auto reset

Software

Para el soft tenemos un par de opciones, bueno, habrá alguna más pero nos quedamos con estas:

    • El IDE de Arduino
    • Stino para Sublime Text

El primero se puede encontrar en la página oficial:

https://www.arduino.cc/en/Main/Software

Pero una opción atractiva para quienes usen Sublime Text, que como editor da cien vueltas al que incorpora el IDE de Arduino, es instalar el plugin Stino:

https://github.com/Robot-Will/Stino

Allí tenemos instrucciones detalladas para instalar la última versión.

Y con esto la parte de soft ya debería estar, debería…

Driver

Y sí, debería, porque a veces pasa que no va, que enchufamos nuestro Arduino por USB al ordenador y como si le enchufamos una ensaimada mallorquina ¿por qué? Pues porque somos los felices propietarios de una plaquita compatible, made in China, con el integrado CH340 y hace falta un driver para él según el SO o la versión del mismo que estemos usando, tal cual.

Esto anterior me ocurrió en una instalación bajo Windows 7, no obstante, con la misma placa (la que veis en la foto) y bajo Windows 10 no ha habido problema y al conectarla automáticamente se ha instalado el puerto con el driver correspondiente:

Por si acaso, por si se os presenta el problema descrito, las instrucciones de instalación y descarga del driver se pueden encontrar aquí:

https://www.geekfactory.mx/tutoriales/tutoriales-arduino/driver-ch340-para-arduino-chinos-o-genericos/

Y tras la instalación ahora sí que ya debería reconocer el ordenador a su nuevo amigo.

Interrupciones

A lo mejor este tendría que haber sido el primer apartado, porque esto puede condicionar la elección de la placa. Me explico (o al menos voy a intentarlo):

Como sabéis este pseudo blog nace del curso que seguí del Aula Mentor, de ese y de algunos más que he hecho y que combinan bien con este, pero de un “aprendiz” al fin y al cabo. Las cosas que aquí plasmo son las que voy aprendiendo por el camino y que vienen a ser mis propios apuntes escritos en abierto por si a alguien le pueden servir.

Digo esto porque más de uno verá algo obvio y cotidiano el uso de interrupciones en Arduino, pero yo las he descubierto al empezar a estudiar Arduino, y fue un grato descubrimiento.

Para quien no sepa todavía qué son, voy a explicarlo de manera simple: Arduino funciona a base de un bucle que se repite de forma continua una y otra vez; digamos que leemos un sensor, actuamos en consecuencia, luego el siguiente, volvemos a actuar, etc. y así sucesivamente. Arduino hace esto rápido, muy rápido, pero a veces esa rapidez no es suficiente, sobre todo si hemos metido un delay por medio (estamos haciendo que un led parpadee, por ejemplo). Bien ¿qué pasa si un sensor se dispara? Pues que Arduino se enterará cuando el bucle llegue a la línea que lee ese sensor, y tardará un tiempo, que será mayor o menor según lo que esté haciendo, pero que puede ser vital. La forma de remediar eso son las interrupciones.

Una interrupción consiste en programar una entrada para que cuando se produzca un cambio de estado en ella automáticamente se interrumpa el bucle y se procese lo programado para dicha interrupción, tras lo cual el bucle sigue en el punto donde se había quedado.

Esto para mí fue un grato descubrimiento. Creo que lo primero que pensé es que podía tener un led parpadeando con una cadencia de un segundo sin preocuparme de si se disparaba un PIR ya que a través de una interrupción el sistema me avisaría de inmediato.

La parte negativa del asunto fue enterarme de que mi Arduino Uno sólo tiene dos pines, el 2 y el 3, que pueden programarse con interrupciones. Poco es eso.

La parte positiva fue descubrir que a Arduino Due puede usar todos los pines para interrupciones. Me faltó tiempo para abrir el navegador y hacerme con una placa de esas, que además tiene otras ventajas y características bastante más avanzadas que Arduino Uno. Y una de las características muy a tener en cuenta para nuestros proyectos es que Arduino Due tiene un voltaje de funcionamiento de 3.3 v y no de 5 como Arduino Uno, hay que tener esto en cuenta a la hora de conectar cacharrería ya que habrá shields que no valgan para las dos placas.

Por supuesto hay más placas: Arduino Mega soporta 6 interrupciones, en prestaciones está entre medio de Uno y Due, pero a nivel de voltaje de funcionamiento es el mismo que Uno, por lo que también es una opción a tener en cuenta.

Hay una comparativa de los modelos en el siguiente link y pinchando sobre el que nos interese podremos acceder a sus características donde informarnos sobre las interrupciones que posee, así, con todos estos datos, podremos hacer una elección de placa correcta para el diseño que queramos montar

https://www.arduino.cc/en/Products/Compare

Auto Reset

Otra de las complicaciones que encontré en uno de los montajes era que cada vez que quería leer desde Raspberry los datos de Arduino, este se reseteaba, y eso era un problema. Al principio pensé que estaba haciendo algo mal, pero no, es un comportamiento lógico de la placa Arduino: Cada vez que nos conectamos al puerto serie, Arduino hace un auto reset.

Buscando por la red se ofrecen varias soluciones para esto, algunas cortando una pista e instalando un jumper, cosa que en mi humilde opinión debería venir de fábrica, no entiendo por qué estas placas no incorporan un triste jumper para ello.

Otra opción más simple y que a mí me ha resultado, es pinchar un condensador de 10µF entre GND y RESET, pinchando la pata del negativo a GND. Luego si quiero reprogramar Arduino, simplemente quito el condensador y listo.

Desconozco qué efectos puede tener hacerlo en caliente, así que por si acaso y como precaución, mejor quitar y poner el condensador en frío, con la placa apagada y desconectada.

Y ya está. En anteriores entradas hemos hablado de instalar y configurar la Raspberry, ahora tenemos listo Arduino, así que ya sólo queda echar imaginación y… ¡picar código!

Deja un comentario

No está permitida la inserción de ningún dato de carácter personal (mail, tef...). Cualquier comentario que los contenga será editado o eliminado.

Por favor, si dejas un comentario pon cualquier nombre para poderme dirigir a ti pero que no te identifique

uno × 5 =

El comentario es totalmente privado. No se almacena la IP