miércoles, 5 de febrero de 2014

Probamos el Bluetooth (I)


Llevaba yo bastante tiempo pegándome con el módulo Bluetooth de nuestro "kit de electronica bq" para probarlo y compartir la experiencia en este blog, cuando un compañero del trabajo me pidió si podía ayudarle en un proyecto para modificar unos juguetes especiales adaptados para niños con problemas de movilidad.

Por supuesto, el reto era estupendo como ejemplo práctico para el uso del módulo Bluetooth y que decir del fin, el poder aportar algo para ayudar a unos niños, pues eso, ¡¡no tiene precio!!


Bueno, me puse manos a la obra y a la hora de escribir la entrada en el blog, resultó ser demasiado larga y espesa, algo contraproducente para lo que nos proponemos, que es  ayudar y no agobiar al personal, que como yo, está empezando en esto, por lo que  he decidido repartir la información de dos entradas.

En la primera parte contaremos todo lo referente al modulo Bluetooth e intentar aportar algo de información sobre él y en la segunda entrega, contaremos lo referente a la aplicación de los juguetes como ejemplo practico del uso de este módulo. ¡Empecemos!

¿Que es el modulo bluetooth?

El módulo bluetooth es una placa electrónica que nos permite realizar comunicaciones de calidad bastante aceptables mediante el sistema Bluetooth. En el mercado podemos encontrar distintos modelos, aunque los mas vistos (creo yo) son HC-05 y el HC-06 y aunque ambos módulos se parecen bastante, la verdad es que la forma de configurarlo varían de un modelo a otro, lo que nos puede traer de cabeza  (y lo digo por experiencia) ya que, o bien, no hay mucha información sobre ello en la red, o bien (que será lo mas seguro), yo no he sabido encontrarla a tiempo.

Otra cosa recomendable a la hora de comprar un módulo Bluetooth HC-05/06 es que venga montado en una placa que adapte los voltajes de uso del modulo a los utilizados por la placa arduino y ya puesto con los pines de conexión incorporados.

Seguro que muchos estareís pensando, ¡¡vaya rollo que nos está metiendo hoy!! pero os aseguro que nos puede volver locos si no tenemos en cuenta esto, en fin, que no os voy a marear con las explicaciones y os pongo una foto de uno sin adaptar:















o uno adaptado:

Como veis, el adaptado lleva el modulo incorporado a una placa con lcomentado anteriormente, con sus pines y todo ¡¡listo para usar!!, así que, lo dicho, el adaptado es el idóneo para nosotros los novatos.

Comandos AT

Los comandos AT es la forma de configurar y obtener información de nuestro modulo Bluetooth.Por regla general vienen configurados por defecto, así que no me voy a extender en ello, pero si alguien quiere mas información le dejo algunos enlace:

Video explicativo
HC-05 Comandos AT
HC-06 Comandos AT

Solo comentar que al módulo HC-05 se le puede poner en modo configuración y "preguntarle" sobre la configuración que tiene: nombre, velocidad, pin, etc., sin embargo, si intentamos hacer lo mismo con el HC-06, con los mismos comandos que usamos para preguntar al HC-05, lo que estamos haciendo es configurarlo, lo cual puede ser un problema hasta que te das cuenta.

Conexiones del módulo Bluetooth con Arduino

Primero vamos a mostrar las conexiones o pines que trae de la placa Bluetooth :

- Rxd: para recibir los datos.
- Txd: para enviar datos.
- Vcc: alimentación del la placa (admite entre 3,6V y 6V).
- Gnd: Masa.

Estos pines son comunes a los dos modelos, el HC-O5 implementa tambien el pin marcado como KEY para poder entrar a configurar el módulo.


Para que se produzca la comunicación entre nuestro modulo Bluetooth a Arduino hay que tener en cuenta que el pin RXD del Bluetooth debe ir al pin TXD del arduino y el pin TXD del Bluetooth al pin RXD de Arduino, o sea, como en todo sistema de comunicación, hay que conectar emisores a receptores y viceversa.

Aunque Arduino implementa en la placa las comunicaciones serie en los pines 0 (RXD) y 1 (TXD), podemos utilizar la librería "SoftwareSerial.h" para poder utilizar cualquier otros pines para nuestros proyectos y de esta forma dejar disponibles los pines 0 y 1 de arduino para usar con la comunicación serie estandar.

Programa ejemplo para configurar el modulo Bluetooth

Con el código que os muestro a continuación podemos comunicarnos con nuestro modulo Bluetooth a traves del monitor serial de nuestro arduino y que nos va a permitir configurarlo a nuestro gusto cambiando, por ejemplo, el nombre, el pin o la velocidad. En el caso del HC-05 tambien podemos "preguntarle" todos estos parametros.

//Utilizamos la librería SoftwareSerial.h para poder utilizar otros
//pines para la comunicación serie
#include <softwareserial .h="">

//Determinamos que los pines para la comunicación son el 10 y el 11

#define RxD 10
#define TxD 11

//Definimos el pin 3 para conertar la alimentación (Vcc) de nuestro

//módulo Bluetooth, de esta forma lo podemos encender y apagar desde
//el programa.
#define RST 3

//El pin 4 lo conectaremos al pin KEY del modulo Bluetooth en el caso

//de utilizar un HC-05, si el módulo que tenemos es un HC-06 no se usa
#define KEY 4

//Definimos los pines para la comunicación Bluetooth

SoftwareSerial BTSerial(RxD, TxD);

void setup()

{
  
  pinMode(RST, OUTPUT);
  pinMode(KEY, OUTPUT);
  digitalWrite(RST, LOW);
  digitalWrite(KEY, HIGH);
  digitalWrite(RST, HIGH);
  
  delay(500);
  
  BTSerial.flush();
  delay(500);
//  BTSerial.begin(38400);
  BTSerial.begin(9600);
  Serial.begin(9600);
  Serial.println("Introducir comando AT:");
  delay(10);
}

void loop()

{
 //Leemos del módulo Bluetooth y lo enviamos al Serial Monitor
  if (BTSerial.available())
    Serial.write(BTSerial.read());

//leemos los comandos AT desde el Serial Monitor y los enviamos al módulo Bluetooth

  if (Serial.available())
    BTSerial.write(Serial.read());
}

Una vez verificado y cargado en la placa Arduino, podemos abrir el Monitor Serial



y empezar a configurar nuestro módulo Bluetooth. 

Pero no todo iba a ser tan fácil, aun nos quedan algunas consideraciones. Si el módulo que estamos utilizando es un HC-05, después de cada comando AT debemos mandarle un caracter de nueva linea (NL) y retorno de carro (CR), o sea, en el monitor serial pondremos "Ambos NL & CR" en la casilla inferior. Pero si el módulo que tenemos es un HC-06 no hay que poner nada por lo que pondremos "No hay fin de linea".

Y bueno, seguro que me dejo mil cosas por comentar, pero la web está plagada de buenos tutoriales (otros no tanto) donde ampliar la información. 

Seguro que he cometido algún error de concepto, perdón y por favor, corregidme y así entre todos aprendemos y mejoramos.

¡¡Hasta la segunda parte!!

No hay comentarios:

Publicar un comentario en la entrada