Introducción
Cuando conseguimos un módulo bluetooth HC-05 siempre será necesario cambiar el nombre y la contraseña. En casos más avanzados, vamos a necesitar incluso cambiar el modo (esclavo o maestro). Me he topado con muchos tutoriales por ahí, todos varían y algunos piden un módulo USB a TTL.
Al final de todo logré entrar en modo AT para configurar mi módulo. Y no necesité otra cosa más que un Arduino, el propio módulo y el cable con el que se suben los programas al Arduino.
Dicho esto, comencemos.
Pequeña nota: este tutorial supone que tenemos el módulo que se muestra en la imagen de abajo. Dicho módulo trae 6 pines y no trae bien especificado el pin KEY. Aunque si el nuestro sí lo trae, esto debería funcionar, sólo tendríamos que conectar el pin de configuración (9) al de la KEY en lugar del 34.
Materiales
Los acabo de mencionar arriba, pero aquí los dejo de nuevo
- Cables dupont
- Módulo Bluetooth HC 05
- Arduino UNO (o cualquier otro; no he probado pero debería funcionar)
Circuito
El circuito no es nada complejo; no pude hacerlo en tinkercad ya que no existe ese módulo, pero en Fritzing sí lo tienen, así que aquí está:
Observemos algunas cosas…
- Lo primero que quiero que se note es que el cable amarillo va al pin 34 del módulo bluetooth. Si somos valientes, podemos soldarlo (pero qué pereza y dificultad), y si no, simplemente lo tenemos que mantener ahí para que haga contacto. Le podemos pegar un cable con cinta, o algo que se nos ocurra; de todos modos, sólo será para entrar al modo AT.
- El RX y TX van a cada pin del Arduino. Notar por favor que esos pines pueden ser cambiados desde el código que se detalla más abajo.
- EL GND va a tierra y el VCC va a los 5 voltios. Ojo con este de VCC, ya que para configurar tendremos que desconectarlo y hacer unas cosas con él. Explicaré esto más abajo, pero no está de más recalcar que éste cable será el que estaremos moviendo.
- Finalmente, el pin que dice EN no van a ningún lado. Al menos no para esto.
Programando Arduino para programar módulo
Lo primero que tenemos que hacer es subir un pequeño sketch a nuestro Arduino para comunicarnos directamente con el HC-05. Nuestro Arduino simplemente actuará como medio para enviar y traer los datos. Aquí les dejo el código:
/*
* Configurar módulo Bluetooth HC-05 modo AT
* parzibyte.me
*
Asignación de pines
Recordemos que el RX es el pin de Arduino que va conectado al RX del módulo bluetooth
Y el TX es el pin que va al TX del módulo bluetooth
El pin configurador es aquel que nos ayudará a que nuestro módulo se ponga
en modo AT. Es el que va conectado al pin 34 del HC-05
*/
#define PIN_RX 11
#define PIN_TX 10
#define PIN_CONFIGURADOR 9
#include <SoftwareSerial.h>
SoftwareSerial serialBt(PIN_RX, PIN_TX);
void setup() {
Serial.begin(9600); //Comenzar serial para monitor serial del IDE de Arduino
pinMode(PIN_CONFIGURADOR, OUTPUT); digitalWrite(PIN_CONFIGURADOR, HIGH); //Poner en alto el pin configurador
Serial.println("Estamos listos. Ingresa un comando AT:");
serialBt.begin(38400); //Comenzar comunicación para Bluetooth
}
void loop() {
/*
Comenzamos una simple comunicación
¿Hay respuesta del módulo? recíbelos e imprímelos en el monitor
¿Hay comandos ingresados por el monitor serial que mandar? envíalos
*/
if (serialBt.available())
Serial.write(serialBt.read());
if (Serial.available())
serialBt.write(Serial.read());
}
Nota: recomiendo desconectar cualquier cosa del Arduino antes de subir este código. Una vez compilado y subido, ahora sí podemos conectar el módulo con el circuito que está arriba.
Pasemos al siguiente paso.
Poniendo modo AT
Una vez que nuestro circuito este correctamente conectado como lo muestro arriba, y nuestro código subido al Arduino, vamos a entrar en modo AT. Es importante seguir los pasos al pie de la letra. No tienen que ser al instante; es decir, podemos dejar que pase cualquier cantidad de tiempo entre cada paso.
Todo es cuestión de relajarnos y hacer lo siguiente:
- Configurar monitor serial del IDE de Arduino a 9600 baudios y en ajuste de línea elegimos NL & CR
- Cerrar monitor serial
- Dejar intactos todos los cables que van del Arduino al módulo, así como están en el circuito de arriba. No debemos mover ninguno.
- Desconectar Arduino de la PC y de cualquier fuente de alimentación
- Desconectar alimentación que va al módulo HC-05. Es decir, desconectar el cable que va al VCC (el rojo).
- Conectar alimentación de Arduino
- Conectar alimentación de módulo Bluetooth. Es decir, volver a conectar el VCC (el rojo).
- Abrir monitor Serial
Si el módulo parpadea cada 2 segundos (se enciende, espera dos segundos para apagarse, espera otros dos segundos y se enciende de nuevo, infinitamente) es que lo hemos hecho bien y podremos pasar al siguiente paso. Si no, verifica si te has saltado algún paso.
Configurando y hablando con nuestro módulo
Al abrir el monitor serial, debió aparecerse algo así:
Eso significa que estamos listos para enviar y recibir información. Lo primero que escribiremos será at
y presionaremos Enter. Nos debe responder con OK
.
Ahora sí viene lo interesante. Vamos a configurar contraseña y nombre. Pero antes, una pequeña explicación.
Leyendo valores
Para leer un valor (es decir, leer una variable del módulo) usaremos:
at+[variable]
en donde variable puede ser name
, pswd
, etcétera. Notar por favor el signo de +
, ya que ese signo debe ir literalmente antes del nombre de la variable. Ver los ejemplos de abajo para entenderlo mejor.
Estableciendo valores
at+[variable]=nuevoValor
en donde variable puede ser name
, pswd
, etcétera. Notar por favor el signo de +
, ya que ese signo debe ir literalmente antes del nombre de la variable. También es importante ver que usamos el signo =
, y luego ponemos el nuevo valor. Ver los ejemplos de abajo para entenderlo mejor.
Nombre del módulo
Para ver el nombre que actualmente tiene el módulo, usamos at+name
:
Si lo queremos cambiar, usamos at+name="nuevo nombre"
. Hay un límite de caracteres que el nombre puede llevar, así que no hay que usar uno muy grande. En este caso usaré at+name="Cambiar nombre"
:
Si ahora lo vuelvo a leer usando at+name
obtengo:
Contraseña o código de acceso
Lo mismo que el nombre, sólo que ahora usamos at+pswd
y at+pswd="pass"
.
Leer código con at+pswd
:
Establecer código con at+pswd="345234"
(número aleatorio). También debe tener su límite (así que no hay que establecer códigos tan largos); y podemos usar letras pero no recomiendo hacerlo, mejor usemos números:
Al volver a leer la contraseña o código de acceso con at+pswd
obtenemos:
Guardando cambios
Me parece que no hay un comando para salvar los cambios, porque se guardan al ejecutar el comando. Sin embargo, es de personas educadas terminar la comunicación como debe ser, y para ello usamos at+reset
:
Después de esto, debemos desconectar el cable que va al pin 34 del módulo para poder (ahora sí, al fin) conectarnos a nuestro módulo desde nuestros teléfonos, computadoras y cualquier dispositivo que soporte el estándar Bluetooth.
Más comandos
Claro que existen más comandos, aquí dejo un link con el archivo PDF que los trae todos: FKYZ0UTHX7OYY7I (sí, así se llamaba y no lo quise renombrar).
Referencias
Claramente; todo esto no salió de mi cabeza, simplemente me di a la tarea de explicarlo en español, agregarle mis propias palabras y de explicarlo de una mejor manera. Agradecimientos al autor de este link, pues me basé de casi todo lo que dice en su post para hacer el mío.
Finalmente te invito a leer más sobre Arduino en mi blog.