# Arduino

Arduino es una compañía de desarrollo de software y hardware libres, así como una comunidad internacional que diseña y manufactura placas de desarrollo de hardware para construir dispositivos digitales y dispositivos interactivos que puedan detectar y controlar objetos del mundo real. Arduino se enfoca en acercar y facilitar el uso de la electrónica y programación de sistemas embebidos en proyectos multidisciplinarios. Los productos que vende la compañía son distribuidos como hardware y software libre, bajo la Licencia Pública General de GNU (GPL) y la Licencia Pública General Reducida de GNU (LGPL), permitiendo la manufactura de las placas Arduino y distribución del software por cualquier individuo. Las placas Arduino están disponibles comercialmente en forma de placas ensambladas o también en forma de kits hazlo tú mismo (del inglés DIY, «Do It Yourself»).
Los diseños de las placas Arduino usan diversos microcontroladores y microprocesadores. Generalmente el hardware consiste de un microcontrolador Atmel AVR, conectado bajo la configuración de «sistema mínimo» sobre una placa de circuito impreso a la que se le pueden conectar placas de expansión (shields) a través de la disposición de los puertos de entrada y salida presentes en la placa seleccionada. Las shields complementan la funcionalidad del modelo de placa empleada, agregando circuitería, sensores y módulos de comunicación externos a la placa original. La mayoría de las placas Arduino pueden ser alimentadas por un puerto USB o un puerto barrel Jack de 2.5 mm. La mayoría de las placas Arduino pueden ser programadas a través del puerto serie que incorporan haciendo uso del Bootloader que traen programado por defecto. El software de Arduino consiste de dos elementos: un entorno de desarrollo (IDE) (basado en el entorno de processing y en la estructura del lenguaje de programación Wiring) y un cargador de arranque (bootloader, por su traducción al inglés), que es ejecutado de forma automática dentro del microcontrolador en cuanto este se enciende. Las placas Arduino se programan mediante un computador, usando comunicación serie.
El proyecto Arduino tiene sus orígenes en el proyecto Wiring, el cual surge en 2003 como una herramienta para estudiantes en el Interaction Design Institute Ivrea en Ivrea, Italia, con el objetivo de proporcionar una forma fácil y económica de que principiantes y profesionales crearan dispositivos que pudieran interactuar con su entorno mediante sensores y actuadores. La primera placa Arduino comercial fue introducida en el año 2005, ofreciendo un bajo costo económico y facilidad de uso para novatos y profesionales. A partir de octubre del año 2012, se incorporaron nuevos modelos de placas de desarrollo que empleaban microcontroladores Cortex M3 y ARM de 32 bits; dichos modelos coexisten con los iniciales, que integran microcontroladores AVR de 8 bits. Cabe resaltar que las arquitecturas ARM y AVR no son iguales, por lo cual tampoco lo es su set de instrucciones a nivel ensamblador y por ende algunas bibliotecas realizadas para operar en una arquitectura presentan complicaciones al ser empleadas en la otra. A pesar de lo anterior, todas los modelos de placa Arduino se pueden programar y compilar bajo el IDE predeterminado de Arduino sin ningún cambio, esto gracias a que el IDE compila el código original a la versión de la placa seleccionada.

## Historia

