VAML

VAML
Victor Manzanero

martes, 26 de abril de 2011

Primer tutorial: Arduino desde Java

Comenzamos con el primer Tutorial del blog, para los que nos gusta mezclar el Software y hardware, y queremos hacerlo desde Arduino y java. aquí están estos pequeños pasos para hacerlo.


****Damos por hecho que ya tiene instalado Netbeans y Arduino*********

Paso 1.- Preparar arduino .
colocamos un led en arduino de la siguiente manera.

Se encuentra en el pin 13.

Abrimos el ejecutable de arduino nos vamos a File>Examples>Blink

nos abrirá uno de los ejemplo que hacer parpadear un led en el pin 13 cada segundo.
el Código es el Siguiente


Lo tendremos que modificar de la siguiente manera:
Después de modificarlo lo compilamos(-con icono parecido a play debajo de File) y si todo anda bien lo subimos (Verifique que esta en el puerto corecto y que tiene seleccionado la placa correcta).Ya que tengasmos el programa en arduino hasta aquí por el momento con la placa (No desconecte)nos vamos a Netbeans.


Paso 2: Abrimos Netbeans y nos vamos a File>New project... nos aparecerá la siguiente ventana.


Seleccionamos java y java application como se ve en la figura y presionamos next > y veremos la siguiente Ventana.

Escoja un nombre para el proyecto nuevo en mi caso use "ArduinoAndJava", desmarque la opción que dice Create Main Class pues no la necesita remos, la ventana le quedara de la siguiente forma.

Cuando tengamos de esta manera la ventana le damos en Next >.

y ahora tendremos la siguiente Ventana.
 ya podemos ver nuestro nuevo proyecto creado lo seleccionamos y le damos un click derecho(click secundario), y hasta lo ultimo seleccionamos properties..
Se abrirá otra ventana y seleccionamos Run como se ve en la siguiente imagen.
Localizamos la parte que dice Working Directori y damos click en Browse... ahi se abrirá otra ventana para seleccionar la ruta donde se encuentra la carpeta de arduino así como se ve en la sig. imagen.


Después de seleccionar la ruta veremos algo así.
Una vez hecho esto damos a Ok y terminamos con este paso.

Paso 3: Librerias

Localizamos nuestro proyecto y le damos click a la flecha que esta junto y se abrirán nuevas carpetas y seleccionamos la que dice Libraries como se ve enseguida.

La seleccionamos con un click derecho y veremos lo siguiente.

Le damos click en el boton que dice Create veremos ....
En Libreries Name ponemos ARDUINO y pulsamos ok.
Veremos algo parecido a la imagen de arriba, tendremos que buscar la carpeta de arduino que nos descargamos y dentro de esas carpeta localizamos otra llamada > lib ahi se encuentran todas las librerías que necesitamos para que java pueda comunicarse con arduino. veremos lo siguiente
Seleccionamos todos lo Jars que ahi vemos y pulsamos add JAR/Folder.
Ahora veremos la ventana anterior seleccionamos la librería que acavamos de crear y pulsamos en. Add Libra...
listo tenemos todas la librerías necesarias, y ahora solo necesitamos el código. espero que hasta aquí todo vaya perfecto. continuamos.
Paso 4:Añadir clases
Le damos click derecho a nuestro proyecto nuevo y seleccionamos New>Java class
y le ponemos  nombre a nuestra clase, en mi caso le puse "led".  como vemos enseguida.
y presionamos Finish. veremos....

y agregamos los siguientes métodos para que todo funcione muy bien.

