Arduino

download Arduino

of 7

description

tablilla open source

Transcript of Arduino

Arduino es una plataforma de hardware libre, basada en una placa con un microcontrolador y un entorno de desarrollo, diseada para facilitar el uso de la electrnica en proyectos multidisciplinares.2 3El hardware consiste en una placa con un microcontrolador Atmel AVR y puertos de entrada/salida.4 Los microcontroladores ms usados son el Atmega168, Atmega328, Atmega1280, ATmega8 por su sencillez y bajo coste que permiten el desarrollo de mltiples diseos. Por otro lado el software consiste en un entorno de desarrollo que implementa el lenguaje de programacin Processing/Wiring y el cargador de arranque que es ejecutado en la placa.4Desde octubre de 2012, Arduino se usa tambin con microcontroladoras CortexM3 de ARM 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 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 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 conmutar 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. Las placas se pueden montar a mano o adquirirse. El entorno de desarrollo integrado libre se puede descargar gratuitamente.Arduino puede tomar informacin del entorno a travs de sus entradas analgicas y digitales, 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 proyectos hechos con Arduino pueden ejecutarse sin necesidad de conectar a un computador.El proyecto Arduino recibi una mencin honorfica en la categora de Comunidades Digital en el Prix Ars Electrnica de 2006.6 7 8HistoriaArduino se inici en el ao 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 dlares estadounidenses, lo que se consideraba demasiado costoso para ellos. Por aquella poca, uno de los fundadores de Arduino, Massimo Banzi, daba clases en Ivrea.9El nombre del proyecto viene del nombre del Bar di Re Arduino (Bar del Rey Arduino) donde Massimo Banzi pasaba algunas horas. En su creacin, contribuy el estudiante colombiano Hernando Barragn, quien desarroll la tarjeta electrnica Wiring, el lenguaje de programacin y la plataforma de desarrollo.10 Una vez concluida dicha plataforma, los investigadores trabajaron para hacerlo ms ligero, ms econmico y disponible 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 nunca 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 Development Kit), una placa Arduino capaz de comunicarse directamente con telfonos mviles inteligentes bajo el sistema operativo Android para que el telfono controle luces, motores y sensores conectados de Arduino.11 12Para la produccin en serie de la primera versin se tom en cuenta que el coste no fuera 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 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 disear sus primeros 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 distribuir las tarjetas en territorio estadounidense. En la feria Maker Fair de 2011 se present la primera placa Arduino 32 bit para trabajar tareas ms pesadas.13ProductosLos modelos en venta de Arduino se categorizan en 4 diferentes productos: tablas, escudos, kits y accesorios; siendo en cada uno: Tablas: Arduino Uno Arduino Leonardo Arduino Due Arduino Yn Arduino Tre (En Desarrollo) Arduino Zero (En Desarrollo) Arduino Micro Arduino Esplora Arduino Mega ADK Arduino Ethernet Arduino Mega 2560 Arduino Robot Arduino Mini Arduino Nano LilyPad Arduino Simple LilyPad Arduino SimpleSnap LilyPad Arduino LilyPad Arduino USB Arduino Pro Mini Arduino Fio Arduino ProEscudos: Arduino GSM Shield Arduino Ethernet Shield Arduino WiFi Shield Arduino Wireless SD Shield Arduino USB Host Shield Arduino Motor Shield Arduino Wireless Proto Shield Arduino Proto ShieldKits: The Arduino Starter Kit Arduino Materia 101Accesorios: TFT LCD Screen USB/Serial Light Adapter Arduino ISP Mini USB/Serial AdapterAplicacionesEl 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 que 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 personal, 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 conexionesEntradas y salidasPoniendo de ejemplo al mdulo 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 mximo 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 comunicacin USB. Diecimila tambin tiene 6 entradas analgicas que proporcionan una resolucin de 10 bits. Por defecto, aceptan de 0 hasta 5 voltios, aunque es posible cambiar el nivel ms alto, utilizando el contacto Aref y algn cdigo de bajo nivel.Lenguaje de programacin ArduinoLa plataforma Arduino se programa mediante el uso de un lenguaje propio basado en el lenguaje de programacin de alto nivel Processing. Sin embargo, es posible utilizar otros lenguajes de programacin y aplicaciones populares en Arduino,21 debido 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 educativa Processing Pure Data Python Ruby Scratch for Arduino (S4A): Entorno grfico de programacin, modificacin del entorno 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 realFunciones bsicas y operadoresArduino 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 lenguaje 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, gotoVariablesEn 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 salida. 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 HIGH/LOW, su nombre se escribe en letra minscula. true (verdadero): Seal cuya definicin es ms amplia que la de false. Cualquier nmero entero diferente de cero es "verdadero", segn el lgebra de Boole, como en el caso de -200, -1 o 1. Si es cero, es "falso".Tipos de datos void, boolean, char, unsigned char, byte, int, unsigned int, word, long, unsigned long, float, double, string, array.Conversin entre tiposEstas funciones reciben como argumento una variable de cualquier tipo y devuelven una variable convertida en el tipo deseado. char(), byte(), int(), word(), long(), float()Cualificadores y mbito de las variables static, volatile, constUtilidades sizeof()Funciones bsicasE/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, fromHigh, 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 serieLas funciones de manejo del puerto serie deben ir precedidas de la palabra "Serial" aunque no necesitan ninguna declaracin en la cabecera del programa. Por esto se consideran funciones base del lenguaje.23 Estas son las funciones para transmisin serial: begin(), available(), read(), flush(), print(), println(), write()Manipulacin de puertosLos 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.24 Los contactos elctricos de las placas Arduino estn repartidos entre los registros B(0-7), C (analgicos) y D(8-13). Mediante estas variables ser observado y modificado su estado: DDR[B/C/D]: Data Direction Register (o direccin del registro de datos) del puerto B, C D. Es una variable de Lectura/Escritura que sirve para especificar cuales contactos sern usados como entrada y salida. PORT[B/C/D]: Data Register (o registro de datos) del puerto B, C D. Es una variable 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 entrada (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 programacin 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 lenguaje del proyecto para manejar los diferentes parmetros. Se pueden construir aplicaciones de cierta complejidad sin necesidad de muchos conceptos previos.AVR LibcLos programas compilados con Arduino (salvo en las placas con CorteX M3) se enlazan contra AVR Libc22 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-libcLa mayora del lenguaje de programacin Arduino est escrita con constantes y funciones de AVR y ciertas funcionalidades slo se pueden obtener haciendo uso de AVR.25InterrupcionesLas seales de interrupcin son las siguientes: cli(): desactiva las interrupciones globales sei(): activa las interrupcionesEsto afectar al temporizador y a la comunicacin serial. La funcin delayMicroseconds() desactiva las interrupciones cuando se ejecuta.TemporizadoresLa funcin delayMicroseconds() crea el menor retardo posible del lenguaje Arduino que ronda los 2s. Para retardos ms pequeos se debe utilizar la llamada de ensamblador 'nop' (no operacin). Cada sentencia 'nop' se ejecutar en un ciclo de mquina (16 MHz) de aproximadamente 62,5ns.Manipulacin de puertosLa manipulacin de puertos con cdigo AVR es ms rpida que utilizar la funcin digitalWrite() de Arduino.Establecer Bits en variablescbi y sbi son mecanismos estndar (AVR) para establecer o limpiar bits en PORT y otras variables.Diferencias con ProcessingLa 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 diferencias en cuanto a la sintaxis de ambos lenguajes y el modo en que se programa: