Gráficas de sensores en tiempo real con Arduino, Java y JFreeChart

14
3720

jfreecharts

En este blog he mostrado a mis lectores información acerca del uso de la librería JFreeChart para java:

También he presentado información acerca de cómo graficar datos recibidos desde Arduino utilizando una interfaz creada en Java:

En esta ocasión voy a mostrar cómo graficar los datos que se obtienen de un sensor utilizando jFreeChart.

Graficando datos de sensores en tiempo real con Arduino, Java y JFreecharts by Antony García González

En el siguiente video se muestra el funcionamiento del código propuesto.

Espero que la información suministrada sea de utilidad.

Saludos.

  • Cristhian Mendoza

    https://uploads.disquscdn.com/images/72aed5e82f3bc5c4f97908aaae35c5cb436d76d0f16e1a78537ce3414996915d.jpg Hola Antony, resulta que intento graficar un sensor de alcohol MQ3 pero lo estoy haciendo con la ultima versión de tu librería PanamaHitek y utilizando tu codigo de charts.
    Pero cambian varios elementos tu me puedes indicar que se debe cambiar para los ajustes de la nueva libreria.

    • Antony García González

      Guarda el valor que devuelve el printMessage en un String. Luego de ahi imprimes en el System.out e insertas en la serie. No uses printMessage 2 veces

  • Hannah91

    Hi. First of all i really want to say that this website helps me a lot since i’m pretty new with arduino. Even if this website is in spanish & i obviously don’t know spanish, it really does helps me a lot. Thank you so much. 🙂
    By the way, do you have the code file for this. I’ve tried to implement graphing the real time sensor data from LM35 by using jfreechart. but the graph shows up without the data. maybe there’s connection problem between arduino and java. I really hope i can get the code. Thank you in advance!

  • kripsone

    Como se podría hacer para poder graficar un sensor con respecto a otro? es decir, si tienes uno de temperatura y uno de humedad poder graficar a la temperatura con respecto a la humedad o viceversa?

    • Antony García González

      Establecer la humedad en un eje y la temperatura en el otro eje

  • jhonatan

    amigo resulta q últimamente he estado trabajando en ubuntu y cuando quise probar la graficadora me sucede que los datos q envío a java desde arduino me los multiplica por 2, y cuan los miro en el serial monitor si los manda correctamente , quisiera saber si tal vez ud conoce el porque de esta situación. muchas gracias

  • Jhonatan

    amigo una pregunta:
    yo deseo asignarle a una variable los valores que recibo desde arduino, con el fin de crear una condición para que me genere una alarma visual tanto en java como en arduino pero que a la vez continúe graficando en tiempo real, con que tipo de variable podría hacerlo y con que instrucción de la librería.
    ademas tal ves usted tenga a la mano algo que facilite utilizar por completo la librería de arduino para java , saber cuales son todas las instrucciones que maneja y para que sirven exactamente.
    muchas gracias

    • [email protected]

      La librería Arduino para Java tiene su propio post:

      http://panamahitek.com/libreria-arduino-para-java/

      Usted podría preparar a Java para que cuando el mensaje recibido sea igual a, por ejemplo, un asterisco (*) haga que aparezca un JOptionPane.showMessageDialog(“”) que muestre lo que usted quiera mostrar.

      • Jhonatan

        si mas o menos eso es lo que trato de hacer pero quisiera saber es que tipo de variable debo declarar para asignarle los valores que recibo desde arduino y así poder hacer la comparación con esta variable, tiene que ser una variable que estará variando constantemente con los valores del sensor

  • Jhonatan

    amigo una pregunta:
    por que es necesario convertir el mensaje a un numero entero, no es posible que sea a un numero con decimales. lo digo porque realice el montaje con un sensor de temperatura lm35 y en la programación de arduino realice la conversión análoga – digital multiplicando por 5 y dividiendo por 1024, y eso lo guarde en una variable que inicialmente la declare como tipo float, y lo que enviaba a java por el puerto serial era el valor de esta variable, pero no me graficaba , después cambie la variable a tipo int y de esta manera si me gráfico. así supongo que era por tenia q ser un numero entero tal vez usted me pueda decir porque.
    y de que manera se debería cambiar el programa de java para poder que reciba datos con decimales o en formato float.
    De antemano muchas gracias.

    • [email protected]

      Esto se debe a que el parametro de la Serie debe ser un numero entero. En el comando Serie.add(int x, int y) se puede hacer algunas modificaciones para que acepte valores tipo float o tipo double. Hay que investigar un poco acerca de eso

  • Theginnger

    wow!!! me parece genial!!! si me funcionaa!! pero quisiera q me digas porque no me funciona cuando me conecto con un bluetooth RS232…?… = ( en que puede estar mal?

    • No tengo conocimientos sobre el uso de bluetooth con Arduino, por lo que no sabría como ayudarte

  • Reblogged this on Biblioteca Uptc Sogamoso.