Clase 16. Introducción Arduino

16
Facultad de Ingenierías y Arquitectura Ingeniería Mecatrónica Docente Cristhian Ivan Riaño Jaimes UNIVERSIDAD DE PAMPLONA 1 de 16 PROGRAMACIÓN MECATRÓNICA Introducción Arduino 20 de Mayo 2013 1 INTRODUCCIÓN ARDUINO Ilustración 1 Arduino UNO. Ilustración 2Arduino MEGA 2560 Objetivos Describir las características básicas de la placa Arduino One y Arduino Mega 2560 y se brinden las condiciones necesarias para realizar la programación de las mismas. Acercar al diseño y desarrollo de proyectos basados en Arduino. Brindar opciones de simulación para las tarjetas Arduino. ||[email protected] [email protected]

description

arduino, simulink, matlab,programacion, estudio

Transcript of Clase 16. Introducción Arduino

UNIVERSIDAD DE PAMPLONA

PROGRAMACIN MECATRNICA

Introduccin Arduino

20 de Mayo 2013

Facultad de Ingenieras y Arquitectura

Ingeniera Mecatrnica

Docente Cristhian Ivan Riao Jaimes

UNIVERSIDAD DE PAMPLONA

11 de 13

INTRODUCCIN ARDUINO

Ilustracin 1 Arduino UNO.

Ilustracin 2Arduino MEGA 2560

Objetivos

Describir las caractersticas bsicas de la placa Arduino One y Arduino Mega 2560 y se brinden las condiciones necesarias para realizar la programacin de las mismas.

Acercar al diseo y desarrollo de proyectos basados en Arduino.

Brindar opciones de simulacin para las tarjetas Arduino.

Caractersticas Generales

La plataforma Arduino es una plataforma open-hardware con ideologa de electrnica libre, basada en una sencilla placa con entradas y salidas (E/S), analgicas y digitales por lo que su diseo es de libre acceso.

La filosofa de software libre permite:

Estudiar el Hardware para entender cmo funciona.

Hacer modificaciones al Hardware.

Poder compartir modificaciones con la comunidad.

Tener acceso a una comunidad activa de usuarios y desarrolladores.

Gran cantidad de software y hardware disponible para autoconstruir.

Precios bajos.

Arduino puede adquirir variables de su entorno mediante sus entradas por medio de sensores y puede generar acciones que alteren el entorno mediante la manipulacin de sus salidas. A continuacin se mencionan algunos de los campos de aplicacin:

Robtica Mvil.

Instrumentacin y sensrica.

Control de Proceso.

Domtica.

Hay muchos otros microcontroladores y plataformas microcontroladoras similares a la plataforma Arduino disponibles como, Parallax Basic Stamp, Netmedia's BX-24, Phidgets, MIT's Handyboard, y muchas otras. La principal caractersticas de estas herramientas es facilitar la programacin del Microcontrolador y hacer ms verstil y factible para distintos proyecto. Selecciona Arduino trae las siguientes ventajas respecto a las otras:

Barato: Las placas Arduino son baratas comparadas con otras plataformas micro controladoras. La versin menos cara del mdulo Arduino puede ser ensamblada a mano, e incluso los mdulos de Arduino preensamblados cuestan menos de 50$.

Multiplataforma: El software de Arduino se ejecuta en sistemas operativos Windows, Macintosh OSX y GNU/Linux. La mayora de los sistemas microcontroladores estn limitados a Windows.

Entorno de programacin simple y claro: El entorno de programacin de Arduino es fcil de usar para principiantes, pero suficientemente flexible para que usuarios avanzados puedan aprovecharlo tambin.

Cdigo abierto y software extensible: El software Arduino est publicado como herramientas de cdigo abierto (open-source), disponible para extensin por programadores experimentados. El lenguaje puede ser expandido mediante libreras C++, y la gente que quiera entender los detalles tcnicos pueden hacer el salto desde Arduino a la programacin en lenguaje assembler.

Cdigo abierto y hardware extensible: El Arduino est basado en microcontroladores ATMEGA8 y ATMEGA168 de Atmel. Los planos para los mdulos estn publicados bajo licencia Creative Commons, por lo que diseadores experimentados de circuitos pueden hacer su propia versin del mdulo, extendindolo y mejorndolo. Incluso usuarios relativamente inexpertos pueden construir la versin de la placa del mdulo para entender cmo funciona y ahorrar dinero.

