Arduino ( / ɑː r ˈ d w iː n oʊ / ) es una empresa, proyecto y comunidad de usuarios de hardware y software de código abierto italiana que diseña y fabrica microcontroladores de placa única y kits de microcontroladores para construir dispositivos digitales. Sus productos de hardware están licenciados bajo una licencia CC BY-SA , mientras que el software está licenciado bajo la Licencia Pública General Reducida de GNU (LGPL) o la Licencia Pública General de GNU (GPL), [1] lo que permite la fabricación de placas Arduino y la distribución de software por parte de cualquier persona. Las placas Arduino están disponibles comercialmente en el sitio web oficial o a través de distribuidores autorizados. [2]
Los diseños de placas Arduino utilizan una variedad de microprocesadores y controladores. Las placas están equipadas con conjuntos de pines de entrada/salida (E/S) digitales y analógicos que pueden interconectarse con varias placas de expansión ("shields") o placas de pruebas (para creación de prototipos) y otros circuitos. Las placas cuentan con interfaces de comunicaciones en serie, incluido Universal Serial Bus (USB) en algunos modelos, que también se utilizan para cargar programas. Los microcontroladores se pueden programar utilizando los lenguajes de programación C y C++ (Embedded C), utilizando una API estándar que también se conoce como el lenguaje de programación Arduino , inspirado en el lenguaje Processing y utilizado con una versión modificada del IDE de Processing. Además de utilizar cadenas de herramientas de compilación tradicionales , el proyecto Arduino proporciona un entorno de desarrollo integrado (IDE) y una herramienta de línea de comandos desarrollada en Go .
El proyecto Arduino comenzó en 2005 como una herramienta para estudiantes del Interaction Design Institute Ivrea , Italia, [3] con el objetivo de proporcionar una forma económica y sencilla para que los principiantes y los profesionales creen dispositivos que interactúen con su entorno utilizando sensores y actuadores . Algunos ejemplos comunes de este tipo de dispositivos destinados a aficionados principiantes incluyen robots simples , termostatos y detectores de movimiento .
El nombre Arduino proviene de un café en Ivrea , Italia, donde solían reunirse algunos de los fundadores del proyecto. El bar recibió el nombre de Arduino de Ivrea , quien fue el margrave de la Marca de Ivrea y rey de Italia entre 1002 y 1014. [4]
El proyecto Arduino se inició en el Interaction Design Institute Ivrea (IDII) en Ivrea , Italia. [3] En ese momento, los estudiantes usaban un microcontrolador BASIC Stamp a un costo de $50. En 2004, Hernando Barragán creó la plataforma de desarrollo Wiring como proyecto de tesis de maestría en IDII, bajo la supervisión de Massimo Banzi y Casey Reas . Casey Reas es conocido por co-crear, con Ben Fry, la plataforma de desarrollo Processing . El objetivo del proyecto era crear herramientas simples y de bajo costo para crear proyectos digitales por parte de no ingenieros. La plataforma Wiring consistía en una placa de circuito impreso (PCB) con un microcontrolador ATmega 128, un IDE basado en Processing y funciones de biblioteca para programar fácilmente el microcontrolador. [5] En 2005, Massimo Banzi, con David Mellis, otro estudiante de IDII, y David Cuartielles, extendieron Wiring agregando soporte para el microcontrolador ATmega8 más económico. El nuevo proyecto, derivado de Wiring, se llamó Arduino . [5]
El equipo central inicial de Arduino estaba formado por Massimo Banzi, David Cuartielles, Tom Igoe, Gianluca Martino y David Mellis. [3]
Tras la finalización de la plataforma, se distribuyeron versiones más ligeras y económicas en la comunidad de código abierto. Se estimó que a mediados de 2011 se habían producido comercialmente más de 300.000 Arduinos oficiales [6] , y en 2013 había 700.000 placas oficiales en manos de los usuarios [7] .
A principios de 2008, los cinco cofundadores del proyecto Arduino crearon una empresa, Arduino LLC, [8] para conservar las marcas registradas asociadas a Arduino. La fabricación y venta de las placas las realizarían empresas externas, y Arduino LLC recibiría regalías de ellas. Los estatutos fundacionales de Arduino LLC especificaban que cada uno de los cinco fundadores transferiría la propiedad de la marca Arduino a la empresa recién formada. [ cita requerida ]
A finales de 2008, la empresa de Gianluca Martino, Smart Projects, registró la marca Arduino en Italia y mantuvo este secreto al resto de cofundadores durante unos dos años. Esto se reveló cuando la empresa Arduino intentó registrar la marca en otras áreas del mundo (originalmente la habían registrado solo en EE. UU.) y descubrió que ya estaba registrada en Italia. Las negociaciones con Martino y su empresa para poner la marca bajo el control de la empresa Arduino original fracasaron. En 2014, Smart Projects comenzó a negarse a pagar regalías. Entonces designaron a un nuevo director ejecutivo, Federico Musto, que renombró 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 ruptura en el equipo de desarrollo de Arduino. [9] [10] [11]
En enero de 2015, Arduino LLC presentó una demanda contra Arduino SRL. [12]
En mayo de 2015, Arduino LLC creó la marca mundial Genuino , utilizada como marca fuera de los Estados Unidos. [13]
El 1 de octubre de 2016, en la World Maker Faire de Nueva York, Massimo Banzi, cofundador y director ejecutivo de Arduino LLC, y Federico Musto, director ejecutivo de Arduino SRL, anunciaron la fusión de las dos empresas, formando Arduino AG. [14] Casi al mismo tiempo, Massimo Banzi anunció que, además de la empresa, se lanzaría una nueva Fundación Arduino como "un nuevo comienzo para Arduino", pero esta decisión fue retirada más tarde. [15] [16] [17]
En abril de 2017, Wired informó que Musto había "fabricado su historial académico... En el sitio web de su empresa, en las cuentas personales de LinkedIn e incluso en documentos comerciales italianos, Musto figuraba, hasta hace poco, como poseedor de un doctorado del Instituto Tecnológico de Massachusetts. En algunos casos, su biografía también afirmaba tener un MBA de la Universidad de Nueva York". Wired informó que ninguna de las universidades tenía registro de la asistencia de Musto, y Musto admitió más tarde en una entrevista con Wired que nunca había obtenido esos títulos. [18] La controversia en torno a Musto continuó cuando, en julio de 2017, supuestamente retiró muchas licencias, esquemas y códigos de código abierto del sitio web de Arduino, lo que provocó escrutinio y protestas. [19]
En 2017, Arduino AG era propietaria de muchas marcas registradas de Arduino. En julio de 2017, BCMI, fundada por Massimo Banzi, David Cuartielles, David Mellis y Tom Igoe, adquirió Arduino AG y todas las marcas registradas de Arduino. Fabio Violante es el nuevo director ejecutivo en reemplazo de Federico Musto, quien ya no trabaja para Arduino AG. [20] [21]
En octubre de 2017, Arduino anunció su asociación con Arm Holdings (ARM). El anuncio decía, en parte, "ARM reconoció la independencia como un valor central de Arduino... sin ningún tipo de dependencia de la arquitectura ARM ". Arduino tiene la intención de seguir trabajando con todos los proveedores y arquitecturas de tecnología. [22] Bajo la dirección de Violante, la empresa comenzó a crecer de nuevo y a lanzar nuevos diseños. La marca registrada Genuino fue desestimada y todos los productos volvieron a llevar el nombre de Arduino.
En agosto de 2018, Arduino anunció su nueva herramienta de línea de comandos de código abierto (arduino-cli), que se puede utilizar como reemplazo del IDE para programar las placas desde un shell. [23]
En febrero de 2019, Arduino anunció su servicio IoT Cloud como una extensión del entorno en línea Create. [24]
En febrero de 2020, la comunidad Arduino incluía alrededor de 30 millones de usuarios activos según las descargas del IDE. [25]
Arduino es un hardware de código abierto . Los diseños de referencia del hardware se distribuyen bajo una licencia Creative Commons Attribution Share-Alike 2.5 y están disponibles en el sitio web de Arduino. También están disponibles los archivos de diseño y producción para algunas versiones del hardware.
Aunque los diseños de hardware y software están disponibles libremente bajo licencias copyleft , los desarrolladores han solicitado que el nombre Arduino sea exclusivo del producto oficial y no se utilice para trabajos derivados sin 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. [26] Varios productos compatibles con Arduino lanzados comercialmente han evitado el nombre del proyecto utilizando varios nombres que terminan en -duino . [27]
La mayoría de las placas Arduino constan de un microcontrolador AVR Atmel de 8 bits (ATmega8, [29] ATmega168, ATmega328 , ATmega1280 o ATmega2560) con distintas cantidades de memoria flash, pines y funciones. [30] El Arduino Due de 32 bits , basado en el Atmel SAM3X8E , se presentó en 2012. [31] Las placas utilizan pines de una o dos filas o conectores hembra que facilitan las conexiones para la programación y la incorporación a otros circuitos. Estos pueden conectarse con módulos complementarios denominados shields . Múltiples y posiblemente apilados shields pueden ser direccionables individualmente a través de un bus serial I²C . La mayoría de las placas incluyen un regulador lineal de 5 V y un oscilador de cristal o resonador cerámico de 16 MHz . Algunos diseños, como el LilyPad, [32] funcionan a 8 MHz y prescinden del regulador de voltaje integrado debido a restricciones específicas del factor de forma .
Los microcontroladores Arduino están preprogramados con un gestor de arranque que simplifica la carga de programas a la memoria flash del chip . El gestor de arranque predeterminado del Arduino Uno es el gestor de arranque Optiboot. [33] Las placas se cargan con código de programa a través de una conexión en serie a otra computadora. Algunas placas Arduino en serie contienen un circuito de cambio de nivel para convertir entre niveles lógicos RS-232 y señales de nivel de lógica transistor-transistor ( serie TTL ). Las placas Arduino actuales se programan a través del bus serie universal (USB), implementado utilizando chips adaptadores USB a serie como el FTDI FT232. Algunas placas, como las placas Uno de modelos posteriores, sustituyen el chip FTDI con un chip AVR separado que contiene firmware USB a serie, que es reprogramable a través de su propio encabezado ICSP . Otras variantes, como el Arduino Mini y el Boarduino no oficial, utilizan una placa o cable adaptador USB a serie desmontable, Bluetooth u otros métodos. Cuando se utiliza con herramientas de microcontrolador tradicionales, en lugar del IDE de Arduino, se utiliza la programación en el sistema (ISP) AVR estándar.
La placa Arduino expone la mayoría de los pines de E/S del microcontrolador para su uso por otros circuitos. Diecimila , [a] Duemilanove , [b] y la actual Uno [c] proporcionan 14 pines de E/S digitales, seis de los cuales pueden producir señales moduladas por ancho de pulso , y seis entradas analógicas, que también se pueden utilizar como seis pines de E/S digitales. Estos pines están en la parte superior de la placa, a través de conectores hembra de 0,1 pulgadas (2,54 mm). También se encuentran disponibles comercialmente varios protectores de aplicaciones enchufables. Las placas Arduino Nano y Bare Bones Board [34] y Boarduino [35] compatibles con Arduino pueden proporcionar pines de conector macho en la parte inferior de la placa que se pueden enchufar en placas de pruebas sin soldadura .
Existen muchas placas compatibles con Arduino y derivadas de Arduino. Algunas son funcionalmente equivalentes a un Arduino y se pueden utilizar indistintamente. Muchas mejoran el Arduino básico añadiendo controladores de salida, a menudo para su uso en la educación escolar, [36] para simplificar la fabricación de buggies y robots pequeños. Otras son eléctricamente equivalentes, pero cambian el factor de forma, a veces manteniendo la compatibilidad con los shields, a veces no. Algunas variantes utilizan procesadores diferentes, de compatibilidad variable.
El hardware Arduino original fue fabricado por la empresa italiana Smart Projects. [37] Algunas placas de marca Arduino han sido diseñadas por las empresas estadounidenses SparkFun Electronics y Adafruit Industries . [38] A partir de 2016 [actualizar], se han producido comercialmente 17 versiones del hardware Arduino.
Las placas Arduino y compatibles con Arduino utilizan placas de expansión de circuitos impresos llamadas shields , que se conectan a los conectores de pines Arduino que se suministran normalmente. [55] Los shields pueden proporcionar controles de motor para impresión 3D y otras aplicaciones, GNSS (navegación por satélite), Ethernet, pantalla de cristal líquido (LCD) o creación de prototipos . Varios shields también se pueden fabricar por uno mismo (DIY). [56] [57] [58]
Un programa para el hardware Arduino puede escribirse en cualquier lenguaje de programación con compiladores que produzcan código binario de máquina para el procesador de destino. Atmel ofrece un entorno de desarrollo para sus microcontroladores basados en AVR de 8 bits y ARM Cortex-M de 32 bits : AVR Studio (antiguo) y Atmel Studio (nuevo). [59] [60] [61]
El entorno de desarrollo integrado (IDE) Arduino es una aplicación multiplataforma (para Microsoft Windows , macOS y Linux ) que se basa en Processing IDE , que está escrito en Java . Utiliza la API Wiring como estilo de programación y HAL . Incluye un editor de código con funciones como cortar y pegar texto, buscar y reemplazar texto, sangría automática, coincidencia de llaves y resaltado de sintaxis , y proporciona mecanismos simples de un solo clic para compilar y cargar programas en una placa Arduino. También contiene un área de mensajes, una consola de texto, una barra de herramientas con botones para funciones comunes y una jerarquía de menús de operación. El código fuente del IDE se publica bajo la Licencia Pública General de GNU , versión 2. [63]
El IDE de Arduino soporta los lenguajes C y C++ usando reglas especiales de estructuración de código. El IDE de Arduino proporciona una biblioteca de software del proyecto Wiring , que proporciona muchos procedimientos comunes de entrada y salida. El código escrito por el usuario solo requiere dos funciones básicas, para iniciar el boceto y el bucle principal del programa, que se compilan y vinculan con un stub de programa main() en un programa ejecutivo cíclico ejecutable con la cadena de herramientas GNU , también incluida con la distribución IDE. El IDE de Arduino emplea el programa avrdude para convertir el código ejecutable en un archivo de texto en codificación hexadecimal que se carga en la placa Arduino mediante un programa cargador en el firmware de la placa. Tradicionalmente, Arduino IDE se usaba para programar las placas oficiales de Arduino basadas en microcontroladores Atmel AVR, pero con el tiempo, una vez que la popularidad de Arduino creció y existió la disponibilidad de compiladores de código abierto, muchas más plataformas desde PIC , STM32 , TI MSP430 , ESP32 se pueden codificar usando Arduino IDE. [64]
El 18 de octubre de 2019 se lanzó una versión preliminar alfa inicial de un nuevo IDE de Arduino, llamado Arduino Pro IDE. La versión preliminar beta se lanzó el 1 de marzo de 2021, rebautizada como IDE 2.0. El 14 de septiembre de 2022, se lanzó oficialmente el IDE 2.0 de Arduino como estable. [66]
El sistema sigue utilizando Arduino CLI (Command Line Interface), pero las mejoras incluyen un entorno de desarrollo más profesional y soporte para autocompletar. [67] La interfaz de la aplicación se basa en el IDE de código abierto Eclipse Theia . Sus principales novedades son: [68]
Una característica importante que ofrece Arduino IDE 2.0 es la función de depuración. [69] Permite a los usuarios ejecutar un solo paso, insertar puntos de interrupción o ver la memoria. La depuración requiere un chip de destino con puerto de depuración y una sonda de depuración. La placa oficial Arduino Zero se puede depurar de fábrica. Otras placas oficiales Arduino SAMD21 requieren un SEGGER J-Link o Atmel-ICE por separado.
En el caso de una placa de terceros, también es posible la depuración en Arduino IDE 2.0 siempre que dicha placa admita GDB, OPENOCD y tenga una sonda de depuración. La comunidad ha contribuido con la depuración para Arduino [70] o placas RiscV CH32 basadas en ATMega328P, [71] etc.
Un boceto es un programa escrito con el IDE de Arduino. [72] Los bocetos se guardan en la computadora de desarrollo como archivos de texto con la extensión de archivo .ino . El software Arduino (IDE) anterior a la versión 1.0 guardaba los bocetos con la extensión .pde .
Un programa C/C++ mínimo de Arduino consta de solo dos funciones: [73]
setup()
:Esta función se llama una vez cuando se inicia un boceto después del encendido o reinicio. Se utiliza para inicializar variables, modos de pines de entrada y salida y otras bibliotecas necesarias en el boceto. Es análoga a la función main()
. [74]loop()
:Después de que setup()
la función sale (finaliza), loop()
se ejecuta repetidamente en el programa principal. Controla la placa hasta que se apaga o se reinicia. Es análoga a la función while(1)
. [75]La mayoría de las placas Arduino contienen un diodo emisor de luz (LED) y una resistencia limitadora de corriente conectada entre el pin 13 y tierra, lo que es una característica conveniente para muchas pruebas y funciones del programa. [76] Un programa típico utilizado por principiantes, similar a Hello, World!, es "blink", que hace parpadear repetidamente el LED integrado en la placa Arduino. Este programa utiliza las funciones pinMode()
, digitalWrite()
, y delay()
, que son proporcionadas por las bibliotecas internas incluidas en el entorno IDE. [77] [78] [79] Este programa generalmente lo carga el fabricante en una nueva placa Arduino.
const int LED_PIN = 13 ; // Número de pin asociado al LED. void setup () { pinMode ( LED_PIN , OUTPUT ); // Configurar el pin 13 para que sea una salida digital. } void loop () { digitalWrite ( LED_PIN , HIGH ); // Enciende el LED. delay ( 1000 ); // Espera 1 segundo (1000 milisegundos). digitalWrite ( LED_PIN , LOW ); // Apaga el LED. delay ( 1000 ); // Espera 1 segundo. }
La naturaleza de código abierto del proyecto Arduino ha facilitado la publicación de muchas bibliotecas de software libre que otros desarrolladores utilizan para ampliar sus proyectos.
Hay un puerto Xinu OS para el ATmega328P (Arduino Uno y otros con el mismo chip), que incluye la mayoría de las características básicas. [80] El código fuente de esta versión está disponible gratuitamente. [81]
También existe una herramienta de subprocesamiento llamada Protothreads. Los Protothreads se describen como "subprocesos sin pila extremadamente livianos diseñados para sistemas con limitaciones de memoria severas, como pequeños sistemas integrados o nodos de redes de sensores inalámbricos". [82]
Existe un puerto de FreeRTOS para Arduino. [83] Está disponible en el Administrador de bibliotecas de Arduino. Es compatible con varias placas, incluida la Uno.
El proyecto Arduino recibió una mención honorífica en la categoría de Comunidades Digitales en el Prix Ars Electronica 2006. [88]
El kit de ingeniería Arduino ganó el premio Bett en la categoría "Servicios digitales para educación superior o educación superior" en 2020. [89]