Skip to content

Qué es Arduino

29 abril, 2013

Arduino_Logo

¿Qué es y de dónde viene Arduino?

Arduino es una plataforma de hardware libre.  Se basa en microcontroladores Atmel AVR (hay varios modelos de Arduinos) y toda su especificación es abierta, por lo que están disponibles código fuente, binarios compilados, esquemas de montaje, documentación y especificaciones para que cualquiera pueda utilizarlos en sus propios diseños sin necesidad de adquirir una licencia.   En el sitio web del proyecto Arduino podrás encontrar mucha documentación, explicaciones y ejemplos de todo lo que implica esta plataforma.

Lo primero que hay que comprender es que se basa en un µC (microcontrolador), que viene a ser el hermano pequeño (muy pequeño) de los actuales SoC.  Genéricamente un µC tiene unidad de proceso, memoria de programa, memoria de datos, periféricos; unidades de gestión de energía, de  reinicio, de interrupciones y un largo etcétera, todo depende de lo que el fabricante haya querido implementar.

ATmega168 funcionalidadSi te fijas comprobarás que el µC Atmega168 tiene varias patillas de E/S, varias de entrada analógica, líneas de interrupción, SPI, comunicación serie, etc.

Un SoC, en cambio puede dar todo este juego… (vamos a ser canallas y a poner uno de gama alta para hacer más acusada la comparación):  cuatro núcleos, varias UART/SPI/I2C/1-Wire, gestión de memoria, conectividad SATA, SD, USB 2.0, USB 3.0, entrada hasta para cuatro cámaras, control de pantalla táctil, procesadores de audio y vídeo, sistemas de cifrado,  capacidades extendidas de depuración…

TI omap5430 funcionalidad

Las comparaciones son odiosas, sigamos.  La gente de Arduino se decantó por usar un µC Atmel AVR, aunque en el mercado podemos encontrar µC de características similares propios de otras casas como Microchip, Freescale (lo que antes era la división de semiconductores de Motorola), Intel también fabrica estos dispositivos (por ejemplo los MCS-48, MCS-51 que a su vez han licenciado a terceras fuentes),  Parallax, Rabbit,  ST Microelectronics (antiguamente SGS-Thomson), Zilog (conocida por el Z80) y unas cuantas más.   Además tenemos una infinidad de fuentes que fabrican µC basados en ARM aunque por prestaciones muchos de ellos podrían englobarse dentro de los SoC.

ATmega168_foto

El ATmega en forrmato TQFP

Volviendo a Arduino, que es lo que nos interesa, los µC Atmel AVR usados enlas placas originales (ATmega168, ATmega328y ATmega1280) tienen las siguientes características:

  • Unidad de proceso RISC de 8 bits con 130 instrucciones y 32 registros de uso general.   El diseño RISC permite ejecutar la mayor parte de las instrucciones en un ciclo de reloj, consiguiéndose velocidades cercanas a los 16 MIPS para una frecuencia de funcionamiento de 16 MHz.
  • Memoria de programa de tipo FLASH de  16 a 128 KB dependiendo del modelo escogido.   La verdad es que no es mucho.   Una de las ventajas de esta memoria es que se puede borrar y reescribir del orden de las 10.000 veces.
  • Memoria de datos.  Aquí tendríamos dos tipos de memoria, una estática tipo EEPROM de entre 512 bytes y 4 KB, también puede parecer escasa cantidad.  Pero la SRAM tampoco es como para tirar cohetes, entre 1 y 8 KB.
  • Unidades de E/S
  • Sistema gestor de reinicio
  • Mecanismo Watchdog para evitar que el dispositivo se cuelgue.
  • Puede usar una red RC interna, calibrada de fábrica ; un cuarzo o resonador externos, un oscilador RC externo
  • 3 Contadores/Temporizadores programables
  • Varios canales PWM
  • Varios conversores ADC de entre 8 y 10 bits de precisión
  • Posibilidad de comunicar el dispositivo mediante protocolos de comunicación USART,  I2C de Phillips, SPI  de Motorola
  • Todo ello montado en un dispositivo de entre  28 y 100 patillas muchas de las cuales tienen dos y más funciones diferentes solapadas.  Si te interesa ver cuál es la correspondencia entre las patillas de los micros ATmega y los modelos de Arduino te recomiendo que visites esta página de la Arduteka donde, además encontrarás información muy útil sobre esta platafoma.

