jueves, 4 de octubre de 2012

Comunicación entre Java y microcontrolador 18F4550 vía USB

Desarrollar aplicaciones de control industrial y automatización electrónica con Java, contrariamente a lo que muchos puedan pensar, es una tarea realmente sencilla. En este artículo goo.gl/NNbvy se mostró la manera de cómo utilizar uno de los componentes más populares de JFreeChart para el control industrial.

Este artículo es el inicio de una serie de posts que se basarán en la tarjeta de adquisición de datos de la figura 1 y que mostrarán cómo desarrollar aplicaciones para el telecontrol y automatización con Java. En esta primera etapa se muestra la manera como adquirir datos analógicos utilizando Java y el microcontrolador 18F4550.

Figura 1. Tarjeta de Adquisición de Datos utilizando el PIC18F4550 y el conector JPicUSB
Para lograr la conexión entre Java y nuestra tarjeta de adquisición de datos necesitamos de un conector, el JPicUSB cuyos archivos se ecuentran adjuntos en al final del post. Así mismo es necesario agregar ciertas *.dlls a nuestro proyecto, que en este caso se encuentra desarrollado en Netbeans. La manera como establecemos la conexión es solo unas cuantas líneas. El código siguiente esquematiza la idea:
try {
    iface.load();
} catch (Exception e) {
    System.out.println(e.getMessage());
}
iface.set_vidpid("vid_04d8&pid_000b");
iface.set_instance(0);
temperaturas.start();
Para la adquisición de temperatura se utilizó el sensor LM35, siendo este fácilmente reemplazable. Entre los archivos adjuntos del proyecto también se encuentra el código fuente en lenguaje C utilizado para programar el microcontrolador. Así mismo se presenta una simulación en ISIS para poder ver en funcionamiento a esta tarjeta. Los pasos para ejecutar la aplicación son los siguientes:

1. Abrir el archivo de simulación utilizando ISIS (se recomienda la versión 7.6 SP0 y Sistema operativo Windows XP)
2. Cargar el archivo jPicUsb Led Show.hex al microcontrolador.
3. Iniciar la simulación.
4. Ejecutar el proyecto de netbeans.

También les muestro un video del funcionamiento de la tarjeta de adquisición de datos:


Ahora para ejecutar el proyecto los pasos detallados son los siguientes:

1. Abrir el ISIS Proteus.


2. Seleccionar el archivo de simulación.


3. Hacemos doble clic sobre el microcontrolador 18F4550 que se ha cargado en el workspace. Nos aparecerá la siguiente ventana:


4. Seleccionar el archivo con los códigos hexadecimales (jPicUsb Led Show.hex) a ejecutar. Dar clic en el botón "play" para iniciar la simulación.


 5. Abrir el proyecto en netbeans.


6. Ejecutar la clase  ThermometerPanel.java.


Y tendremos nuestra aplicación java comunicándose vía usb con nuestro microcontrolador 18F4550. Como comenté anteriormente este es solo el inicio de una serie de artículos, todos relacionados al uso de esta tarjeta (la cual fué parte de mi tesis para obtener el grado de Ingeniero). Espero que les sea de utilidad, y si tienen alguna duda no duden en comentarla pues la idea es hacer crecer este proyecto y el feedback que se obtenga de los comentarios será de mucha ayuda para otras personas.

Todos los archivos del proyecto los pueden descargar aquí:

 
Saludos y hasta la próxima oportunidad.

25 comentarios:

Anónimo dijo...

buen aporte soy estudiante de ingeniería y pues me gustaría aprender a utilizar usb podrías recomendarme algún libro o no se subir alguna guía de como aprender de ante mano gracias

Anónimo dijo...

Aca encuentras mucha información sobre el USB

http://www.todopic.com.ar/foros/index.php?action=search2

Anónimo dijo...

Busca en ese foro un tema llamado "el usb desencadenado" o algo similar

Anónimo dijo...

También te puede ser útil el libro "USB COMPLETE" de JAN AXELSON. Hay una cuarta edición del 2009.

Acá unos proyectos completos muy buenos.
http://picmania.garcia-cuervo.net/usb_0_desencadenado.php
http://www.todopic.com.ar/foros/index.php?topic=25235.0

Rolando Palermo Rodríguez Cruz dijo...

Buen aporte, Aquí les comparto otro post relacionado a este tema que de seguro será también de su interés: http://rolandopalermo.blogspot.com/2012/10/control-de-robot-movil-java.html

Anónimo dijo...

Rolando, estoy probando con netbeans 7.2 en 64 bit y me lanza el siguiente error "No se encontro la libreria jpicusb.dll en C:\DriverPICUSB\jpicusb 1.1.1\" , he usado jpicusb 64 bit y sigue el problema. Alguna idea, GRACIAS.

Rolando Palermo Rodríguez Cruz dijo...

Buenas tardes amigo, quizás sea necesario instalar las Runtimes de Visual C++. Lo puedes descargar en el siguiente enlace: http://www.microsoft.com/downloads/details.aspx?familyid=A5C84275-3B97-4AB7-A40D-3802B2AF5FC2&displaylang=en
Nos comentas qué tal te fué.
Saludos.

Anónimo dijo...

Bueno, instalé Netbeans con JDK para S0 de 32 bits en una máquina de 64 bits y FUNCIONA muy bien.
Doy por solucionado mi problema.

