Trabajo Arduino

27
República Bolivariana de Venezuela Ministerio del Poder Popular para la Educación Universitaria Universidad politécnica territorial del oeste de sucre “Clodosbaldo Russián” Cumaná, Estado – Sucre ARDUINO Profesor: Realizado por: Ing. David Sifuentes Córdova, Luis F. C.I: 20.063.359

Transcript of Trabajo Arduino

Repblica Bolivariana de VenezuelaMinisterio del Poder Popular para la Educacin UniversitariaUniversidad politcnica territorial del oeste de sucreClodosbaldo RussinCuman, Estado Sucre

ARDUINO

Profesor: Realizado por: Ing. David Sifuentes Crdova, Luis F. C.I: 20.063.359Capaldo, Jhonny CI: 21.093.993

Cumana Octubre 2014ARDUINO:

Arduinoes una plataforma dehardware libre, basada en unaplacacon un microcontroladory unentorno de desarrollo, diseada para facilitar el uso de la electrnica en proyectos multidisciplinares.

Elhardwareconsiste en una placa con un microcontroladorAtmel AVRy puertos de entrada. Los microcontroladores ms usados son elAtmega168,Atmega328,Atmega1280,ATmega8por 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 ellenguaje de programacinProcessing/Wiring y elarranque que es ejecutado en la placa.

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.

Cmo funciona Arduino

Como pasa con la mayora de las placas microcontroladores las funciones de Arduino pueden resumirse en tres. En primera instancia, tenemos una interfaz de entrada, que puede estar directamente unida a los perifricos, o conectarse a ellos por puertos. El objetivo de esa interfaz de entrada es llevar la informacin al microcontrolador, la pieza encargada de procesar esos datos. El mentado microcontrolador vara dependiendo de las necesidades del proyecto en el que se desea usar la placa, y hay una buena variedad de fabricantes y versiones disponibles.

Por ltimo, tenemos una interfaz de salida, que lleva la informacin procesada a los perifricos encargadas de hacer el uso final de esos datos, que en algunos casos puede bien tratarse de otra placa en la que se centralizar y procesara nuevamente la informacin, o sencillamente, por ejemplo, una pantalla o un altavoz encargada demostrarla versin final de los datos.

Arduino es un sistema, y no una placa nica. Por esto, el funcionamiento concreto depender del proyecto. As, en un mvil hecho con Arduino tendremos varios microcontroladores, encargados de las conexiones de red, los datos necesarios para la entrada de nmeros y mostrar informacin en pantalla, entre otras cosas. As mismo,un reloj hecho con Arduinosolamente hara falta un chip que cuantifique la hora y la muestre en una pantalla.

Aplicaciones:

El mdulo Arduino ha sido usado como base en diversas aplicaciones electrnicas:

Xoscillo:Osciloscopiode cdigo abierto. Equipo cientfico para investigaciones. Arduinome: Un dispositivocontrolador MIDI. OBDuino: uneconmetroque usa una interfaz dediagnstico a bordoque 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 tarjetamicroSD. The Humane PC: equipo que usa un mdulo Arduino para emular un computador personal, con un monitor de televisin y un teclado para computadora. Ardupilot: software y hardware deaeronaves no tripuladas. ArduinoPhone: un telfono mvil construido sobre un mdulo Arduino.

Esquemas de conexiones:

Entradas y salidas

Poniendo 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, 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 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 arduino:

La plataforma Arduino se programa mediante el uso de un lenguaje propio basado en el lenguaje de programacin de alto nivelProcessing. Sin embargo, es posible utilizar otros lenguajes de programacin y aplicaciones populares en Arduino,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(paraMac 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 computadorasOLPC 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 niosScratch, delMIT) 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++. 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, 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 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 defalse. Cualquier nmero entero diferente de cero es "verdadero", segn ellgebra 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 tipos

Estas 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, 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, 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 serie

Las 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.Estas son las funciones para transmisin 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.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 cules contactos sern usados como entrada y salida.

PORT[B/C/D]: Data Register (o registro de datos) del puerto B, C o 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.

Interrupciones

Las 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.

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 ensamblador '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 digitalWrite() de Arduino.

Establecer Bits en variables

Cbi y sbi son mecanismos estndar (AVR) para establecer o limpiar bits en PORT y otras 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.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:

