Graficando Datos de Sensores en Tiempo Real Con Arduino Java y JFreecharts PDF
Graficando Datos de Sensores en Tiempo Real Con Arduino Java y JFreecharts PDF
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
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
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
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.
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:
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:
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.
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
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.
Los resultados han sido satisfactorios. Con JFreeChart ahora es posible conseguir grficas directamente desde cualquier sensor con Arduino.
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
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