sábado, 19 de septiembre de 2015

Componentes (3): Arduino UNO y Pro Mini

En este artículo hablaremos un poco del "cerebro" de algunos de los montajes que haremos. Se trata de Arduino, una plataforma de hardware libre enfocada al aprendizaje de microelectrónica que ha tenido una repercusión bestial a nivel mundial, teniendo una amplísima comunidad detrás que en sus 10 años de vida ha generado literalmente millones de programas y librerías de código abierto al alcance de todos.


Un poco de historia

Arduino es un proyecto que se inicia en Italia en 2005 como soporte para hacer prácticas de electrónica en el Instituto de Diseño Interactivo de la ciudad de Ivrea.

No es que no hubiera en aquella época plataformas de experimentación y microcontroladores programables, pero el problema era que su hardware era cerrado; esto es,  eran los fabricantes los que diseñaban las placas, las conexiones, los componentes, etc y al usuario final se le vendía como un producto hecho tan sólo especificando el modo de programarlo.

Con el auge del software libre en mente, los creadores de Arduino pretendían fomentar el uso de una plataforma totalmente abierta, en su software y también en su hardware, mediante la utilización de componentes baratos y ampliamente conocidos, entregando a la comunidad el diseño de las placas de manera que cualquier persona pudiera o bien comprar un Arduino por poco precio o bien construírselo el mismo, bien en forma de kit o construyéndolo desde cero con sus fotolitos, sus soldaduras, etc.

El proyecto no sólo incorporaba una placa de hardware, sino también un bootloader para el microcontrolador, un lenguaje de programación y un entorno de desarrollo que funciona tanto en Windows como en Mac y en Linux, todo de código abierto. El coste total de las primeras unidades debía ser inferior a los 30€.

Con el tiempo, el proyecto saltó del entorno educativo al gran público: aficionados a la electrónica, diseñadores de hardware, empresas, etc. La comunidad de personas que utilizan Arduino en sus proyectos es gigantesca y prácticamente se puede hacer de todo con ellos.

Además, recientemente con el auge de las compras de componentes electrónicos directamente a los fabricantes (China) y a precios irrisorios, montar un proyecto electrónico es francamente fácil y barato, que es lo que vamos a ver en próximos artículos.

Para el que quiera ver un poco más de historia de Arduino en detalle, os recomiendo ver el siguiente documental (en español):


Componentes

El núcleo de Arduino es un microcontrolador de la marca Atmel.

¿Que qué es un microcontrolador? Pues un microcontrolador es un ordenador en miniatura; se trata de un circuito integrado que, a diferencia de muchos otros circuitos de propósitos específicos, es programable, y tiene su CPU, su memoria y sus interfaces de entrada/salida para comunicarse con otros dispositivos.

Por otro lado, la marca Atmel os sonará a algunos si habéis conocido el mundo de la "educación" de tarjetas decodificadoras de televisión por satélite. Por los tiempos de Vía Digital, se utilizaba un microcontrolador (el AT90S8515 principalmente) de Atmel para programarle cierto código que permitía ver "florecer" los canales emulando la codificación Nagravisión. En aquellos tiempos, este Atmel era un chip que había que programar con un programador externo que se conectaba al PC por medio del puerto serie o paralelo.

Pues bien, el microcontrolador que utilizan los Arduino son una evolución de aquellos Atmel, específicamente los modelos Atmega168, Atmega328, Atmega1280, Atmega8 entre otros. El modelo específico de microcontrolador que se incorpore implicará las principales diferencias entre los distintos modelos de Arduino, como su capacidad de memoria, de almacenamiento, su velocidad, el número de puertos, etc. En la siguiente tabla podemos ver una relación entre el modelo de Arduino, el microcontrolador que usa y sus características principales:



Arduino Microcontrolador Voltaje Velocidad RAM Flash EEPROM Puertos
Digitales
Puertos
Analógicos
UNO R3 Atmega328P 5V 16Mhz 2KB 32KB 1KB 14 (6 PWM) 6
Mega R3 Atmega2560 5V 16Mhz 8KB 256KB 4KB 54 (15PWM) 16
Pro Mini 3.3V Atmega328 3.3V 8Mhz 2KB 32KB 1KB 14 (6 PWM) 6
Pro Mini 5V Atmega328 5V 16Mhz 2KB 32KB 1KB 14 (6 PWM) 6
Arduino DUE AT91SAM3X8E 3.3V 84Mhz 96KB 512KB - 54 (12PWM) 12
Arduino Lilypad Atmega168V 3.3V 8Mhz 1KB 16KB 512B 14 (6 PWM) 6


