Sunteți pe pagina 1din 7

Arduino es una plataforma de hardware libre, basada en una placa con un microcon

trolador y un entorno de desarrollo, diseada para facilitar el uso de la electrnic


a en proyectos multidisciplinares.2 3
El hardware consiste en una placa con un microcontrolador Atmel AVR y puertos de
entrada/salida.4 Los microcontroladores ms usados son el Atmega168, Atmega328, A
tmega1280, ATmega8 por su sencillez y bajo coste que permiten el desarrollo de ml
tiples diseos. Por otro lado el software consiste en un entorno de desarrollo que
implementa el lenguaje de programacin Processing/Wiring y el cargador de arranqu
e que es ejecutado en la placa.4
Desde octubre de 2012, Arduino se usa tambin con microcontroladoras CortexM3 de A
RM de 32 bits,5 que coexistirn con las ms limitadas, pero tambin econmicas AVR de 8
bits. ARM y AVR no son plataformas compatibles a nivel binario, pero se pueden p
rogramar con el mismo IDE de Arduino y hacerse programas que compilen sin cambio
s en las dos plataformas. Eso s, las microcontroladoras CortexM3 usan 3,3V, a dif
erencia de la mayora de las placas con AVR que generalmente usan 5V. Sin embargo
ya anteriormente se lanzaron placas Arduino con Atmel AVR a 3,3V como la Arduino
Fio y existen compatibles de Arduino Nano y Pro como Meduino en que se puede co
nmutar el voltaje.
Arduino se puede utilizar para desarrollar objetos interactivos autnomos o puede
ser conectado a software tal como Adobe Flash, Processing, Max/MSP, Pure Data. L
as placas se pueden montar a mano o adquirirse. El entorno de desarrollo integra
do libre se puede descargar gratuitamente.
Arduino puede tomar informacin del entorno a travs de sus entradas analgicas y digi
tales, puede controlar luces, motores y otros actuadores. El microcontrolador en
la placa Arduino se programa mediante el lenguaje de programacin Arduino (basado
en Wiring) y el entorno de desarrollo Arduino (basado en Processing). Los proye
ctos hechos con Arduino pueden ejecutarse sin necesidad de conectar a un computa
dor.
El proyecto Arduino recibi una mencin honorfica en la categora de Comunidades Digita
l en el Prix Ars Electrnica de 2006.6 7 8
Historia
Arduino se inici en el ao 2005 como un proyecto para estudiantes en el Instituto I
VREA, en Ivrea (Italia). En ese tiempo, los estudiantes usaban el microcontrolad
or BASIC Stamp, cuyo coste era de 100 dlares estadounidenses, lo que se considera
ba demasiado costoso para ellos. Por aquella poca, uno de los fundadores de Ardui
no, Massimo Banzi, daba clases en Ivrea.9
El nombre del proyecto viene del nombre del Bar di Re Arduino (Bar del Rey Ardui
no) donde Massimo Banzi pasaba algunas horas. En su creacin, contribuy el estudian
te colombiano Hernando Barragn, quien desarroll la tarjeta electrnica Wiring, el le
nguaje de programacin y la plataforma de desarrollo.10 Una vez concluida dicha pl
ataforma, los investigadores trabajaron para hacerlo ms ligero, ms econmico y dispo
nible para la comunidad de cdigo abierto (hardware y cdigo abierto). El instituto
finalmente cerr sus puertas, as que los investigadores, entre ellos el espaol David
Cuartielles, promovieron la idea.9 Banzi afirmara aos ms tarde, que el proyecto nu
nca surgi como una idea de negocio, sino como una necesidad de subsistir ante el
inminente cierre del Instituto de diseo Interactivo IVREA. Es decir, que al crear
un producto de hardware abierto, ste no podra ser embargado.
Posteriormente, Google colabor en el desarrollo del Kit Android ADK (Accesory Dev
elopment Kit), una placa Arduino capaz de comunicarse directamente con telfonos mv
iles inteligentes bajo el sistema operativo Android para que el telfono controle
luces, motores y sensores conectados de Arduino.11 12

