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