De forma estricta, el proyecto «Arduino» se inició en el año 2005 como un proyecto enfocado a estudiantes en el Interaction Design Institute Ivrea (IDII), de Ivrea (Italia). En aquellos años, los estudiantes usaban el microcontrolador BASIC Stamp, cuyo costo era de $100 USD, un costo considerablemente alto para un estudiante promedio. Antes del año 2005, específicamente durante el año 2003, Hernando Barragán había creado la plataforma de desarrollo Wiring como resultado de su proyecto de tesis en la maestría en el IDII, bajo la supervisión de Massimo Banzi y Casey Reas, quienes eran conocidos por haber trabajado en el lenguaje Processing y daban clases en el IDII. El objetivo del proyecto era crear herramientas simples y de bajo costo para la creación de proyectos digitales por parte de personas sin altos conocimientos técnicos o sin un perfil de ingeniería. El proyecto Wiring era una placa de desarrollo de hardware que constaba de una placa de circuito impreso (PCB) con un microcontrolador ATmega168, un Ambiente de Desarrollo Integrado (IDE) basado en funciones de procesamiento y una biblioteca de funciones para programar fácilmente el microcontrolador. Regresando al año 2005, Massimo Banzi junto con David Mellis (otro estudiante del IDII) y David Cuartielles, agregaron soporte a Wiring para el microcontrolador ATmega8, más económico que el inicial (Atmega168). Pero en lugar de continuar el desarrollo en Wiring, se separaron del proyecto y lo renombraron Arduino.
El nombre Arduino viene de un bar en Ivrea, Italia, en donde algunos de los fundadores del proyecto Arduino solían reunirse. El bar tiene el nombre de «Bar di Re Arduino», y fue nombrado en honor a Arduino de Ivrea, quien fue el margrave de la Marca de Ivrea y Rey de Italia desde el año 1002 hasta el año 1014.
El equipo inicial de Arduino estaba conformado por Massimo Banzi, David Cuartielles, Tom Igoe, Gianluca Martino y David Mellis. Hernando Barragán no fue invitado a participar.
Posteriormente el proyecto Wiring siguió adelante con placas menos densas y costosas que se distribuyeron a través de la comunidad de código abierto.
Adafruit Industries, un proveedor de componentes electrónicos y fabricante de placas de circuito impreso, entre ellas placas Arduino, ubicado en la ciudad de Nueva York, estimó a mediados del año 2011 que se habían producido comercialmente más de 300 000 placas Arduino oficiales. En el año 2013, estimó que se encontraban en manos de usuarios 700 000 placas Arduino oficiales.
En octubre del año 2016, Federico Musto (actualmente ex CEO de Arduino), adquirió el 50 % de la compañía tras haber adquirido las acciones de uno de los miembros fundadores del equipo. En abril del año 2017, la revista Wired informó que Musto había «fabricado su propio expediente académico», habiéndolo publicado en el sitio web de Arduino, cuenta personal de LinkedIn, e incluso en documentos comerciales oficiales italianos. Musto afirmaba tener un PhD en ciencias de la computación por el Instituto Tecnológico de Massachusetts (MIT), y un MBA de la Universidad de Nueva York. La revista Wired reportó que ninguna de las universidades donde él afirmaba haber estudiado tenía registro alguno de la asistencia de Musto. Musto afirmó más tarde, en una entrevista a Wired, que realmente nunca había obtenido los grados académicos.
En el año 2017, Massimo Banzi anunció la creación de la «Fundación Arduino», declarando que sería «un nuevo comienzo para Arduino». Dicha fundación, según palabras del mismo Banzi, «permitirá defender los valores fundamentales de la Comunidad Arduino dentro del ecosistema de código abierto y hacer que nuestro compromiso ( haciendo referencia a la empresa Arduini) con el código abierto sea más sólido que nunca». Sin embargo ha existido cierta incertidumbre del desarrollo actual de dicha iniciativa.
La controversia en torno a Federico Musto continuó en julio del año 2017, según los informes, por haber retirado licencias de código abierto, esquemas y códigos del sitio web de Arduino, lo que provocó escrutinio y protesta por parte de la comunidad de makers.
En octubre del año 2017, Arduino anunció su asociación con la multinacional ARM Holdings (ARM). El anuncio decía, en parte, que «ARM reconoce la independencia como un valor central de Arduino... sin ningún acuerdo de uso exclusivo con la arquitectura ARM». Arduino tiene la intención de seguir trabajando con todos los proveedores y arquitecturas de tecnología.
Para la producción en serie de la primera versión se tomó en cuenta que el coste no fuera mayor de 30 euros, que fuera ensamblado en una placa de color azul, debía ser Plug and Play y que trabajara con todas las plataformas informáticas tales como MacOSX, Windows y GNU/Linux. Las primeras 300 unidades de Arduino se las dieron a los alumnos del Instituto IVREA, con el fin de que las probaran y empezaran a diseñar sus primeros prototipos.