Para la produccin en serie de la primera versin se tom en cuenta que el coste no fu


era mayor de 30 euros, que fuera ensamblado en una placa de color azul, deba ser
Plug and Play y que trabajara con todas las plataformas informticas tales como Ma
cOSX, Windows y 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 disear sus pri
meros prototipos.
En el ao 2005, se incorpor al equipo el profesor Tom Igoe,10 que haba trabajado en
computacin fsica, despus de que se enterara del mismo a travs de Internet. l ofreci su
apoyo para desarrollar el proyecto a gran escala y hacer los contactos para dis
tribuir las tarjetas en territorio estadounidense. En la feria Maker Fair de 201
1 se present la primera placa Arduino 32 bit para trabajar tareas ms pesadas.13
Productos
Los modelos en venta de Arduino se categorizan en 4 diferentes productos: tablas
, escudos, kits y accesorios; siendo en cada uno: Tablas:
Arduino
Arduino
Arduino
Arduino
Arduino
Arduino
Arduino
Arduino
Arduino
Arduino
Arduino
Arduino
Arduino
Arduino
LilyPad
LilyPad
LilyPad
LilyPad
Arduino
Arduino
Arduino

Uno
Leonardo
Due
Yn
Tre (En Desarrollo)
Zero (En Desarrollo)
Micro
Esplora
Mega ADK
Ethernet
Mega 2560
Robot
Mini
Nano
Arduino Simple
Arduino SimpleSnap
Arduino
Arduino USB
Pro Mini
Fio
Pro

Escudos:
Arduino
Arduino
Arduino
Arduino
Arduino
Arduino
Arduino
Arduino

GSM Shield
Ethernet Shield
WiFi Shield
Wireless SD Shield
USB Host Shield
Motor Shield
Wireless Proto Shield
Proto Shield

Kits:
The Arduino Starter Kit
Arduino Materia 101
Accesorios:
TFT LCD Screen
USB/Serial Light Adapter
Arduino ISP

Mini USB/Serial Adapter


Aplicaciones
El mdulo Arduino ha sido usado como base en diversas aplicaciones electrnicas:
Xoscillo: Osciloscopio de cdigo abierto.14
Equipo cientfico para investigaciones.15
Arduinome: Un dispositivo controlador MIDI.16
OBDuino: un econmetro que usa una interfaz de diagnstico a bordo que se halla
en los automviles modernos.
Humane Reader: dispositivo electrnico de bajo coste con salida de seal de TV q
ue puede manejar una biblioteca de 5000 ttulos en una tarjeta microSD.17
The Humane PC: equipo que usa un mdulo Arduino para emular un computador pers
onal, con un monitor de televisin y un teclado para computadora.18
Ardupilot: software y hardware de aeronaves no tripuladas.
ArduinoPhone: un telfono mvil construido sobre un mdulo Arduino.19 20
Impresoras 3D.
Esquema de conexiones
Entradas y salidas
Poniendo de ejemplo al mdulo Diecimila, ste consta de 14 entradas digitales config
urables como entradas y/o salidas que operan a 5 voltios. Cada contacto puede pr
oporcionar o recibir como mximo 40 mA. Los contactos 3, 5, 6, 9, 10 y 11 pueden p
roporcionar una salida PWM (Pulse Width Modulation). Si se conecta cualquier cos
a a los contactos 0 y 1, eso interferir con la comunicacin USB. Diecimila tambin ti
ene 6 entradas analgicas que proporcionan una resolucin de 10 bits. Por defecto, a
ceptan de 0 hasta 5 voltios, aunque es posible cambiar el nivel ms alto, utilizan
do el contacto Aref y algn cdigo de bajo nivel.
Lenguaje de programacin Arduino
La plataforma Arduino se programa mediante el uso de un lenguaje propio basado e
n el lenguaje de programacin de alto nivel Processing. Sin embargo, es posible ut
ilizar otros lenguajes de programacin y aplicaciones populares en Arduino,21 debi
do a que Arduino usa la transmisin serial de datos soportada por la mayora de los
lenguajes mencionados. 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 comunicacin fluida. Algunos ejemplos 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 medicin y experimentacin)
Mathematica
Matlab
MaxMSP: Entorno grfico de programacin para aplicaciones musicales, de audio y
multimedia
Minibloq: Entorno grfico de programacin, corre tambin en las computadoras OLPC
Perl
Php