//arreglo que contine los posibles nombres que tendrán los puertos donde se conectara el arduino
            private static final String PORT_NAMES[] = {
            //"/dev/tty.usbserial-A9007UX1", // Mac OS X
            //"/dev/ttyUSB0", // Linux
                        "/dev/ttyUSB0"
            ,"COM3" // Windows
            };


    static public class MyPrefs extends Preferences {
        static public void init() {
            Preferences.init("/home/victor/.arduino/preferences.txt");//para linux
           //Preferences.init("c:/preferences.txt");//para windows
        }
    }

    /** Creates new form led */
    public led() {
        initComponents();
    }


    private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButton1ActionPerformed
        // TODO add your handling code here:

        //Este es el codigo del boton que prendera el led se manda un uno que arduino interpretara por su respectivo codigo ascii que para el uno es 49
        sendMessage("1");


    }//GEN-LAST:event_jButton1ActionPerformed

    private void jButton2ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButton2ActionPerformed
        // TODO add your handling code here:
           //Este es el codigo del boton que apagara el led se manda un dos que arduino interpretara por su respectivo codigo ascii que para el dos es 50
        sendMessage("2");

    }//GEN-LAST:event_jButton2ActionPerformed

    private void jMenu3MouseClicked(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_jMenu3MouseClicked
        // TODO add your handling code here:
        //extra al darle click cierra toda la aplicacion
        this.dispose();
    }//GEN-LAST:event_jMenu3MouseClicked

    //metodo encardago de mandar los datos a arduino
   public static synchronized void sendMessage(String cadena) {

            byte[] asd;//arrglo de tipo byte
            asd=cadena.getBytes();//linea que sirve para descomponer un caracte a una forma de bits(ascii)
            try {
                output.write(asd);//escribe en el puerto serie lo que se encuentre en el arreglo bite
            } catch (IOException ex) {
             Logger.getLogger(led.class.getName()).log(Level.SEVERE, null, ex);//si no loga enviar la cadena lo intenta de nuevo
            }
    }

    /**
    * @param args the command line arguments
    */


   //metodo principal o main
    public static void main(String args[])throws Exception {

        java.awt.EventQueue.invokeLater(new Runnable() {
            public void run() {
                new led().setVisible(true);
            }
        });
         MyPrefs.init();
        System.out.println("puerto usado: " + MyPrefs.get("serial.port"));
        System.out.println("targeta utilizada: " + MyPrefs.get("board"));

        /*CommPortIdentifier portId = CommPortIdentifier.getPortIdentifier(
                MyPrefs.get("serial.port"));*/

        CommPortIdentifier portId = null;
        Enumeration portEnum = CommPortIdentifier.getPortIdentifiers();

        // iteraciones para buscar el puerto
        while (portEnum.hasMoreElements()) {
            CommPortIdentifier currPortId = (CommPortIdentifier) portEnum.nextElement();
            for (String portName:PORT_NAMES) {
                if (currPortId.getName().equals(portName)) {
                    portId = currPortId;
                    break;
                }
            }
        }

                //se crea objeto de la clase
        led m=new led();
        //inicializar  serialport
        serialport = (SerialPort)portId.open(m.getClass().getName(), 9600);

   
        output = serialport.getOutputStream();
        serialport.setSerialPortParams(MyPrefs.getInteger("serial.debug_rate"),
                SerialPort.DATABITS_8,
                SerialPort.STOPBITS_1,
                SerialPort.PARITY_NONE);

    }
Listo estos son los métodos principales.
Código completo librerías o lo que necesiten solo manden un correo a vctr.31@hotmail.com y con gusto se los are llegar.
una ves que tenga el codigo veran lo siguiente.

(El arduino debe estar conectado con el programa del principio del tutorial)
Y como se puede ver un click en el boton encender y el led lo hara. asi como tambien reaccionara al botón apagado.

Les dejo un vídeo con el funcionamiento del mismo.
  por el momento es todo espero que les guste, muchas gracias.





código completo, librerías , dudas y lo que necesiten a vctr.31@hotmail.com
y comente si quiere algún otro tutorial.
hasta pronto








lunes, 25 de abril de 2011

Bienvenidos

Les doy la más cordial de las bienvenidas a este nuevo Blog en el que iremos aprendiendo a manejar java un poco más. Manejo de puertos, Gráficas, MySQL, Enviar y recibir datos de Internet y lo que a ustedes se les ocurra.

En nuestra primera publicacion aprenderemos a manejar arduino desde Java, encenderemos y apagaremos un Led con una interfaz gráfica de java.

Antes de comenzar este pequeño tutoríal Cabe mencionar que, damos por hecho que tiene Netbeans de ID para Java y que ya tiene Funcionando arduino.
Locations of visitors to this page