sábado, 31 de mayo de 2014

Bluetoth en Arduino - El modulo JY-MCU - Recepcion de datos

Comunicacion por Bluetooth desde un PC o un movil.




Conectaremos LED a los PIN 5,6,7 del Arduino

Codigo para Arduino

  /*
 El siguiente programa recibe la informacion desde un
 celular por medio del software antes mencionado.
 Este software se usa como un monitor serial, mediante
 el cual se envia la informacion que sera recibida por
 el modulo bluetooth.
 */
 #include<SoftwareSerial.h>
  //Se configuran los PIN TX/RX
 SoftwareSerial mySerial(12,11);// TX, RX
 //
 void setup()
 {     
   //inicializa la comunicacion serial 
    Serial.begin(9600);
    mySerial.begin(9600);
 
   //se configura los pines de entrada y salida  
    pinMode(05,OUTPUT);
    pinMode(06,OUTPUT);
    pinMode(07,OUTPUT);
   
 // inicializa el estdo de los LEDs  
    digitalWrite(05,HIGH);
    digitalWrite(06,HIGH);
    digitalWrite(07,HIGH);
    delay(1000);
    digitalWrite(05,LOW);
    digitalWrite(06,LOW);
    digitalWrite(07,LOW);  
 }

 void loop()
 {

         char c=mySerial.read();
         Serial.print('Llegit...: ');
        
          if(c=='W') digitalWrite(05,HIGH); Serial.println("W");
          if(c=='V') digitalWrite(06,HIGH); Serial.println("V");
          if(c=='U') digitalWrite(07,HIGH); Serial.println("U");
          if(c=='w') digitalWrite(05,LOW);  Serial.println("w");
          if(c=='v') digitalWrite(06,LOW);  Serial.println("v");
          if(c=='u') digitalWrite(07,LOW);  Serial.println("u");
   
 }

Bluetoth en Arduino - El modulo JY-MCU - Configuracion

Bluetoth en Arduino (Modulo JY-MCU)

Configurar el modulo
Fritzing Diagram

Codigo para Arduino (http://www.blogtrog.com/default.aspx)

//******************************************************************
// Cambio de la configuracion del modulo bluetooh
// mediante comandos AT.
//
// Pasos a seguir:
//    1: El modulo no debe estar vinculado a ningun dispositivo.
//       Led fijo --> Emparejado
//       Led intermitente --> sin emparejar
//
//    2: Definir mediante la libreria SoftwareSerial los nuevos
//       pines TX,RX para el arduino
//
//    3: Conectar el TX del Modulo Bluetooth al RX del arduino
//       Conectar el RX del modulo Bluetooth al TX del arduino
//
//    4: Cargar el programa
//
//    6: Comunicar con el modulo (AT)
//
//    7: Cambiar el nombre del modulo (AT+ANAME)
//
//    8: Ajustar la velocidad de comunicacion (AT+BAUD)
//          1 --> 1200 baudios
//          2 --> 2400 baudios
//          3 --> 4800 baudios
//          4 --> 9600 baudios (por defecto)
//          5 --> 19200 baudios
//          6 --> 38400 baudios
//          7 --> 57600 baudios
//          8 --> 115200 baudios
//
//    9: Configurar pin de asociacion (AT+PIN)
//
//******************************************************************

//Se declara esta libreria especialmente para la comunicacion bluetooth
#include<SoftwareSerial.h>

//Se define los pines TX y RX, en este caso pin12=Tx, pin11=Rx
SoftwareSerial mySerial(12,11);

//Variable para control de configuracion
boolean configurado = false;

void setup(){
   pinMode(13,OUTPUT);    //Pin13 para control del proceso
   Serial.begin(9600);    //Iniciamos comunicacion serial
   mySerial.begin(9600);  //Iniciamos comunicacion bluetooth
   digitalWrite(13, LOW); //Apagamos el led 13
}


void loop(){

  if (configurado){
    /* Parpadeo para verificar su funcionamiento */
    digitalWrite(13, HIGH); //Enciende el led
    delay(1000);            //Espera 1 segundo
    digitalWrite(13, LOW);  //Apaga el led
    delay(1000);            //Espera 1 segundo
  }
  else{
    digitalWrite(13, HIGH); //Empezamos el tiempo de espera para reconectar
    delay(1000);            //Espera de 1 segundo (se puede variar)
    digitalWrite(13, LOW);  // Tiempo de espera agotado para reconectar

   
    Serial.println("AT"); 
    mySerial.write("AT");   //comenzamos la comunicacion con modulo BT
    delay(1000);            //Espera de 1 segundo
    while(mySerial.available()>0)     Serial.write(mySerial.read());     
    Serial.println();

      Serial.println("AT+NAMEArduinoBT"); 
      mySerial.write("AT+NAMEArduinoBT"); //Le ponemos un nombre al dispositivo
      delay(1000);                        //Espera de 1 segundo   
      while(mySerial.available()>0)     Serial.write(mySerial.read());   
      Serial.println();       

    Serial.println("AT+BAUD4");
    mySerial.write("AT+BAUD4"); //Establecemos la velocidad en 9600
    delay(1000);                //Espera de 1 segundo   
    while(mySerial.available()>0)     Serial.write(mySerial.read());   
    Serial.println();       

    Serial.println("AT+PIN0000");
    mySerial.write("AT+PIN0000"); //Establecemos contrase񡍊    delay(1000);                  //Espera de 1 segundoM   
    while(mySerial.available()>0)     Serial.write(mySerial.read());   

    /* En este punto debe estar configurado */
    digitalWrite(13, HIGH); //Mostramos que todo ha funcionado segun lo esperado
    configurado = true;     //Centinela para no volver a configurarlo, salvo que se resetee
  }

}