Hay muchos más modelos que los que se muestran en la tabla, pero nos sirve para hacernos una idea. Como se puede ver, tenemos varios parámetros a tener en cuenta y que condicionarán nuestra elección, como por ejemplo:
  • Voltaje de funcionamiento.
    Hay modelos que funcionan a 5V y otros que lo hacen a 3.3V.
  • Velocidad.
    A más velocidad, más consumo del microcontrolador. Nos condicionará si queremos alimentarlo a baterías.
  • RAM.
    El microcontrolador incorpora una memoria volátil para almacenar datos temporales (variables de nuestro programa).
  • Flash.
    Además, también incorpora un chip de memoria no volátil para el almacenamiento de nuestro programa. Si vamos a hacer un programa muy grande, tendremos que elegir un tipo adecuado de Arduino.
  • EEPROM.
    El micro también incorpora memoria no volátil de propósito específico: almacenar configuraciones y parámetros que no forman parte del código.
  • Entradas/salidas digitales.
    Cada modelo tiene un número de puertos digitales de entrada y salida. Algunos de ellos tienen propósitos específicos como servir de puerto serie de comunicaciones, o conectar con otros dispositivos por medio de los protocolos I2C o ISP. Además, algunos de estos puertos pueden funcionar como salidas "pseudo-analógicas" PWM.
  • Entradas analógicas.
    Cada modelo tiene también una serie de puertos de entrada analógicos, conectados a un conversor analógico/digital.

Arduino UNO

Este modelo de Arduino es el más adecuado para todo principiante. Está basado como hemos visto en la tabla superior en el microcontrolador Atmega328P de Atmel, y funciona con 5V y a 16Mhz.

La placa tiene, además del microcontrolador, un oscilador de cristal a 16Mhz, un botón de reset, un regulador de tensión de 5V, un conector hembra para USB-B y un conector para un alimentador externo. Además, para comunicarse mediante el puerto USB incorpora otro controlador, el Atmega16U2.

Puertos

Dispone de 14 pines de entrada/salida digital (numerados del 0 al 13), algunos de los cuales tienen propósitos específicos:
  • 0 y 1: Se utilizan como consola de comunicaciones serie, para poder leer y escribir caracteres y comunicarse así con el mundo exterior. El 0 es para la recepción y el 1 para la emisión. Ambos pines están replicados también por el puerto USB, de manera que podemos comunicarnos con el ordenador al que esté conectado.
  • 2 y 3: Sirven como entradas de interrupción. Podemos conectarlas a un dispositivo que emita una alerta cuando cambie un estado, cuando se reciban datos, etc.
  •  3, 5, 6, 9, 10 y 11: Se pueden utilizar como salidas analógicas PWM. Al escribir un valor entre 0 y 255 producirá un voltaje entre 0 y 5V de forma uniformemente distribuida.
  • 10, 11, 12 y 13: Se pueden utilizar para conectar dispositivos siguiendo el protocolo SPI.
  • 13: Lleva conectado un LED que hay en la placa. Este se encenderá cuando configuramos el puerto como salida y escribimos un 1.
Además también existen 6 puertos de entrada analógica (A0 a A5) que están conectados a un conversor analógico/digital de 10 bits.

Alimentación

En cuanto a la alimentación, hemos dicho que el microcontrolador funciona a 5V, pero la placa generalmente necesitará algo más de voltaje para funcionar. El regulador se encargará de proporcionar los 5V  a partir de la tensión de entrada. Existen las siguientes posibilidades a la hora de alimentar la placa:
  • A través del conector USB. Si tenemos el Arduino conectado al ordenador, además de servirnos para programarlo y para tener acceso a la consola serie, podemos alimentarlo a través del mismo cable. La tensión es entonces de 5V.
  • A través del conector de alimentación externa. Este conector admite entre 6V y 20V, pero normalmente deberemos proporcionar un mínimo de 7 si queremos que el regulador de tensión y la placa funcionen de forma estable.
  • A través del pin Vin. Este conector está unido a la entrada anterior, y podemos alimentarlo con el mismo voltaje.
  • A través del pin 5V. Este conector realmente es una salida que proviene del regulador cuando alimentamos el Arduino por cualquiera de las entradas anteriores. Normalmente no debe usarse de entrada, a menos que no tengamos nada más conectado en el resto y que la tensión que proporcionemos sea exactamente de 5V regulados.