Anónimo dijo...

Muy interesante tus trabajos, me han servido de mucha ayuda, sigue así amigo. En tu experiencia, me gustaría saber si es posible realizar una interfaz en java para quemar el pic es decir mandarle el .hex, Tienes alguna idea por donde debo empezar?

facplay dijo...

Hola, saludos, lo que pasa es que uso window 7 y proteus 7.9 y me sale un error al conectar el PIC al puerto virtual usb, dice que no se puede iniciar bien, y ya comprobé que no es el driver de Microchip, si alguien sabe.

Rodolfo Gonzalez dijo...

Excelente trabajo
me podrias facilar el proyecto de java
donde aparecen el formulario con todos los botones, el que aparece en el video
anroro19@hotmail.com
fhitoo@gmail.com

Gracias

Rolando Palermo Rodríguez Cruz dijo...

Gracias Rodolfo
Te comento que para tener un poco más claro el uso de esta aplicación revises la siguiente entrada: http://blog.rolandopalermo.com/2012/10/control-de-robot-movil-java.html

GENARO dijo...

Hola amigos me gustaría que me dijeran que driver están utilizando al momento de simular la conexión del pic en proteus, ya que me pide un driver pero no se cual es, si alguien me pudiera contestar a mi correo.
Muchas gracias de antemano.

sk_8_917@hotmail.com

oscarlisvalo dijo...

amigo por favor contestame esta pregunta:
yo hice el programa en mikroc para el pic y desde una aplicacion de mikroc que se llama hid terminal envia y recibe bien datos hacia el pic en proteus, luego hice el programa en java con el mismo vid y pid , pero no existe ninguna comunicacion entre java y el pic, ¿acaso me falta configurar algo? ¿o tengo que instalar algun driver par java?, ya instale los drivers virtuales de proteus.

Anónimo dijo...

por favor alguien responda!!!!!

Miguel Angel dijo...

el sistema que tiene tu enlace no es el mismo que se ve en el video porfa pasamela la del video porfa
macsmicky@gmail.com

Uriel M dijo...

Hola, para los que no les carga la dll, esto se resuelve instalando el jdk de 32 bits y configurando el proyecto para que compile utilizando dicho jdk

Anónimo dijo...

En Windows 7 (32 bits), de forma aleatoria aparece "Custom USB device",
pero aun así no hay manera de encontrar el dispositivo con el software de prueba (la libreria de la clase iface JPicUSB va de culo y al enumerar
encuentra CERO dispositivos).
Sin embargo en proteus Si que funciona en modo virtual (simulacion DSN).
Pero en el hardware real NO.
O bien Microsoft nos jode adrede, o bien se han puesto de acuerdo
con Microchip (una perdida de tiempo y un ASCO).

Anónimo dijo...

En Windows 7 (32 bits), de forma aleatoria aparece "Custom USB device",
pero aun así no hay manera de encontrar el dispositivo con el software de prueba (la libreria de la clase iface JPicUSB va de culo y al enumerar
encuentra CERO dispositivos).
Sin embargo en proteus Si que funciona en modo virtual (simulacion DSN).
Pero en el hardware real NO.
O bien Microsoft nos jode adrede, o bien se han puesto de acuerdo
con Microchip (una perdida de tiempo y un ASCO).

Si encuentro alguna solucion volvere a postear, para que no tengamos todos que pasar por esta mierda.

AXEL dijo...

Hola que tal disculpa los valores de la temperatura también se grafican ? lo que pasa es que yo quiero obtener gráficas de un sensor de fuerza que tengo conectado a un pic y realmente sería un proyecto similar solo que necesito mucho las graficas

Diego Guillén dijo...

Hola que tal, muchas gracias por el pos esta excelente, sin embargo me surgen algunas dudas ¿Para usar el pic con el usb de al pc se necesita un firmware especial que permita la comunicación o solo lo conectas y listo? en caso de necesitar el firmware ¿Donde consigo el firmware que sea compatible con la librería jpicusb? saludos.

Anónimo dijo...

Amigo , te felicito con tu proyecto . En este momento estoy haciendo un parqueadero robotizado y necesito una tarjeta de datos con temperatura,camaras , actuadores mecanicos ... Si me podrías facilitar todo el proyecto del formulario con botones me serviria increiblemente ,le agregaria un par de cosas que le faltan. sebastiandejoy@unicauca.edu.co

Anónimo dijo...

hola, lo que me sucede es que soy estudiante de tecnologia en electronica y estoy empezando a ver programacion, el profesor nos sorteo unos proyectos para final de semestre algo similar a tu proyecto pero no tan complejo, meditr una temperatura y mostrarla en una aplicacion en el pc, la verdad estoy preocupado con este proyecto poque segun el contenido programatico de la materia no vamos a ver programacion con aplicaciones en pc ni comunicacion por usb, sera que me podrias colaboras con informacion de tu proyecto?
perdona el abuso pero no se que hacer
jamilton_g@hotmail.com

Rolando Palermo Rodríguez Cruz dijo...

Buenas noches

Mi correo es rolando.roc@gmail.com

Andrés Felipe Rodríguez Cuervo dijo...

Amigo como hago para que mi compu reconozca el puerto virtual

Publicar un comentario