You are on page 1of 9

GRAFICANDO DATOS DE SENSORES EN TIEMPO REAL CON ARDUINO, JAVA Y JFREECHARTS

Por Antony Garca Gonzlez

Antony Garca Gonzlez


Estudiante de la Universidad Tecnolgica de Panam Facultad de Ingeniera Elctrica Licenciatura en Ingeniera Electromecnica Creador y Administrador del blog PanamaHitek.com

Controlando Motor de Corriente Directa con Arduino y Java| Panama Hitek

Graficando datos de sensores en tiempo real con Arduino, Java y jFreeChart


Por Antony Garca G.

ABSTRACT Un documento que muestra los pasos a seguir para graficar los datos obtenidos a partir de cualquier tipo de sensor conectado a Arduino a travs de la implementacin de las libreras JFreeChart y Arduino para Java. Por medio de comunicacin serial entre un micro controlador, el usuario puede supervisar el comportamiento de cualquier fenmeno de forma grfica en la pantalla de la computadora.

INTRODUCCIN
La librera JFreeChart1 ha sido presentada en Panama Hitek2 como una opcin muy til para la creacin de grficos en Java. En esta ocasin de va a aprovechar las ventajas de JFreeChart para elaborar grficos en tiempo real, especficamente para hacer lectura de datos obtenidos a partir de sensores conectados a Arduino. La comunicacin entre Java y Arduino se lograr por medio del puerto serie3, con la librera RXTX4 y con la asistencia de la Librera Arduino5 diseada para Java. La interfaz de desarrollo utilizada para esta demostracin es Netbeans IDE, en su versin 7.3 6. Se espera obtener una interfaz muy sencilla que pueda ser utilizada como parte de futuros proyectos para evaluar el comportamiento de fenmenos fsicos transformados a pulsos elctricos por medio de los sensores y con Arduino como interfaz electrnica. Se podr utilizar cualquier tipo de sensor con esta interfaz.

1 2

http://panamahitek.com/2013/03/03/graficando-en-java-con-jfreechart/ http://panamahitek.com/ 3 http://panamahitek.com/2013/01/27/comunicacion-serial-con-arduino/ 4 http://panamahitek.com/2013/01/31/requisitos-para-utilizar-arduino-con-java/ 5 http://panamahitek.com/2013/03/08/libreria-arduino-para-java/ 6 https://netbeans.org/

Presentado por Antony Garca G. | antony.garcia.gonzalez@gmail.com

Controlando Motor de Corriente Directa con Arduino y Java| Panama Hitek

REQUISITOS PARA LA CREACIN DEL PROGRAMA


Librera Arduino para Java Librera RXTX Librera jFreeChart Netbeans IDE 7.3 Nota: las libreras se encuentran disponibles en Panama Hitek y en los enlaces proporcionados como referencia de este documento.

CREACIN DE LA INTERFAZ EN JAVA


Se crea un proyecto en Netbeans llamado Charts. Se deja la clase principal y se agrega un jFrame bajo el nombre Windows. Desde la clase principal se instancia Windows de tal forma que al iniciar la ejecucin del programa se abra la ventana principal.

Figura 1 Panel de proyectos y cdigo de la clase principal Charts.java Figura 2 Panel de diseo de Netbeans IDE con la interfaz la botn del cual que programa, un solo

solamente constar de desplegar los grficos.

Presentado por Antony Garca G. | antony.garcia.gonzalez@gmail.com

Controlando Motor de Corriente Directa con Arduino y Java| Panama Hitek

Es necesario implementar las libreras que harn posible la utilizacin del cdigo a usar. Los enlaces de descarga para las libreras se encuentran al final de este documento. Los archivos a importar son los siguientes: Archivo Arduino.jar RXTXcomm.jar Jcommon-1.0.17.jar Jfreechart-1.0.14.jar Librera JFreeChart Librera Librera Arduino para Java Librera RXTX

Tabla 1 Archivos que se necesitan importar a las libreras del proyecto

Estos cuatro archivos deben estar en el rbol del proyecto en la seccin de libreras.

Figura 3 Archivos importados al rbol de libreras del proyecto. Los archivos pueden ser descargados desde Panama Hitek o bien desde los enlaces proporcionados al final del documento.

Ahora se procede con la programacin que har posible obtener los resultados deseados. Es necesario instanciar la librera Arduino para Java en el proyecto e iniciar la comunicacin RXTX con Arduino. Los parmetros para RXTX sern el puerto COM donde se conectar Arduino, 2000 milisegundos de tiempo de espera, un baud rate de 9600 y un SerialPortEventListener llamado evento, que ser el encargado de ejecutarse al recibir los datos.

Presentado por Antony Garca G. | antony.garcia.gonzalez@gmail.com

Controlando Motor de Corriente Directa con Arduino y Java| Panama Hitek