Además existe un pin  3.3V que funciona normalmente como salida regulada a dicha tensión. Su salida nos proporciona un máximo de 50 mA que podemos utilizar para alimentar periféricos.

Arduino Pro Mini


Este otro modelo es apropiado para montajes independientes, sin necesidad de tener el Arduino conectado al ordenador y pudiendo alimentarlo mediante un transformador o bien pilas o baterías.

Su tamaño es mucho más pequeño y tiene ciertas carencias con respecto al UNO dado el uso que se le va a dar.


  • La principal carencia que tiene es que no tiene puerto USB. En su lugar, cada vez que queramos programarlo deberemos conectarlo porlos conectores del lado derecho de la imagen con un adaptador FTDI, que nos permite adaptar los niveles lógicos del circuito con los de la conexión USB.
  • Otra carencia es que en lugar de tener unos zócalos para pinchar conectores directamente, sólo dispone de pequeños orificios en su lugar, en los que podremos soldar patillas para montar en tableros o bien directamente los cables que necesitemos.
  • Finalmente este Arduino sólo tiene un regulador, por lo que no podremos alimentar dispositivos externos que tengan un voltaje distinto al propio del Arduino.
Por lo demás, las características son las mismas que las del Arduino UNO en cuanto a memoria y conectores,  distinguiéndose sólo en cuanto a voltaje y velocidad. Existen de hecho dos variantes distintas de este Arduino:
  • Arduino Pro Mini 5V.
    Funciona a 5V y 16Mhz, y se puede alimentar por el conector "RAW" con una tensión de entre 5V y 12V, o bien por medio del conector "VCC" por donde deben entrar exactamente 5V.
  • Arduino Pro Mini 3.3V.
    Este otro funciona a 3.3V y 8Mhz, siendo el más adecuado para montajes en los que se requiera muy poco consumo. Se puede alimentar de igual forma por RAW entre 3.3V y 12V o por VCC con 3.3V. Es muy interesante leer este artículo de mysensors.org en el que hacen una modificación a este Arduino para que se pueda alimentar sólo con dos pilas AA, a 3V. La modificación consiste básicamente en eliminar el LED de encendido y el regulador de 3.3V.

Clónicos

Como hemos dicho al principio, Arduino es una plataforma de hardware libre, lo que quiere decir que o bien puedes comprarlo en los canales y tiendas "oficiales", o bien puedes irte a la página oficial (www.arduino.cc) y descargarte los esquemas de la placa que quieras y montarla tú mismo añadiendo, modificando o eliminando lo que quieras.

También quiere decir que cualquier otro fabricante puede construir su propio Arduino y venderlo al precio que quiera. Dada mi afición a la importación al por menor desde China, mis Arduinos son todos clónicos y procedentes del Oriente. Os dejo unos enlaces a algunos de los productos que he comprado:

Clónico del Pro Mini 3.3V
  • Arduino UNO R3 modificado.
    Este dispositivo es un Arduino UNO que en lugar del Atmel Atmega328P "normal" utiliza el Atmega328P-AU que es exactamente igual pero empaquetado en un formato mucho más reducido (y barato). Otra modificación con respecto al original es que, en lugar de utilizar el Atmega16U2, utiliza el chip CH340G que es mucho más barato y da menos problemas con Windows 8 y superiores. Este artículo en concreto de Aliexpress incorpora un cable USB para conectarlo al ordenador y sale por unos 2,93€. Si ya tenéis un cable de este tipo (USB-A a USB-B, el de las impresoras) os podéis ahorrar todavía más.
  • Lote de 5 Arduinos Pro Mini 3.3V.
    Es un pedido de 5 Arduinos clónicos por un total de 8,23€ (1,65€ la unidad). Según dicen en las especificaciones, el rango de voltaje admitido es más amplio que el del original, llegando a permitir hasta 15V (yo no lo probaría). Recomiendan utilizar el pin VCC si el voltaje está entre 2,7V y 5V o bien el RAW en caso de que sea superior a 5V.
  • Lote de Arduino Pro Mini 3.3V + Programador FTDI.
    Finalmente, este lote lo compré porque era más barato que comprar el programador por separado. Se trata de un Arduino como los anteriores y un programador FTDI que se puede conectar directamente al Arduino. El lote completo sale por 3,64€ en Aliexpress. Es importante señalar que este programador entrega 5V de alimentación siempre, aunque el Arduino sea de 3.3V.





Related Posts Plugin for WordPress, Blogger...

No hay comentarios:

Publicar un comentario