Envío de múltiples datos simultáneos de Arduino a Java

23
3515

Este artículo consiste en una breve demostración sobre el envío de múltiples datos simultáneos de Arduino a Java. Como ya saben muchos de ustedes, nosotros en Panama Hitek hemos creado la llamada librería PanamaHitek_Arrduino, que permite establecer comunicación entre Arduino y Java.

El siguiente video muestra una breve demostración de cómo programar un algoritmo con la capacidad de recibir múltiples datos enviados desde el Arduino hasta una aplicación en Java. Esto es especialmente útil cuando se tienen varios sensores conectados al Arduino y se desea enviar los datos capturados a una aplicación en Java.

 

Sobre este video he subidos algunos códigos de ejemplo a nuestro repositorio en Github. Por ejemplo, subiendo este código en Arduino y ejecutando este código en Java se puede apreciar el resultado del uso de la clase PanamaHitek_Multimessage, tal como se muestra en el video.

Esperamos que la información presentada sea útil para ustedes. Cualquier duda o comentario, no duden en escribirnos a través de la caja de comentarios.

0 0 votes
Article Rating
Suscríbete
Notify of
guest

23 Comments
newest
oldest most voted
Inline Feedbacks
View all comments
jhon jaime muñoz
jhon jaime muñoz
2 years ago

buen día. quisiera saber como hacer que la posición de los datos no cambien ya que al momento de visualizar los datos enviados por el arduino al programa de java en los jtextfiel los datos empiezan a rotar por todos los cuadros de texto, como hago para que los datos que envía el arduino siempre conserve la misma caja de texto.

guido
guido
2 years ago

com.panamahitek.ArduinoException: Nomrbe del puerto – COM5; Nombre del método – arduinoRXTX (); Tipo de excepción – Puerto no abierto.
en com.panamahitek.PanamaHitek_Arduino.arduinoRXTX (PanamaHitek_Arduino.java:220)

guido
guido
2 years ago

gracias amigo
ahora tengo un problema
tengo un sensor ultra sonido que manda la distancia en este caso tengo un tanque elevado y mido la distancia del agua
esa distancia la envio desde el arduino a java
y recibo como un string
pero cuando convierto a un entero para hacer un if
me lanza arror
mi pregunta es como puedo convertir el dato que me llega

guido
guido
2 years ago

La clase pública NumberFormatException este lanza
extiende IllegalArgumentException
Se lanza para indicar que la aplicación ha intentado convertir una cadena a uno de los tipos numéricos, pero que la cadena no tiene el formato adecuado.
Yo en java recibo tres datos que me llegan del arduino

Giovanni
Giovanni
4 years ago

Puedo enviar multiples datos y mostrarlos en un Label, como podria hacerlo por que lo he intentado y no logro hacerlo

Ajax
Ajax
4 years ago

Buenas, se me presento un problema al utilizar la libreria: Estoy mandando 8 datos numéricos desde arduino a java con un delay(15), hice pruebas con delay de 15 a 100, y los datos que recibidos los quiero recibir en una jtable. El problema es que empiezo a recibir los datos cruzados o en algunos casos no me llegan los datos Parte del código en Java: public void serialEvent(jssc.SerialPortEvent arg0) { contador = 0; ArrayList lista = new ArrayList(); int[] obj = new int[8]; DefaultTableModel tmodelo = (DefaultTableModel) table.getModel(); try { if (mensage.dataReceptionCompleted()) { System.out.println(mensage.getMessage(0)); System.out.println(mensage.getMessage(1)); System.out.println(mensage.getMessage(2)); System.out.println(mensage.getMessage(3)); System.out.println(mensage.getMessage(4)); System.out.println(mensage.getMessage(5)); System.out.println(mensage.getMessage(6));… Read more »

Alvaro
Alvaro
4 years ago

Se me presento un problema en la recepción de datos. Este es mi código Java: try { if(message.dataReceptionCompleted()){ System.out.println(«mensaje: «+contador++); System.out.println(«rdx: «+message.getMessage(0)); System.out.println(«rdy: «+message.getMessage(1)); System.out.println(«cdx: «+message.getMessage(2)); System.out.println(«cdy: «+message.getMessage(3)); System.out.println(«cix: «+message.getMessage(4)); System.out.println(«ciy: «+message.getMessage(5)); System.out.println(«rix: «+message.getMessage(6)); System.out.println(«riy: «+message.getMessage(7)) message.flushBuffer(); } } catch (ArduinoException | SerialPortException e) { e.printStackTrace(); } Mensajes enviados por terminal de arduino: 2 -2 3 -1 2 -2 5 -5 3 -3 4 0 1 -1 6 -6 4 -4 5 1 0 0 7 -7 Datos que imprime Java: mensaje: 1 rdx: 2 rdy: -2 cdx: 3 cdy: -1 cix: 2 ciy: -2 rix: 5 riy: -5 mensaje:… Read more »

Alvaro
Alvaro
4 years ago

static PanamaHitek_Arduino ino = new PanamaHitek_Arduino();
static PanamaHitek_MultiMessage message = new PanamaHitek_MultiMessage(8, ino);

Alvaro
Alvaro
4 years ago

En algún otro lenguaje de programación se podría captar los datos a esa velocidad?
El proyecto que estoy desarrollando es con 4 aceleremetros, cada acelerometro me da dos datos, eje «x» y «y».
En base a los datos que recibo de los acelerometros tengo que graficar y me dieron la siguiente restricción: velocidad de transmicion de datos entre 15 a 30 ms.

Alvaro
Alvaro
4 years ago

Ingeniero ya pude recibir correctamente los datos, muchas gracias!
Tenia razón, aumente la velocidad de 9600 a 115200 y funciono

Gracias!

Fabio Hernandez
Fabio Hernandez
4 years ago

Hola cuando llaamo al método arduinoRX(«COM8», 9600, listener); me saale el siguiente error com.panamahitek.ArduinoException: Nomrbe del puerto – COM8; Nombre del método – arduinoRX(); Tipo de excepción – Puerto no abierto.
Como habro el puerto; pense que el método ya habría el puerto
estoy usando la dependencia

com.github.PanamaHitek
PanamaHitek_Arduino
3.0.0

los felicito por tan buen material

GER
GER
5 years ago

Buenas, En mi caso arduino envia un mensaje cada vez, pero este puede ser distinto. La placa envia un mensaje dependiendo de que color detecta el sensor. Una vez tengo los mensajes en Java, no se como tratarlos de distinto modo cada uno. Es decir, quiero ejecutar una acción concreta dependiendo del color que recibo. Pero cuando transformo el byte que me llega desde Arduino a String no parece que el programa lo reconozca. Te adjunto mi codigo arduino por si sabes detectar el error. Muchas gracias! //Compare Colours if (isGreen < isBlue){ if (isRed < isBlue){ if (isYellow <… Read more »