Arduino UNO y MEGA es una tarjeta electrnica basada en el Microcontrolador Atmega328 y ATmega2560 respectivamente. Arduino UNO Dispone de 14 entradas/salidas digitales, 6 de las cuales se pueden emplear como salidas PWM (modulacin de anchura de pulsos). Dispone tambin de 6 entradas analgicas, un oscilador de 16MHz, una conexin USB, un conector de alimentacin, un conector ICSP y un pulsador para el reset. Arduino Mega 2560 es una versin ampliada de la tarjeta original de Arduino y est basada en el Microcontrolador Atmega2560. Dispone de 54 entradas/salidas digitales, 14 de las cuales se pueden utilizar como salidas PWM (modulacin de anchura de pulso). Adems dispone de 16 entradas analgicas, 4 UARTs (puertas series), un oscilador de 16MHz, una conexin USB, un conector de alimentacin, un conector ICSP y un pulsador para el Reset. Una de las diferencias principales de la tarjeta Arduino MEGA 2560 es que no utiliza el convertidor USB-serie de la firma FTDI. Por lo contrario, emplea un Microcontrolador Atmega8U2 programado como actuar convertidor USB a serie.

La tarjeta Arduino MEGA2560 es compatible con la mayora de los shield o tarjetas de aplicacin/ampliacin disponibles para las tarjetas Arduino UNO original.

Las caractersticas ms relevantes se resumen a continuacin:

Arduino Uno

Arduino Mega

Microcontrolador

ATmega328

Microcontrolador

ATmega2560

Voltaje de Operacin

5V

Voltaje de Operacin

5 V

Alimentacin (Recomendado)

7-12V

Alimentacin

(Recomendado)

7-12V

Pines lneas de entradas/salidas Digitales

14

Pines lneas de entradas/salidas Digitales

54

Salidas PWM

6

Salidas PWM

14

Entradas Analgicas

6

Entradas Analgicas

16

Corriente Mxima por Pin

40mA

Corriente Mxima por Pin

40mA

Comunicacin

serial

Comunicacin

Serial

Memoria Flash

32 Kb

Memoria Flash

256Kb

Memoria SRAM,

2Kb

8Kb

Memoria EEPROM (para variables de datos no voltiles)

1 Kb

Memoria EEPROM (para variables de datos no voltiles)

4Kb

Frecuencia del Reloj

16 MHz

Frecuencia del Reloj

16 MHz

Descripcin Fsica

La tarjeta Arduino UNO Y Mega puede ser alimentada a travs de la conexin USB o con un suministro de energa externo. La alimentacin externa (no USB) puede venir o desde un adaptador AC-a-DC o desde una batera. El adaptador puede ser conectado mediante un enchufe centro-positivo en el conector de alimentacin de la placa. Los cables de la batera pueden insertarse en las cabeceras de los pines Gnd y Vin del conector POWER ya que la tarjeta cuenta con un regulador de voltaje de buena eficiencia. El rango recomendado es de 7 a 12 voltios.

Pin POWER

Pin VIN: La entrada de tensin a la placa Arduino cuando est usando una fuente de alimentacin externa (al contrario de los 5 voltios de la conexin USB u otra fuente de alimentacin regulada). Puedes suministrar tensin a travs de este pin, o, si suministra tensin a travs del conector de alimentacin, acceder a l a travs de este pin.

Pin 5V. El suministro regulado de energa usado para alimentar al Microcontrolador y otros componentes de la placa. Este puede venir o desde VIN a travs de un regulador en la placa,

o ser suministrado por USB u otro suministro regulado de 5 V.

Pin 3.3V. Un suministro de 3.3 V generado por el chip FTDI de la placa. La corriente mxima es de 50mA.

Pin GND. Pines de Tierra.

Ilustracin 3 Distribucin Pines Arduino UNO

PIN Digital (PWM~)

Cada uno de los 14 pines digitales de la Arduino Uno al igual que los 54 de la Arduino Mega puede ser usado como entrada o salida, usando funciones pinMode(), digitalWrite() y digitalRead()2. Operan a 5 voltios. Cada pin puede proporcionar o recibir un mximo de 40 mA y tiene una resistencia interna pull-up (desconectada por defecto) de 20-50 KOhms. Adems, algunos pines tienen funciones especiales:

Pin Serial: 0 (Rx) y 1 (Tx). Usados para recibir (Rx) y transmitir (Tx) datos TTL en serie. Estos pines estn conectados a los pines correspondientes del chip FTDI USB-a-TTL Serie.

Pin 2 y 3. Interrupciones Externas Estos pines pueden ser configurados para disparar una interrupcin interna, con flanco de subida o flanco de bajada. Mirar la funcin attachInterrupt().

Pin PWM: 3, 5, 6, 9, 10 y 11. Proporcionan salida PWM de 8 bits con la funcin analogWrite()

Pin SPI: 10 (SS), 11 (MOSI), 12 (MISO), 13 (SCK). Estos pines soportan comunicacin SPI (Serial Peripheral Interface), la cual, aunque proporcionada por el hardware subyacente, no est actualmente incluida en el lenguaje Arduino.

Pin LED: 13. Hay un LED empotrado conectado al pin digital 13. Cuando el pin est a valor HIGH, el LED est encendido, cuando el pin est a LOW, est apagado.

