Está en la página 1de 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


1 Presentado por Antony Garca G. | antony.garcia.gonzalez@gmail.com
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 JFreeChart
1
ha sido presentada en Panama Hitek
2
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 serie
3
, con la librera
RXTX
4
y con la asistencia de la Librera Arduino
5
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
http://panamahitek.com/2013/03/03/graficando-en-java-con-jfreechart/
2
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/
Controlando Motor de Corriente Directa con Arduino y Java| Panama Hitek


2 Presentado por Antony Garca G. | antony.garcia.gonzalez@gmail.com
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 del
programa, la cual
solamente constar de
un solo botn que
desplegar los grficos.
Controlando Motor de Corriente Directa con Arduino y Java| Panama Hitek


3 Presentado por Antony Garca G. | antony.garcia.gonzalez@gmail.com
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 Librera
Arduino.jar Librera Arduino para Java
RXTXcomm.jar Librera RXTX
Jcommon-1.0.17.jar
Librera JFreeChart
Jfreechart-1.0.14.jar
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.
Controlando Motor de Corriente Directa con Arduino y Java| Panama Hitek


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

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:
Controlando Motor de Corriente Directa con Arduino y Java| Panama Hitek


5 Presentado por Antony Garca G. | antony.garcia.gonzalez@gmail.com
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.
Controlando Motor de Corriente Directa con Arduino y Java| Panama Hitek


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







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 9 Diagrama
pictrico del circuito
detector de luz (Cortesa
de Fritzing.org)
Controlando Motor de Corriente Directa con Arduino y Java| Panama Hitek


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

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.




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


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

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

También podría gustarte