### Disputa por la marca Arduino

A principios de 2008, los cinco cofundadores del proyecto Arduino crearon la empresa Arduino LLC, cuyo propósito era englobar las marcas comerciales asociadas a las placas Arduino. La fabricación y venta de las placas Arduino debía ser hecha por compañías externas, y Arduino LLC obtendría un royalty (comisión), de ellos. Los estatutos bajo los cuales se creó Arduino LLC especificaban que cada uno de los cinco fundadores originales transferirían la propiedad de la marca Arduino a la empresa recién formada (Arduino LLC).
A finales de 2008, la empresa de Gianluca Martino (Smart Projects), registró la marca Arduino en Italia y mantuvo esto en secreto de los otros cofundadores durante un periodo aproximado de dos años. Esto fue descubierto cuando la compañía Arduino LLC intentó registrar la marca en otras partes del mundo (originalmente ellos se habían registrado solo en EE. UU.), encontrando que esta ya estaba registrada en Italia. Las negociaciones con Gianluca y su firma para poner la marca bajo control de la compañía Arduino LLC fallaron. En el año 2014, Smart Projects comenzó a negarse a pagar regalías. Luego nombraron a un nuevo CEO, Federico Musto, que renombró a la empresa Arduino SRL y creó el sitio web arduino.org, copiando los gráficos y el diseño del arduino.cc original. Esto resultó en una fractura en el equipo de desarrollo de Arduino.
En enero de 2015, Arduino LLC entabló una demanda contra Arduino SRL.
En mayo de 2015, Arduino LLC creó la marca mundial Genuino, utilizada como marca fuera de los Estados Unidos.
En julio de 2017, la nueva compañía BCMI LABS LLC fundada por Massimo Banzi, David Cuartielles, David Mellis y Tom Igoe, adquirió Arduino AG y todas las marcas registradas de Arduino. Fabio Violante se convirtió en el nuevo CEO que reemplazaría a Federico Musto, quien ya no trabajaría para Arduino AG.
Durante la «World Maker Faire» en Nueva York del 1 de octubre de 2016, el cofundador y CEO de Arduino LLC (Massimo Banzi) y el CEO de Arduino SRL (Federico Musto), anunciaron la fusión de ambas compañías.

## Hardware