Pines Analog Input

El Arduino UNO tiene 6 entradas analgicas, cada una de las cuales proporciona 10 bits de resolucin (por ejemplo 1024 valores diferentes). Por defecto miden 5 voltios desde tierra, aunque es posible cambiar el valor ms alto de su rango usando el pin ARF y algn cdigo de bajo nivel. Adems, algunos pines tienen funcionalidad especializada:

Pin TWI: A4 o SDA and A5 o Pin SCL. Soportan comunicacin IC (TWI) usando la libreria Wire5.

Hay otro par de pines en la placa.

Pin AREF. Voltaje de referencia para las entradas analgicas. Usado con analogReference().

Pin Reset. Pone esta linea a LOW para resetear el Microcontrolador. Tpicamente usada para aadir un botn de reset a dispositivos que bloquean a la placa principal.

Sistemas de Identificacin: Es una aproximacin experimental. Se desarrollan algunos experimentos en el proceso y se determina un modelo, con unos parmetros asignados que no tiene un significado fsico.

Comunicacin

La Arduino UNO y Mega tiene un nmero de infraestructuras para comunicarse con un ordenador, otro Arduino, u otros microcontroladores. El ATmega 328 provee comunicacin serie UART TTL(5V), la cual est disponible en los pines digitales 0 (Rx) y 1 (Tx). Un ATmega16U2en la placa canaliza esta comunicacin serie al USB y los drivers (incluidos con el software Arduino) proporcionan un puerto de comunicacin virtual al software del ordenador. El software Arduino incluye un monitor serie que permite a datos de texto simple ser enviados a y desde la placa Arduino. Una libreria SoftwareSerial permite comunicacin serie en cualquiera de los pines digitales de la Unos.

Programacin

Para iniciar hay que conectar la placa Arduino al ordenador y cargar una primera rutina para lo cual seguiremos los siguientes pasos.

1. Descargar el entorno Arduino. Lo podemos descargar del siguiente enlace. Download.

2. Instalar los Drivers Usb. Tan pronto conectemos el dispositivo saldr una viso el dispositivo no se reconoce por lo que debemos direccionar en el equipo.

3. Conectamos la placa Arduino si es por primera vez observamos como parpadea un led.

4. Luego de descargar el entono Arduino descomprimimos la carpeta no necesita instalacin y realizamos doble click en la aplicacin Arduino.

5. Abrimos una Rutina que nos proporciona como ejemplo que es el parpadeo de un Led en la siguiente ruta arduino-1.0.5-windows\arduino-1.0.5\examples\01.Basics\Blink.

6. El Arduino Unos y Mega puede ser programado con el software Arduino. Seleccione el tipo de Board o tarjeta con la que se cuenta como se muestra en la Ilustracin 4.

Ilustracin 4. Seleccionar Board.

7. Seleccionar el dispositivo serie de la placa Arduino desde el menu Herramientas > Puerto Serie. En Windows, este debera ser COM1 o COM2 para la placa serie Arduino, o COM3, COM4 o COM5 para la placa USB. Para estar seguro de la eleccin nos dirigimos Administrador de Dispositivos de Windows (En la pestaa Hardware o en el Panel de Control de Sistema). Buscar puertos (COM y LPT) identificamos el COM de la placa Arduino para nuestro caso COM4 como se pareca en la Ilustracin 5.

Ilustracin 5 Seleccin Puerto Serie.

8. Luego de tener seleccionada la tarjeta y el puerto procedemos a verificar el programa y por ltimo en archivo cargar despus de unos pocos segundos se encendern los leds TX y RX que indican que la comunicacin serie se estableci. como se muestra en la Ilustracin 6.

Ilustracin 6 Cargar Programa en Tarjeta Arduino.

Simulacin

Trabajar con las tarjetas Arduino brinda ciertas ventajas pues trabaja con los Chips ATmega de la empresa Atmel cuyas libreras se encuentran presentes en distintos simuladores. Simular nos permitir observar el comportamiento de los chips con componentes virtuales (Resistencias, Leds, Motores) por lo que nos permite realizar cambios, probar rutinas, perfeccionar el desempeo y reducir costos. Para cumplir con este objetivo se propone Labcenter Electronics Proteus a la que pertenece el programa Isis, que permite la simulacin de chips ATmega y la usaremos para probar los circuitos que necesitemos en los proyectos.

1. Si abrimos el esquema correspondiente a tarjeta Arduino UNO con el Proteus, nos mostrara el diagrama que se muestra la Ilustracin 7. Se aprecia con los elementos que componen la placa:

Ilustracin 7 Diagrama Arduino UNO.

