sábado, 17 de octubre de 2015

Configuración del módulo bluetooth HC-06 por comandos AT

Los módulos bluetooth del tipo HC-0X tienen unas propiedades editables como el nombre, la velocidad de transmisión de datos o el pin de emparejamiento. Esto, según varias páginas en internet, es muy fácil de realizar, tan fácil que no se explica ni se demuestra como hacerlo. Después de indagar mucho y no conseguir editar mi HC-06 recibiendo respuesta (sí que encontré código que grabado en el Arduino cambiaba la configuración del módulo conectado pero que no permitía ver las respuestas generadas por este) decidí crear mi propio sketch con el que se podría utilizar el Serial Monitor de Arduino a modo de consola. Tras varias pruebas y muchas comidas de cabeza para entender problemas que planteaba, salió a la luz el programa. A continuación está la información de los comandos para este modelo:

1. Test de comunicación
Enviar: AT
Respuesta: OK

2. Cambiar velocidad de transferencia de datos

Enviar: AT+BAUDX
Respuesta: OKY

Pudiendo tomar X e Y los siguientes valores

X..........Y
1..........1200
2..........2400
3..........4800
4..........9600 (Por defecto)
5..........19200
6..........38400
7..........57600
8..........115200
9..........230400
A..........460800
B..........921600
C..........1382400

El ordenador no soporta más de 115200 así que la única forma de controlarlo es mediante programación limitar el cambio de tasa de datos máximo a 8.


3. Cambiar el nombre del módulo (20 caracteres como máximo)

Enviar: AT+NAMEXXXX
Respuesta: OKsetname

Siendo XXXX el nombre que nosotros queramos darle.


4. Cambiar pin de emparejamiento (1234 por defecto)

Enviar: AT+PINXXXX
Respuesta: OKsetPIN

El pin es un número de 4 bits por lo que tiene que ser un número comprendido entre 0000 y 8888.


5. Leer versión de firmware

Enviar: AT+VERSION
Respuesta: OKlinvorV1.X

Siendo X el número de la versión de vuestro módulo.


Hay más comandos, concretamente tres más, que vienen explicados en el datasheet del módulo. Aquí dejo el enlace: Datasheet HC-06



Ya podemos cargar el sketch a nuestro Arduino. El archivo .ino lo podéis encontrar en el enlace a "Archivos" al final de la entrada junto al enlace al IDE de Arduino.


NOTA: Seleccionar "Sin ajuste de línea en el Serial Monitor".

El programa recoge lo introducido por el Serial Monitor del IDE de Arduino, comprueba en primer lugar si es un comando de cambio de frecuencia y luego lo envía (en este caso modifica también la frecuencia del Arduino). Si se trata de otro comando, el módulo genera una respuesta que el programa recoge y muestra. Si por el contrario la cadena de caracteres no es reconocida como un comando interpretable, no genera respuesta y por tanto el programa muestra "Comando no válido". A esto se le suman los controles necesarios de entrada de datos así como la selección automática de frecuencia en el arranque del programa. Por automática se entiende que el Arduino se sintoniza solo a la velocidad a la que esté configurado el módulo (el programa va enviando comandos en distintas frecuencias y cuando recibe respuesta se detiene y queda sintonizado, podemos decir que hace un barrido por todas las frecuencias posibles hasta encontrar la "buena").

En los comentarios del código hay también datos importantes a tener en cuenta a la hora de entender el código como que en los cambios de frecuencia, la respuesta es generada en la frecuencia en la que se encontraba el módulo antes de enviar el comando de cambio. Esto conlleva la siguiente secuencia: Enviar comando > Leer respuesta > Cambiar frecuencia.

Aquí está el esquema de conexión:

Imagen hecha a partir de bases tomadas de Fritzing
Enlace al IDE de Arduino: https://www.arduino.cc/en/Main/Software