1
Introducción a la Plataforma ARDUINO
Instrumentación Avanzada
Facultad de Ingeniería
Universidad Nacionalde Mar del Plata
Ing. Jorge Luis Strack
2
Instrumentación AvanzadaContenido de la clase
¿En qué consiste ARDUINO?
¿Cómo nació ARDUINO?
Hardware: Familia de placas ARDUINO
Hardware: Tarjetas de Expansión (Shields)
Descripción de la placa ARDUINO UNO
Software: Entornos de Programación
IDE (Entorno de Desarrollo Integrado)
Conexionado de entradas y salidas
Funcionamiento de las salidas analógicas PWM
Ejemplo de programación en el IDE
Interacción con la PC a través de LabVIEW
Ejemplo de programación en LabVIEW
Web Server con Arduino UNO + Ethernet Shield
Registrador con Arduino UNO + Datalogger Shield
3
Instrumentación Avanzada¿En qué consiste ARDUINO?
“Arduino es una plataforma de hardware y software libre fácil de usar, dirigido a cualquier persona que realiza proyectos interactivos”
Esta plataforma consta de una placa con un microcontrolador que permite conectar sensores y actuadores mediante entradas y salidas respectivamente, las cuales pueden ser digitales o analógicas.
Con Arduino se pueden desarrollar proyectos interactivos autónomos o con capacidad de interactuar con otros dispositivos tales como una computadora, a través de diversos protocolos de comunicación con capas físicas cableadas o inalámbricas.
Arduino se ideó como una herramienta para crear objetos interactivos sin la intervención de un especialista poniendo en las manos de cualquier persona con conocimientos técnicos mínimos la capacidad de experimentar con la electrónica de una forma sencilla y práctica.
http://arduino.cc/
4
Instrumentación AvanzadaContenido de la clase
¿En qué consiste ARDUINO?
¿Cómo nació ARDUINO?
Hardware: Familia de placas ARDUINO
Hardware: Tarjetas de Expansión (Shields)
Descripción de la placa ARDUINO UNO
Software: Entornos de Programación
IDE (Entorno de Desarrollo Integrado)
Conexionado de entradas y salidas
Funcionamiento de las salidas analógicas PWM
Ejemplo de programación en el IDE
Interacción con la PC a través de LabVIEW
Ejemplo de programación en LabVIEW
Web Server con Arduino UNO + Ethernet Shield
Registrador con Arduino UNO + Datalogger Shield
5
Instrumentación Avanzada¿Cómo nació ARDUINO?
“Arduino surgió en el año 2005 como un proyecto para estudiantes en el Instituto IVREA, en Ivrea (Italia). Uno de los fundadores de Arduino, Massimo Banzi daba clases allí. Su objetivo era reemplazar una placa de 100 dólares que usaban los estudiantes por una que no costara más de 30 euros. El nombre proviene del “Bar del Rey Arduino” en el cual Massimo 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.
Concluida dicha plataforma, varios investigadores trabajaron para hacerlo más ligero, más económico y disponible para la comunidad de código abierto (hardware y software abierto).
http://arduino.cc/http://es.wikipedia.org/wiki/Arduino
6
Instrumentación AvanzadaContenido de la clase
¿En qué consiste ARDUINO?
¿Cómo nació ARDUINO?
Hardware: Familia de placas ARDUINO
Hardware: Tarjetas de Expansión (Shields)
Descripción de la placa ARDUINO UNO
Software: Entornos de Programación
IDE (Entorno de Desarrollo Integrado)
Conexionado de entradas y salidas
Funcionamiento de las salidas analógicas PWM
Ejemplo de programación en el IDE
Interacción con la PC a través de LabVIEW
Ejemplo de programación en LabVIEW
Web Server con Arduino UNO + Ethernet Shield
Registrador con Arduino UNO + Datalogger Shield
7
Instrumentación AvanzadaHardware: Familia de placas ARDUINO
UnoLeonardo Mega 2560
Zero DueYún
Mega ADKTre Ethernethttp://arduino.cc/
8
Instrumentación AvanzadaHardware: Familia de placas ARDUINO
Esplora
Micro
Robot
MiniNano Pro Mini
Fio Pro
LilyPad
LilyPad Simple
LilyPad SimpleSnap
LilyPad USB
http://arduino.cc/
9
Instrumentación AvanzadaHardware: Familia de placas ARDUINO
Nombre Procesador Tensión de operación / Tensión de entrada Velocidad CPU IN/OUT
Análogas
Digital EEPROM SRAM FlashUSB UART
IO/PWM [KB] [KB] [KB]
Uno ATmega328 5 V/7-12 V 16 Mhz 6/0 14/6 1 2 32 Regular 1
Due AT91SAM3X8E 3.3 V/7-12 V 84 Mhz 12/2 54/12 - 96 512 2 Micro 4
Leonardo ATmega32u4 5 V/7-12 V 16 Mhz 12/0 20/7 1 2.5 32 Micro 1
Mega 2560 ATmega2560 5 V/7-12 V 16 Mhz 16/0 54/15 4 8 256 Regular 4
Mega ADK ATmega2560 5 V/7-12 V 16 Mhz 16/0 54/15 4 8 256 Regular 4
Micro ATmega32u4 5 V/7-12 V 16 Mhz 12/0 20/7 1 2.5 32 Micro 1
Mini ATmega328 5 V/7-9 V 16 Mhz 8/0 14/6 1 2 32 - -
NanoATmega168
5 V/7-9 V 16 Mhz 8/0 14/60.512 1 16
Mini-B 1ATmega328 1 2 32
Ethernet ATmega328 5 V/7-12 V 16 Mhz 6/0 14/4 1 2 32 Regular -
Esplora ATmega32u4 5 V/7-12 V 16 Mhz - - 1 2.5 32 Micro -
ArduinoBT ATmega328 5 V/2.5-12 V 16 Mhz 6/0 14/6 1 2 32 - 1
Fio ATmega328P 3.3 V/3.7-7 V 8 Mhz 8/0 14/6 1 2 32 Mini 1
Pro (168) ATmega168 3.3 V/3.35-12 V 8 Mhz 6/0 14/6 0.512 1 16 - 1
Pro (328) ATmega328 5 V/5-12 V 16 Mhz 6/0 14/6 1 2 32 - 1
Pro Mini ATmega1683.3 V/3.35-12 V 8 Mhz
6/0 14/6 0.512 1 16 - 15 V/5-12 V 16Mhz
LilyPadATmega168V
2.7-5.5 V/2.7-5.5 V 8 Mhz 6/0 14/6 0.512 1 16 - -ATmega328V
LilyPad USB ATmega32u4 3.3 V/3.8-5V 8 Mhz 4/0 9/4 1 2.5 32 Micro -
LilyPad Simple ATmega328 2.7-5.5 V/2.7-5.5 V 8 Mhz 4/0 9/4 1 2 32 - -
LilyPad SimpleSnap ATmega328 2.7-5.5 V/2.7-5.5 V 8 Mhz 4/0 9/4 1 2 32 - -
http://arduino.cc/
10
Instrumentación AvanzadaContenido de la clase
¿En qué consiste ARDUINO?
¿Cómo nació ARDUINO?
Hardware: Familia de placas ARDUINO
Hardware: Tarjetas de Expansión (Shields)
Descripción de la placa ARDUINO UNO
Software: Entornos de Programación
IDE (Entorno de Desarrollo Integrado)
Conexionado de entradas y salidas
Funcionamiento de las salidas analógicas PWM
Ejemplo de programación en el IDE
Interacción con la PC a través de LabVIEW
Ejemplo de programación en LabVIEW
Web Server con Arduino UNO + Ethernet Shield
Registrador con Arduino UNO + Datalogger Shield
11
Instrumentación AvanzadaHardware: Tarjetas de Expansión (Shields)
GSM Shield Ethernet Shield WiFi Shield
Wireless SD Shield USB Host Shield Motor Shield
Wireless Proto Shield Proto Shieldhttp://arduino.cc/
12
Instrumentación AvanzadaContenido de la clase
¿En qué consiste ARDUINO?
¿Cómo nació ARDUINO?
Hardware: Familia de placas ARDUINO
Hardware: Tarjetas de Expansión (Shields)
Descripción de la placa ARDUINO UNO
Software: Entornos de Programación
IDE (Entorno de Desarrollo Integrado)
Conexionado de entradas y salidas
Funcionamiento de las salidas analógicas PWM
Ejemplo de programación en el IDE
Interacción con la PC a través de LabVIEW
Ejemplo de programación en LabVIEW
Web Server con Arduino UNO + Ethernet Shield
Registrador con Arduino UNO + Datalogger Shield
13
E
Instrumentación AvanzadaDescripción de la placa ARDUINO UNO
Circuito Esquemáticohttp://arduino.cc/
Ent
rada
s A
naló
gica
s A
0-A
5
GN
D
V
out +
5V (
300
mA
máx
.)
Vin
+7-
12V
R
eset
T
ensi
ón d
e re
f. I/O
Vou
t +3.
3V (
50 m
A m
áx)
P
in r
eser
vado
p/fu
turo
Ent
rada
s/S
alid
as
Dig
itale
s 0-
13
Com
unic
ació
n
Ser
ial (
Rx
– T
x)
Com
unic
ació
n
ICS
P
GN
D
Tens
ión
ref.
An.
I2C
– S
DA
- S
CL
Programación
ICSP
LED Pin 13
Jack alimentación externa +7-12V
LED Tx - Rx
Conector USBTipo B hembra
Botón de RESET
LED de encendido
Microcontrolador
ATmega 328
14
E
Instrumentación AvanzadaDescripción de la placa ARDUINO UNO
http://arduino.cc/en/pmwiki.php?n=Tutorial/Memory
La placa cuenta con tres tipos de memoria:
Flash: en ella se almacenan los programas conocidos como sketchs.
SRAM: (Memoria Estática de Acceso Aleatorio), allí se crean y manipulan variables durante la ejecución del sketch.
EEPROM: memoria en la que se pueden almacenar datos a largo plazo.
Las memorias Flash y EEPROM son no volátiles, es decir, la información no se pierde o volatiliza con la falta de energía. Por el contrario, la memoria SRAM es volátil, es decir, sus datos se borran al desenergizar la placa.
La placa ARDUINO UNO tiene las siguientes capacidades de memoria:
Flash: 32K bytes
SRAM: 2K bytes
EEPROM: 1K byte
Para requerimientos mayores de memoria, por ejemplo, para guardar registros de mediciones, existen SHIELDs o Tarjetas de Expansión que permiten conectar memorias SD y micro SD a la placa Arduino y, leer y escribir datos en ellas a través de librerías existentes en el Entorno de programación de Arduino.
15
Instrumentación AvanzadaContenido de la clase
¿En qué consiste ARDUINO?
¿Cómo nació ARDUINO?
Hardware: Familia de placas ARDUINO
Hardware: Tarjetas de Expansión (Shields)
Descripción de la placa ARDUINO UNO
Software: Entornos de Programación
IDE (Entorno de Desarrollo Integrado)
Conexionado de entradas y salidas
Funcionamiento de las salidas analógicas PWM
Ejemplo de programación en el IDE
Interacción con la PC a través de LabVIEW
Ejemplo de programación en LabVIEW
Web Server con Arduino UNO + Ethernet Shield
Registrador con Arduino UNO + Datalogger Shield
16
Instrumentación AvanzadaSoftware: Entornos de Programación
IDE (Entorno de Desarrollo Integrado)
Entornos de programación gráfica autónomos (La placa ejecuta el programa sin una PC)
GNU• Miniblock• Ardublock• Amici• Mind +
Comercial• ModKit• VirtualBreadBoard• VBB Jarvis
Entornos de monitorización esclavos (La placa interactúa con una PC)
GNU• Etoys (Squeak)• S4A (Scratch)• FireFly• Pure Data• MyOpenLab
Comercial• LabVIEW• FireFly
http://arduino.cc/Herramientas Gráficas de Programación para Arduino – José Manuel Ruiz Gutiérrez – Marzo 2012.
17
Instrumentación AvanzadaContenido de la clase
¿En qué consiste ARDUINO?
¿Cómo nació ARDUINO?
Hardware: Familia de placas ARDUINO
Hardware: Tarjetas de Expansión (Shields)
Descripción de la placa ARDUINO UNO
Software: Entornos de Programación
IDE (Entorno de Desarrollo Integrado)
Conexionado de entradas y salidas
Funcionamiento de las salidas analógicas PWM
Ejemplo de programación en el IDE
Interacción con la PC a través de LabVIEW
Ejemplo de programación en LabVIEW
Web Server con Arduino UNO + Ethernet Shield
Registrador con Arduino UNO + Datalogger Shield
18
Instrumentación AvanzadaIDE (Entorno de Desarrollo Integrado)
El IDE de Arduino está creado en Java y consta de un editor de texto que permite escribir, verificar, compilar y cargar programas en un lenguaje propio basado en C/C++ a todas las placas de la familia Arduino. Estos programas se conocen como sketchs o bocetos y tiene la extensión .ino (en la versión 1.0 era .pde).
El programa se descarga gratuitamente del sitio oficial: http://arduino.cc/en/Main/Software
Se descomprime la carpeta, se busca el archivo “arduino.exe” y se crea un acceso directo.
Cuando se conecta por primera vez una placa Arduino, se instalan los drivers que están situados en la carpeta: \arduino-1.0.5-windows\arduino-1.0.5\drivers\
Una vez cargado el sketch en la memoria flash de la placa Arduino, el mismo se ejecutará siempre que la placa esté energizada a través del puerto USB o a través de alimentación externa en la ficha JACK o en el pin Vin.
IDE Arduino
19
Instrumentación AvanzadaIDE (Entorno de Desarrollo Integrado)
Estructura
setup()Ejecución inicial para iniciación de variables, librerías, estado de pines.
loop()Ciclo principal del sketch que se ejecuta indefinidamente.
Estructuras de control
if while breakIf…else do while continuefor switch case return
Sintaxis
; (fin de comando o estructura de control){} (los comandos dentro de ellas pertenecen a la misma estructura de control)// (comentarios de una sola línea)/**/ (comentarios multilíneas)# define (definición de precompilador)# include (inclusión de código externo como librerías)
Operadores Aritméticos
= (operador de asignación)+ (suma)- (resta)* (multiplicación)/ (división)% (módulo)
20
Instrumentación AvanzadaIDE (Entorno de Desarrollo Integrado)
Operadores de comparación
== (igual que)!= (distinto que)< (menor que)> (mayor que)<= (menor o igual que)>= (mayor o igual que)
Operadores booleanos
&& (and)|| (or)! (not)
Operadores compuestos
++ (incremento)-- (decremento)+= (suma compuesta)-= (resta compuesta)*= (multiplicación compuesta)/= (división compuesta)&= ( and compuesto a nivel de bits)|= (or compuesto a nivel de bits)
Operadores de acceso a punteros
& (acceso a memoria)* (direccionamiento)
Operadores a nivel de bits
& (and)| (or)^ (xor)~ (not)<< (desp. de bits a la izquierda)>> (desp. de bits a la derecha)
Constantes
HIGH, LOW (alto, bajo)INPUT, OUTPUT (entrada, salida)True, Falseconstantes enterasconstantes punto flotante
Tipos de variables
boolean (true o false)char – unsigned char (un solo carácter)String (cadena de caraceres)byte (1byte: enteros de -128 a 127)int – unsigned int (2 bytes: enteros de -32768 a 32767)long – unsigned long (enteros de 4 bytes)word (entero de 16 bits sin signo)float, double (coma flotante 4 bytes)array (matriz de datos del mismo tipo)
21
Instrumentación AvanzadaIDE (Entorno de Desarrollo Integrado)
Conversión
char()byte()int()word()long()float()
Funciones
Entradas/salidas digitales:
pinMode() (INPUT ó OUTPUT)digitalWrite() (HIGH ó LOW)digitalRead() (HIGH ó LOW)
Entradas/salidas analógicas:
analogReference()AnalogRead()AnalogWrite()
Entradas/salidas avanzadas
tone()notone()shiftOut()pulseIn()
Funciones
Cálculo
min(), max()abs()constrain()map()pow()sqrt()
Trigonometría
sin(), cos(), tan()
Números aleatorios
randomSeed()random()
Bits y Bytes
lowByte()highByte()bitRead()bitWrite()bitSet()bitClear()bit()
Funciones
Interrupciones externas
attachInterrupt()dettachInterrupt()
Interrupciones
interrupts()noInterrupts()
Comunicación / Serial
begin()end()available()read()flush()print()println()write()
Tiempo
millis()micros()delay()
22
Instrumentación AvanzadaContenido de la clase
¿En qué consiste ARDUINO?
¿Cómo nació ARDUINO?
Hardware: Familia de placas ARDUINO
Hardware: Tarjetas de Expansión (Shields)
Descripción de la placa ARDUINO UNO
Software: Entornos de Programación
IDE (Entorno de Desarrollo Integrado)
Conexionado de entradas y salidas
Funcionamiento de las salidas analógicas PWM
Ejemplo de programación en el IDE
Interacción con la PC a través de LabVIEW
Ejemplo de programación en LabVIEW
Web Server con Arduino UNO + Ethernet Shield
Registrador con Arduino UNO + Datalogger Shield
23
Instrumentación AvanzadaConexionado de entradas y salidas
Entrada digital por interruptor o pulsador
- Conexión pullup - Conexión pulldown
- Entrada analógica por potenciómetro
http://arduino.cc/Manual de Arduino. Programación y conceptos básicos. Raul Diosdado – MakerZona.
24
Instrumentación AvanzadaConexionado de entradas y salidas
Salidas digitales
- Salida de baja corriente (< 40 mA - Salida de potencia a través de mosfet o por pin y < 200 mA en conjunto) transistor (salida de estado solido)
- Salida de potencia a través de relé (salida con contacto móvil)
http://arduino.cc/Manual de Arduino. Programación y conceptos básicos. Raul Diosdado – MakerZona.
25
Instrumentación AvanzadaContenido de la clase
¿En qué consiste ARDUINO?
¿Cómo nació ARDUINO?
Hardware: Familia de placas ARDUINO
Hardware: Tarjetas de Expansión (Shields)
Descripción de la placa ARDUINO UNO
Software: Entornos de Programación
IDE (Entorno de Desarrollo Integrado)
Conexionado de entradas y salidas
Funcionamiento de las salidas analógicas PWM
Ejemplo de programación en el IDE
Interacción con la PC a través de LabVIEW
Ejemplo de programación en LabVIEW
Web Server con Arduino UNO + Ethernet Shield
Registrador con Arduino UNO + Datalogger Shield
26
Instrumentación AvanzadaFuncionamiento de las salidas analógicas PWM
PWM: Pulse Width Modulation (Modulacion por ancho de pulso)
Los pines digitales 3, 5, 6, 9, 10 y 11 de la placa Arduino UNO se pueden configurar como salidas PWM.
En el modo PWM generan una tensión de onda cuadrada cuyo ciclo de trabajo varia desde 0 hasta 100% para generar un valor medio entre 0 y 5 V respectivamente. La resolución es de 8 bits, es decir se envía por programa un valor de 0 a 255.
La frecuencia de la onda cuadrada es de 490-500 Hz.
La funcion tone() utiliza una salida PWM pero con frecuencia variable y ancho de pulso constante (50%) para generar diferentes tonos audibles (hasta 20kHz y no audibles, ya que la f max. es de 65,535 kHz.
http://arduino.cc/Manual de Arduino. Programación y conceptos básicos. Raul Diosdado – MakerZona.
27
Instrumentación AvanzadaContenido de la clase
¿En qué consiste ARDUINO?
¿Cómo nació ARDUINO?
Hardware: Familia de placas ARDUINO
Hardware: Tarjetas de Expansión (Shields)
Descripción de la placa ARDUINO UNO
Software: Entornos de Programación
IDE (Entorno de Desarrollo Integrado)
Conexionado de entradas y salidas
Funcionamiento de las salidas analógicas PWM
Ejemplo de programación en el IDE
Interacción con la PC a través de LabVIEW
Ejemplo de programación en LabVIEW
Web Server con Arduino UNO + Ethernet Shield
Registrador con Arduino UNO + Datalogger Shield
28
Instrumentación AvanzadaEjemplo de programación en el IDE
Lectura y escritura de entradas y salidas digitales
/*Instrumentación AvanzadaEjemplo de programación en el IDELectura y escritura de entradas y salidas digitales*/
const int pulsador = 5; // numero del pin de entrada const int led = 7; // numero del pin de salida
int estado_boton = 0; // estado del pin de entrada
void setup () { pinMode (led, OUTPUT); // se configura el pin 7 como salida pinMode (pulsador, INPUT); // se configura el pin 5 como entrada } // fin del setup
void loop () { estado_boton = digitalRead (pulsador); //lee la entrada digital del botón if (estado_boton == HIGH) { // si se pulsa el botón (estado lógico alto) digitalWrite(led, HIGH); //escribe la salida digital del led (lo enciende) } // fin del if else { digitalWrite(led, LOW); //escribe la salida digital del led (lo apaga) } // fin del else} // fin del loop
Ejemplo 1
29
Instrumentación AvanzadaEjemplo de programación en el IDE
Lectura y escritura de entradas y salidas analógicas
/* Instrumentación AvanzadaEjemplo de programación en el IDELectura y escritura de entradas y salidas analógicas*/
const int potenciometro=2; // numero del pin de la entrada analógicaconst int led=9; // num. del pin de la salida digital PWM func. como analógica de 8 bits de resolución (0 a 255) int valor_pote; // variable en la que se guardara el valor del pote (de 0 a 1023);
void setup () {pinMode(led,OUTPUT); // se configura el pin 9 como salida} // fin del setup
void loop () {valor_pote=analogRead (potenciometro); // lee la entrada analógica del potenciómetrovalor_pote=map (valor_pote,0,1023,0,255); // mapea valores de 0 a 1023 en valores de 0 a 255analogWrite (led,valor_pote); // escribe la salida digital del led en modo PWM (0-255 equivale a 0-5V)} // fin del loop
Ejemplo 2
30
Instrumentación AvanzadaContenido de la clase
¿En qué consiste ARDUINO?
¿Cómo nació ARDUINO?
Hardware: Familia de placas ARDUINO
Hardware: Tarjetas de Expansión (Shields)
Descripción de la placa ARDUINO UNO
Software: Entornos de Programación
IDE (Entorno de Desarrollo Integrado)
Conexionado de entradas y salidas
Funcionamiento de las salidas analógicas PWM
Ejemplo de programación en el IDE
Interacción con la PC a través de LabVIEW
Ejemplo de programación en LabVIEW
Web Server con Arduino UNO + Ethernet Shield
Registrador con Arduino UNO + Datalogger Shield
31
Instrumentación AvanzadaInteracción con la PC a través de LabVIEW
National Instruments creó una librería para trabajar con placas Arduino desde LabVIEW.
La primera librería que surgió se llama LIFA (LabVIEW Interface For Arduino)
http://www.ni.com/gate/gb/GB_EVALTLKTLVARDIO/US
Este año surgió la librería LINX (LabVIEW INterface for X : chipKIT, Arduino and myRIO)
http://www.ni.com/gate/gb/GB_EVALTLKTLINXLVH/US
LabVIEW
32
Instrumentación AvanzadaInteracción con la PC a través de LabVIEW
Para que LabVIEW se pueda comunicar con una placa ARDUINO, la misma debe tener cargado un programa conocido como firmware, realizado por National Instruments.
En el caso de utilizar la librería LIFA, el mismo se llama LIFA_Base.ino y se localiza en el directorio:…\National Instruments\LabVIEW 2011\vi.lib\LabVIEW Interface for Arduino\Firmware\LIFA_Base\
En el caso de utilizar la librería LINX, el mismo se llama LINX_Arduino_Base_Firmware.ino y se localiza en el directorio:…\National Instruments\LabVIEW 2011\vi.lib\LabVIEW Hacker \LINX\ Firmware\ Source\ Arduino\ LINX_Arduino_Base_Firmware\
Se carga el firmware en la memoria flash de la placa desde el IDE de ARDUINO, y esta queda apta para comunicarse con LabVIEW.
IDE Arduino
33
Instrumentación AvanzadaContenido de la clase
¿En qué consiste ARDUINO?
¿Cómo nació ARDUINO?
Hardware: Familia de placas ARDUINO
Hardware: Tarjetas de Expansión (Shields)
Descripción de la placa ARDUINO UNO
Software: Entornos de Programación
IDE (Entorno de Desarrollo Integrado)
Conexionado de entradas y salidas
Funcionamiento de las salidas analógicas PWM
Ejemplo de programación en el IDE
Interacción con la PC a través de LabVIEW
Ejemplo de programación en LabVIEW
Web Server con Arduino UNO + Ethernet Shield
Registrador con Arduino UNO + Datalogger Shield
34
Instrumentación AvanzadaEjemplo de programación en LabVIEW
Lectura y escritura de entradas y salidas digitales y analógicas
Arduino +LabVIEW. Utilización de LabVIEW para la Visualización y Control de la Plataforma Open Hardware Arduino. José Manuel Ruiz Gutiérrez. Serie: Herramientas Graficas para la programación de Arduino. Ver. 1.0, 2012.
Ejemplo 3
35
Instrumentación AvanzadaEjemplo de programación en LabVIEW
Lectura y escritura de entradas y salidas digitales y analógicas
Ejemplo 3
36
Instrumentación AvanzadaProgramación en LabVIEW – Ejercicio 1
Control y Monitoreo de un motor monofásico.
Se deben leer los pulsadores de paro y marcha, encender un relé de comando, controlar la velocidad con una salida PWM, leer una señal analógica proporcional a la velocidad y encender una alarma sonora en caso de exceso de velocidad.
Para esta practica utilizaremos una placa Arduino UNO y un variador de velocidad S.E.ALTIVAR.
Ejercicio 1
37
Instrumentación AvanzadaProgramación en LabVIEW – Ejercicio 1
Control y Monitoreo de un motor monofásico.
Ejercicio 1
38
Instrumentación AvanzadaProgramación en LabVIEW – Ejercicio 1
Control y Monitoreo de un motor monofásico.
Ejercicio 1
39
Instrumentación AvanzadaContenido de la clase
¿En qué consiste ARDUINO?
¿Cómo nació ARDUINO?
Hardware: Familia de placas ARDUINO
Hardware: Tarjetas de Expansión (Shields)
Descripción de la placa ARDUINO UNO
Software: Entornos de Programación
IDE (Entorno de Desarrollo Integrado)
Conexionado de entradas y salidas
Funcionamiento de las salidas analógicas PWM
Ejemplo de programación en el IDE
Interacción con la PC a través de LabVIEW
Ejemplo de programación en LabVIEW
Web Server con Arduino UNO + Ethernet Shield
Registrador con Arduino UNO + Datalogger Shield
40
Instrumentación AvanzadaWeb Server con Arduino UNO + Ethernet Shield
Breve descripción de la tarjeta de expansión o shield Ethernet
ARDUINO UNO ETHERNET SHIELD
Tensión de alimentación 5V (se alimenta directamente desde la tarjeta Arduino). Controlador Ethernet: chip Wiznet W5100 con una memoria flash interna de 16K. Proporciona una red IP con capacidad de comunicación TCP y UDP. Puede trabajar como cliente o servidor. Nos interesa particularmente esta última opción. Soporta hasta cuatro conexiones simultaneas. Velocidad de conexión: 10/100Mb. Conexión con Arduino a través del Puerto SPI (pines 10, 11, 12, 13). El pin 10 es para seleccionar la conexión Ethernet. Provista con lectora de memoria micro-SD (pin 4 para seleccionar la memoria). Comando desde librería SPI.h Ethernet.h y SD.h. Se monta arriba de una Arduino UNO, Mega o compatibles y permite que se apilen otros
shields sobre ella.
41
Instrumentación AvanzadaWeb Server con Arduino UNO + Ethernet Shield
Conexión de la tarjeta de expansión Ethernet
Se debe conectar el cable USB a la placa Arduino UNO a fin de programarla. Luego se puede retirar el cable USB y alimentar la placa con una fuente externa para que continúe funcionando en forma autónoma.
Una vez cargado el programa se conecta el cable ethernet en la ficha RJ45.
Si bien funciona, no es aconsejable cargar programas con el cable ethernet conectado, ya que según la bibliografía, puede causar inestabilidades en el funcionamiento de la placa.
http://arduino.cc/Arduino + Ethernet Shield. Implantacion de Arduino en las redes Ethernet: ”Arduino y el Internet de las Cosas”. José Manuel Ruiz Gutiérrez. Serie: Arduino Comunicacion. Ver. 1.0, 2013.
42
Instrumentación AvanzadaWeb Server con Arduino UNO + Ethernet Shield
Configuración de la Red
Al shield se le debe asignar una dirección MAC (identificador global único de dispositivos físicos), y una dirección IP válida según la configuración de la red.
En algunos modelos, la MAC viene detrás de la placa, en otros se debe asignar al azar. No deben existir dos dispositivos con la misma MAC conectados en la red.
La IP debe ser cercana a la IP de la PC conectada a la red, y no debe estar asignada a otra PC o dispositivo.
http://arduino.cc/Arduino + Ethernet Shield. Implantacion de Arduino en las redes Ethernet: ”Arduino y el Internet de las Cosas”. José Manuel Ruiz Gutiérrez. Serie: Arduino Comunicacion. Ver. 1.0, 2013.http://diymakers.es/crear-servidor-web-con-arduino/
43
Instrumentación Avanzada
Configuración de la Red – Determinación de la IP desde la ventana de comandos de Windows
Paso 1: Ir a botón de inicio Ejecutar escribir cmd dar enter (se abrirá la ventana de comandos).
Paso 2: ingresar por teclado el comando ipconfig y dar enter.
Paso 3: inventar una IP que tenga los tres primeros bytes mas significativos iguales y solo cambie el último.
Paso 4: verificar que esta no exista en la red, escribiendo ping xxx.xxx.xxx.xxx (n° de IP). La respuesta debe ser nula o intento de conexión fallido.
En este caso la IP libre que se usara en el laboratorio será 10.2.0.100. Las pruebas serán en la intranet. Para acceder a la placa desde internet, se debe crear una IP pública como se vio en clases anteriores.
Web Server con Arduino UNO + Ethernet Shield
44
Instrumentación AvanzadaWeb Server consultado desde LabVIEW – Ejercicio 2
Control y Monitoreo de un motor monofásico en forma remota desde internet: programa .INO
45
Instrumentación AvanzadaWeb Server consultado desde LabVIEW – Ejercicio 2
Control y Monitoreo de un motor monofásico en forma remota desde internet: programa .INO
46
Instrumentación AvanzadaWeb Server consultado desde LabVIEW – Ejercicio 2
Control y Monitoreo de un motor monofásico en forma remota desde internet: programa .INO
47
Instrumentación AvanzadaWeb Server consultado desde LabVIEW – Ejercicio 2
Control y Monitoreo de un motor monofásico en forma remota desde internet: programa .vi
48
Instrumentación AvanzadaWeb Server consultado desde LabVIEW – Ejercicio 2
Control y Monitoreo de un motor monofásico en forma remota desde internet: programa .vi
49
Instrumentación AvanzadaWeb Server consultado desde página .htm - Ejercicio 3
Control de una salida digital desde página web programada desde sketch: programa .ino
50
Instrumentación AvanzadaWeb Server consultado desde página .htm - Ejercicio 3
Control de una salida digital desde página web programada desde sketch: programa .ino
51
Instrumentación AvanzadaWeb Server consultado desde página .htm - Ejercicio 3
Control de una salida digital desde página web programada desde sketch: programa .ino
52
Instrumentación AvanzadaWeb Server consultado desde página .htm - Ejercicio 3
Control de una salida digital desde página web programada desde sketch: programa .ino
53
Instrumentación AvanzadaWeb Server consultado desde página .htm - Ejercicio 3
Control de una salida digital desde página web programada desde sketch.
Visualización en la web:
http://wngeek.wordpress.com/2013/10/02/arduino-web-server-tutorial/http://diymakers.es/crear-servidor-web-con-arduino/
54
Instrumentación AvanzadaWeb Server consultado desde página .htm - Ejercicio 4
Control de entradas y salidas digitales y analógicas desde página web alojada en memoria SD
Pasos a seguir:
1- Se conecta una memoria SD a la PC.
2- Se guarda en la misma el archivo index.htm situado en la carpeta ejercicio_4_ethernet-SD
3- Se introduce la memoria SD en la lectora del shield ethernet
4- Se conecta el cable USB a la placa Arduino UNO y el cable UTP al shield Ethernet
5- Se carga el sketch programa.ino situado en la carpeta ejercicio_4_ethernet-SD
6- Se abre el navegador y se conecta al sitio http://10.2.0.100
7- Se deberá visualizar la página index.htm con la que se podrán visualizar y controlar entradas y salidas de la placa Arduino UNO.
55
Instrumentación AvanzadaWeb Server consultado desde página .htm - Ejercicio 4
Control de entradas y salidas digitales y analógicas desde página web alojada en memoria SD
Visualización en la web:
http://wngeek.wordpress.com/2013/10/02/arduino-web-server-tutorial/http://diymakers.es/crear-servidor-web-con-arduino/
56
Instrumentación AvanzadaContenido de la clase
¿En qué consiste ARDUINO?
¿Cómo nació ARDUINO?
Hardware: Familia de placas ARDUINO
Hardware: Tarjetas de Expansión (Shields)
Descripción de la placa ARDUINO UNO
Software: Entornos de Programación
IDE (Entorno de Desarrollo Integrado)
Conexionado de entradas y salidas
Funcionamiento de las salidas analógicas PWM
Ejemplo de programación en el IDE
Interacción con la PC a través de LabVIEW
Ejemplo de programación en LabVIEW
Web Server con Arduino UNO + Ethernet Shield
Registrador con Arduino UNO + Datalogger Shield
57
Instrumentación AvanzadaRegistrador con Arduino UNO + Datalogger Shield
Breve descripción de la tarjeta de expansión o shield Datalogger
ARDUINO UNO DATALOGGER SHIELD
Tensión de alimentación 5V (se alimenta directamente desde la tarjeta Arduino). Reloj de Tiempo Real (RTC) basado en el chip DS1307. Pila de litio para mantener el chip en hora cuando el Arduino está sin alimentación. Lectora de memoria SD. Conexión con Arduino a través del Puerto SPI (pines 10, 11, 12, 13). El pin 10 es el pin de selección para utilizar la memoria SD. El RTC se controla a través de los pines analógicos A4 y A5 (SCL y SDA – bus I2C) Comando desde librería DS1307RTC.h, Time.h , y SD.h. Dispone de un área experimental para soldar conectores, componentes y sensores. Se monta arriba de una Arduino UNO, Mega o compatibles y permite que se apilen otros
shields sobre ella.
58
Instrumentación AvanzadaEjercicio 5: Datalogger
Se debe realizar un registrador que mida la temperatura ambiente cada 1 segundo y la guarde junto a la fecha y hora de muestreo en un archivo de texto alojado en la memoria micro-SD del shield Datalogger.
Se utilizarán los siguientes componentes:
-1 tarjeta Arduino UNO-1 tarjeta de expansión Datalogger compatible con Arduino UNO-1 memoria micro-SD HC clase 10 con capacidad apropiada-1 pila botón de litio-1 LCD 20x4-1 conversor I2C para LCD-1 sensor de temperatura LM35-2 pulsadores-2 resistencias de 10 KΩ
59
Instrumentación AvanzadaEjercicio 5: Datalogger
Se realizará el siguiente circuito:
LCD 20x4
Adaptador I2C
Protoboard
ShieldDatalogger
60
Instrumentación AvanzadaEjercicio 5: Datalogger
Se utilizarán las siguientes librerías:
avr/io.h (funciones necesarias para las interrupciones) avr/interrupt.h (funciones para controlar interrupciones)SD.h (funciones para controlar la memoria SD)DS1307RTC.h (funciones para administrar el RTC de la placa shield datalogger)Time.h (funciones para cálculos de fecha, hora, calendario)Wire.h (funciones generales para la comunicación I2C)LiquidCrystal_I2C.h (funciones para administrar la comunicación I2C con el LCD)
Primer paso: Inicializar la fecha y hora del RTC (Real Time Clock) con la hora de la PC.
Para esto se carga el sketch SetTime que trae como ejemplo la librería DS1307RTC.
Segundo paso: Realizar y cargar el programa realizado en el IDE de Arduino, que se presenta a continuación.
61
Instrumentación AvanzadaEjercicio 5: Datalogger
Código en el IDE de Arduino
62
Instrumentación AvanzadaEjercicio 5: Datalogger
Código en el IDE de Arduino
63
Instrumentación AvanzadaEjercicio 5: Datalogger
Código en el IDE de Arduino
64
Instrumentación AvanzadaEjercicio 5: Datalogger
Código en el IDE de Arduino
65
Instrumentación AvanzadaEjercicio 5: Datalogger
Código en el IDE de Arduino
66
Instrumentación AvanzadaEjercicio 5: Datalogger
Código en el IDE de Arduino
67
Instrumentación AvanzadaEjercicio 5: Datalogger
Código en el IDE de Arduino