2. Para simular el cdigo, debemos cargar el programa de la misma forma que lo haramos con el programador solo que en este caso direccionamos el archivo resultante de la compilacin al Microcontrolador. Para acceder al Microcontrolador combinamos click mas la teclas Ctrl +C y haciendo doble clic sobre el Microcontrolador se nos abrir la ventana de configuracin del ATmega328P como se muestra en Ilustracin 8 Ctrl+X.

Ilustracin 8 Diagrama ATmega 328P

3. Para simular el cdigo, debemos generar el archivo .hex el cdigo compilado se guarda en una carpeta temporal. Para conocer la ruta en donde se guarda el.hex habilitamos la opcin para mostrar la salida del compilador. Para ello vamos dentro del software de Arduino aArchivo - Preferenciasy activamos la opcin mostrar resultado detallado durante compilacin como se muestra en la Ilustracin 9 .

Ilustracin 9. Mostrar Resultado detallado durante Compilacin.

4. Es recomendable crear un acceso directo para la ruta que nos proporciona el software Arduino en la parte inferior para acceder al archivo hex rapidamente.

Ilustracin 10. Ruta de archivo *.Hex

5. Luego que conocemos la ruta del archivo *.Hex generado en la compilacin lo cargamos al microcontrolador realizando doble click sobre l nos aparece la ventana Edit Component y en Program File seleccionamos el archivo como se muestra en la Ilustracin 11

Ilustracin 11 Cargar Archivo Hex en el Microcontrolador.

6. El Microcontrolador ya tiene la rutina a ejecutar, por lo que salimos de la ventana aceptando los cambios, pulsamosCTRL+Xpara volver al circuito del Arduino y hacemos clic sobre el boton de play para iniciar la ejecucin del cdigo, observando su comportamiento.Estructura Bsica de un Programa.

La estructura de programacin de Arduino es simple y divide la ejecucin en por lo menos dos partes o funciones que encierran bloques de declaraciones setup y Loop:

int led = 13;

void setup()

{

pinMode(led, OUTPUT); //Ajusta Led como salida

}

void loop()

{

digitalWrite(led, HIGH);

delay(1000); // wait for a second

digitalWrite(led, LOW);

delay(1000); // wait for a second

}

void setup()

{

statements;

}

void loop()

{

statements;

}

Ambas funciones son requeridas para que el programa funcione.

setup()

La funcin setup debe contener la declaracin de variables al comienzo del programa. Es la primera funcin a ejecutar en el programa, es ejecutada una vez y es usada para asignar pinMode o inicializar las comunicaciones serie.

loop()

La funcin loop se ejecuta luego de setup() e incluye el cdigo que se ejecuta continuamente leyendo entradas, activando salidas, etc. Esta funcin es el ncleo de todos los programas Arduino y soporta la mayor parte del trabajo.

Funciones

Una funcin es un bloque de cdigo que tiene un nombre y un grupo de declaraciones que se ejecutan cuando se llama a la funcin. Podemos hacer uso de funciones integradas como void

setup() y void loop() o escribir nuevas. Las funciones se escriben para ejecutar tareas repetitivas y reducir el desorden en un programa. En primer lugar se declara el tipo de la funcin, que ser el valor retornado por la funcin (int, void...). A continuacin del tipo, se declara el nombre de la funcin y, entre parntesis, los parmetros que se pasan a la funcin como se muestra a continuacin.

int delayVal()

{

int v; //crea una variable temporal 'v'

v = analogRead(pot); //lee el valor del potencimetro

v /= 4; //convierte 0-1023 a 0-255

return v; //devuelve el valor final de v

}

type functionName(parameters)

{

statements;

}

Llaves {}

Las llaves definen el comienzo y el final de bloques de funcin y bloques de declaraciones como void loop() y sentencias for e if. Las llaves deben estar balanceadas (a una llave de apertura { debe seguirle una llave de cierre }). Las llaves no balanceadas provocan errores de compilacin. El Software Arduino incluye una prctica caracterstica para chequear el balance de llaves. Slo se debe seleccionar una llave y su compaera lgica aparecer resaltada.

void loop()

{

statements;

}

Trabajo en Clase

1. Completar la siguiente Tabla

Instruccin

Descripcin

Ejemplo

; (punto y coma)

/* */ (bloque de comentarios)

// lnea de comentarios

2. Describir como se realiza la declaracin de variables en el software de programacin de Arduino y completar la siguiente tabla.

Instruccin

Descripcin

Ejemplo

byte

int

long

float

arrays

3. Describir como se realiza las operaciones aritmticas (Suma, Resta, Multiplicacin, Division) y completar la siguiente tabla.

Instruccin

Descripcin

Ejemplo

x ++

x --

x += y

x -= y

x *= y

x /= y

x == y

x != y

x < y

x > y

Bibliografa

http://arduino.cc/en/Main/arduinoBoardUno

http://arduino.cc/en/Main/arduinoBoardMega2560

||[email protected]@gmail.com

11