Arduino + Java: Tabular y exportar datos a Excel

0
1079

Desde la versión 3.0.0, la librerí­a PanamaHitek_Arduino cuenta con una clase especial para facilitar la tabulación y exportación de datos a una hoja de cálculo de Excel. Esta clase, llamada PanamaHitek_DataBuffer, permite almacenar datos, crear una interfaz gráfica con un JTable que tabula la información recibida y permite exportar los datos almacenados a Excel.

En el siguiente artí­culo voy a tratar de explicar, paso por paso, como crear una sencilla interfaz que permita tabular los datos recibidos desde Arduino, con la posibilidad de exportar los datos a Excel al presionar un botón.

Creación de proyecto e importación de librería en Netbeans

Para el ejemplo que voy a mostrar en este post voy a crear un proyecto al que voy a llamar excel_test. Será un proyecto Maven, al que voy a agregar las dependencias de la librerí­a PanamaHitek_Arduino, tal como se explica en este post.

Especificando el tipo de proyecto en Netbeans
Especificando el nombre del proyecto en Netebeans

Recordemos que para poder utilizar la librerí­a, es necesario agregar lo siguiente al fichero pom.xml (generado por defecto a la hora de crear el proyecto en Netbeans):

Archivo pom.xml

Luego de agregar las dependencias, al hacer clic derecho sobre el proyecto y seleccionar “Clean and Build” se descargaron todas las dependencias de manera automática. También haciendo clic en Dependencies/Download Declared Dependencies se descarga todo lo necesario para el uso de la librería.

Las instrucciones sobre este proceso se muestran en este video.

Creación de la interfaz gráfica

La interfaz gráfica que utilizará para este ejemplo será muy sencilla. Se trata de un JFrame, con un JPanel y un botón, tal como se muestra en la siguiente imagen.

Interfaz gráfica

La clase PanamaHitek_DataBuffer utiliza un JPanel para visualizar la tabla en la cual se van a recibir los datos.

Código en Arduino

Para poder probar que nuestra aplicación funciona, será necesario escribir un pequeño código en Arduino y estar seguros de qué es lo que hace este código. En base a esto es que en Java se configura el comportamiento de la aplicación.

Lo que hace este código es, básicamente, generar datos de temperatura de manera aleatoria. Al número generado se le agregan 50 unidades para producir un dato de humedad. Luego los dos números se imprimen en el monitor serie de dos en dos.

Es muy importante tomar en cuenta que los datos deben ser impresos utilizando Serial.println y en el mismo orden en el que se espera recibirlos en Java.

Programación en Java

La programación en Java requiere de la declaración de instancias de 4 clases:

  • PanamaHitek_Arduino, para la gestión de la conexión con Arduino y para recibir los datos en Java
  • PanamaHitek_MultiMessage, para discriminar los datos recibidos cuando se trata de múltiples envíos de manera simultánea.
  • PanamaHitek_DataBuffer, para almacenar los datos recibidos en la memoria dinámica. Esta clase también permite renderizar un JTable en el que se insertan los datos de manera dinámica. También es la clase encargada de exportar los datos a Excel a voluntad del usuario.
  • SerialPortEventListener, para gestionar los eventos de recepción de datos y la inserción de la información en el DataBuffer.

Toda la programación que se necesita para darle funcionalidad a esta interfaz estará ubicada en el constructor de la clase, es decir, en void JFrameWindow().

Es un código relativamente sencillo, en el que se inicia una conexión con el Arduino a través del puerto COM15. El buffer tendrá 3 columnas (tiempo, temperatura y humedad), pero se le podrán agregar más si se desea.

Con la instrucción buffer.insertToPanel(jPanel1) nos aseguramos que los datos del buffer sean mostrados en una tabla en el jPanel1, tal como se muestra en la siguiente imagen.

Los datos serán insertados en la tabla cada vez que se utilice el método buffer.printRow(), mientras que para insertar la información en cada columna se debe utilizará buffer.addValue(2, 15) (esto permitirá insertar el valor 15 en la columna 2. Debemos recordar que las columnas se enumeran a partir de 0, por lo que la columna 2 será la tercera).

Para exportar los datos almacenados en el DataBuffer a Excel, se utiliza la instrucción buffer.exportExcelFile(), la cual abrirá una ventana que permitirá escoger la ruta en la que se desea almacenar el fichero. Esta instrucción debe colocarse en el botón de exportar.

A continuación presento para ustedes un video en el cual se resume todo lo explicado en este post. El video inicia en el minuto 7:00, donde ya se muestra el resultado de la ejecución del código:


El código utilizado en este artículo se encuentra completo en nuestro repositorio de Github, especí­ficamente en este enlace.

Debo recordar a todos nuestros lectores que esta compilación de código ha sido diseñada para facilitar las tareas de interacción entre Arduino y Java para todas aquellas personas que con pocos conocimientos de programación podrán lograr cosas interesantes y sacar sus proyectos e ideas adelante.

Dejar respuesta

Please enter your comment!
Please enter your name here