Ejemplo sencillo de programacin en Arduino

El primer paso antes de comprobar que la instalacin es correcta y empezar a trabajar con Arduino, es usar ejemplos prcticos 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 cdigo necesario es el siguiente:

# define LED_PIN 13void setup () { // Activado del contacto 13 para salida digital pinMode (LED_PIN, OUTPUT);}// Bucle infinitovoid loop () { // Encendido del diodo LED enviando una seal alta digitalWrite (LED_PIN, HIGH); // Tiempo de espera de 1 segundo (1000 ms) delay (1000); // Apagado del diodo LED enviando una seal baja. digitalWrite (LED_PIN, LOW); // Tiempo de espera de 1 segundo delay (1000);}

BIBLIOTECAS EN ARDUINO:

Las bibliotecas estndar que ofrece Arduino son las siguientes:

Serial

Lectura y escritura por el puerto serie.

Eeprom

Lectura y escritura en el almacenamiento permanente.

read(), write()

Ethernet

Conexin a Internet mediante Arduino Ethernet Shield. Puede funcionar como servidor que acepta peticiones remotas o como cliente. Se permiten hasta cuatro conexiones simultneas.Los comandos usados son los siguientes:

Servidor: Server(), begin(), available(), write(), print(), println() Cliente: Client(), connected(), connect(), write(), print(), println(), available(), read(), flush(), stop()

Firmata

Es una biblioteca de comunicacin con aplicaciones informticas utilizando el protocolo estndar del puerto serie.

LiquidCrystal

Control deLCDsconchipsetHitachi HD44780o compatibles. La biblioteca soporta los modos de 4 y 8 bits.

Servo

Biblioteca para el control deservo motores. A partir de la versin 0017 de Arduino la biblioteca soporta hasta 12 motores en la mayora de las placas Arduino y 48 en la Arduino Mega. Estos son los comandos usados:

attach(), write(), writeMicroseconds(), read(), attached(), detach()

SoftwareSerial

Comunicacin serie en contactos digitales. Por defecto Arduino incluye comunicacin slo en los contactos 0 y 1 pero gracias a esta biblioteca puede realizarse esta comunicacin con los restantes.

Stepper

Control demotores paso a pasounipolares o bipolares Stepper(steps, pin1, pin2), Stepper(steps, pin1, pin2, pin3, pin4), setSpeed(rpm), step(steps)

Wire

Envo y recepcin de datos sobre una red de dispositivos o sensores medianteTwo Wire Interface(TWI/I2C).Las bibliotecasMatrixySpritede Wiring son totalmente compatibles con Arduino y sirven para manejo de matrices de diodos LED. Tambin se ofrece informacin sobre diversas bibliotecas desarrolladas por diversos colaboradores que permiten realizar muchas tareas.

TIPOS DE ARDUINOS:

Arduino viene en una variedad de diferentes tipos que hacen que elegir el ms adecuado sea un poco difcil, pero la variedad tambin nos brinda la flexibilidad para elegir la solucin perfecta.

Nosotros no podemos cubrir todas las opciones de Arduino, pero a continuacin te mostramos algunas de las opciones ms notables para empezar.

Arduino Uno

El Uno es una buena opcin para comenzar a usar Arduino, proporciona una base slida para los principiantes y tiene muchas de las opciones que se desea a medida que exploras la plataforma. Tambin trabaja con casi todos los escudos disponibles. Ms adelante explicaremos que es un Shield en Arduino.

Arduino Nano

El Nano es rasgo por rasgo casi lo mismo que el Arduino Uno, pero es aproximadamente 1/3 del tamao y no se pueden usar shields con tanta facilidad. El Uno est destinado a ser utilizado como un elemento permanente en los proyectos o con bread boards para pruebas.

Arduino Lilypad

El Lilypad tiene un diseo nico que se puede coser en la tela para proyectos que se puedan vestir o para arte. Por supuesto, no ests limitado a esas aplicaciones, pero los shields no funcionan en este Arduino, de modo que la expansin puede ser difcil.

Arduino Mega 2560

