jueves, 20 de marzo de 2014

Configuración Módulo Bluetooth HC-06

          Hasta ahora hemos visto como mandar comandos de dos formas: la primera es escribiendo una rutina en 'Loop' que se repite continuamente, esto es, haciendo siempre lo mismo una y otra vez; la segunda es mediante pulsadores simulando un mando conectado directamente al Arduino, con el cual y dependiendo del botón pulsado se hará una acción u otra. Pues bien, vamos a ver a partir de ahora una tercera opción, que será con la que controlemos MotorDroid, y no es otra que mediante Bluetooth.


          Para ello usaremos el módulo bluetooth HC-06 de cuatro pines, Vcc, Gnd, Txd y Rxd. Con ello tendremos un puerto serial adicional a nuestra disposición que será con el que nos comunicaremos con Arduino para mandar comandos que ejecuten acciones. Conectaremos el módulo en el Serial 3 de nuestro Arduino Mega como podéis ver en el prototipo.


      Importante, hay que conectar el pin RDX del BT con el TDX de Arduino y el TDX del BT con el TDX de Arduino, no os confundáis, que a mi me pasó la primera vez. Pues bien, para configurar sólo necesitamos escribir código en el 'Setup' del sketch. ES importante que antes de comenzar a ejecutar tengamos desconectado el módulo, y conectarlo en el momento en el que se va a pedir. Mediante comandos AT iremos configurando la velocidad de comunicación, nombre del dispositivo y contraseña.

//Función 'Setup'
void setup(){
  //Inicializamos el Serial
  Serial.begin(9600);
  //Inicializamos el Serial BT, que está conectado puerto 3 de comunicación
  Serial3.begin(9600);
  //Esperamos 5 segundos para conectar el BT a los pines
  Serial.println("CONECTE EL BT MODULE");
  delay(10000);
  //Mandamos el comando AT para comenzar a configurar
  Serial3.print("AT");
   Serial.println("CONFIGURANDO");
  //Siempre que mandemos un comando al BT tenemos que esperar un segundo
  delay(1000);
  //Cambiamos de nombre enviando AT+NAME seguido del nombre deseado
  Serial3.print("AT+NAMEMOTORDROID");
   Serial.println("Configurando Nombre");
  //Esperamos los cambios
  delay(1000);
  //Cambiamos la velocidad del módulo
  Serial3.print("AT+BAUD4");
   Serial.println("Configurando velocidad");
  //Esperamos los cambios
  delay(1000);
  //Cambiamos la contraseña enviando AT+PIN y la que queramos
   Serial.println("Configurando pin");
  Serial3.print("AT+PIN1990");
  //Esperamos los cambios
  delay(1000);
  //Mostramos por puerto serial la finalización de la configuración
  Serial.println("TERMINADO");
}

//Función 'Loop'
void loop(){
  //No hacemos nada
}

          Tal y como está comentado en el sketch, cada vez que mandemos un comando es necesario esperar un segundo para que este se ejecute correctamente y podamos escribir el siguiente. en el vídeo podéis ver como cambia la configuración antes y después de ejecutar el código. Y con esto empezamos a dejar de usar cables. =D