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
GRAFICANDO DATOS
Antony García González
DE SENSORES EN
Estudiante de la Universidad Tecnológica de
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
través de la implementación de las librerías JFreeChart y Arduino para
Java. Por medio de comunicación serial entre un micro controlador, el
usuario puede supervisar el comportamiento de cualquier fenómeno
de forma gráfica en la pantalla de la computadora.
INTRODUCCIÓN
La librería JFreeChart1 ha sido presentada en Panama Hitek2 como una opción muy útil
para la creación de gráficos en Java. En esta ocasión de va a aprovechar las ventajas de
JFreeChart para elaborar gráficos en tiempo real, específicamente para hacer lectura de
datos obtenidos a partir de sensores conectados a Arduino.
La comunicación entre Java y Arduino se lograr por medio del puerto serie3, con la librería
RXTX4 y con la asistencia de la Librería Arduino5 diseñada para Java. La interfaz de
desarrollo utilizada para esta demostración es Netbeans IDE, en su versión 7.3 6.
Se espera obtener una interfaz muy sencilla que pueda ser utilizada como parte de futuros
proyectos para evaluar el comportamiento de fenómenos físicos transformados a pulsos
eléctricos por medio de los sensores y con Arduino como interfaz electrónica. 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/
Figura 2 – Panel de
diseño de Netbeans IDE
con la interfaz del
programa, la cual
solamente constará de
un solo botón que
desplegará los gráficos.
Es necesario implementar las librerías que harán posible la utilización del código a usar. Los
enlaces de descarga para las librerías se encuentran al final de este documento. Los
archivos a importar son los siguientes:
Archivo Librería
Arduino.jar Librería Arduino para Java
RXTXcomm.jar Librería RXTX
Jcommon-1.0.17.jar
Librería JFreeChart
Jfreechart-1.0.14.jar
Estos cuatro archivos deben estar en el árbol del proyecto en la sección de librerías.
Ahora se procede con la programación que hará posible obtener los resultados deseados.
Es necesario instanciar la librería Arduino para Java en el proyecto e iniciar la
comunicación RXTX con Arduino.
Los parámetros para RXTX serán 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 código con el cual se instancia la librería Arduino y se inicia la comunicación con Arduino.
Cualquier error que aparezca será automáticamente corregido por Netbeans. Las líneas en verde
serán las únicas que se deben escribir ya que todo lo demás será agregado por el IDE al hacer clic
en las notificaciones que aparezcan en la izquierda.
Luego de esto solo se necesita crear las gráficas con jFreeChart. Se crea una variable del
tipo JFreeChart llamada Gráfica. También se necesitan dos variables que serán los
contenedores para los datos del sensor, sean Serie y Datos.
Figura 5 – Las variables que se deben declarar para hacer las gráficas con jFreeChart. La serie XY guarda
los valores obtenidos del sensor. En la variable Colección es donde se agregan las series de Datos.
Finalmente la variable Gráfica es en sí la gráfica del jFreeChart.
Ahora se inicia la serie de datos con la coordenada 0, para que la gráfica parta desde el
origen. Se agregan los datos de la Serie a la colección de datos y se crea el gráfico a partir
de las variables declaradas. El tipo de gráfico debe ser XYLineChart y se inicia como un
método de ChartFactory. Los parámetros son los siguientes:
Ahora solo se necesita programar el botón que abrirá la ventana con la gráfica.
Con esto es suficiente para obtener resultados. Es una programación sencilla que mostrará
una ventana con un gráfico en tiempo real sin mayores detalles. Se puede optimizar las
funciones que tenga el programa agregando otros elementos según sean las necesidades
del usuario.
PROGRAMACIÓN EN ARDUINO
La programación en Arduino es muy sencilla: solo se inicia la comunicación serial y se hace
lectura del nivel análogo en el divisor de tensión y se imprime por medio del método
Serial.println(). Se coloca un retraso de 100 ms para evitar una sobresaturación de datos.
ESQUEMA ELECTRÓNICO
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
pictórico del circuito
detector de luz (Cortesía
de Fritzing.org)
RESULTADO FINAL
El comportamiento del programa es tal cual lo esperado. Se muestra una gráfica cuyo
comportamiento depende de la Luz aplicada a la foto resistencia.
Los resultados han sido satisfactorios. Con JFreeChart ahora es posible conseguir gráficas
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 dirección web.
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/
http://panamahitek.com/2013/03/08/libreria-arduino-para-java/
http://panamahitek.com/2013/04/21/libreria-arduino-para-java-troubleshoot/
http://youtu.be/VALfzVn-GSo
https://docs.google.com/file/d/0B0hsUkhqWH97S0VUTVhpV3NKQ2c/edit?usp
=sharing