Arduino ( / ɑː r ˈ d w iː n oʊ / ) es una empresa, proyecto y comunidad de usuarios italiana de hardware y software de código abierto que diseña y fabrica microcontroladores de placa única y kits de microcontroladores para construir dispositivos digitales. Sus productos de hardware tienen una licencia CC BY-SA , mientras que el software tiene una licencia GNU Lesser General Public License (LGPL) o GNU General Public License (GPL), [1] que permite la fabricación de placas Arduino y la distribución de software. Por cualquiera. 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ógicas que pueden conectarse a varias placas de expansión ("blindajes") o placas de pruebas (para creación de prototipos) y otros circuitos. Las placas cuentan con interfaces de comunicaciones 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 lenguaje de programación Arduino , inspirada en el lenguaje Processing y utilizada 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 manera fácil y de bajo costo para que principiantes y profesionales creen dispositivos que interactúen con su entorno utilizando sensores y actuadores . 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 bar en Ivrea , Italia, donde solían reunirse algunos de los fundadores del proyecto. El bar lleva el nombre de Arduin de Ivrea , quien fue margrave de la Marca de Ivrea y rey de Italia de 1002 a 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 el IDII, bajo la supervisión de Massimo Banzi y Casey Reas . Casey Reas es conocido por cocrear, con Ben Fry, la plataforma de desarrollo Processing . El objetivo del proyecto era crear herramientas simples y de bajo costo para la creación de proyectos digitales por parte de personas que no son ingenieros. La plataforma Wiring estuvo compuesta por 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, ampliaron Wiring añadiendo 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 menos costosas en la comunidad de código abierto. A mediados de 2011 se estimaba que se habían producido comercialmente más de 300.000 Arduinos oficiales, [6] y en 2013 que 700.000 placas oficiales estaban en manos de los usuarios. [7]
A principios de 2008, los cinco cofundadores del proyecto Arduino crearon una empresa, Arduino LLC, [8] para poseer las marcas comerciales asociadas con 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 necesaria ]
A finales de 2008, la empresa Smart Projects de Gianluca Martino registró la marca Arduino en Italia y lo mantuvo en secreto para los demás cofundadores durante unos dos años. Esto se reveló cuando la empresa Arduino intentó registrar la marca en otras zonas del mundo (originalmente registraron sólo 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. Luego nombraron un nuevo director general, Federico Musto, quien cambió el nombre de la empresa a 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 Estados Unidos. [13]
En la World Maker Faire de Nueva York el 1 de octubre de 2016, el cofundador y director ejecutivo de Arduino LLC, Massimo Banzi, y el director ejecutivo de Arduino SRL, Federico Musto, 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 expediente académico... En el sitio web de su empresa, en sus cuentas personales de LinkedIn e incluso en documentos comerciales italianos, Musto figuraba, hasta hace poco, como poseedor de un doctorado de la Universidad de Massachusetts. Institute of Technology, en algunos casos, su biografía también reivindicaba un MBA de la Universidad de Nueva York." Wired informó que ninguna universidad tenía ningún 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 poseía muchas marcas comerciales 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 comerciales de Arduino. Fabio Violante es el nuevo CEO en sustitución de Federico Musto, que 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 fundamental de Arduino... sin ningún vínculo con 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 nuevamente y a lanzar nuevos diseños. Se desestimó la marca Genuino y todos los productos se volvieron a marcar con el nombre Arduino.
En agosto de 2018, Arduino anunció su nueva herramienta de línea de comandos de código abierto (arduino-cli), que puede usarse 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 de IDE. [25]
Arduino es hardware de código abierto . Los diseños de referencia de 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 archivos de diseño y producción para algunas versiones del hardware.
Aunque los diseños de hardware y software están disponibles gratuitamente 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 al 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 diferentes cantidades de memoria flash, pines y características. [30] El Arduino Due de 32 bits , basado en Atmel SAM3X8E, se introdujo en 2012. [31] Las placas utilizan pines o encabezados hembra de una o dos filas que facilitan las conexiones para la programación y la incorporación a otros circuitos. Estos pueden conectarse con módulos adicionales denominados escudos . Se pueden direccionar individualmente varios blindajes, posiblemente apilados, a través de un bus serie 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 en 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 de Universal Serial Bus (USB), implementadas mediante chips adaptadores de USB a serie como el FTDI FT232. Algunas placas, como las placas Uno de modelo posterior, sustituyen el chip FTDI por un chip AVR separado que contiene firmware de USB a serie, que es reprogramable a través de su propio encabezado ICSP . Otras variantes, como el Arduino Mini y el no oficial Boarduino, utilizan una placa o cable adaptador USB a serie desmontable, Bluetooth u otros métodos. Cuando se utiliza con herramientas de microcontroladores 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 que otros circuitos los utilicen. Diecimila , [a] Duemilanove , [b] y el 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 pueden usarse como seis I digitales. /O pines. Estos pines están en la parte superior del tablero, a través de cabezales hembra de 0,1 pulgadas (2,54 mm). También se encuentran disponibles comercialmente varios escudos de aplicaciones enchufables. Las placas Arduino Nano y Bare Bones Board [34] y Boarduino [35] compatibles con Arduino pueden proporcionar pines de cabecera macho en la parte inferior de la placa que se pueden conectar a placas de pruebas sin soldadura .
Existen muchas placas compatibles con Arduino y derivadas de Arduino. Algunos son funcionalmente equivalentes a un Arduino y pueden usarse indistintamente. Muchos mejoran el Arduino básico agregando controladores de salida, a menudo para uso en educación escolar, [36] para simplificar la fabricación de buggies y pequeños robots. Otros son eléctricamente equivalentes, pero cambian el factor de forma, a veces conservando la compatibilidad con los escudos, otras no. Algunas variantes utilizan diferentes procesadores, de diferente compatibilidad.
El hardware Arduino original fue fabricado por la empresa italiana Smart Projects. [37] Algunas placas de la 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 circuito impreso llamadas escudos , que se conectan a los cabezales de pines Arduino suministrados normalmente. [55] Los escudos 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 protoboard ( creación de prototipos ). También se pueden fabricar varios escudos con tus propias manos (DIY). [56] [57] [58]
Un programa para hardware Arduino se puede escribir en cualquier lenguaje de programación con compiladores que produzcan código de máquina binario para el procesador de destino. Atmel proporciona un entorno de desarrollo para sus microcontroladores basados en AVR de 8 bits y ARM Cortex-M de 32 bits : AVR Studio (más antiguo) y Atmel Studio (más nuevo). [59] [60] [61]
El entorno de desarrollo integrado (IDE) de 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. 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 con 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 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 del programa principal, que se compilan y vinculan con un código auxiliar del 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 de carga en el firmware de la placa. Tradicionalmente, Arduino IDE se utilizaba para programar las placas oficiales de Arduino basadas en microcontroladores Atmel AVR, pero con el tiempo, una vez que creció la popularidad de Arduino y existió la disponibilidad de compiladores de código abierto, muchas más plataformas como PIC , STM32 , TI MSP430 , ESP32 pueden codificarse usando Arduino IDE. [64]
Desde la versión 1.8.12, el compilador de Windows Arduino IDE solo admite Windows 7 o un sistema operativo más reciente. En Windows Vista o versiones anteriores, aparece el error "Aplicación Win32 no reconocida" al intentar verificar/cargar el programa. Para ejecutar IDE en máquinas más antiguas, los usuarios pueden usar la versión 1.8.11 o copiar el ejecutable "arduino-builder" de la versión 11 a su carpeta de instalación actual, ya que es independiente del IDE. [sesenta y cinco]
El 18 de octubre de 2019 se lanzó una vista previa alfa inicial de un nuevo IDE de Arduino, como Arduino Pro IDE. La vista previa beta se lanzó el 1 de marzo de 2021 y pasó a llamarse IDE 2.0. El 14 de septiembre de 2022, Arduino IDE 2.0 se lanzó oficialmente como estable. [67]
El sistema todavía usa Arduino CLI (Interfaz de línea de comando), pero las mejoras incluyen un entorno de desarrollo más profesional y soporte de autocompletado. [68] La interfaz de la aplicación se basa en el IDE de código abierto de Eclipse Theia . Sus principales novedades son: [69]
Un sketch es un programa escrito con el IDE de Arduino. [70] Los bocetos se guardan en la computadora de desarrollo como archivos de texto con la extensión de archivo .ino . Bocetos guardados con la extensión .pde del software Arduino (IDE) anterior a 1.0 .
Un programa Arduino C/C++ mínimo consta de sólo dos funciones: [71]
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 pin de entrada y salida y otras bibliotecas necesarias en el boceto. Es análoga a la función main()
. [72]loop()
: Después de que setup()
la función sale (finaliza), la loop()
función 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)
. [73]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 cual es una característica conveniente para muchas pruebas y funciones de programas. [74] Un programa típico utilizado por principiantes, similar a Hello, World! , es "parpadeo", que parpadea repetidamente el LED integrado en la placa Arduino. Este programa utiliza las funciones pinMode()
, digitalWrite()
y delay()
, que proporcionan las bibliotecas internas incluidas en el entorno IDE. [75] [76] [77] El fabricante suele cargar este programa en una nueva placa Arduino.
constante int LED_PIN = 13 ; // Número de pin adjunto al LED. configuración vacía () { pinMode ( LED_PIN , SALIDA ); // Configure el pin 13 para que sea una salida digital. } bucle vacío () { digitalWrite ( LED_PIN , ALTO ); // Enciende el LED. retraso ( 1000 ); // Espere 1 segundo (1000 milisegundos). escritura digital ( LED_PIN , BAJO ); //Apaga el LED. retraso ( 1000 ); // Espere 1 segundo. }
La naturaleza de código abierto del proyecto Arduino ha facilitado la publicación de muchas bibliotecas de software gratuitas que otros desarrolladores utilizan para ampliar sus proyectos.
Hay un puerto Xinu OS para ATmega328P (Arduino Uno y otros con el mismo chip), que incluye la mayoría de las funciones básicas. [78] El código fuente de esta versión está disponible gratuitamente. [79]
También hay una herramienta de subprocesamiento, llamada Protothreads. Los protothreads se describen como "subprocesos sin pila extremadamente livianos diseñados para sistemas con memoria severamente limitada, como pequeños sistemas integrados o nodos de redes de sensores inalámbricos" .
Hay un puerto de FreeRTOS para Arduino. [81] Esto está disponible en Arduino Library Manager. Es compatible con varias placas, incluida la Uno.
El proyecto Arduino recibió una mención honorífica en la categoría Comunidades Digitales en el Prix Ars Electronica 2006 . [86]
El kit de ingeniería Arduino ganó el premio Bett por "Servicios digitales de educación superior o educación superior" en 2020. [87]