Figura 4 El cdigo con el cual se instancia la librera Arduino y se inicia la comunicacin con Arduino. Cualquier error que aparezca ser automticamente corregido por Netbeans. Las lneas en verde sern las nicas que se deben escribir ya que todo lo dems ser agregado por el IDE al hacer clic en las notificaciones que aparezcan en la izquierda.

Luego de esto solo se necesita crear las grficas con jFreeChart. Se crea una variable del tipo JFreeChart llamada Grfica. Tambin se necesitan dos variables que sern los contenedores para los datos del sensor, sean Serie y Datos.

Figura 5 Las variables que se deben declarar para hacer las grficas con jFreeChart. La serie XY guarda los valores obtenidos del sensor. En la variable Coleccin es donde se agregan las series de Datos. Finalmente la variable Grfica es en s la grfica del jFreeChart.

Ahora se inicia la serie de datos con la coordenada 0, para que la grfica parta desde el origen. Se agregan los datos de la Serie a la coleccin de datos y se crea el grfico a partir de las variables declaradas. El tipo de grfico debe ser XYLineChart y se inicia como un mtodo de ChartFactory. Los parmetros son los siguientes:

Presentado por Antony Garca G. | antony.garcia.gonzalez@gmail.com

Controlando Motor de Corriente Directa con Arduino y Java| Panama Hitek

Grafica = ChartFactory.createXYLineChart(String ttulo del grfico, String Etiqueta del eje horizontal, String Etiqueta del eje vertical, XYDataset coleccin de datos, PlotOrientation orientacin, boolean leyenda, boolean tooltips, boolean urls) Para efectos de este documento, los parmetros seran:

Figura 6 Parmetros para la grfica

Ahora solo se necesita programar el botn que abrir la ventana con la grfica.

Figura 7 Programacin del botn Graficar. Se crea un ChartPanel y se agrega la grfica. Luego se coloca el ChartPanel en una nueva ventana y se muestra la grfica.

Con esto es suficiente para obtener resultados. Es una programacin sencilla que mostrar una ventana con un grfico en tiempo real sin mayores detalles. Se puede optimizar las funciones que tenga el programa agregando otros elementos segn sean las necesidades del usuario.

PROGRAMACIN EN ARDUINO
La programacin en Arduino es muy sencilla: solo se inicia la comunicacin serial y se hace lectura del nivel anlogo en el divisor de tensin y se imprime por medio del mtodo Serial.println(). Se coloca un retraso de 100 ms para evitar una sobresaturacin de datos.

Presentado por Antony Garca G. | antony.garcia.gonzalez@gmail.com

Controlando Motor de Corriente Directa con Arduino y Java| Panama Hitek

Figura 8 Programacin de Arduino para hacer lectura del nivel de luminosidad a partir de un divisor de tensin con una foto resistencia.

ESQUEMA ELECTRNICO
El circuito que funcionar como detector de luz consiste en una fuente de voltaje (5 voltios, desde Arduino), una resistencia de 1 k y una foto resistencia.

Figura

Diagrama circuito

pictrico

del

detector de luz (Cortesa de Fritzing.org)

Presentado por Antony Garca G. | antony.garcia.gonzalez@gmail.com

Controlando Motor de Corriente Directa con Arduino y Java| Panama Hitek

RESULTADO FINAL
El comportamiento del programa es tal cual lo esperado. Se muestra una grfica cuyo comportamiento depende de la Luz aplicada a la foto resistencia.

Figura 10 Ejemplo de grfica en tiempo real en JFreeChart

Los resultados han sido satisfactorios. Con JFreeChart ahora es posible conseguir grficas directamente desde cualquier sensor con Arduino.

Presentado por Antony Garca G. | antony.garcia.gonzalez@gmail.com

Controlando Motor de Corriente Directa con Arduino y Java| Panama Hitek

REFERENCIAS
Los conceptos expuestos en este documento forman parte de los contenidos asociados a PanamaHitek.com y pueden ser encontrados en dicha direccin web. Acerca de la librera RXTX

http://panamahitek.com/2013/01/31/requisitos-para-utilizar-arduino-con-java/ http://rxtx.qbang.org/wiki/index.php/Main_Page

Acerca de la librera JFreeChart

http://www.jfree.org/jfreechart/ http://panamahitek.com/2013/03/03/graficando-en-java-con-jfreechart/
Acerca de la librera Arduino para Java

http://panamahitek.com/2013/03/08/libreria-arduino-para-java/ http://panamahitek.com/2013/04/21/libreria-arduino-para-java-troubleshoot/
Demostracin en video del funcionamiento del cdigo presentado

http://youtu.be/VALfzVn-GSo
Archivos de Cdigo fuente para Arduino y Java

https://docs.google.com/file/d/0B0hsUkhqWH97S0VUTVhpV3NKQ2c/edit?usp
=sharing

Presentado por Antony Garca G. | antony.garcia.gonzalez@gmail.com

You might also like