arduino
TRANSCRIPT
Arduino es una plataforma de hardware libre, basada en una placa con unmicrocontrolador y un entorno de desarrollo, diseñada para facilitar el uso de la electrónica en proyectos multidisciplinares.2 3
El hardware consiste en una placa con un microcontrolador Atmel AVR y puertos deentrada/salida.4 Los microcontroladores más usados son el Atmega168, Atmega328,Atmega1280, ATmega8 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 de programación Processing/Wiring y el cargador de arranqueque es ejecutado en la placa.4
Desde 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 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 conmutar el voltaje.
Arduino se puede utilizar para desarrollar objetos interactivos autónomos o puede ser conectado a software tal como Adobe Flash, Processing, Max/MSP, Pure Data). Las placas se pueden montar a mano o adquirirse. El entorno de desarrollo integrado libre se puede descargar gratuitamente.
Arduino puede tomar información del entorno a través 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 Ars Electrónica de 2006.6 7 8
Índice
[ocultar]
1 Historia
2 Aplicaciones
3 Esquema de conexiones
o 3.1 Entradas y salidas
4 Especificaciones
5 Lenguaje de programación Arduino
o 5.1 Funciones básicas y operadores
5.1.1 Sintaxis Básica
5.1.2 Estructuras de control
5.1.3 Variables
5.1.3.1 Constantes
5.1.3.2 Tipos de datos
5.1.3.3 Conversión entre tipos
5.1.3.4 Cualificadores y ámbito de las variables
5.1.3.5 Utilidades
5.1.4 Funciones Básicas
5.1.4.1 E/S Digital
5.1.4.2 E/S Analógica
5.1.4.3 E/S Avanzada
5.1.4.4 Tiempo
5.1.4.5 Matemáticas
5.1.4.6 Trigonometría
5.1.4.7 Números aleatorios
5.1.4.8 Bits y Bytes
5.1.4.9 Interrupciones externas
5.1.4.10 Interrupciones
5.1.4.11 Comunicación por puerto serie
5.1.5 Manipulación de puertos
o 5.2 AVR Libc
5.2.1 Interrupciones
5.2.2 Temporizadores
5.2.3 Manipulación de puertos
5.2.4 Establecer Bits en variables
o 5.3 Diferencias con Processing
5.3.1 Arreglos
5.3.2 Impresión de cadenas
o 5.4 Ejemplo sencillo de programación en Arduino
6 Bibliotecas en Arduino
o 6.1 Serial
o 6.2 EEPROM
o 6.3 Ethernet
o 6.4 Firmata
o 6.5 LiquidCrystal
o 6.6 Servo
o 6.7 SoftwareSerial
o 6.8 Stepper
o 6.9 Wire
o 6.10 Creación de bibliotecas
6.10.1 Ejemplo de biblioteca
7 Instalación en diferentes entornos
o 7.1 Windows
o 7.2 GNU/Linux
8 Equipo de desarrollo
9 Pduino
10 Minibloq
11 Physical Etoys
12 Véase también
13 Referencias
14 Bibliografía
15 Enlaces de externos
Historia[editar]
Arduino se inició en el año 2005 como un proyecto para estudiantes en el Instituto IVREA, en Ivrea (Italia). En ese tiempo, los estudiantes usaban el microcontrolador BASIC Stamp, cuyo coste era de 100 dólares estadounidenses, lo que se consideraba demasiado costoso para ellos. Por aquella época, uno de los fundadores de Arduino, Massimo Banzi, daba clases en Ivrea.9
El nombre del proyecto viene del nombre del Bar di Re Arduino (Bar del Rey Arduino) donde Massimo Banzi pasaba algunas horas. En su creación, contribuyó el estudiante colombiano Hernando Barragán, quien desarrolló la tarjeta electrónica Wiring, el lenguaje de programación y la plataforma de 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 instituto finalmente cerró sus puertas, así que los investigadores, 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 de subsistir ante el inminente cierre del Instituto de diseño Interactivo IVREA. Es decir, que al crear un producto de hardware abierto, éste no podría ser embargado.
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 Android para que el teléfono controle luces, motores y sensores conectados de Arduino.11 12
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 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
Aplicaciones[editar]
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
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
Esquema de conexiones[editar]
Entradas y salidas[editar]
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, 8, 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.
Especificaciones[editar]
Las especificaciones de los distintos modelos de placas Arduino se resumen en la siguiente tabla:
ModeloMicrocont
rolador
Voltaje de
entrada
Voltaje del
sistema
Frecuencia de
Reloj
Digital I/O
Entradas
Analógicas
PWM
UART
Memoria Flas
h
Cargador
Interfaz de
Programación
Arduino Due
AT91SAM3X8E
5-12V
3,3V 84MHz 54* 12 12 4512Kb
DueNativa USB
Arduino Leonardo
ATmega32U4
7-12V
5V 16MHz 20* 12 7 1 32KbLeonardo
Nativa USB
Arduino Uno - R3
ATmega328
7-12V
5V 16MHz 14 6 6 1 32Kb OptibootUSB via ATMega16U2
RedBoardATmega328
7-15V
5V 16MHz 14 6 6 1 32Kb OptibootUSB via FTDI
Arduino Uno SMD (desconti
nuado)
ATmega328
7-12V
5V 16MHz 14 6 6 1 32Kb OptibootUSB via ATMega8U2
Arduino Uno
(descontinuado)
ATmega328
7-12V
5V 16MHz 14 6 6 1 32Kb OptibootUSB via ATMega8U2
Arduino Duemilan
ove (desconti
nuado)
ATmega328
7-12V
5V 16MHz 14 6 6 1 32KbAtmegaBOOT
USB via FTDI
Arduino Bluetooth (desconti
nuado)
ATmega328
1,2-5,5V
5V 16MHz 14 6 6 1 32KbAtmegaBOOT
SerialBluetooth
Arduino Pro
3.3V/8MHz
ATmega328
3,35 -12V
3,3V 8MHz 14 6 6 1 32KbAtmegaBOOT
Cabecera compatible con FTDI
Arduino Pro
5V/16MHz
ATmega328
5 - 12V
5V 16MHz 14 6 6 1 32KbAtmegaBOOT
Cabecera compatible con FTDI
Ethernet Pro
(descontinuado)
ATmega328
7-12V
5V 16MHz 14 6 6 1 32KbAtmegaBOOT
Cabecera compatible con FTDI
Arduino Mega
2560 R3
ATmega2560
7-12V
5V 16MHz 54 16 14 4256Kb
STK500v2
USB via ATMega16U2
Arduino Mega 2560
(descontinuado)
ATmega2560
7-12V
5V 16MHz 54 16 14 4256Kb
STK500v2
USB via ATMega8U2
Arduino Mega
(descontinuado)
ATmega1280
7-12V
5V 16MHz 54 16 14 4128Kb
STK500v2
USB via FTDI
Mega Pro 3.3V
ATmega2560
3,3-12V
3,3V 8MHz 54 16 14 4256Kb
STK500v2
Cabecera compatible con FTDI
Mega Pro 5V
ATmega2560
5-12V
5V 16MHz 54 16 14 4256Kb
STK500v2
Cabecera compatible con FTDI
Arduino Mini 04
(descontinuado)
ATmega328
7-9V 5V 16MHz 14 6 8 1 32KbAtmegaBOOT
Cabecera Serial
Arduino Mini 05
ATmega328
7-9V 5V 16MHz 14 6 8 1 32KbAtmegaBOOT
Cabecera Serial
Arduino Pro Mini 3.3V/8MH
z
ATmega328
3,35-12V
3,3V 8MHz 14 6 6 1 32KbAtmegaBOOT
Cabecera compatible con FTDI
Arduino Pro Mini
5V/16MHz
ATmega328
5 - 12V
5V 16MHz 14 6 6 1 32KbAtmegaBOOT
Cabecera compatible con FTDI
Arduino Fio
ATmega328P
3,35-12V
3,3V 8MHz 14 8 6 1 32Kb AtmegaBOOT
Cabecera compatible con
FTDI o Inalámbrica via XBee1
Mega Pro Mini 3.3V
ATmega2560
3,3-12V
3,3V 8MHz 54 16 14 4256Kb
STK500v2
Cabecera compatible con FTDI
Pro Micro 5V/16MHz
ATmega32U4
5-12V
5V 16MHz 12 4 5 1 32KbDiskLoader
Nativa USB
Pro Micro 3.3V/8MH
z
ATmega32U4
3,35-12V
3,3V 8MHz 12 4 5 1 32KbDiskLoader
Nativa USB
LilyPad Arduino 328 Main
Board
ATmega328
2,7-5,5V
3,3V 8MHz 14 6 6 1 32KbAtmegaBOOT
Cabecera compatible con FTDI
LilyPad Arduino Simple Board
ATmega328
2,7-5,5V
3,3V 8MHz 9 4 5 02 32KbAtmegaBOOT
Cabecera compatible con FTDI
Los modelos Arduino Diecimila, Arduino Duemilanove y Arduino Mega están basados en los microcontroladores ATmega168, ATmega328 y ATmega1280
ATmega168 ATmega328 ATmega1280
Voltaje operativo 5 V 5 V 5 V
Voltaje de entrada recomendado
7-12 V 7-12 V 7-12 V
Voltaje de entrada límite
6-20 V 6-20 V 6-20 V
Contactos de entrada y salida digital
14 (6 proporcionan PWM)
14 (6 proporcionan PWM)
54 (14 proporcionan PWM)
Contactos de entrada analógica
6 6 16
Intensidad de corriente
40 mA 40 mA 40 mA
Memoria Flash16KB (2KB reservados para el bootloader)
32KB (2KB reservados para el bootloader)
128KB (4KB reservados para el bootloader)
SRAM 1 KB 2 KB 8 KB
EEPROM 512 bytes 1 KB 4 KB
Frecuencia de reloj
16 MHz 16 MHz 16 MHz
Lenguaje de programación Arduino[editar]
La plataforma Arduino se programa mediante el uso de un lenguaje propio basado en el lenguaje de programación de alto nivelProcessing. Sin embargo, es posible utilizar otros lenguajes de programación y aplicaciones populares en Arduino,21 debido a que Arduino usa la transmisión serial de datos soportada por la mayoría 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 comunicación 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 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
SuperCollider : Síntesis de audio en tiempo real
VBScript
Visual Basic .NET
VVVV : Síntesis de vídeo en tiempo real