Una de las grandes dificultades a la hora de poseer un dispositivo controlado con AT commands como un Bluetooth o un GPRS, es ser capaces de acceder al modo de configuración para introducir estos comandos sin morir de aburrimiento en el intento.

Para ahorrar tiempo describiremos diferentes maneras de acceder a estos dispositivos mediante comandos AT.

Para este ejemplo disponemos de un módulo Bluetooth HC-05 que podemos conectar al puerto Serial de Arduino. Resumidamente hemos de conectar los pines de recepción (RX) y transmisión (TX); que por defecto son los pines 0 y 1 respectivamente de nuestra placa con los pines de transmisión (TX) y recepción (RX) del módulo de forma inversa; tal y como se indica en la figura.

hc-05-serialUNO_bbLo más importante a tener en cuenta es que debemos de activar el modo de configuración del Bluetooth a través de el PIN EN o KEY, que debe de estar activo con un voltaje y que en este caso conectacmos al pin de 3,3V.

ATENCIÓN: Hay algunos módulos HC-05 que disponen de un botón diminuto y que hay que apretar antes de conectarlo a la alimentación. En el momento en el que entre en modo configuración; el LED parpadeará más lento de lo normal y podemos verificar que ha cambiado de modo.

BTMode

El siguiente código es una manera de poder comunicarse en modo configuración a través de la placa Arduino. Desgraciadamente este modo requiere conectar y desconectar los cables en el PIN 0 y 1 cada vez que se carga el programa, ya que la Arduino UNO, solo dispone de estos dos pines para definir el Serial.

void setup(){
   Serial.begin(38400);

   Serial.println("AT+ADDR");
}

void loop(){
   while (Serial.available()){
      Serial.write(Serial.read());
   }

}

En este código introducimos los comandos AT desde el programa (NO desde el terminal) y podemos ver la respuesta, pero no es la forma más cómoda.

A través de la librería SoftwareSerial se pueden cambiar estos dos pines para establecer la comunicación y realizar lo anterior en tiempo real, ya que utilizaremos el puerto serie para depurar y el puerto virtual por el pin 2 como RX y el pin 3 como TX.


#include <SoftwareSerial.h>
SoftwareSerial BT(2,3); // RX | TX
long bps=38400;

void setup(){ 
   Serial.begin(bps);
   BT.begin(bps);
   Serial.println("AT");
   BT.println("AT");
}

void loop(){ 
   String B= "." ;
   if (BT.available()){
      char c = BT.read() ;
      Serial.print(c);
   }
   if (Serial.available()){
     char c = Serial.read();
     BT.print(c);
   }
}

Si queremos seguir interactuando en tiempo real debemos buscar otras soluciones que detallamos a continuación.

Otra de las opciones es utilizar una placa Arduino con varios puertos Serial; en este caso la placa Arduino Mega dispone de varios pines serie Serial1(TX1, RX1); Serial2(TX2, RX2); Serial3(TX3, RX3).

 

Éste código es de los más cómodos para utilizar, ya que utilizamos distintos puertos serie para enviar o recibir la información de configuración a través del monitor.  Así que no necesitaremos cargar continuamente distintos sketches para configurar el módulo. Con esta opción tambén se pueden conectar varios módulos Bluetooth y poder intercambiar información entre ellos, que es un buen modo de desarrollo y aprendizaje para este fin.


void setup(){
   Serial.begin(38400);
   Serial1.begin(38400);

   Serial1.println("AT");
}

void loop(){

   while (Serial1.available()){
      Serial.write(Serial1.read());
   }
   delay(50);

   while (Serial.available()){
      Serial1.write(Serial.read());
   }
   delay(50);
}

Por último tenemos una opción adicional que no requiere una placa intermediaria entre el ordenador y el módulo Bluetooth. Y es la utilización de un adaptador USB UART

sku145351-7-Este adaptador sigue siendo una comunicación serie conectada como los ejemplos anteriores en sus pines RX y TX.

 

USBHC05

En lugar de instalar un programa en una placa; que en este caso no tenemos, lo que haremos será abrir un terminal de comunicación a través de este USB para introducir comandos AT de forma directa. Para Linux utilizo un terminal llamado Cutecom. En este terminal es necesario configurar la comunicación a 38400 baudios, a 8 bits de paridad y 1 de bit de parada. Tal y como aparece en la figura.

 

Cuando introduzcamos los distintos comandos podremos ver la respuesta en el momento. Así que ya podemos jugar comodamente con los comandos Hayes de nuestros dispositivos.

No solo podemos utilizar módulos Bluetooth, sino que también se pueden conectar otros dispositivos como un GPRS SIM900 del que hablamos anteriormente.

P.D.: Acordáos de pulsar el botón del Bluetooth para habilitar el modo de configuración. Si no funciona puede ser por esa tonteria y podemos perder mucho tiempo.