El Mega 2560 tiene ms memoria y ms pines de E/S que cualquier otra Arduino. Este es el Arduino ms grande y mejor que puedes conseguir, pero puede que no necesites tanto poder si tus proyectos no lo requieren. Este tambin es un poco ms caro, por lo que debes pensar si lo que quieres para un proyecto permanente o para montar y probar diferentes proyectos.

Netduino

El Netduino es el primo del Arduino. Sigue siendo una solucin pirateada dehardwarey de cdigo abierto para prototipos. Sin embargo, el Netduino ejecuta.NET Micro Frameworkpara su software base. Es compatible con los shields de Arduino, pero algunos pueden requerir drivers para funcionar.

Arduino Fio

El Arduino FIO est diseado para aplicaciones inalmbricas. El usuario puede subir sus sketches con un cable FTDI o una placa adicional adaptadora Sparkfun. Adems, si utiliza unadaptadorde USB a XBee modificado, puedes subir tus sketches de forma inalmbrica. La tarjeta viene sin conectores pre-montados, permitiendo el uso de diversos tipos de conectores o lasoldaduradirecta de los cables.

Tiene conexiones para una batera de polmero de Litio e incluye un circuito de carga a travs de USB. En el reverso de la placa tiene disponible un zcalo para mdulos XBee.

Accesorios de Arduino (Shields)

Un shield es una placa impresa que se pueden conectar en la parte superior de la placa Arduino para ampliar sus capacidades, pudiendo ser apilada una encima de la otra. Los shields permiten aadir funcionalidad a tu Arduino al instante. Tienen pines que se colocan justo encima de tu Arduino y puedes aprovechar inmediatamente lo que sea que el shield pueda hacer. Puedes agregar mltiples shields al mismo tiempo.

Por ejmeplo, puedes usar un Arduino para que busque en Twitter por un hashtag especfico (Shield de Ethernet) y luego controle un carrito a control remoto con radiofrecuencia (Shield RF) no est ms all del alcance de un solo proyecto, gracias a la flexibilidad de los shields.

A continuacin vers que algunos shields se parecen mucho a los mismos Arduino, pero no debes confundirte, ya que los shields carecen de la capacidad de procesamiento principal para ejecutar el cdigo que escribas en tus sketches o bocetos (ms sobre esto ms adelante).Shield de Ethernet

Este es uno de los shields ms populares, ya que le permite a tu Arduino para poder usar el internet para fines de comunicacin y control. El shield de Ethernet es uno de los ms verstiles del mercado, y una vez que haya dominado los fundamentos es casi seguro que comprars uno de estos.Yo dira que junto con el shieldde motores, el shield de Ethernet es imprescindible y puedes hacer casi cualquier cosa con l. De hecho, vi un proyecto de un chico que usaba estos shields para que su tostadora y sulavadoraautomticamente tweetearan cuando el pan estaba listo y cuando la ropa estaba lavada respectivamenteas que ya te puedes imaginar lo que puedes hacer con esto.

XBee

El shield XBee hace que la comunicacin inalmbrica de punto a punto sea fcil. Puedes utilizar este shield para conectar en red dos Arduinos o para crear una malla de red completa de Arduinos para cualquier cosa que se te ocurra

Motor

Arduino puede controlar motores y servos sin necesidad de un shield, pero el shield de motor eleva esa capacidad a 11. Puedes utilizar este shield para disear tu propio robot y controlarlo a distancia.

Hay un montn de shields para Arduino disponibles, hay shields para msica, videojuegos,bluetooth, pantallas tctiles, LCD. Pero esa es slo la punta del iceberg, yo dira que hay shields para casi todo y lo ms recomendable es que busques un poco hasta que encuentres el shield perfecto para tu proyecto.

Si ests buscando Arduinos y shields para usarlos con sensores, te recomiendo que le eches un vistazo aFritzing, que no slo ayuda con las etapas de creacin de prototipos, sino que tambin ayuda a mostrar cmo hacer placas de circuito impreso (PCB) permanentes para la produccin de tu proyecto.

BIBLIOGRAFA

http://es.wikipedia.org/wiki/Arduino

http://gizmologia.com/2014/03/hardware-novatos-arduino

http://domadis.com/2011/10/02/%C2%BFsabes-que-es-arduino-todo-lo-que-necesitas-saber-sobre-esta-plataforma-electronica-de-codigo-abierto/