Physical Etoys: Entorno grfico de programacin usado para proyectos de robtica e


ducativa
Processing
Pure Data
Python
Ruby
Scratch for Arduino (S4A): Entorno grfico de programacin, modificacin del entor
no para nios Scratch, del MIT
Squeak: Implementacin libre de Smalltalk
SuperCollider: Sntesis de audio en tiempo real
VBScript
Visual Basic .NET
VVVV: Sntesis de vdeo en tiempo real
Funciones bsicas y operadores
Arduino est basado en C y soporta todas las funciones del estndar C y algunas de C
++.22 A continuacin se muestra un resumen con la estructura y sintaxis del lengua
je Arduino:
Sintaxis bsica
Delimitadores:;, {}
Comentarios: //, /* */
Cabeceras: #define, #include
Operadores aritmticos: +, -, *, /, %
Asignacin: =
Operadores de comparacin: ==, !=, <, >, <=, >=
Operadores Booleanos: &&, ||, !
Operadores de acceso a punteros: *, &
Operadores de bits: &, |, ^, ~, <<, >>
Operadores compuestos:
Incremento y decremento de variables: ++, -Asignacin y operacin: +=, -=, *=, /=, &=, |=
Estructuras de control
Condicionales: if, if...else, switch case
Bucles: for, while, do... while
Bifurcaciones y saltos: break, continue, return, goto
Variables
En cuanto al tratamiento de las variables tambin comparte un gran parecido con el
lenguaje C.
Constantes
HIGH/LOW: representan los niveles alto y bajo de las seales de entrada y sali
da. Los niveles altos son aquellos de 3 voltios o ms.
INPUT/OUTPUT: entrada o salida.
false (falso): Seal que representa al cero lgico. A diferencia de las seales HI
GH/LOW, su nombre se escribe en letra minscula.
true (verdadero): Seal cuya definicin es ms amplia que la de false. Cualquier nm
ero entero diferente de cero es "verdadero", segn el lgebra de Boole, como en el c
aso de -200, -1 o 1. Si es cero, es "falso".
Tipos de datos
void, boolean, char, unsigned char, byte, int, unsigned int, word, long, uns
igned long, float, double, string, array.

Conversin entre tipos


Estas funciones reciben como argumento una variable de cualquier tipo y devuelve
n una variable convertida en el tipo deseado.
char(), byte(), int(), word(), long(), float()
Cualificadores y mbito de las variables
static, volatile, const
Utilidades
sizeof()
Funciones bsicas
E/S digital
pinMode(pin, modo)
digitalWrite(pin, valor)
int digitalRead(pin)
E/S analgica
analogReference(tipo)
int analogRead(pin)
analogWrite(pin, valor)
E/S avanzada
shiftOut(dataPin, clockPin, bitOrder, valor)
unsigned long pulseIn(pin, valor)
Tiempo
unsigned long millis()
unsigned long micros()
delay(ms)
delayMicroseconds(microsegundos)
Matemticas
min(x, y), max(x, y), abs(x), constrain(x, a, b), map(valor, fromLow, fromHi
gh, toLow, toHigh), pow(base, exponente), sqrt(x)
Trigonometra
sin(rad), cos(rad), tan(rad)
Nmeros aleatorios
randomSeed(semilla), long random(mx), long random(mn, mx)
Bits y Bytes
lowByte(), highByte(), bitRead(), bitWrite(), bitSet(), bitClear(), bit()
Interrupciones externas
attachInterrupt(interrupcin, funcin, modo)

detachInterrupt(interrupcin)
Interrupciones
interrupts(), noInterrupts()
Comunicacin por puerto serie
Las funciones de manejo del puerto serie deben ir precedidas de la palabra "Seri
al" aunque no necesitan ninguna declaracin en la cabecera del programa. Por esto
se consideran funciones base del lenguaje.23 Estas son las funciones para transm
isin serial:
begin(), available(), read(), flush(), print(), println(), write()
Manipulacin de puertos
Los registros de puertos permiten la manipulacin a ms bajo nivel y de forma ms rpida
de los contactos de entrada/salida del microcontrolador de las placas Arduino.2
4 Los contactos elctricos de las placas Arduino estn repartidos entre los registro
s B(0-7), C (analgicos) y D(8-13). Mediante estas variables ser observado y modif
icado su estado:
DDR[B/C/D]: Data Direction Register (o direccin del registro de datos) del pu
erto B, C D. Es una variable de Lectura/Escritura que sirve para especificar cua
les contactos sern usados como entrada y salida.
PORT[B/C/D]: Data Register (o registro de datos) del puerto B, C D. Es una v
ariable de Lectura/Escritura.
PIN[B/C/D]: Input Pins Register (o registro de pines de entrada) del puerto
B, C D. Variable de slo lectura.
Por ejemplo, para especificar los contactos 9 a 13 como salidas y el 8 como entr
ada (puesto que el puerto D usa los pines de la placa Arduino 8 al 13 digitales)
bastara utilizar la siguiente asignacin:
DDRD = B11111110;
Como se ha podido comprobar, el conocimiento del lenguaje C, permite la programa
cin en Arduino debido a la similitud entre ste y el lenguaje nativo del proyecto,
lo que implica el aprendizaje de algunas funciones especficas de que dispone el l
enguaje del proyecto para manejar los diferentes parmetros. Se pueden construir a
plicaciones de cierta complejidad sin necesidad de muchos conceptos previos.
AVR Libc
Los programas compilados con Arduino (salvo en las placas con CorteX M3) se enla
zan contra AVR Libc22 por lo que tienen acceso a algunas de sus funciones. AVR L
ibc es un proyecto de software libre con el objetivo de proporcionar una bibliot
eca C de alta calidad para utilizarse con el compilador GCC sobre microcontrolad
ores Atmel AVR. Se compone de 3 partes:
avr-binutils
avr-gcc
avr-libc
La mayora del lenguaje de programacin Arduino est escrita con constantes y funcione
s de AVR y ciertas funcionalidades slo se pueden obtener haciendo uso de AVR.25
Interrupciones
Las seales de interrupcin son las siguientes:

cli(): desactiva las interrupciones globales


sei(): activa las interrupciones
Esto afectar al temporizador y a la comunicacin serial. La funcin delayMicroseconds
() desactiva las interrupciones cuando se ejecuta.
Temporizadores
La funcin delayMicroseconds() crea el menor retardo posible del lenguaje Arduino
que ronda los 2s. Para retardos ms pequeos se debe utilizar la llamada de ensamblad
or 'nop' (no operacin). Cada sentencia 'nop' se ejecutar en un ciclo de mquina (16
MHz) de aproximadamente 62,5ns.
Manipulacin de puertos
La manipulacin de puertos con cdigo AVR es ms rpida que utilizar la funcin digitalWri
te() de Arduino.
Establecer Bits en variables
cbi y sbi son mecanismos estndar (AVR) para establecer o limpiar bits en PORT y o
tras variables.
Diferencias con Processing
La sintaxis del lenguaje de programacin Arduino es una versin simplificada de C/C+
+ y tiene algunas diferencias respecto de Processing.26 27 Debido a que Arduino
est basado en C/C++ mientras que Processing se basa en Java, existen varias difer
encias en cuanto a la sintaxis de ambos lenguajes y el modo en que se programa:

S-ar putea să vă placă și