En un artículo anterior explicaba cómo utilizar un módulo Bluetooth HC-05 para agregar conectividad a una placa Arduino. En esa ocasión utilicé el módulo con su configuración de fábrica, porque no era necesario introducir ninguna modificación a los valores originales. Sin embargo, en algunos casos debemos cambiar algunos de los parámetros de la configuración, como la velocidad por ejemplo, para lo cual debemos llevar el módulo a un estado particular de programación que nos permite cambiar ese y otros parámetros. En este artículo veremos cómo configurar el HC-05 conectándolo a una placa Arduino UNO.




En el artículo previo utilicé un módulo HC-05 del tipo “CZ-HC-05” marca “gomcu” que funciona en su totalidad con 5 Voltios y se conecta en forma directa al Arduino UNO. En este artículo, y para aprovechar la oportunidad de explicar un caso diferente, voy a emplear un módulo distinto, el “ZS-040”, que tiene la particularidad de funcionar con dos valores de tensión.

Módulo HC-05 modelo ZS-040

Este módulo tiene una alimentación de entre 3.6 y 5V, por lo que puede ser alimentado desde una placa que funcione con 5V, pero sus pines de datos operan a 3,3V. La salida de datos (TXD) puede conectarse directamente a un Arduino como el UNO, porque 3,3 Voltios son interpretados en una entrada del Arduino como un nivel ALTO, pero la entrada de datos (RXD) debe conectarse a través de un divisor resistivo que disminuya la tensión de la salida del Arduino, como se puede ver en la siguiente imagen:

 

Divisor resistivo en la entrada de datos del HC-05

Divisor resistivo en la entrada de datos del HC-05

Las conexiones se completan con los pines de alimentación GND y VCC, STATE que no se conecta y EN que nos servirá para forzar la entrada del módulo en el modo de configuración.

El modo configuración consiste en un modo especial de trabajo del HC-05 en el que los datos recibidos no son transmitidos sino que se interpretan como instrucciones o comandos que especifican qué parámetro interno se quiere consultar o modificar. Estos son comandos AT, que en general tienen el siguiente formato:

AT+(comando)?    Consulta el valor actual de un parámetro y lo devuelve

AT+(comando) = (Valor)  Establece  el valor de un parámetro

Ejemplo:

AT+NAME?

Respuesta: +NAME: HC05

y para cambiar el nombre:

At+NAME=ARDUINO (cambia el nombre de “HC05” a “ARDUINO”)

Respuesta: OK

 

El listado completo de los comandos AT puede encontrarse aquí.

Este módulo tiene la particularidad de contar con dos modos de configuración, uno que permite la modificación de cualquier parámetro y otro que tiene algunas limitaciones. En mis pruebas, la única diferencia que observé entre ambos modos fue en el comando que cambia el nombre al módulo (AT+NAME), que sólo puede realizarse en el primer modo. En ambos casos la velocidad de comunicación es de 38400 baudios.

Para poner el módulo en el modo “reducido”, hacemos lo siguiente:

  • Desconectamos su alimentación (VCC)
  • Apretamos el pulsador incorporado
  • Conectamos la alimentación (VCC) (ya podemos soltar el pulsador)

Conexiones para el modo reducido

En cambio, para entrar en el modo “completo” no nos sirve el pulsador y debemos conectar el pin EN a 3,3 Voltios (ya sea a la salida 3.3 del Arduino UNO o a 5V con un divisor resistivo idéntico al de la imagen anterior). El procedimiento en este caso es el siguiente:

  • Conectamos EN a 3,3V
  • Desconectamos la alimentación del HC-05 (VCC)
  • Conectamos la alimentación del HC-05 (VCC) (sin desconectar EN)

En ambos casos, se evidencia que el módulo está en modo programación porque el LED parpadea de manera lenta.

Conexiones para el modo completo

Para poder enviar los comandos AT al HC-05 y ver los valores que devuelve, usaremos la terminal serie del IDE de Arduino, cargando un pequeño programita al Arduino UNO que haga de “puente” entre la computadora y el módulo Bluetooth, de manera que todo lo que escribamos en la terminal salga por un puerto serie por soft del Arduino hacia el módulo (en los pines 10 y 11), y todo lo que éste responda entre al mismo puerto serie y sea copiado a la PC.

Una vez cargado el programa en el UNO, configuramos el monitor serie en 38400 baudios y activamos “ambos NL y CR” en los ajustes de línea, porque el módulo HC05 espera que los comandos AT terminen con los caracteres <CR> y <LF>.

Configuración del monitor serie y algunos comandos

Como les digo siempre, espero que el artículo les haya sido de utilidad. Cualquier duda o sugerencia, en la sección de comentarios.