Desarrollando un poco estas características podemos destacar:

  • Tecnología RISC, que resumiendo mucho significa tener un número limitado de instrucciones, una ejecución muy rápida, tener optimizado el tamaño del código al tratarse de instrucciones de palabra fija.
  • Tecnología de 8 bit, lo que ya nos da una idea de la potencia limitada que este dispositivo tendrá.
  • Memoria a priori muy pequeña, tanto para el programa como para los datos.  En principio puede parecer así, pero es una solución de compromiso para ahorrar costes.  Simplemente, si necesitas más capacidad o más potencia es mejor buscar otra plataforma.  La tecnología EEPROM y FLASH permite que la información siga almacenada durante muchos años y aunque el dispositivo esté sin corriente eléctrica.  Por cierto, si te llama la atención que se diferencie entre memoria de programa y de datos, es porque se trata de un dispositivo con arquitectura Harvard a diferencia de la arquitectura Von Newmann a la que estamos acostumbrados en nuestros PCs de escritorio y portátiles.  En pocas palabras, programa y datos no se mezclan, lo que permite por un lado tener un ancho de bus de datos para instrucciones de distinto tamaño que el de datos, lo que es ideal para una máquina RISC; por otro lado, al aislar el código de los datos añadimos indirectamente una capa de protección al sistema al evitar que una secuencia de datos pueda utilizarse para ejecutar código malicioso.  Además  la memoria de programa tiene la posibilidad de establecer y proteger un bloque de código de arranque (boot code)
  • Otra característica fundamental de estos µC son las numerosas líneas de E/S (entrada y salida), en este caso 23 líneas, las cuales se pueden direccionar a nivel de bit conmutándolos como de entrada o salida según nos interese.
  • Incluye, además, toda la lógica para gestionar correctamente los estados de reinicio, por ejemplo el Brown-out Reset que mantiene el dispositivo en estado de reinicio mientras se pone en marcha y la tensión de alimentación esté por debajo de un mínimo de seguridad; la gestión cuando se solicita un reset externo mediante la patilla de control correspondiente hasta que el dispositivo está operativo; protección PoR (Power-on-Reset) que realiza un reset cuando la tensión de alimentación cae por debajo de un mínimo; Watchdog reset o reinicio de “perro guardián”, que solicitará un reinicio si el sistema ejecuta demasiados ciclos máquina sin control, por ejemplo si entra en una condición de bucle infinito.
  • Para funcionar, los µC de Atmel requieren de un sistema que los sincronice a modo de director de orquesta y que lo haga al ritmo y velocidad apropiados.  En la práctica esto se traduce a un sistema que “inyecta” una señal pulsante y rítmica por ejemplo mediante una red RC externa, un oscilador, un cristal de cuarzo o aprovechando una red RC interna calibrada de fábrica.  Cada una tiene sus ventajas e inconvenientes que básicamente se traducen en velocidad, estabilidad, consumo y tamaño.
  • Los contadores, temporizadores programables permiten desde contar impulsos externos asíncronos, hasta llevar la cuenta del tiempo transcurrido.  Son extremadamente versátiles y útiles, tanto es así que en el caso de estos µC se incluyen tres diferentes.
  • La modulación PWM permite por ejemplo controlar la velocidad de giro de un motor externo o la intensidad de un LED.
  • Los conversores ADC transforman una señal analógica en otra digital permitiendo al dispositivo “entender” más fácilmente los eventos que suceden en el mundo exterior.
  • Otro punto fuerte de estos micros es la posibilidad de comunicarse mediante protocolo RS-232 (con niveles TTL), o mediante los buses I2C y SPI.  La implementación de otros buses, como el 1-Wire de Dallas, es trivial.  Algunos modelos de µC, aunque no es el caso de los que incluían los primeros Arduinos, también permiten la comunicación vía USB.

Como vemos la variedad es mucha pero también lo es la potencia del dispositivo.  Antiguamente todo esto se programaba en C o directamente en lenguaje ensamblador, con un entorno IDE específico, un compilador cruzado y conectándolo al ordenador de desarrollo mediante un programador externo.

