Panama Hitek Logo
Panama Hitek Logo

Función ArduinoConnection(): Comunicar Arduino con Java

Para poder comunicar una aplicación en Java con Arduino se necesita declarar las siguientes variables:

Estas variables funcionan de la siguiente forma:

Output: Es un OutputStream que se utiliza para enviar datos Utilizando el puerto Serie.

serialPort: Con esta variable iniciamos el Puerto Serie.

PORT_NAME: El nombre del puerto COM. En mi caso es COM 3 para Arduino Mega y COM 6 para Arduino Nano que son los 2 microcontroladores que tengo bajo mi poder.

TIME_OUT y DATA_RATE: son variables que utiliza el Puerto Serie para su funcionamiento. Generalmente se utilizan los valores 2000 y 9600, respectivamente.

Ahora veamos la función que llamaremos ArduinoConection:

Si copiamos esta función en el código de cualquier programa que estemos construyendo en Java, podremos enviarle datos a Arduino.

Una última función, EnviarDatos, será la función que recibirá los parámetros que desemos enviar.

Con las variables declaradas en el inicio de un programa en Java, junto con estos 2 métodos podremos hacer miles de cosas interesantes con Arduino.

Antony García González
Antony García González
Ingeniero Electromecánico, egresado de la Universidad Tecnológica de Panamá. Miembro fundador de Panama Hitek. Entusiasta de la electrónica y la programación.

Posts relacionados

15 COMENTARIOS

  1. Espero que leas esto ¿Es dificil poder crear mi propia libreria de arduino? si es posible que pudieras publicar un post de como hacerlo (digo, solo si el trabajo no es muy cargado). Muchisimas gracias! EXCELENTES TUTORIALES!

    • Hola.

      Sí es posible para mi hacer un tutorial de cómo crear librerías para Java sin embargo esto tendría que quedarse en Stand By durante algunas semanas ya que estoy creando un proyectos a nivel superior y preparándome para una conferencia que dictaré pronto. Cuando me deshaga de esos compromisos preparo el tutorial.

      Saludos.

    • Lo que illuminatus18 pregunta es que de donde se saca «SerialPort» que usaste en «OutputStream Output = null; SerialPort serialPort; private final String PORT_NAME = “COM3″ private static final int TIME_OUT = 2000; private static final int DATA_RATE = 9600; «

      • El serial port se declara como un tipo de variable SerialPort. Para poder usar este tipo de variables hay que importar gnu.io.SerialPort; lo cual forma parte de la librería RXTX.
        Es una variable que se debe usar en cualquier método de comunicación serial utilizando RXTX

  2. tengo una duda tengo un ARDUINO UNO con su driver hecho por mi, si me funciona con otra app para controlar el puerto serial, en java segui tu tutorial para utilizar tu libreria, pero al comunicar mi micro con java al ser compilado se queda ahi… porque ?? solo me aparece running y necesito detenerlo porque no realiza nada

  3. Felicitarte por el trabajo que realizas, es genial, y esperando tus tutoriales sobre como creaste la libreria de Arduino, me interesa mucho el tema, porque es genial y como funciona a la mayoria, te doy un 10. Un saludo

  4. Que tal, buen trabajo amigo.

    Pero he tenido problemillas al querer implementarlo bajo windows con un arduino nano clonado.

    Problema 1. vi que el método

    serialPort.addEventListener((SerialPortEventListener) events);

    No está trabajando bien, ya que nunca me regresa el evento de que se ha recibido datos desde el arduino.
    Solución 1:
    Investigando un poco llegué a esta dirección donde dan la respuesta, quizá sea bueno agregarlo a la libreria que has creado.
    http://embeddedfreak.wordpress.com/2008/08/12/serial-port-event-in-rxtx/

    Problema 2. Cuando el arduino me devuelve una cadena de datos («por ejemplo») las líneas de codigo siguiente

    PanamaHitek_Arduino device = new PanamaHitek_Arduino();
    device.arduinoRXTX(«COM2»,9600, null); //ignorado el tercer parametro a proposito
    device.sendData(«0»);
    String response=null;
    if (device.isMessageAvailable()){
    response = device.printMessage();
    }

    específicamente siempre dice falso, aunque haya recibido el primer valor «p» del ejemplo que el arduino esta devolviendo.

    Yo lo cambie así:

    PanamaHitek_Arduino device = new PanamaHitek_Arduino();
    device.arduinoRXTX(«COM2»,9600, null); //ignorar el tercer parametro
    device.sendData(«0»);
    String response=null;
    while(device.isMessageAvailable()==false);
    response = device.printMessage();
    }

    Obviamente no es la mejor forma de hacerlo pero me sirvio para salir del paso.

    Bueno, este ha sido mi aporte, sigamos mejorando.

    Un abrazo desde Bolivia.

DEJA UNA RESPUESTA

Por favor ingrese su comentario!
Por favor ingrese su nombre aquí

Post relacionados