Arduino es un hardware libre. Los diseños de referencia de hardware se distribuyen bajo licencia Creative Commons Attribution Share-Alike 2.5 y están disponibles en el sitio web de Arduino. Los esquemáticos y archivos de montaje de componentes (PCBs) para algunas versiones de placas también están disponibles.
Aunque los diseños de hardware y software están disponibles bajo licencias de copyleft, los desarrolladores han solicitado que el nombre Arduino sea exclusivo del producto oficial y no se use para trabajos derivados sin antes solicitar permiso. El documento de política oficial sobre el uso del nombre Arduino enfatiza que el proyecto está abierto a incorporar el trabajo de otros en el producto oficial. Varios productos compatibles con Arduino lanzados comercialmente han evitado incluir el nombre del proyecto Arduino en sus dispositivos al emplear nombres que terminan en «-duino».
La mayoría de las placas Arduino constan de un microcontrolador AVR Atmel-8 bits (ATmega8, ATmega168, ATmega328, ATmega1280, ATmega2560), cada microcontrolador consta de diversas cantidades de memoria flash, pines y funciones. Las placas utilizan pines/cabezales hembra de una o dos hileras que facilitan las conexiones e incorporación en otros circuitos.
Las placas Arduino pueden conectarse con módulos adicionales denominados shields (escudos, por su traducción al español), dichos shields aumentan las características técnicas de la placa Arduino en uso, debido a que poseen circuitos específicos que añaden una o más funcionalidades extras a la placa Arduino nativa en la cual se utilice, también se les conoce como placas de expansión. La mayoría de estos shields se conectan a través de un bus serie I²C, aunque existen también aquellas que emplean conexión mediante el bus UART (Universal Asynchronous Receiver-Transmitter, por su traducción al español Transmisor-Receptor Asíncrono Universal), así como con el bus SPI (Serial Peripheral Interface, por su traducción al español Interfaz Periférica Serie).
La mayoría de las placas incluyen un regulador lineal de 5 V y un oscilador de cristal de 16 MHz, o un resonador de cerámica según sea el caso. Algunos diseños, como el LilyPad, funcionan a 8 MHz y prescinden del regulador de voltaje a bordo debido a restricciones de factor/tamaño de forma específicas.
Los modelos de Arduino se categorizan en placas de desarrollo, placas de expansión (shields), kits, accesorios e impresoras 3D.
* Placas: Arduino Galileo, Arduino Uno, Arduino Leonardo, Arduino Due, Arduino Yún, Arduino Tre (En Desarrollo), Arduino Zero, Arduino Micro, Arduino Esplora, Arduino Mega ADK, Arduino Ethernet, Arduino Mega 2560, Arduino Robot, Arduino Mini, Arduino Nano, LilyPad Arduino Simple, LilyPad Arduino SimpleSnap, LilyPad Arduino, LilyPad Arduino USB, Arduino Pro Mini, Arduino Fio, Arduino Pro, Arduino MKR1000/Genuino MKR1000, Arduino MICRO/Genuino MICRO, Arduino 101/Genuino 101, Arduino Gemma.
* Placas de expansión (shields): Arduino GSM Shield, Arduino Ethernet Shield, Arduino WiFi Shield, Arduino Wireless SD Shield, Arduino USB Host Shield, Arduino Motor Shield, Arduino Wireless Proto Shield, Arduino Proto Shield.
* Kits: The Arduino Starter Kit, Arduino Materia 101.
* Accesorios: Pantalla LCD TFT, Adaptador USB/Serie y MiniUSB/Serie, Arduino ISP.
* Impresoras 3d: Arduino Materia 101.

## Tipos y especificaciones
#### Arduino Uno

La placa tiene 7 pines de alimentación, 14 pines digitales y 6 pines analógicos programables con el Arduino IDE (Entorno de desarrollo integrado) a través de un cable USB. Puede ser alimentado por el cable USB o por una batería externa de 9 voltios, aunque acepta voltajes entre 7 y 20 voltios. Es el buque insignia de Arduino ya que es la placa más popular, la que todo el mundo utiliza para iniciarse y la más sencilla de utilizar. Es el punto de partida de muchos entusiastas de la programación electrónica.

#### Arduino Mega

La placa con el microcontrolador más potente de la familia Arduino. Con 54 pines digitales que funcionan como entrada y salida; 16 entradas analógicas, 7 pines de alimentación, un cristal oscilador de 16 MHz, una conexión USB, un botón de reinicio y una entrada para la alimentación de la placa. Arduino MEGA es la placa que se utiliza cuando Arduino UNO no llega a cubrir las necesidades de un proyecto. Se ha utilizado ampliamente como centro de control y computación en impresoras 3D...

#### Arduino Esplora

La placa utiliza un microcontrolador Atmega32U4 AVR con oscilador de cristal de 16 MHz y una conexión micro USB capaz de actuar como un dispositivo cliente USB, como un mouse o un teclado.

#### Arduino Leonardo

La placa tiene 20 pines de entrada/salida digital (de los cuales 7 se pueden usar como salidas PWM y 12 como entradas analógicas), un oscilador de cristal de 16 MHz, una conexión micro USB, un conector de alimentación, un encabezado ICSP y un botón de reinicio.

#### Arduino Nano

El Arduino Nano es una placa de desarrollo compacta basada en el microcontrolador ATMega328P, que opera a 16 MHz. Con un tamaño similar al de una tarjeta de crédito, ofrece 14 pines de E/S digitales, 8 pines analógicos y la posibilidad de programación a través de un conector USB Mini-B o USB-C, así como una fuente de alimentación externa de 7-12V. Su capacidad de 32 KB de memoria flash y 2 KB de memoria RAM lo hace adecuado para una amplia variedad de proyectos electrónicos. Es compatible con numerosos sensores, actuadores y módulos adicionales, y su precio asequible lo convierte en una elección popular para entusiastas y profesionales de la electrónica.

