Descripción
El módulo BlueTooth HC-05
En la sesión anterior presentamos algunos conceptos básicos sobre las redes Bluetooth y las funciones que se suelen realizar con ellos. Presentamos el concepto de Master y Slave y configuramos el modulo HC-06 que solo podía trabajar en el modo Slave.
El módulo BlueTooth HC-05
En la sesión anterior presentamos algunos conceptos básicos sobre las redes Bluetooth y las funciones que se suelen realizar con ellos. Presentamos el concepto de Master y Slave y configuramos el modulo HC-06 que solo podía trabajar en el modo Slave.
Vamos a usar su hermano mayor el modulo HC-05, que puede configurarse tanto como Master que como Slave, y que además dispone de bastante más parámetros de configuración y capacidades de interrogación.
El aspecto externo es bastante similar y la mejor manera de diferenciarlos es por los pines el soporte, 4 para el HC-06 y 6 pines para el HC-05.
El HC-05 es ligeramente más complicado de colocar en modo comandos y requiere una cierta manera de arrancado, concretamente requiere que el pin KEY, que esté en HIGH cuando encendemos el modulo.
Por eso vamos a implementar este procedimiento en un Sketch de Arduino, para que podamos correrlo cuando necesitemos programar el módulo.
El procedimiento normal con estos módulos, suele ser conectarlos, ver la configuración y reprogramarlos con nuestras preferencias. Después mantendrá la programación hasta que decidamos cambiarla.
El proceso puede ser complicado así que vamos a ver lo podemos hacer.
Materiales
Placa de Arduino
1 Módulo Bluetooth HC05
Protoboard, Cables de conexiones y un cable USB para conectar Arduino al PC y sirve además de alimentación
En primer lugar, para que el HC-05 entre en modo comandos AT, requiere que cuando se enciende el modulo, el pin KEY este HIGH. Por eso hemos conectado la tensión Vcc del módulo BlueTooth al pin 8 de nuestro Arduino.
El consumo del módulo es mínimo y nuestro Arduino es capaz de alimentarlo sin problemas, por eso el modulo se encenderá cuando pongamos HIGH en el pin 9. Esto nos permitirá poner en HIGH el pin digital 8, al iniciar nuestro programa y después levantar el pin 8, de este modo cuando arranque entrara sin más en el modo de comandos AT.
El resto de los pines se conectan de forma similar al HC-06. Txd y Rxd se deben conectar cruzados con los pines de comunicación de Arduino, que usaremos mediante la librería software Serial.
El pin State refleja, supuestamente, la situación en la que se encuentra el modulo y por ahora no vamos a utilizarlo.
Código
Alimentaremos el modulo desde el pin digital 8, para forzarle a entrar en el modo comandos AT.
Alimentaremos el modulo desde el pin digital 8, para forzarle a entrar en el modo comandos AT.
El código queda así:
Con este procedimiento garantizamos que el modulo HC-05 entra solo en modo AT comandos, y que nuestra consola nos va a servir para programarlo, y confío en que nos evite todas las complicaciones.
#include <SoftwareSerial.h>
SoftwareSerial BT1(10, 11); // RX | TX
void setup(){
pinMode(8, OUTPUT); // Al poner en HIGH forzaremos el modo AT
pinMode(9, OUTPUT); // cuando se alimente de aqui
digitalWrite(9, HIGH);
delay (500) ; // Espera antes de encender el modulo
Serial.begin(9600);
Serial.println("Levantando el modulo HC-05");
digitalWrite (8, HIGH); //Enciende el modulo
Serial.println("Esperando comandos AT:");
BT1.begin(38400); // La mayoría de los HC-05 tienes que usar esta velocidad.
}
void loop(){
if (BT1.available())
Serial.write(BT1.read());
if (Serial.available())
BT1.write(Serial.read());
}
El HC-05 debería enviar a la consola un mensaje de Status en cuanto arranca en el modo AT,
Si no es así, o se ve signos raros, suele ser indicador de que la velocidad de comunicación entre Arduino y el modulo es incorrecta.
Ir probando velocidades hasta que veáis algún mensaje correcto. Enviar un AT siempre debería recibir una respuesta de OK.
Programando el HC-05 con comandos AT
Si se ha seguido los pasos anteriores cuando abras la consola deberías recibir un mensaje del módulo directamente, y si no, basta con escribir AT Intro y se debe recibir un OK como muestra la captura de pantalla: anterior.
El mensaje que obtiene, no tiene por qué ser el mismo e incluso puede que no se tenga ningún mensaje en absoluto, pero es importante asegurarse de que se tiene seleccionado Ambos NL&CR para terminar las líneas en el monitor serie.
Programando el HC-05 con comandos AT
Si se ha seguido los pasos anteriores cuando abras la consola deberías recibir un mensaje del módulo directamente, y si no, basta con escribir AT Intro y se debe recibir un OK como muestra la captura de pantalla: anterior.
El mensaje que obtiene, no tiene por qué ser el mismo e incluso puede que no se tenga ningún mensaje en absoluto, pero es importante asegurarse de que se tiene seleccionado Ambos NL&CR para terminar las líneas en el monitor serie.
El modulo HC-05, espera que la línea acabe en \r\n y entonces ejecuta el comando.
Aparentemente el número de modificaciones de software con la que se venden estos módulos es bastante elevado y por ello no es fácil garantizar nada con ellos.
Aparentemente todos los módulos que he probado aceptan ordenes similares, pero no todos los módulos aceptan todas las ordenes, dependiendo del Firmware.
Cuando menos si se escribe en mayúsculas AT e intro, se debe recibir una respuesta de OK en la consola. Y si es así podemos seguir viendo más comandos.
AT+NAME, Requiere que nos informe del nombre que tiene asignado el modulo. Debería devolvernos un mensaje del tipo +NAME=HC-05, indicando que se llama HC-05.
El modulo HC-06 se podía renombrar exactamente así, pero no podíamos preguntarle qué nombre tenía asignado. Solo cambiarlo.
AT+NAMEXXXX, programa el nombre que queremos presentar cuando alguien nos localice:
AT+NAME=MagoMiguelon
AT+NAME=MagoMiguelon
Recibo un OK como que se ha producido el cambio de nombre, luego de haber cambiado el nombre uso el comando AT+NAME y confirma que ha cambiado de nombre como se puede ver en la imagen anterior.
AT+UART?, nos permite solicitar la velocidad a la que está programado el modulo para hablar con Arduino
AT+UART=115200,0,0, Fija la velocidad de comunicación entre el modulo y la consola puedes usar lo siguiente valores
1200bps
2400bps
4800bps
9600bps (Default)
19200bps
38400bps
57600bps
115200bps
Una vez cambien a 115200, solo afecta cuando sales del modo comando. Mientras esté en el modo comando seguiras con el monitor serie a 9600 y la velocidad del módulo 38400.
AT+PSWD, Solicita el PIN actual y en la consola verás: PSWD:1234 o similar.
AT+PSWD=XXXX, configura el número de identificación personal, que se requerirá para establecer la vinculación
Recordad que el PIN es el número de identificación personal, que usaremos al conectarnos al módulo, pues exigirá conocer la contraseña. El PIN es de 4 dígitos siempre
Hasta aquí estos son los mismos comandos que aceptaba el modulo HC-06 pero el HC-05 acepta bastante más.
AT+ROLE Nos informa de si está configurado como Maestro 1, o como esclavo 0.
ROLE=0 (Esclavo)
AT+ROLE=1 Configura el modulo como Master.
He visto ejemplos por internet que indican que no se debe usar un = para asignar valores, por ejemplo AT+ROLE1, o que para pedir información de la velocidad hay que hacer AT+BAUD?, También he visto que para cambiar el PIN hay que hacer AT+PINXXXX.
Todo ello dependerá del modelo que se tenga, ya hay diferentes Firmwares que modifican la sintaxis porque no puedo creer que haya tantas nomenclaturas erróneas corriendo por la red.
Así que se tiene que probar cual es la que funciona a uno.
No tendría demasiado sentido revisar aquí todos los posibles comandos AT, y por eso he preferido mostrar media docena de ellos, los más típicos, para que poder experimentar y configurar el modulo.
Aquí tenéis una lista con algunos comandos a los que más o menos he encontrado sentido (Porque hay montones que no tengo ni idea para que sirven).
AT+RESET
→ Reseta el dispositivo, como si lo apagas y lo enciendes y responde con un OK
AT+ORGL
→ Restaura la configuración por defecto de fábrica
AT+ADDR
→ Muestra la dirección Bluetooth del módulo (su “MAC”).
→ Muestra la dirección Bluetooth del módulo (su “MAC”).
AT+NAME
→ Consulta o cambia el nombre del dispositivo Bluetooth.
AT+RNAME
→ Obtiene el nombre de un dispositivo Bluetooth remoto.
AT+ROLE
→ Define el rol del módulo:
- 0 = esclavo (slave)
- 1 = maestro (master)
→ Configura la “clase de dispositivo” (tipo de dispositivo Bluetooth que se anuncia).
AT+IAC
→ Define el código de acceso para búsquedas Bluetooth.
AT+INQM
→ Configura cómo el módulo busca otros dispositivos (modo de escaneo).
AT+PSWD / AT+PIN
→ Cambia la contraseña de emparejamiento (PIN Bluetooth).
AT+UART
→ Configura la comunicación serie del módulo: velocidad, bits de parada y paridad.
AT+CMODE
→ Define el modo de conexión:
- 0 = solo a dirección fija
- 1 = conexión libre a cualquier dispositivo
→ Fija la dirección de un dispositivo concreto para emparejamiento automático.
AT+POLAR
→ Cambia la polaridad de salida del LED del módulo.
AT+PIO
→ Controla pines GPIO del módulo (encender/apagar salidas internas).
Cuando hayamos programado el modulo como deseemos, podemos retirar la conexión del pin rotulado como KEY y el HC-05 está listo para trabajar normalmente sin aceptar ya comandos AT.
Es importante comprender, que en cuanto conectemos algún dispositivo a nuestro modulo Bluetooth HC-05, la luz roja dejará de parpadear y automáticamente saldremos del modo de comandos AT para entrar en el de transporte de información, es decir, cualquier cosa que le enviemos, incluyendo comandos AT, se consideraran texto plano que se reenviará al otro extremos de la conexión Bluetooth.
Recordad que solo podemos enviar comandos AT mientras no estemos conectados
No hay comentarios:
Publicar un comentario