Go Down

Topic: Arduino Uno + Blueetooth Bee + J2Me (Read 2465 times) previous topic - next topic

Hola a todos ...

Compré hace poco la placa arduino uno y el módulo Bluetooth Bee ( http://garden.seeedstudio.com/index.php?title=Bluetooth_Bee ) . Quisiera ver si es posible comunicar por bluetooth desde una aplicación en java ( j2me ).

He logrado conectarme desde j2me al módulo bluetooth pero no logro comunicarme con él. Supongo que es porque me falta información de como hacerlo o bien no se puede ;-)

aca les dejo el código en j2me que estoy usando para conectarme al módulo bluetooth

Code: [Select]

import javax.microedition.midlet.*;
import javax.microedition.lcdui.*;

import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import javax.microedition.io.Connector;
import javax.microedition.io.StreamConnection;

public class btspp_connect extends MIDlet implements CommandListener {

    private Display mDisplay;
    private Command exitCmd;
    private Command connectCmd = new Command("Connect", Command.ITEM, 1);
    private Form mForm;

    StreamConnection conn       = null;
    InputStream      is         = null;
    OutputStream     os         = null;
    String           message    = null;


    public void startApp() {
        if ( mForm == null ) {
            mForm = new Form( "ArduinoBT connect!" );
            exitCmd = new Command( "Exit", Command.EXIT, 0 );
            mForm.addCommand( exitCmd );
            mForm.addCommand( connectCmd );
            mForm.setCommandListener( this );
            mDisplay = Display.getDisplay( this );
        }
        mDisplay.setCurrent( mForm );
    }

    public void pauseApp() {
    }


    public void destroyApp( boolean unconditional ) {
    }


    public void commandAction( Command c, Displayable s ) {
        if ( c == exitCmd ) {
            destroyApp( true );
            notifyDestroyed();
        } else {

            // -------------------------------------------------
            try {
                conn = (StreamConnection) Connector.open ("btspp://0018E425C27B:1;authenticate=false;encrypt=false;master=false", Connector.READ_WRITE);
               
                os = conn.openOutputStream();
                os.write('a');

                is = conn.openInputStream();
                byte buffer[] = new byte[24];
                is.read(buffer);
                message = new String(buffer);

                System.out.println(message);
                mForm.append(new StringItem(null, "\n" + message));

            } catch (IOException io) {
                // handle exception
                mForm.append(new StringItem(null, "\n" + "Error"));

            } finally {
                if (conn != null) {
                    try {
                        conn.close();
                    } catch (IOException ignored) {}
                }

                if (os != null) {
                    try {
                        os.close();
                    } catch (IOException ignored) {}
                }

                if (is != null) {
                    try {
                        is.close();
                    } catch (IOException ignored) {}
                }

            }
            // --------------------------------------------------
        }
    }
}


y el código que cargo en la placa arduino uno

Code: [Select]

#include <NewSoftSerial.h>   //Software Serial Port
#define RxD 11
#define TxD 12

#define DEBUG_ENABLED  1

NewSoftSerial blueToothSerial(RxD,TxD);

void setup()
{
    Serial.begin(9600);
    Serial.println("Log");
    delay(2000);

    pinMode(RxD, INPUT);
    pinMode(TxD, OUTPUT);
    setupBlueToothConnection();

}

void loop()
{
 
   leerBT();
   delay(200);
   
   /*
   if(blueToothSerial.read() == 'a')
   {
     blueToothSerial.println("hola");
     Serial.println("OK");
   }
   */
}

void setupBlueToothConnection()
{
    blueToothSerial.begin(38400); //Set BluetoothBee BaudRate to default baud rate 38400
    delay(1000);
    sendBlueToothCommand("\r\n+STWMOD=0\r\n");
    sendBlueToothCommand("\r\n+STNA=SeeeduinoBluetooth\r\n");
    sendBlueToothCommand("\r\n+STAUTO=0\r\n");
    sendBlueToothCommand("\r\n+STOAUT=1\r\n");
    sendBlueToothCommand("\r\n +STPIN=0000\r\n");
    delay(2000); // This delay is required.
    sendBlueToothCommand("\r\n+INQ=1\r\n");
    delay(2000); // This delay is required.

}

//Checks if the response "OK" is received.
void CheckOK()
{
  char a,b;
  while(1)
  {
    if(int len = blueToothSerial.available())
    {
    a = blueToothSerial.read();

    if('O' == a)
    {
      b = blueToothSerial.read();
      if('K' == b)
      {
        break;
      }

    }
   }
  }

  while( (a = blueToothSerial.read()) != -1)
  {
    //Wait until all response chars are received
  }
}

//Send the command to Bluetooth Bee
void sendBlueToothCommand(char command[])
{
    blueToothSerial.print(command);
    CheckOK();   
}

//
void leerBT()
{
  char a;
  if(int len = blueToothSerial.available())
  {
    while( (a = blueToothSerial.read()) != -1)
    {
      Serial.println("leido: " + a);   
    }     
  }
}


Como dije antes, la conexión entre el módulo bluetooth y j2me se realiza, pero al enviar el caracter 'a' este nunca llega al módulo bluetooth.

Como pueden ver, el módulo bluetooth está configurado como slave.

Si alguien tiene alguna info sería bienvenida.

Gracias
Miguel Lucero
LSIS Argentina

Go Up