### Para qué sirven

Arduino es una placa electrónica de hardware libre que utiliza un microcontrolador reprogramable con una serie de pines que permiten establecer conexiones entre el controlador y los diferentes sensores, es decir el «cerebro» de algún circuito o maquinaria.
En un circuito se suele utilizar como fuente de alimentación y «puente» entre los diferentes componentes para lograr que interactúen entre ellos.
En un cuerpo robótico deja de servir como fuente de alimentación y se convierte enteramente en el cerebro del cuerpo con ayuda de placas externas conocidas como shields (escudos).

## Equipo de desarrollo

El núcleo del equipo de desarrollo de Arduino está formado por Massimo Banzi, David Cuartielles, Tom Igoe, Gianluca Martino, David Mellis y Nicholas Zambetti.

## Aplicaciones

La plataforma Arduino ha sido usada como base en diversas aplicaciones electrónicas:
* Xoscillo: Osciloscopio de código abierto.
* Equipo científico para investigaciones.
* Arduinome: Un dispositivo controlador MIDI.
* OBDuino: un económetro que usa una interfaz de diagnóstico a bordo que se halla en los automóviles modernos.
* SCA-ino: Sistema de cómputo automotriz capaz de monitorear sensores como el TPS, el MAP y el 03S y controlar actuadores automotrices como la bobina de ignición, la válvula IAC y aceleradores electrónicos.
* Humane Reader: dispositivo electrónico de bajo coste con salida de señal de TV que puede manejar una biblioteca de 5000 títulos en una tarjeta microSD.
* The Humane PC: equipo que usa un módulo Arduino para emular un computador personal, con un monitor de televisión y un teclado para computadora.
* Ardupilot: software y hardware de aeronaves no tripuladas.
* ArduinoPhone: un teléfono móvil construido sobre un módulo Arduino.
* Máquinas de control numérico por computadora (CNC).
* Open Theremín Uno: Versión digital de hardware libre del instrumento Theremín.
* Impresoras 3D.
* Ambilight, sistema de retroiluminación led imitando el sistema de los televisores Philips.

## Otras interfaces de programación

Es posible comunicar una aplicación que corra sobre Arduino con otros dispositivos que corran otros lenguajes de programación y aplicaciones populares, debido a que Arduino usa la transmisión de datos en serie, la cual es soportada por la mayoría de los lenguajes que se mencionan a continuación. Y para los que no soportan el formato serie de forma nativa, es posible utilizar software intermediario que traduzca los mensajes enviados por ambas partes para permitir una comunicación fluida. Algunos ejemplos de lenguajes son:
* 3DVIA Virtools: aplicaciones interactivas y de tiempo real.
* Adobe Director
* BlitzMax (con acceso restringido).
* C
* C++ (mediante libSerial o en Windows).
* C#
* Cocoa/Objective-C (para Mac OS X).
* Flash (mediante ActionScript).
* Gambas
* Isadora (Interactividad audiovisual en tiempo real).
* Instant Reality (X3D).
* Java
* Liberlab (software de medición y experimentación).
* LabView
* Mathematica
* Matlab
* MaxMSP: Entorno gráfico de programación para aplicaciones musicales, de audio y multimedia.
* Minibloq: Entorno gráfico de programación, corre también en las computadoras OLPC.
* Perl
* Php
* Physical Etoys: Entorno gráfico de programación usado para proyectos de robótica educativa.
* Processing
* Pure Data
* Python
* Ruby
* Scratch for Arduino (S4A): Entorno gráfico de programación, modificación del entorno para niños Scratch, del MIT.
* Squeak: Implementación libre de Smalltalk.
* SuperCollider: Síntesis de audio en tiempo real.
* VBScript
* Visual Basic .NET
* VVVV: Síntesis de vídeo en tiempo real.