Arduino de sus entradas analógicas y digitales, puede controlar luces, motores y otros actuadores. El microcontrolador en la placa Arduino se programa mediante el lenguaje de programación Arduino (basado en Wiring) y el entorno de desarrollo Arduino (basado en Processing). Los proyectos hechos con Arduino pueden ejecutarse sin necesidad de conectar a un computador. El proyecto Arduino recibió una mención honorífica en la categoría de Comunidades Digital en el Prix el Prix Ars Electrónica de trónica de 2006.[6][7][8] 0.1 0.1
Placa Arduino RS232 Arduino RS232[1]
Hist Histor oria ia
Arduino se inició en el año 2005 como un proyecto proyecto para estudiantes en el Instituto el Instituto IVREA, IVREA, en Ivrea en Ivrea (Italia). (Italia). En ese tiempo, los estudiantes usaban el microcontrolador BASIC Stamp, Stamp, cuyo coste era de 100 dólares 100 dólares estadounidenses,, lo que se consideraba demasiado costoso para nidenses ellos. Por aquella época, uno de los fundadores de Arduino, Massimo Banzi, daba clases en Ivrea.[9]
Arduino es una plataforma de hardware de hardware libre, libre, basada en
una placa una placa con con un microcontrolador un microcontrolador y y un entorno un entorno de desarrollo,, diseñada para facilitar el uso de la electrónica en rrollo proyectos multidisciplinares.[2][3] El hardware consiste en una placa con un microcontrolador Atmel Atmel AVR y puer puerto toss de entrada/salida. entrada/salida.[4] Los microcontroladores más usados son el Atmega168 el Atmega168,, Atmega328,, Atmega1280 Atmega328 Atmega1280,, ATmega8 ATmega8 por por su sencillez y bajo coste que permiten el desarrollo de múltiples diseños. Por otro lado el software consiste en un entorno de desarrollo que implementa el lenguaje el lenguaje de programación Processing/Wiring Processing /Wiring y el cargador el cargador de arranque que arranque que es ejecutado en la placa. [4]
El nombre del proyecto viene del nombre del Bar di Re Arduino (Bar (Bar del del Rey Rey Ardui Arduino) no) dond dondee Massi Massimo mo Banzi Banzi pasaba algunas horas. En su creación, contribuyó el estudiante colombiano colombiano Hernando Barragán, quien desarrolló la tarjeta electrónica Wiring, el lenguaje de programación y la plataforma plataforma de desarrollo. desarrollo.[10] Una vez concluida dicha plataforma, los investigadores trabajaron para hacerlo más ligero, más económico y disponible para la comunidad de código abierto (hardware y código abierto). El insti institut tutoo finalm finalment entee cerró cerró sus sus puerta puertas, s, así así que que los inve invesstigadores, entre ellos el español David Cuartielles, promovieron la idea.[9] Banzi afirmaría años más tarde, que el proyecto nunca surgió como una idea de negocio, sino como una necesidad necesidad de subsistir subsistir ante el inminente cierre del Instituto de diseño Interactivo Interactivo IVREA. Es decir, que al crear un producto de hardware abierto, éste no podría ser embargado.
Desde octubre octubre de 2012, Arduino se usa también con microcontroladoras CortexM3 de ARM de 32 bits, [5] que coexistirán con las más limitadas, pero también económicas AVR de 8 bits. ARM y AVR no son plataformas compatibles a nivel binario, pero se pueden programar con el mismo IDE de Arduino y hacerse programas que compilen sin cambios en las dos plataformas. Eso sí, las microcontroladoras CortexM3 usan 3,3V, a diferencia de la mayoría de las placas con AVR que generalmente usan 5V. Sin embargo ya anteriormente se lanzaron placas Arduin duinoo con con AtmelAV tmelAVR R a 3,3V 3,3V como como la Ardu Arduin inoo Fio Fio y exis exis-ten compatibles de Arduino Nano y Pro como Meduino en que se puede conmutar el voltaje.
Posteriormente, Google colaboró en el desarrollo del Kit Android ADK (Accesory Development Kit), una placa Arduino capaz de comunicarse directamente con teléfonos móviles inteligentes bajo el sistema operativo Arduino se puede utilizar para desarrollar objetos inter- Android Android para para que el teléfono controle luces, motores y activos autónomos o puede ser conectado a software tal sensores conectados de Arduino.[11][12] como Adobe como Adobe Flash, Flash, Processing Processing,, Max/MSP Max/MSP,, Pure Data. Data. Para la producción en serie de la primera versión se toLas placas se pueden montar a mano o adquirirse. El mó en cuenta que el coste no fuera mayor de 30 euros, entorno de desarroll desarrolloo integrado integrado libre libre se puede descargar que fuera ensamblado en una placa de color azul, degratuitamente. bía ser Plug ser Plug and Play y Play y que trabajara con todas las plaArduino puede tomar información del entorno a través taformas informáticas tales como MacOSX como MacOSX,, Windows Windows y y 1
2 GNU/Linux. Las primeras 300 unidades se las dieron a los alumnos del Instituto IVRAE, con el fin de que las probaran y empezaran a diseñar sus primeros prototipos. En el año 2005, se incorporó al equipo el profesor Tom Igoe,[10] que había trabajado en computación física, después de que se enterara del mismo a través de Internet. Él ofreció su apoyo para desarrollar el proyecto a gran escala y hacer los contactos para distribuir las tarjetas en territorio estadounidense. En la feria Maker Fair de 2011 se presentó la primera placa Arduino 32 bit para trabajar tareas más pesadas.[13] 0.2
Productos
Los modelos en venta de Arduino se categorizan en 4 diferentes productos: tablas, escudos, kits y accesorios; siendo en cada uno: Tablas:
•
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:
•
Arduino Uno
•
Arduino Leonardo
•
TFT LCD Screen
•
Arduino Due
•
USB/Serial Light Adapter
•
Arduino Yún
•
Arduino ISP
•
Mini USB/Serial Adapter
•
Arduino Tre (En Desarrollo)
•
Arduino Zero (En Desarrollo)
•
Arduino Micro
•
Arduino Esplora
•
Arduino Mega ADK
•
Arduino Ethernet
•
Arduino Mega 2560
0.3
El módulo Arduino ha sido usado como base en diversas aplicaciones electrónicas: •
Xoscillo: Osciloscopio de código abierto.[14]
•
Equipo científico para investigaciones. [15] Arduinome: Un dispositivo controlador MIDI.[16]
Arduino Robot
•
•
Arduino Mini
•
•
•
Arduino Nano
•
LilyPad Arduino Simple
•
LilyPad Arduino SimpleSnap
•
LilyPad Arduino
•
LilyPad Arduino USB
•
Arduino Pro Mini
•
Arduino Fio
•
Arduino Pro
Escudos: •
Arduino GSM Shield
Aplicaciones
•
•
•
•
•
OBDuino: un económetro que usa una interfaz de diagnóstico a bordo que se halla en los automóviles modernos. 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.[17] 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. [18] Ardupilot: software y hardware de aeronaves no tripuladas. ArduinoPhone: un teléfono móvil construido sobre un módulo Arduino.[19][20] Impresoras 3D.
3
3.1 Funciones básicas y operadores
1
Esquema de conexiones
1.1
Entradas y salidas
Poniendo de ejemplo al módulo Diecimila, éste consta de 14 entradas digitales configurables como entradas y/o salidas que operan a 5 voltios. Cada contacto puede proporcionar o recibir como máximo 40 mA. Los contactos 3, 5, 6, 9, 10 y 11 pueden proporcionar una salida PWM (Pulse Width Modulation). Si se conecta cualquier cosa a los contactos 0 y 1, eso interferirá con la comunicación USB. Diecimila también tiene 6 entradas analógicas que proporcionan una resolución de 10 bits. Por defecto, aceptan de 0 hasta 5 voltios, aunque es posible cambiar el nivel más alto, utilizando el contacto Aref y algún código de bajo nivel.
2
Especificaciones
Las especificaciones de los distintos modelos de placas Arduino se resumen en la siguiente tabla: Los modelos Arduino Diecimila, Arduino Duemilanove y Arduino Mega están basados en los microcontroladores ATmega168, ATmega328 y ATmega1280
3
Lenguaje de programación Arduino
•
Isadora (Interactividad audiovisual en tiempo real)
•
Instant Reality (X3D)
•
Java
•
Liberlab (software de medición y experimentación)
•
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 La plataforma Arduino se programa mediante el uso de un lenguaje propio basado en el lenguaje de programación SuperCollider: Síntesis de audio en tiempo real de alto nivel Processing. Sin embargo, es posible utilizar VBScript otros lenguajes de programación y aplicaciones populares [21] en Arduino, debido a que Arduino usa la transmisión Visual Basic .NET serial de datos soportada por la mayoría de los lenguajes mencionados. Para los que no soportan el formato serie VVVV: Síntesis de vídeo en tiempo real de forma nativa, es posible utilizar software intermediario que traduzca losmensajes enviados por ambas partes para permitir una comunicación fluida. Algunos ejemplos son: 3.1 Funciones básicas y operadores •
•
•
•
•
•
•
•
3DVIA Virtools: aplicaciones interactivas y de Arduino está basado en C y soporta todas las funciones del estándar C y algunas de C++. [22] A continuación se tiempo real. muestra un resumen con la estructura y sintaxis del len Adobe Director guaje Arduino: BlitzMax (con acceso restringido) 3.1.1
•
C
•
C++ (mediante libSerial o en Windows)
•
•
C#
•
•
Cocoa/Objective-C (para Mac OS X)
•
•
Flash (mediante ActionScript)
•
•
Gambas
•
Sintaxis básica
Delimitadores:;, {} Comentarios: //, /* */ Cabeceras: #define, #include Operadores aritméticos: +, -, *, /, % Asignación: =
4
3 LENGUAJE DE PROGRAMACIÓN ARDUINO
•
Operadores de comparación: ==, !=, <, >, <=, >=
•
Operadores Booleanos: &&, ||, !
•
Operadores de acceso a punteros: *, &
•
Operadores de bits: &, |, ^, ~, <<, >>
•
•
Operadores compuestos: • •
3.1.2
sizeof()
3.1.4
Funciones básicas
E/S digital
Incremento y decremento de variables: ++, - Asignación y operación: +=, -=, *=, /=, &=, |=
Estructuras de control
•
Condicionales: if, if...else, switch case
•
Bucles: for, while, do... while
•
Bifurcaciones y saltos: break, continue, return, goto
3.1.3
Utilidades
Variables
•
pinMode(pin, modo)
•
digitalWrite(pin, valor)
•
int digitalRead(pin)
E/S analógica •
analogReference(tipo)
•
int analogRead(pin)
•
analogWrite(pin, valor)
En cuanto al tratamiento de las variables también comE/S avanzada parte un gran parecido con el lenguaje C. •
shiftOut(dataPin, clockPin, bitOrder, valor)
•
unsigned long pulseIn(pin, valor)
Constantes •
•
•
HIGH/LOW: representan los niveles alto y bajo de las señales de entrada y salida. Los niveles altos son Tiempo aquellos de 3 voltios o más. unsigned long millis() INPUT/OUTPUT: entrada o salida. •
false (falso): Señal que representa al cero lógico. A diferencia de las señales HIGH/LOW, su nombre se escribe en letra minúscula.
•
unsigned long micros()
•
delay(ms)
delayMicroseconds(microsegundos) true (verdadero): Señal cuya definición es más amplia que la de false. Cualquier número entero diferente de cero es “verdadero”, según el álgebra de Matemáticas Boole, como en el caso de 200, 1 o 1. Si es cero, es “falso”. min(x, y), max(x, y), abs(x), constrain(x, a, b), map(valor, fromLow, fromHigh, toLow, toHigh), pow(base, exponente), sqrt(x) •
•
−
−
•
Tipos de datos •
void, boolean, char, unsigned char, byte, int, un- Trigonometría signed int, word, long, unsigned long, float, double, string, array. sin(rad), cos(rad), tan(rad) •
Estas funciones reciben como Números aleatorios argumento una variable de cualquier tipo y devuelven una variable convertida en el tipo deseado. randomSeed(semilla), long random(máx), long random(mín, máx) char(), byte(), int(), word(), long(), float() Conversión entre tipos
•
•
Bits y Bytes Cualificadores y ámbito de las variables • •
static, volatile, const
lowByte(), highByte(), bitRead(), bitWrite(), bitSet(), bitClear(), bit()
5
3.2 AVR Libc Interrupciones externas •
attachInterrupt(interrupción, función, modo)
•
detachInterrupt(interrupción)
Interrupciones •
interrupts(), noInterrupts()
Las funciones de manejo del puerto serie deben ir precedidas de la palabra “Serial” aunque no necesitan ninguna declaración en la cabecera del programa. Por esto se consideran funciones base del lenguaje.[23] Estas son las funciones para transmisión serial: Comunicación por puerto serie
•
3.2
AVR Libc
Los programas compilados con Arduino (salvo en las placas con CorteX M3) se enlazan contra AVR Libc[22] por lo que tienen acceso a algunas de sus funciones. AVR Libc es un proyecto de software libre con el objetivo de proporcionar una biblioteca C de alta calidad para utilizarse con el compilador GCC sobre microcontroladores Atmel AVR. Se compone de 3 partes: •
avr-binutils
•
avr-gcc
•
avr-libc
begin(), available(), read(), flush(), print(), println(), La mayoría del lenguaje de programación Arduino está escrita con constantes y funciones de AVR y ciertas write() funcionalidades sólo se pueden obtener haciendo uso de AVR.[25]
3.1.5
Manipulación de puertos
Los registros de puertos permiten la manipulación a 3.2.1 Interrupciones más bajo nivel y de forma más rápida de los contactos de entrada/salida del microcontrolador de las pla- Las señales de interrupción son las siguientes: cas Arduino.[24] Los contactos eléctricos de las placas Arduino están repartidos entre los registros B(0-7), C cli(): desactiva las interrupciones globales (analógicos) y D(8-13). Mediante estas variables ser observado y modificado su estado: sei(): activa las interrupciones DDR[B/C/D]: Data Direction Register (o dirección del registro de datos) del puerto B, C ó D. Es una Esto afectará al temporizador y a la comunicación serial. variable de Lectura/Escritura que sirve para especiLa función delayMicroseconds() desactiva las interrupficar cuales contactos serán usados como entrada y ciones cuando se ejecuta. salida. •
•
•
PORT[B/C/D]: Data Register (o registro de datos) del puerto B, C ó D. Es una variable de Lectu- 3.2.2 Temporizadores ra/Escritura. La función delayMicroseconds() crea el menor retardo PIN[B/C/D]: InputPinsRegister (o registrode pines posible del lenguaje Arduino que ronda los 2μs. Para rede entrada) del puerto B, C ó D. Variable de sólo tardos más pequeños se debe utilizar la llamada de enlectura. samblador 'nop' (no operación). Cada sentencia 'nop' se ejecutará en un ciclo de máquina (16 MHz) de aproximaPor ejemplo, para especificar los contactos 9 a 13 como damente 62,5ns. salidas y el 8 como entrada (puesto que el puerto D usa los pines de la placa Arduino 8 al 13 digitales) bastaría utilizar la siguiente asignación: •
•
DDRD = B11111110; Como se ha podido comprobar, el conocimiento del lenguaje C, permite la programación en Arduino debido a la similitud entre éste y el lenguaje nativo del proyecto, lo que implica el aprendizaje de algunas funciones específicas de que dispone el lenguaje del proyecto para manejar los diferentes parámetros. Se pueden construir aplicaciones de cierta complejidad sin necesidad de muchos conceptos previos.
3.2.3
Manipulación de puertos
La manipulación de puertos con código AVR es más rápida que utilizar la función digitalWrite() de Arduino. 3.2.4
Establecer Bits en variables
cbi y sbi son mecanismos estándar (AVR) para establecer o limpiar bits en PORT y otras variables.
6
4 BIBLIOTECAS EN ARDUINO
motas o como cliente. Se permiten hasta cuatro conexiones simultáneas.[30] Los comandos usados son los siguienLa sintaxis del lenguaje de programación Arduino es una tes: versión simplificada de C/C++ y tiene algunas diferencias respecto de Processing.[26][27] Debido a que Arduino esServidor: Server(), begin(), available(), write(), tá basado en C/C++ mientras que Processing se basa en print(), println() Java, existen varias diferencias en cuanto a la sintaxis de Cliente: Client(), connected(), connect(), write(), ambos lenguajes y el modo en que se programa: print(), println(), available(), read(), flush(), stop() 3.3
Diferencias con Processing
•
•
3.3.1
Arreglos
4.4 3.3.2
3.4
Impresión de cadenas
Es una biblioteca de comunicación con aplicaciones inEjemplo sencillo de programación en formáticas utilizando el protocolo estándar del puerto serie.[31] Arduino
El primer paso antes de comprobar que la instalación es correcta y empezar a trabajar con Arduino, es usar ejemplos prácticos que vienen disponibles con el dispositivo. Se recomienda abrir el ejemplo “led_blink” el cual crea una intermitencia por segundo en un led conectado en el pin 13. El código necesario es el siguiente: # define LED_PIN 13 void setup () { // Activado del contacto 13 para salida digital pinMode (LED_PIN, OUTPUT); } // Bucle infinito void loop () { // Encendido del diodo LED enviando una señal alta digitalWrite (LED_PIN, HIGH); // Tiempo de espera de 1 segundo (1000 ms) delay (1000); // Apagado del diodo LED enviando una señal baja. digitalWrite (LED_PIN, LOW); // Tiempo de espera de 1 segundo delay (1000); }
4
Firmata
Bibliotecas en Arduino
4.5
LiquidCrystal
Control de LCDs con chipset Hitachi HD44780 o compatibles.[32] La biblioteca soporta los modos de 4 y 8 bits. 4.6
Servo
Biblioteca para el control de servo motores.[33] A partir de la versión 0017 de Arduino la biblioteca soporta hasta 12 motores en la mayoría de las placas Arduino y 48 en la Arduino Mega. Estos son los comandos usados: •
4.7
attach(), write(), writeMicroseconds(), read(), attached(), detach() SoftwareSerial
Comunicación serie en contactos digitales. [34] Por defecLas bibliotecas estándar que ofrece Arduino son las to Arduino incluye comunicación sólo en los contactos 0 y 1 pero gracias a esta biblioteca puede realizarse esta siguientes:[28] comunicación con los restantes. 4.1
Serial
Lectura y escritura por el puerto serie. 4.2
EEPROM
4.8
Control de motores paso a paso unipolares o bipolares.[35] •
Lectura y escritura en el almacenamiento permanente.[29] •
read(), write()
Stepper
4.9
Stepper(steps, pin1, pin2), Stepper(steps, pin1, pin2, pin3, pin4), setSpeed(rpm), step(steps) Wire
Envío y recepción de datos sobre una red de dispositivos o sensores mediante Two Wire Interface (TWI/I2C).[36] 4.3 Ethernet Las bibliotecas Matrix y Sprite de Wiring son totalmente Conexión a Internet mediante “Arduino EthernetShield“. compatibles con Arduino y sirven para manejo de matriPuede funcionar como servidor que acepta peticiones re- ces de diodos LED. También se ofrece información sobre
7 diversas bibliotecas desarrolladas por diversos colabora- Ejemplo de parpadeo de LED dores que permiten realizar muchas tareas. /* Blink Turns on an LED on for one second, then off for one second, repeatedly. This example code is in the public domain. */ // Pin 13 has an LED connected on 4.10 Creación de bibliotecas most Arduino boards. // give it a name: int led = 13; Los usuarios de Arduino tienen la posibilidad de escribir // the setup routine runs once when you press reset: sus propias bibliotecas.[37] Ello permite disponer de có- void setup() { // initialize the digital pin as an output. digo que puede reutilizarse en otros proyectos, mantener pinMode(led, OUTPUT); } // the loop routine runs over el código fuente principal separado de las bibliotecas y la and over again forever: void loop() { digitalWrite(led, organización de los programas construidos es más clara. HIGH); // turn the LED on (HIGH is the voltage level) delay(1000); // wait for a second digitalWrite(led, LOW); // turn the LED off by making the voltage LOW delay(1000); // wait for a second } 4.10.1 Ejemplo de biblioteca El siguiente ejemplo permite el envío de caracteres me- Ejemplo de lectura de Potenciometro diante el código Morse: /* ReadAnalogVoltage Reads an analog input on pin 0, Se crea el archivo Morse.h que incluye la definición de la converts it to voltage, and prints the result to the serial clase Morse que tiene 3 funciones: un constructor (Mor- monitor. Attach the center pin of a potentiometer to se()), una función para enviar 1 punto (dot()) y una fun- pin A0, and the outside pins to +5V and ground. This ción para enviar una raya (dash()). La variable _pin per- example code is in the public domain. */ // the setup mite indicar el contacto a usar. routine runs once when you press reset: void setup() { // /* Morse.h - Biblioteca para el envío de Código Morse. initialize serial communication at 9600 bits per second: Creado por David A. Mellis, el 2 de noviembre de 2007. Serial.begin(9600); } // the loop routine runs over and Liberado al dominio público. */ # ifndef Morse_h # over again forever: void loop() { // read the input on define Morse_h # include “WProgram.h” class Morse { analog pin 0: int sensorValue = analogRead(A0); // public: Morse(int pin); void dot(); void dash(); private: Convert the analog reading (which goes from 0 - 1023) to a voltage (0 - 5V): float voltage = sensorValue * int _pin; }; # endif (5.0 / 1023.0); // print out the value you read: Serial.println(voltage); } Debe ser creado el archivo Morse.cpp con el código, es decir con la implementación de los métodos declarados: /* Morse.cpp - Biblioteca para el envío de Código Morse. Creado por David A. Mellis, el 2 de noviembre 6 Instalación en diferentes entorde 2007. Liberado al dominio público. */ # include nos “WProgram.h” # include “Morse.h” Morse::Morse(int pin) { pinMode(pin, OUTPUT); _pin = pin; } void Morse::dot() { digitalWrite(_pin, HIGH); delay(250); 6.1 Windows digitalWrite(_pin, LOW); delay(250); } void Morse::dash() { digitalWrite(_pin, HIGH); delay(1000); Los pasos a seguir son los siguientes: digitalWrite(_pin, LOW); delay(250); } La biblioteca creada así puede ser usada mediante el comando #include. Si se desea enviar una petición de auxilio SOS por el contacto 13 bastaría con llamar a Morse(13) y ejecutar la siguiente secuencia: morse.dot(); morse.dot(); morse.dot(); morse.dash(); morse.dash(); morse.dash(); morse.dot(); morse.dot(); morse.dot();
5
Ejemplos de Código
•
•
•
6.2
Descargar las versiones más reciente de Java Runtime Enviroment (J2RE) y del IDE Arduino. Instalar los controladores FTDI USB, con la placa Arduino conectada. Ejecutar el IDE Arduino para abrir la interfaz y configurar el puerto USB donde está conectada la placa. GNU/Linux
Para instalar Arduino en un sistema GNU/Linux necesiLa página de Arduino cuenta con una serie de ejemplos tamos los siguientes programas para resolver las depenpara comenzar a entender su funcionamiento, con com- dencias: ponentes base tales como Pantallas, LED’s, Potenciometros, etc. Sun java runtime, jre. •
8
9 MINIBLOQ
7
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.
8
Pduino
Interfaz del entorno de desarrollo Arduino en el Sistema Operativo Windows.
Patch Pduino.
Pduino nace de la fusión de los proyectos Pure Data y Arduino. Ambos proyectos de fuente abierta permiten trabajar con interfaz gráfica. Cargando el firmware de Pure Data (PD) a la placa Arduino se puede acceder a ella mediante el lenguaje de programación gráfico.
9
Minibloq
Interfaz del entorno de desarrollo Arduino S.O. GNU/Linux.
avr-gcc, compilador para la familia de microcontro- Pantalla de Minibloq. ladores avr de atmel. Minibloq es un entorno gráfico de programación que pue avr-libc, libc del compilador avr-gcc. de generar código nativo de Arduino y escribirlo directamente en la memoria flash de la placa. Tiene un modo En algunas distribuciones conviene desinstalar, si no es que permite visualizar el código generado, el cual tamnecesario, el programa “brltty” que permite el acceso al bién puede ser copiado y pegado en el Arduino-IDE, paterminal a personas invidentes. Para concluir, se descarga ra los usuarios que intentan hacer el pasaje de una herrael framework de Arduino, se descomprime y ejecuta. mienta gráfica a la programación en sintaxis C/C++. Mi•
•
9 cutarse de manera independiente de la computadora. El modo “directo” permite modificar los programas y ver los cambios producidos de manera inmediata en el comportamiento del robot, lo cual facilita la programación, sobre todo al usuario inexperto. Asimismo, permite ver constantemente los valores de los sensores y utilizar el robot, por ejemplo, como para adquirir datos.
Combinación de una computadora de bajo costo OLPC, el software Minibloq y una placa Arduino.
nibloq es de uso libre y sus fuentes también están disponibles gratuitamente. Una característica importante, es que puede correr también en la computadora portátil OLPC, mediante el software Wine.
10
Physical Etoys
El modo “compilado”, por su parte, elimina el retardo que introduce la comunicación con la computadora, lo cual lo hace preferible para el desarrollo de tareas autónomas, en las cuales la velocidad de respuesta del robot debe ser óptima.
11 •
BASIC Stamp
•
Impresión 3D
•
Gumstix
•
Minibloq
•
MiniPC
•
OOPIC
•
PICAXE
•
Raspberry Pi
•
Physical Etoys
•
Robot
•
12 Proyecto de un semáforo realizado con Arduino y Physical Etoys.
Physical Etoys es una extensión libre y gratuita que permite que diversos dispositivos electrónicos como Lego NXT, las placas Arduino, Sphero, Kinect, Joystick Wiimote, entre otros, puedan ser programados fácilmente y que interactúen entre sí gracias a su sistema de bloques. En el caso de Arduino, Physical Etoys ofrece dos modos de programación: 1. El modo “directo”, en el cual los programas se ejecutan en la computadora del usuario y las órdenes se transmiten inmediatamente a través del puerto serie. 2. El modo “compilado”, en el cual los programas se traducen a C++ y se bajan a la placa, para luego eje-
Véase también
X10
Referencias
[1] Placa Arduino Serial [2] «Interview with Casey Reas and Ben Fry». [3] [4] «Project homepage». [5] «Arduino Due is finally here». [6] http://www.aec.at/en/prix/honorary2006.asp [7] «Ars Electrónica Archiv» (en alemán). Consultado el 18 de febrero de 2009. [8] «Ars Electronica Archiv / ANERKENNUNG» (en alemán). Consultado el 18 de febrero de 2009. [9] David Kushner (26 Oct 2011). The Making of Arduino . Texto «publicación IEEE Spectrum» ignorado (ayuda)
10 [10] «Algo de Historia para comenzar». Consultado el 22 de diciembre de 2013.
14 ENLACES DE EXTERNOS [29] «EEPROM Library». http://www.arduino.cc'' (en inglés). Consultado el 22 de diciembre de 2013.
[11] «Google presenta ADK, interfaz basada en Arduino para [30] «Ethernet Library». http://www.arduino.cc'' (en inglés). Android». BricoGeek.com. 12 de mayo de 2011. ConsulConsultado el 22 de diciembre de 2013. tado el 22 de diciembre de 2013. [31] «Firmata Library». http://www.arduino.cc'' (en inglés). [12] «Accessory Development Kit 2012 Guide» (en inglés). Consultado el 22 de diciembre de 2013. Consultado el 22 de diciembre de 2013. [32] «LiquidCrystal Library». http://www.arduino.cc'' (en in[13] Terrence O'Brien (19 de septiembre de 2011). «Arduino glés). Consultado el 22 de diciembre de 2013. brings the (new) goods to Maker Faire New York, welcomes ARM into the fold» (en inglés). Consultado el 22 de [33] «Servo Library». http://www.arduino.cc'' (en inglés). Consultado el 22 de diciembre de 2013. diciembre de 2013. [14] «Xoscillo: A software oscilloscope that acquires data [34] «SoftwareSerial Library». http://www.arduino.cc'' (en in glés). Consultado el 22 de diciembre de 2013. using an Arduino or a parallax.» (en inglés). Consultado el 22 de diciembre de 2013. [35] «Stepper Library». http://www.arduino.cc'' (en inglés). Consultado el 22 de diciembre de 2013. [15] Joshua M. Pearce (14 de septiembre de 2012). «Building Research Equipment with Free, Open-Source Hardware» (en inglés). Washington, EE.UU.: American [36] «Wire Library». http://www.arduino.cc'' (en inglés). Consultado el 22 de diciembre de 2013. Association for the Advancement of Scienc. p. 3. doi:10.1126/science.1228183. Consultado el 22 de di[37] «Writing a Library for Arduino». http://www.arduino.cc'' ciembre de 2013. (en inglés). Consultado el 22 de diciembre de 2013. [16] Peter Kirn (20 de agosto de 2008). «Aug 20 2008 Arduinome: An Arduino-Based Monome Clone, Behind the Scenes» (en inglés). Consultado el 22 de diciembre de 13 Bibliografía 2013. [17] «Humane Reader» (en inglés). Consultado el 22 de diciembre de 2013.
•
[18] «The Humane PC» (en inglés). Consultado el 22 de diciembre de 2013. [19] «ArduinoPhone» (en inglés). Consultado el 22 de diciembre de 2013. [20] Esteban Zamorano (28 de noviembre de 2013). «Construye tu propio celular por USD$200 gracias a Arduino». Consultado el 22 de diciembre de 2013.
•
•
[21] «Interfacing with Other Software». http://arduino.cc'' (en inglés). Consultado el 22 de diciembre de 2013. [22] «Language Reference». http://arduino.cc'' (en inglés). Consultado el 22 de diciembre de 2013. [23] «Serial». http://www.arduino.cc'' (en inglés). Consultado el 22 de diciembre de 2013.
14 •
[24] «Port Registers». http://www.arduino.cc'' (en inglés). Consultado el 22 de diciembre de 2013.
•
[25] «AVR Code». http://www.arduino.cc'' (en inglés). Consultado el 22 de diciembre de 2013.
•
[26] «Arduino/Processing Language Comparison». http://www.arduino.cc'' (en inglés). Consultado el 22 de diciembre de 2013. [27] «Language Reference(API)/Processing 2+». http://processing.org/'' (en inglés). Consultado el 22 de diciembre de 2013." [28] «Arduino - Libraries». http://arduino.cc/'' (en inglés). Consultado el 22 de diciembre de 2013.
•
•
•
•
Oxer, Jonathan; Blemings, Hugh (28 de diciembre de 2009). Practical Arduino: Cool Projects for Open Source Hardware (1ª edición). Apress. p. 500. ISBN 1430224770. Noble, Joshua (15 de julio de 2009). Programming Interactivity: A Designer’s Guide to Processing, Arduino, and openFramework (1ª edición). O'Reilly Media. p. 768. ISBN 0596154143. Banzi, Massimo (24 de marzo de 2009). Getting Started with Arduino (1ª edición). Make Books. p. 128. ISBN 0596155514.
Enlaces de externos Sitio web Proyecto Arduino (en inglés) Sitio web Proyecto Arduino (en español con menos contenidos) (blog en inglés) Arduino Stack Exchange sitio de preguntas y respuestas Comparativa de los distintos modelos disponibles Algunos proyectos con arduino paso a paso (ejemplos con videotutoriales) DuinOS: Sistema operativo multitarea para Arduino desarrollado por RobotGroup
11 •
•
•
•
•
•
Biicode: Aplicación para gestionar librerías y proyectos de Arduino Entorno gráfico de programación para Arduino Winkhel: cómo un proyecto Arduino puede convertirse en un producto real (en español) Scada para Arduino S-Remote Control: Aplicación Android para controlar Arduino por UDP o TCP Ejemplo de uso de Arduino y Gambas: Gráfica de datos de sensores
Gráfica de datos de sensores conectados a Arduino, programado en Gambas
12
15 TEXT AND IMAGE SOURCES, CONTRIBUTORS, AND LICENSES
15
Text and image sources, contributors, and licenses
15.1 •
Text
Arduino Fuente: http://es.wikipedia.org/wiki/Arduino?oldid=79643310 Colaboradores: 4lex, Sabbut, Tony Rotondas, Ramjar, Interlo-
per, Chobot, BOT-Superzerocool, Museo8bits, GermanX, The Photographer, Jago84, CEM-bot, Chuffo, Montgomery, JoaquinFerrero, JAnDbot, CommonsDelinker, Biasoli, Cinevoro, VolkovBot, Synthebot, Shooke, Muro Bot, Nabegando1990, Loveless, Leonaro, Drinibot, BOTarate, Yonseca, Javierito92, Kikobot, Botellín, Leonpolanco, Alecs.bot, LordT, Alexbot, Darkicebot, Clunhair, UA31, AVBOT, LucienBOT, Arjuno3, Luckas-bot, MystBot, Disenyo, DanielrocaES, Raúl Milla, SuperBraulio13, Xqbot, Jkbw, Brunonar, Frammm, Macucal, JaadesA, Botarel, AstaBOTh15, Joebigwheel, Hprmedina, Jcfidy, Halfdrag, Kizar, Omerta-ve, Thomas-pluralvonglas, PatruBOT, Rononito, Julian dasilva, EmausBot, Savh, ZéroBot, SUPUL SINAC, Grillitus, JackieBot, Minirobots, ChuispastonBot, WikitanvirBot, Diamondland, Dr Doofenshmirtz, Rufflos, Jmdoren, KLBot2, Loureda, Yomalospelos, Arthur 'Two Sheds’ Jackson, MetroBot, Invadibot, Turoart, Johnbot, Elvisor, Laure f o, Enrique Pichardo, Angelo9507, Angeldefuego22, Makecat-bot, Jsbsan, Sebastiangabrielblanco, RichoM, Chemaper, Addbot, Arkantos13, Arkantos1997, Lagoset, Hithwen, Jerónimo Álvarez, Mario Zuñiga Carrillo y Anónimos: 108
15.2 •
Images
Archivo:Arduino316.jpg Fuente: http://upload.wikimedia.org/wikipedia/commons/6/6c/Arduino316.jpg Licencia: CC BY-SA 3.0 Co-
laboradores: http://www.arduino.cc/ Artista original: Nicholas Zambetti •
•
•
•
•
•
•
•
Archivo:Arduino_Uno_-_R3.jpg Fuente: http://upload.wikimedia.org/wikipedia/commons/3/38/Arduino_Uno_-_R3.jpg Licencia: CC
BY 2.0 Colaboradores: Arduino Uno - R3 Artista original: SparkFun Electronics from Boulder, USA Archivo:Arduino_dani2.png Fuente: http://upload.wikimedia.org/wikipedia/commons/7/7a/Arduino_dani2.png Licencia: GPL Colaboradores: Screenshot by DanielrocaES Artista original: Arduino developers. Code sample by Hans-Christoph Steiner. Archivo:Arduino_windows.JPG Fuente: http://upload.wikimedia.org/wikipedia/commons/7/75/Arduino_windows.JPG Licencia: GPL Colaboradores: Screenshot by DanielrocaES Artista original: Arduino developers Archivo:Blink.jpg Fuente: http://upload.wikimedia.org/wikipedia/commons/e/eb/Blink.jpgLicencia: CCBY-SA3.0 Colaboradores: Trabajo propio Artista original: Julian dasilva Archivo:Gambas_arduino_sensores_gráfica.png Fuente: http://upload.wikimedia.org/wikipedia/commons/9/98/Gambas_arduino_ sensores_gr%C3%A1fica.png Licencia: CC BY-SA 3.0 Colaboradores: Trabajo propio Artista original: Jsbsan Archivo:P1040870.JPG Fuente: http://upload.wikimedia.org/wikipedia/commons/9/96/P1040870.JPG Licencia: GFDL Colaboradores: Trabajo propio Artista original: Julian dasilva Archivo:Pduino.png Fuente: http://upload.wikimedia.org/wikipedia/commons/6/6a/Pduino.png Licencia: GPL Colaboradores: Screenshot by DanielrocaES Artista original: Arduino developers. Archivo:Semaforo_PE.png Fuente: http://upload.wikimedia.org/wikipedia/commons/5/56/Semaforo_PE.png Licencia: CC BY-SA 3.0 Colaboradores: Trabajo propio Artista original: Sebastiangabrielblanco
15.3 •
Content license
Creative Commons Attribution-Share Alike 3.0