No es complicado pero requiere un tiempo de aprendizaje.  Además, la diversidad de dispositivos (incluso dentro de una misma familia) hacían necesario tener siempre a mano las hojas de características del fabricante para cada modelo que se quería utilizar.   Tampoco esperes de Arduino la versatilidad del Raspberry Pi: el primero es un µC, el segundo es un SoC con todas las letras.

Los diseñadores de Arduino añadieron una capa de abstracción a nivel de programación implementando el lenguaje de programación Processing/Wiring; crearon un IDE funcional que incluía el compilador, la comunicación con el programador y un “entorno” de depuración; a todo esto se sumó la creación de un sistema hardware predefinido que permite desde montar prototipos en la propia placa de desarrollo, hasta programarlo desde el equipo de desarrollo sin necesidad de más componentes que un cable RS-232 o USB; y algo no menos importante, la creación de un sistema de arranque propio (bootloader), que era lo que realmente convertía a un simple ATmega168 en un Arduino.

Arduino Mega 2560 vs ATmega2560

Desarrollos como estos ya se había hecho antes para otras plataformas, pero sin duda el punto fuerte de Arduino fue el desarrollarlo abierto: cualquiera puede descargarse sin coste alguno tanto los planos y especificaciones hardware como el softwarede desarrollo, la documentación, el bootloader, o las librerías de desarrollo.  Y todos tenemos licencia para cambiarlo, adaptarlo, usarlo, etc sin tener que pagar derechos de autor.  Para muchos eso era un “negocio ruinoso”, si pones tu proyecto gratis y al alcance de todos… ¿de dónde obtienes los beneficios?  Pero la realidad es que se ha convertido en muy poco tiempo un motor económico en forma de fabricantes de placas ya montadas a precios asequibles, desarrolladores de proyectos, cursos de formación, libros, fabricantes de shields o placas de expansión, etc.  Además, ha permitido entrar en el mundo de la microelectrónica a personas que antes no se lo abrían planteado.  Una de las vías de introducción de Arduino fue a través de artistas que los emplearon para sus obras de arte, eso le dió cierto caché fuera del circuito habitual de electrónicos y gente geek.  En definitiva, Arduino se ha hecho grande gracias a la voluntad desinteresada de sus creadores y a un público receptivo que demandaba algo así.

Arduino tiene imitadores.  Por ejemplo a nivel amateur, está en la calle el proyecto Pingüino basado en los µC PIC de Microchip (uno de los rivales de Atmel)   La propia empresa Microchip, al ver cómo le comían terreno en el campo de los µC se decidió a sacar su propio proyecto, el chipKIT, compatible con Arduino y del que quizá ni hayas oído hablar a pesar de tener mejores prestaciones.

chipKIT Max32 de Microchip y Digilent

chipKIT Max32 de Microchip y Digilent

Otras opciones son los Netduino, los Espardino, etc… generalmente todos estos tienen mejores prestaciones, los dos últimos utilizan micros ARM, mucho más potentes que los ATmega, sin embargo no han tenido tanto calado.  Quizá el motivo de esto sea el público al que estas plataformas van realmente orientadas, el de usuarios que no quieren gastar mucho y que necesitan algo rápido para montar unas luces parpadeantes, unos motores, o simplemte experimentar y Arduino fue el primero en llegar.  Si quieres experimentar entonces Arduino es tu plataforma, pero si de verdad quieres profundizar necesitarás aprender todos los entresijos del µC que estés usando en cada caso, eso te dará un control total sobre el dispositivo.

En definitiva, Arduino es una plataforma ideal si quieres montar proyectos y prototipos sencillos con un presupuesto reducido y de una manera rápida y ágil.  Más adelante veremos otras opciones algunas basadas en µC y otras en SoC: pingüino, LPC, Netduino, Espardino, chipKIT o Raspberry PI y cuáles son sus diferencias, ventajas e inconvenientes.

Recuerda que nos mudamos. nuestra nueva dirección es:

http://arrizen.com

Anuncios

From → Arduino

Dejar un comentario

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

A %d blogueros les gusta esto: