martes, 15 de diciembre de 2015

Conexiones PULL-UP y PULL-DOWN


Una de las cosas más importantes a la hora de trabajar con entradas digitales, es la de asegurar los niveles lógicos que le estamos entregando a Arduino (o cualquier otro dispositivo electrónico).
Por ejemplo si utilizamos un pulsador como entrada, puede suministrar 0V o 5V (lógica TTL) a una entrada digital de Arduino (la que nosotros queramos), para que Arduino detecte un estado alto (HIGH o “1” lógico) o un estado bajo (LOW o “0” lógico) cuando activemos el pulsador, dependiendo de si el pulsador está conectado a GND o VCC (+5V). El esquema de conexión se muestra en la siguiente imagen.
Conexión de entrada digital directa

 
Aquí es cuando nos viene el “problema”, ¿Qué pasa cuando el pulsador no está activado? Pues simplemente que el circuito quedaría abierto, el pin digital queda desconectado de cualquier tensión y permanecería en un estado de alta impedancia. Como en la entrada no tenemos en ese momento ni 0V o 5V, permanecería en un estado lógico “indeterminado”, no siendo el Arduino capaz de reconocer un estado lógico definido (HIGH o LOW), con lo que no sabría qué hacer y como consiguiente se darían una serie de errores.
Para evitar este tipo de incomodas situaciones, disponemos de dos tipos de conexiones que nos solucionan el problema, las conexiones PULL-UP y PULL_DOWN.

Conexión de entrada PULL-UP y PULL-DOWN

En la conexión en "PULL-UP" tendremos a la entrada un nivel alto (+5 v) cuando el pulsador esté desactivado, y al presionar el pulsador el circuito pasará a bajo (0V).
La conexión en "PULL-DOWN" funciona al revés que la anterior, es decir,  cuando el pulsador esté desactivado tendremos un nivel bajo a la entrada (0V) y al presionar el pulsador pasara a un nivel alto (+5V).
Al accionar el pulsador estamos conectando directamente los valores de 0V y 5V, lo que significa que estamos causando un cortocircuito. Esto provocaría el paso de una corriente elevada, produciéndose un rápido calentamiento de componentes y conductores. La solución al problema es colocar una resistencia de 10KΩ (aunque también puede ser de 4K7Ω), para no crear un cortocircuito entre la alimentación y masa al presionar el pulsador.
 ¿Hay que hacer este tipo de conexiones en todas las entradas? No, solo es necesario en las entradas que estemos utilizando, y por supuesto que tengamos configuradas mediante programación.

Aunque estas conexiones se pueden realizar externamente, Arduino (que piensa en todo) incorpora internamente una serie de resistencias preparadas para conexión PULL-UP únicamente, que pueden ser configuradas mediante programación como se muestra en el siguiente “sketch” y que nos sirven para no tener que añadir componentes adicionales a nuestros proyectos.
 

Lista de Materiales:

·         Arduino UNO Rev.3.
·         Cable USB tipo A-B.
·         LED 5 mm (Cualquier color).
·         Pulsador.
·         Resistencias de 10KΩ y 220Ω.
·         Protoboard.
·         Cables de conexión. 

 
Código del programa:


 
 
  Video:




lunes, 14 de diciembre de 2015

Cómo obtener 6 pines digitales extra mediante software


Como todos deberíamos saber a estas alturas, Arduino nos ofrece 14 pines digitales de E/S (D0, D1,…, D13). Si alguna vez necesitamos utilizar un número mayor de pines digitales, esto lo podemos conseguir mediante software, es decir, decirle al Arduino mediante programación que queremos utilizar los 6 pines analógicos (A0, A1,…, A5) como pines digitales, para obtener un total de 20 pines digitales de E/S. La correspondencia de los pines quedaría como se muestra en la siguiente tabla.
Tabla de correspondencia de pines
 
A continuación os dejo el código para convertir el pin analógico 0 (A0) en un pin digital de salida en este caso, aunque también podía ser de entrada o haberse aplicado a un par de pines digital/analógico diferente de los que tenemos en la tabla anterior.  


Lista de Materiales:

·         Arduino UNO Rev.3.
·         Cable USB tipo A-B.
·         LED 5 mm (Cualquier color).
·         Pulsador.
·         Resistencias de 10KΩ y 220Ω.
·         Protoboard.
·         Cables de conexión. 


  Código del programa:
 



Video:




domingo, 13 de diciembre de 2015

Añadiendo las librerías


Para los que no estén muy familiarizados con las librerías, se puede decir de manera genérica que son trozos de código independientes al programa principal, que facilitan la interconexión de Arduino con otros dispositivos electrónicos  externos,  como pueden ser sensores, actuadores e incluso los propios “Shields”.
El entorno de Arduino ya incluye algunas librerías por defecto de manera que se facilite, por ejemplo, mostrar texto en pantallas LCD, aunque existen multitud de librerías desarrolladas por terceros en internet, que nos ayudarán a conectar prácticamente cualquier dispositivo a nuestro Arduino, sin tener que rompernos la cabeza para que funcionen como nosotros queremos.
Para saber cómo utilizar una librería, es necesario consultar la referencia oficial de Arduino o el sitio web desde el cual descargamos la librería, aunque no vais a tener ningún problema a la hora de trabajar con ellas puesto que los códigos que os voy a ir subiendo a este BLOG van a ser “PLUG and PLAY”, es decir, conectar los componentes, subir el programa y ver como nuestra placa Arduino UNO se encarga de todo lo demás.
Para incluir todas las librerías que nos van a hacer falta para que todos los programas, que os encontréis en el BLOG, nos compilen y funcionen correctamente, es necesario descargarlas a nuestro PC  a través del siguiente enlace: 


Una vez descargado el archivo comprimido, extraemos la carpeta “Libraries” tal cual, es decir, sin modificarla ni renombrarla y posteriormente la sustituimos por la que Arduino nos crea por defecto en el directorio de la instalación. Para no tener problemas en la correcta inclusión de las librerías, primero eliminamos la que nos trae por defecto, posteriormente pegamos la carpeta que acabamos de descargar y para finalizar reiniciamos el IDE de Arduino para que se nos cargue todo correctamente (si es que lo teníamos en ejecución).
Ruta de la carpeta “Libraries”

Por último comentaros que cada librería normalmente incluye archivos del tipo *.cpp, *.h, *txt, etc., aunque lo que más nos interesa a nosotros son los ejemplos de programación (*.ino o *.pde) que las librerías incluyen en la mayoría de los casos. Se puede acceder a estos ejemplos desde dentro del IDE de Arduino en la siguiente ruta: Archivo à Ejemplos.
Ubicación de los ejemplos de las Librerías

viernes, 11 de diciembre de 2015

Ejecutando el primer programa en Arduino


Lo primero que tenemos que hacer es ejecutar el IDE haciendo doble click en la aplicación Arduino.
Después seleccionamos el tipo de placa (en nuestro caso Arduino UNO) dentro de Herramientas à Placas à Arduino Uno.
También necesitamos decirle al IDE en que puerto serie tenemos instalada nuestra placa dentro de Herramientas à Puerto à COMxx (Asignamos el puerto donde se nos ha instalado Arduino UNO).
Posteriormente necesitamos cargar el programa (sketch) dentro de la memoria de Arduino, que va a ser el encargado de gobernar el comportamiento de la placa una vez que lo ejecutemos. Como modo de iniciación vamos a cargar un ejemplo de los muchos que nos trae el IDE por defecto, para ello vamos dentro de Archivo à Ejemplos à  01.Basic à Blink.
Por último le damos a subir (à), para que el programa se compile para comprobar si tiene errores y se suba a la placa. Unos pocos segundos después de finalizar el volcado del programa deberías ver cómo el LED de la placa conectado al pin 13 (L) comienza a parpadear una vez por segundo. Si ocurre esto ¡Enhorabuena! Ya tienes tu Arduino UNO preparado para seguir explorando el BLOG.

Entrono de programación (IDE 1.6.4) de Arduino


 

Instalando el IDE de Arduino


En este POST os voy a enseñar como instalar el entorno de programación (IDE) y los drivers para nuestro ARDUINO UNO, ya sea esta original o CLON. Os recomiendo que instaléis la versión 1.6.4 del IDE de Arduino ya que algunas versiones están ya obsoletas o están en proceso de desarrollo (BETA) con lo que tendremos mayores problemas a la hora de utilizarlas. También deciros que todas las librerías específicas que se utilicen de aquí en adelante han sido testadas al 100% en la versión 1.6.4 y aunque puedan ser utilizadas en otras versiones del IDE de Arduino, no os puedo garantizar su correcto funcionamiento. 
Lo primero que hay que hacer es descargarse la versión 1.6.4 del IDE de Arduino teniendo en cuenta el sistema operativo que tengamos instalado en nuestro PC, desde el siguiente enlace.
 
Vista de la página de descargas de la versión 1.6.4 del IDE de Arduino
 
 
-           Usuarios de WINDOWS

Nos descargamos la versión “Windows Instaler” y la ejecutamos, puesto que además de instalarnos automáticamente la versión 1.6.4 del IDE de Arduino, también nos instala automáticamente los drivers necesarios para que nuestra placa ARDUINO UNO Rev. 3 (o cualquier otra placa Arduino) sea reconocida al conectarla a nuestro PC.
Una vez terminada la instalación, conectamos la placa Arduino al PC a través de un cable USB. El LED indicador de la alimentación (nombrado como PWR en la mayoría de las placas) debería quedar encendido a partir de ese momento.
Cuando conectas la placa, Windows debería inicializar la instalación de los drivers (siempre y cuando no hayas utilizado ese ordenador con una placa Arduino anteriormente).
En Windows vista y posteriores, los drivers deberían descargarse e instalarse automáticamente, si esto no ocurre o porque tu S.O es Windows XP, hay que entrar en el administrador de dispositivos, después buscar la placa en la lista (suele salir una advertencia de color amarillo en los dispositivos que están mal instalados) y por último instalar manualmente los drivers. Los drivers se encuentran en el directorio drivers/FTDI USB Drivers dentro de la carpeta de instalación de Arduino. La versión más reciente de los drivers se puede encontrar en la página web del fabricante del chip FTDI.


