jueves, 6 de noviembre de 2014

Configuración de un módulo bluetooth maestro/esclavo como esclavo

Antes que nada hay que saber un poco sobre la tecnología Bluetooth. Bluetooth es una especificación tecnológica para redes inalámbricas que permite la transmisión de voz y datos entre distintos dispositivos mediante una radiofrecuencia segura de 2,4 GHz. Esta tecnológica permite crear redes inalámbricas domésticas para sincronizar y compartir la información que se encuentra almacenada en diversos equipos.

Por otro lado, los comandos AT son instrucciones codificadas que conforman un lenguaje de comunicación con un terminal módem, en este caso el módulo Bluetooth.  Los comandos AT se denominan así por la abreviatura de attention.

Este módulo Bluetooth se puede configurar tanto como un dispositivo esclavo o un dispositivo maestro y tiene una ligera diferencia con los demás módulos al momento de enviar los comandos AT. El módulo viene por defecto en modo esclavo, así que tanto el nombre como la contraseña están definidos.
Para este caso se usan los siguientes comandos:

AT+ROLE=0\r\n
Este comando define el modo en el que funcionará el modulo bluetooth, un 1 significa que se desea configurar en modo maestro, mientras un 0 indica modo esclavo. Como queremos configurar en modo esclavo usaremos "AT+ROLE=0\r\n"

AT+PSWD=4444\r\n
Este comando define una contraseña, como el módulo está configurado como esclavo, el comando indica la contraseña asociada al módulo.
Ahora vamos a implementar el circuito para configurar el módulo. Para ello necesitamos los siguientes componentes.


 Componentes a utilizar
  • Arduino Uno
  • Resistencia de 220 Ω
  • LED
  • Módulo Serial Bluetooth(maestro/esclavo)
  • Protoboard


Circuito



Finalmente, en el código que vamos a escribir vamos a usar la librería SoftwareSerial, la cual permite una comunicación serial a través de cualquier pin digital del Arduino. En la página de Arduino pueden encontrar más información sobre la librería SoftwareSerial.


Código

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

//Se definen los pines TX y RX, en este caso pin 2 = Rx, pin 3 = Tx
SoftwareSerial mySerial(2,3);

//Variable para control de configuracion
boolean configurado = false;
 
void setup(){
   pinMode(13,OUTPUT);     //Pin 13 para control del proceso
   Serial.begin(9600);     //se inicia comunicacion serial
   digitalWrite(8, LOW);
   mySerial.begin(9600);   //se inicia comunicacion bluetooth
   digitalWrite(13, LOW);  //se apaga el led 13
}
 
 
void loop(){
 
  if (configurado){
    digitalWrite(8, LOW);
    /* Parpadeo para verificar su funcionamiento */
    digitalWrite(13, HIGH);  //se enciende el led
    delay(1000);             //Espera de 1 segundo

  }
  else{
    digitalWrite(13, HIGH); // se inicia el tiempo de espera para reconectar
    digitalWrite(8, HIGH);  // se coloca el pin KEY en 
ALTA 
    delay(1000);            
// (asi se encontrara en modo AT)
    digitalWrite(13, LOW);  // Tiempo de espera agotado para reconectar
    
    Serial.println("AT");  
    mySerial.write("AT\r\n"); //se inicia la comunicacion con modulo BT
    delay(1000);              //Espera de 1 segundo
    while(mySerial.available()>0) {
      Serial.write(mySerial.read()); 
    }     
    Serial.println();

    Serial.println("AT+ROLE=0\r\n"); 
    mySerial.write("AT+ROLE=0\r\n"); 
    delay(1000);            //Espera de 1 segundo  
    while(mySerial.available()>0)     Serial.write(mySerial.read());    

    Serial.println("AT+PSWD=4444\r\n"); 
    mySerial.write("AT+PSWD=4444\r\n"); //se establece el pin de 
    delay(1000);                        //
asociacion(contraseña)
    while(mySerial.available()>0)     Serial.write(mySerial.read());
    
    digitalWrite(8,HIGH);
    /* En este punto debe estar configurado */
    digitalWrite(13, HIGH); //se mustra que todo ha funcionado 
    configurado = true;     //
segun lo esperado
  }
}

//////////////////////////////////////////////////////////////////////////

Pasos a seguir:

    1: El módulo no debe estar vinculado a ningún dispositivo.

    2: La forma visual de conocer el estado del módulo:
        Led fijo --> Emparejado
        Led intermitente --> Sin emparejar

    3: Definir mediante la librería SoftwareSerial los nuevo pines TX, RX para el Arduino
        Conectar el TX del módulo Bluetooth al RX del arduino
        Conectar el RX del módulo Bluetooth al TX del arduino

    4: Realizar las conexiones tal como se muestra en el circuito
          NOTA: Al momento de hacer las conexiones asegurarse de que la tarjeta Arduino
                      no esté conectada.

    5: Cargar el programa, seguidamente verifique que el led del módulo bluetooth                          comience a parpadear de manera rápida. Esto indica que se encuentra en modo AT a         9600 baudios, si por lo contrario el led parpadea de forma lenta indica que el módulo           está en modo AT a 38400 baudios. En el código se le ha configurado a 9600 baudios.           Hay que repetir el paso 5 y 6 hasta lograr que el LED parpadee de manera rápida.

   6: Probamos la comunicación con el módulo, mediante el comando de testeo: AT\r\n.               Seguidamente se deberá visualizar la respuesta en el Monitor Serial. Se espera la                respuesta OK. Si esta respuesta no aparece, verificar las conexiones.

   7: Si se confirma la respuesta, ingresamos los comandos AT según nuestro interés.

   8: Verificar que los comandos AT son recibidos correctamente mediante el monitor                    serial(se debe esperar una respuesta OK, después de enviar los comandos AT).