Professional Documents
Culture Documents
Abstract This paper presents an API for communication II. MATERIAL UTILIZADO
between Arduino and labview platforms, proposing a flexible Como ya se ha comentado, las herramientas utilizadas en el
structure for programming both to serve as a template for any presente trabajo son, por un lado, el lenguaje de programacin
project you want to undertake and optimizing the time of grfica National Instrument Labview 2009 (versin 9.03f
development of these. Proposes the use of the Arduino UNO
platform, this being open-hardware and low cost, being its open-
32-bits) [3] y por otro la plataforma open-hardware Arduino
source development software and free. Projects that can be UNO [4].
addressed with the proposed structure can be of various kinds, data Labview 2009 es un lenguaje de programacin grfico de
acquisition, control, hardware in loop, process monitoring, rapid National Instrument Corporation (11500 N Mopac Expwy
prototyping, both for education and in research. Austin, TX 78759-3504), siendo su principal caracterstica la
facilidad con la que se pueden crear aplicaciones
Keywords Arduino, Labview, API, communication, Low relativamente complejas, an con un nivel de conocimientos
Cost, Open-hardware, Template, Prototyping.
en programacin no muy elevados y que seran muy difciles
I. INTRODUCCION de realizar con los lenguajes de programacin de alto nivel
tradicionales. Este lenguaje es ampliamente utilizado por
de lectura los bytes enviados desde la otra aplicacin y podr tenidas en cuenta previamente a la hora del diseo de las
enviar bytes a la otra aplicacin ubicando stos en su buffer de tareas. Luego hay que hacer notar:
escritura. Los buffers de lectura y escritura de ambas a) El primer byte recibido slo sirve para indicar qu tarea
aplicaciones estarn vinculados a travs del puerto serie. realizar y no tiene carcter de dato.
b) La tarea no puede comenzar hasta que el buffer de lectura
contenga al menos el nmero de bytes necesarios para
APLICACIN 1 APLICACIN 2
realizar la tarea, ms el byte de control comentado
Buffer de lectura Buffer de escritura anteriormente.
En funcin del tipo de tarea a realizar (segn retorne o no
Buffer de escritura Buffer de lectura datos), para indicar que Arduino UNO ha finalizado, la tarea
Figura 1. Estructura bsica de la comunicacin serie. enviar un byte de control para indicar a Labview que ha
terminado. Hasta que esta tarea no se complete Labview
Para iniciar la comunicacin entre la Labview y Arduino permanecer en espera.
UNO, es necesario que el usuario d la orden de inicio En las Fig. 2 y 3 se muestran los diagramas de flujo
mediante un control en Labview. En ese momento Arduino correspondientes a las aplicaciones de Arduino y Labview
UNO se reinicia, del mismo modo que lo hara si se reiniciara respectivamente.
desde el pulsador RESET de la propia placa, por lo que ste
tarda unos segundos en arrancar y estar listo para el envo y la INICIO COMUNICACIN
recepcin de bytes. Este hecho es crtico para asegurar una CON LABVIEW
funciones principales.
El concepto a desarrollar, para una correcta comunicacin
y sin saturar los buffers de comunicacin, es el siguiente:
1. En la aplicacin de Arduino UNO se utilizar una N BYTES EN
BUFFER NECESARIOS
NO
estructura de control tipo switch{case} en la funcin PARA TAREA?
principal loop().
2. Cada una de las opciones switch{case} se corresponden SI
con una tarea entre ambas aplicaciones, de recepcin y/o
envo de bytes. REALIZAR TAREA
De esta forma, a cada tarea se le aplicar un cdigo
numrico que solamente se corresponde a las distintas
opciones del switch{case}. Dentro de cada una de estas
ENVIO BYTE CONTROL
opciones se comprueba que la cantidad de bytes que se deben DE TAREA FINALIZADA
recibir (mximo 128 bytes incluido el byte de tarea), o enviar
segn la tarea diseada en la aplicacin (nmero de bytes Figura 2. Diagrama de flujo de la aplicacin en Arduino UNO.
limitado por el tamao del buffer en Labview y de envo
simultneo a 128 bytes del buffer de escritura de Arduino
UNO), son las correctas. Esta cantidad de bytes han debido ser
JAVIER JIMNEZ et al.: API FOR COMMUNICATION 973
INICIO COMUNICACIN ejecuta una sola vez y la funcin loop() se ejecuta de igual
forma que un bucle infinito. La funcin setup() se utiliza
para inicializacin y configuracin de los perifricos de
Arduino UNO, como por ejemplo la configuracin de los
pines de propsito general, la comunicacin serie, declaracin
BYTE TESTIGO
NO de variables, y todo aquel cdigo que slo necesite ejecutarse
DE INICIO RECIBIDO
DE ARDUINO? una nica vez durante el funcionamiento del
microcontrolador.
SI Inicializacin del puerto serie:
El cdigo para la inicializacin del puerto serie en la
PETICIN DE TAREA,
ENVIO DE BYTE DE TAREA
aplicacin de Labview se muestra en la Fig. 4.
Y BYTES DE DATOS.
RECIBIDO BYTE
DE FINALIZACIN DE
NO
TAREA DE ARDUINO
recibido el byte en el buffer de lectura en la aplicacin de entradas analgicas se utilizarn 2 bytes, luego el
Labview y terminado el bucle while se leer el byte testigo total de bytes a enviar por esta tarea ser de
para quitarlo del buffer. 4+12+4 = 20 bytes.
Tarea 3: envo del tiempo transcurrido en
microsegundos desde el ltimo reset del
microcontrolador y la ocupacin del buffer de
lectura de Arduino UNO. La funcin que devuelve
la ocupacin del buffer del microcontrolador lo
hace por medio de una variable tipo int (2 bytes),
luego el total de bytes de la tarea ser de 4+2 = 6
Figura 5. Cdigo Labview para realizar una prueba de comunicacin. bytes.
En la Fig. 8 podemos observar los resultados obtenidos
Finalizacin de la aplicacin: mediante graficas que indican en el eje de abscisas el
Una tarea siempre necesaria en cualquier aplicacin es la nmero de bytes que hay en el buffer de lectura, y en el eje
parada o finalizacin del proceso. Se puede observar en la Fig. de ordenadas la frecuencia de la ocupacin del buffer por
6 que es similar a la prueba de comunicacin, pero esta vez se un nmero determinado de bytes. Las grficas a), b) y c) de
dispone de un control tipo pulsador para entrar en el case de la Fig.8 se corresponden al caso de no utilizar la API a las
Labview, luego el usuario tiene el control de parar la distintas velocidades antes mencionadas, 9600,57600 y
aplicacin a voluntad durante su ejecucin. 115200 bits/s respectivamente, y en ellas podemos ver
como el buffer de lectura llega a saturarse bloqueando la
comunicacin y perdiendo el control en la ejecucin de las
tareas, en las grficas d), e) y f) de la Fig. 8 muestran los
resultados obtenidos con la API, en las cuales podemos
observar que el buffer es usado de forma ptima
independientemente de la velocidad sin llegar a saturarse.
a) d)
b) e)
c) f)
Figura 8. Ocupacin del buffer de lectura del puerto serie en los distintos ensayos: a) para una velocidad de 9600 bits/s sin usar la API, b) para una velocidad de
57600 bits/s sin usar la API, c) para una velocidad de 115200 bits/s sin usar la API, d) para una velocidad de 9600 bits/s usando la API, e) para una velocidad de
57600 bits/s usando la API y f) para una velocidad de115200 bits/s usando la API.
reducido y por lo tanto, de fcil adquisicin y uso por parte de [20] V. Georgitzikis, et al., "Controlling physical objects via the internet
using the arduino platform over 802.15.4 networks," IEEE Latin
cualquier equipo de trabajo. America Transactions, vol. 10, pp. 1686-1689, 2012.
Por ltimo, se puede afirmar que con los resultados [21] T. O. Loup, et al., "Bluetooth embedded system for room-safe
obtenidos en esta plataforma, bajo esta filosofa de temperature monitoring," IEEE Latin America Transactions, vol. 9,
pp. 911-915, 2011.
comunicacin, han sido absolutamente satisfactorios por sus
caractersticas ya comentadas de fiabilidad, fcil
implementacin y prototipado, flexibilidad y bajo coste. Francisco Javier Jimnez obtiene el ttulo de Ingeniero
industrial en Automtica y Electrnica Industrial en 2010.
Actualmente trabaja como profesor de universidad en el
REFERENCIAS departamento de Ingeniera Elctrica en la Universidad de
[1] I. Texas. (1995, 07/10/2012). Texas Instruments website. Available: Crdoba (Espaa), donde imparte clase de Mquinas
Elctricas, Mquinas Elctricas Especiales y Regulacin
http://www.ti.com/
Automtica. Sus principales lneas de investigacin se centran en el estudio
[2] M. T. Inc. (1998, 07/10/2012). MICROCHIP website. Available:
del comportamiento acstico de las mquinas elctricas rotativas, as como en
http://www.microchip.com/ la eficiencia y ahorro energtico en Mquinas e Instalaciones Elctricas.
[3] N. I. Corporation. (2012, 07/10/2012). National Instruments. Available:
http://www.ni.com/labview/ Fco. Ramn Lara es Doctor por la Universidad de Crdoba
[4] Arduino. (2011, 07/10/2012). ARDUINO website. Available: (Espaa) desde 2012. Ingeniero en Automtica y Electrnica
http://www.arduino.cc/ Industrial desde 2003. Actualmente trabaja como profesor en
[5] R. Pittini, et al., "An interface board for developing control loops in power el Departamento de Ingeniera Elctrica de la Universidad de
electronics based on microcontrollers and DSPs Cores -Arduino Crdoba (Espaa), en asignaturas de Mquinas Elctricas y
/ChipKit /dsPIC /DSP /TI Piccolo," in Control and Modeling for Tecnologa Elctrica. Sus principales lneas de investigacin
Power Electronics (COMPEL), 2013 IEEE 14th Workshop on, pp. se centran en el estudio del comportamiento acstico de las mquinas
1-7, 2013. elctricas rotativas, as como en la eficiencia y ahorro energtico en Mquinas
[6] R. W. Fransiska, et al., "Electrical power measurement using Arduino Uno e Instalaciones Elctricas.
microcontroller and LabVIEW," in Instrumentation,
Communications, Information Technology, and Biomedical Mara Dolores Redel naci en Crdoba, Espaa, en 1977.
Engineering (ICICI-BME), 2013 3rd International Conference on, Recibi el grado de Doctor Internacional en Automtica y
pp. 226-229, 2013. Electrnica Industrial en 2012. Actualmente trabaja como
[7] A. P. Alves, et al., "BITtalino: A biosignal acquisition system based on the profesora Ayudante Doctor en el Departamento de Ingeniera
arduino," in International Conference on Biomedical Electronics Rural en la Universidad de Crdoba. Sus principales reas de
investigacin incluyen la identificacin de fuente de ruido y
and Devices, BIODEVICES 2013, pp. 261-264, Barcelona, Spain,
calidad del sonido en biocombustibles.
2013.
[8] S. R. R. D. Purusothaman, et al., "Implementation of Arduino-based multi-
agent system for rural Indian microgrids," in Innovative Smart Grid
Technologies - Asia (ISGT Asia), 2013 IEEE, pp. 1-5, 2013.
[9] W. B. Williams, "LabVIEW and arduino as a gateway to PLC
programming," in 120th ASEE Annual Conference and Exposition,
Atlanta, GA; United States, 2013.
[10] A. Zoric, et al., "Virtual multisensors data acquisition and analysis
system design," Elektronika ir Elektrotechnika, pp. 49-54, 2011.
[11] A. Kumar, et al., "Energy efficient air quality monitoring system," in
10th IEEE SENSORS Conference 2011, SENSORS 2011, pp. 1562-
1566, Limerick, Ireland, 2011.
[12] N. S. A. Zulkifli, et al., "XBee wireless sensor networks for Heart Rate
Monitoring in sport training," in International Conference on
Biomedical Engineering, ICoBE 2012, pp. 441-444, Penang,
Malaysia, 2012.
[13] M. Anwari, et al., "Small scale PV monitoring system software design,"
in 1st International Conference on Smart Grid and Clean Energy
Technologies, ICSGCE 2011, pp. 586-592, Chengdu, China, 2011.
[14] D. J. Rankin and J. Jiang, "A hardware-in-the-loop simulation platform
for the verification and validation of safety control systems," IEEE
Transactions on Nuclear Science, vol. 58, pp. 468-478, 2011.
[15] M. Iacob and G. D. Andreescu, "Implementation of hardware-in-the-loop
system for drum-boiler-turbine decoupled multivariable control," in
6th IEEE International Symposium on Applied Computational
Intelligence and Informatics, SACI 2011, pp. 45-50, Timisoara,
Romania, 2011.
[16] A. D'Ausilio, "Arduino: A low-cost multipurpose lab equipment,"
Behavior Research Methods, vol. 44, pp. 305-313, 2012.
[17] K. Baraka, et al., "Low cost arduino/android-based energy-efficient
home automation system with smart task scheduling," in 5th
International Conference on Computational Intelligence,
Communication Systems, and Networks, CICSyN 2013, pp. 296-
301, Madrid, Spain, 2013.
[18] Processing. (2012, 07/10/2012). Wiring website. Available:
http://wiring.org.co/
[19] A. Corporation. (1998, 07/10/2012). Atmel [website]. Available:
http://www.atmel.com/devices/atmega328.aspx