Para comprobar que todo ha salido bien, deberíamos observar en la lista mostrada por el "Administrador de dispositivos” un nuevo dispositivo dentro de la categoría "Puertos (COM y LPT)” llamado "Arduino UNO (COMxx)”, donde "xx” será un número (normalmente será el 3 o el 4, pero puede ser otro). Si a pesar de todo, tu placa sigue sin ser reconocida correctamente por el PC, es porque estás utilizando una placa “Clon” de Arduino. Estos clones traen un chip para controlar la comunicación USB denominado  CH340G o similar y por supuesto tienen unos drivers específicos. Estos les puedes descargar de alguno de los siguientes links o simplemente buscarles a través de “Google” y posteriormente realizar la instalación manual como antes os he mostrado. 

 

-           Usuarios de MAC OS X

Descargamos la versión 1.6.4 del IDE para Mac OS X, que no es más que un archivo comprimido en formato Zip. Por lo tanto, lo primero que tendremos que hacer una vez descargado es descomprimirlo. Obtendremos entonces un archivo "dmg”; haciendo doble clic sobre él comenzará el proceso de instalación estándar de cualquier aplicación nativa en sistemas Macintosh.
El proceso es casi totalmente automático: lo único que deberemos hacer es, en la ventana que nos aparecerá al principio de la instalación, arrastrar el icono de Arduino sobre la carpeta Applications para que el IDE se instale allí (aunque de hecho podríamos elegir instalarlo en cualquier otro lugar). Si hemos realizado la instalación correctamente, en la barra de lanzadores aparecerá el icono correspondiente del recién instalado IDE de Arduino. 

-           Usuarios de LINUX

Para usuarios LINUX nos aparecen dos enlaces diferentes para descargar la versión 1.6.4 del IDE Arduino. Ambos enlaces apuntan a un archivo comprimido en formato "tgz”, pero un enlace corresponde a la versión del IDE de 32 bits y el otro a la de 64 bits. Es necesario, por tanto, conocer primero qué tipo de sistema operativo tenemos instalado (32 bits o 64 bits) y descargarnos entonces el paquete "tgz” correspondiente para posteriormente instalarlo.

 
 

Conociendo la placa ARDUINO UNO Rev. 3.

 
La nueva versión de nuestra placa de prototipado favorita, es totalmente compatible con las versiones anteriores e incorpora una serie de mejoras: nuevo bootloader OptiBoot que permite cargar programas a 115Kbps (56Kbps en las versiones anteriores) además de ocupar sólo 512 bytes (con lo que queda más memoria flash disponible para programas).
El chip convertidor USB-Serie es ahora el ATmega16u2, que tiene 16Kb de memoria flash lo que permitirá cargar en él firmwares más largos para que Arduino pueda ser conectado por USB y ser reconocido por nuestro PC. 
 
 
Clon ARDUINO UNO Rev. 3 
 
Esta placa se basada en el microcontrolador ATmega328 de ATMEL. Tiene 14 Entradas/Salidas digitales (6 de las cuales pueden utilizarse como salidas PWM), 6 entrada analógicas, conector USB, clavija de alimentación hembra tipo Jack, conector ICSP (para programar el microcontrolador sin necesidad de conectar la placa al PC) y botón de reset. Funciona a 16MHz.
Contiene todo lo necesario para el funcionamiento del microcontrolador, solo hay que conectarla al ordenador con un cable USB del tipo A-B o a una batería externa para que funcione.
La versión UNO difiere de las versiones anteriores en que no utiliza el chip convertidor serie a USB FTDI (aunque algunas placas lo siguen manteniendo), en lugar de ello incorpora un ATmega16U2 programado como convertidor serie a USB. Este chip tiene USB nativo y puede ser reprogramado para que el Arduino sea reconocido al conectarlo al PC como cualquier tipo de periférico USB (por ejemplo el ratón de nuestro PC). También puede llevar otro tipo de controladores USB, tales como el chip CH340G, incluido en los “clones producidos en China”.  
 
Tabla de características ARDUINO UNO Rev. 3 
 
En esta nueva versión también se han añadido más pines. Al lado del pin ARef se han puesto los pines SDA y SCL para comunicación I2C. En el bloque de alimentación se han añadido 2 pines, uno marcado como IOref servirá para que la placa reconozca el tipo de alimentación que requieren los shields que conectemos (3.3v o 5v) y al otro se le dará uso en futuras versiones.
Yo no voy a entrar en el debate de que si la placa es un “clon” o es “original” puesto que sus características y funcionamiento son idénticos, lo único que cada uno tiene que pagar por lo que está comprando y no dejarse engañar, puesto que las placas originales tienen un precio considerablemente superior (que no nos den gato por liebre).
En la siguiente imagen podemos ver el diagrama de pines de Arduino Uno al completo, como se puede apreciar, alguno de los pines tiene varias funciones que serán configuradas mediante programación.
 

Diagrama de pines de Arduino Uno Rev. 3