Los módulos de bluetooth HC-05 y HC-06 son módulos muy populares para aplicaciones con microcontroladores PIC y Arduino. Se trata de dispositivos relativamente económicos y que habitualmente se venden en un formato que permite insertarlos en un protoboard y cablearlo directamente a cualquier microcontrolador, incluso sin realizar soldaduras. En esta entrada del blog vamos a explicar un poco del funcionamiento de estos módulos y como configurarlos. También abordaremos las diferencias entre el HC-05 y el HC-06.

En la foto de portada del artículo vemos  de izquierda a derecha: los módulos HC-05 y HC-06 en formato amigable para protoboard y un módulo HC-05 en formato compatible con zócalos para Xbee (módulo bluetooth bee).

Módulo Bluetooth HC-05

El módulo de bluetooth HC-05  es el que ofrece una mejor relación de precio y características, ya que es un módulo Maestro-Esclavo, quiere decir que además de recibir conexiones desde una PC o tablet, también es capaz de generar conexiones hacia otros dispositivos bluetooth. Esto nos permite por ejemplo, conectar dos módulos de bluetooth y formar una conexión punto a punto para transmitir datos entre dos microcontroladores o dispositivos. En otro artículo posterior veremos como configurar dos módulos HC-05 para que se enlacen entre ellos y podamos transmitir información de un punto a otro.

Módulo Bluetooth Bee Pro con HC-05

Módulo HC-05 montado en una tarjeta adaptadora compatible con zócalos Xbee

El HC-05 tiene un modo de comandos AT que debe activarse mediante un estado alto en el PIN34 mientras se enciende (o se resetea) el módulo. En las versiones para protoboard este pin viene marcado como “Key”. Una vez que estamos en el modo de comandos AT, podemos configurar el módulo bluetooth y cambiar parámetros como el nombre del dispositivo, password, modo maestro/esclavo, etc.

Para comunicarnos con el módulo y configurarlo, es necesario tener acceso al módulo mediante una interfaz serial. Podemos usar un arduino con un par de cables (aprovechando el puente USB-Serial del Arduino), un kit para XBee o un simple MAX3232 en el puerto serie de la PC. Para este artículo estaremos usando un módulo Bluetooth Bee Pro que comercializamos en nuestra tienda web, así como una interfaz USB-Serial con socket Xbee “Foca” que también vendemos. Este es el hardware que utilizamos en nuestro taller, pero también es posible hacer los ensayos con el módulo HC-05 suelt0 o en formato para insertar en el protoboard sin mayor problema.

Bluetooth HC-05 en Módulo Bluetooth Bee Pro

Para las pruebas y configuración del módulo bluetooth es conveniente tener a mano un adaptador USB-Serial TTL como los basados en el FT232RL o circuitos similares. Nosotros usamos las tarjetas mostradas en la fotografía para probar los comandos descritos en este artículo.

Diferencias HC-05 vs HC-06 y como identificarlos

Muchas personas y tiendas en internet venden el HC-06 y HC-05 como un mismo módulo, muchas veces uno pide un HC-05 y terminan vendiéndoles un HC-06. Esto se debe a que esencialmente el hardware es el mismo para ambos módulos. La única diferencia real es el firmware que viene cargado de fábrica. De hecho, si tenemos paciencia, podemos convertir un HC-06 a un HC-05 nosotros mismos con solamente cambiar el firmware de los módulos, pero quedas advertido: ¡Hay que construir la interfaz de programación!

Existen unos módulos aptos para insertarse en el protoboard que nos permiten una fácil identificación del módulo soldado antes de comprar. En estos módulos, los HC-05 normalmente tienen dos pines extra (además de TX, RX, VCC, GND)  etiquetado como “Key” y “State”. El pin “key” es necesario para entrar al modo de comandos AT en el módulo HC-05 (pin 34) y por lo tanto, solo se instala cuando el módulo de bluetooth a bordo es un HC-05. También podemos identificar si se trata de un HC-05 por la forma en que se identifican con otros dispositivos bluetooth: El HC-05 se identifica como “HC-05”, mientras que el HC-06 se identifica como “Linvor” o “HC-06”.

La fotografía muestra una comparación entre los módulos HC-05 y  HC-06 en su versión para insertar en protoboard. El HC-05 tiene 2 pines extras

La fotografía muestra una comparación entre los módulos HC-05 (izquierda) y HC-06 (derecha) en su versión para insertar en protoboard. El HC-05 tiene 2 pines extra

Interfaz de configuración de comandos AT en HC-05

El puerto serie en modo de configuración para el HC-05 debe configurarse de la siguiente manera: 34800 bps, 8 bits de datos, Sin paridad, Sin control de flujo. Para entrar al modo de comandos AT seguimos los siguientes pasos:

  1. Poner a estado alto en el pin 34 (PIO11)
  2. Conectar la alimentación del módulo (o resetearlo de preferencia)
  3. Enviar un comando AT\r\n para comprobar que estemos en modo de comando AT.

La siguiente lista es una compilación de los comandos que consideramos importantes

  • AT\r\n      Comando de prueba, debe responder con OK\r\n
  • AT+ROLE=1\r\n      Comando para colocar el módulo en modo Maestro (Master)
  • AT+ROLE=0\r\n       Comando para colocar el módulo en modo Esclavo (Slave)
  • AT+VERSION?\r\n      Obtener la versión del firmware
  • AT+UART=115200,1,2\r\n      Configurar el modo de funcionamiento del puerto serie en “modo puente”
  • AT+PIO=10,1\r\n      Colocar el pin de IO de propósito general a nivel alto

Existen otros comandos AT que están documentados en la hoja de datos que proveen nuestros amigos de iTeadStudio. Podemos encontrar la hoja de datos (datasheet) del HC-05 en la siguiente dirección:

http://biblioteca.geekfactory.mx/Bluetooth_Bee_Pro/datasheet_hc-05.pdf

Es importante notar que al módulo HC-05 no le agradan los caracteres \r o \n sueltos al finalizar un comando. Siempre debemos mandarle \r\n para finalizar cada comando, por lo que debemos configurar nuestro programa de terminal serial para que siempre envíe \r\n al final de cada linea. Si utilizamos el “Monitor Serial” del IDE de arduino hay que configurarlo de la siguiente forma:

Configuración del Monitor Serial de Arduino para trabajar con el HC-05

Interfaz de configuración de comandos AT en HC-06

El HC-06 tiene un firmware distinto y también un funcionamiento distinto en cuanto a su modo de configuración. Para poder configurar el HC-06 es necesario que este NO este emparejado ni siendo usado por ningun dispositivo. De igual forma que el HC-05 es necesario conectarlo a la PC y usar un programa de terminal para darle instrucciones de configuración (Comandos AT), aunque también podemos escribir un programa de arduino o en un microcontrolador para configurarlo.

Para conectarlo con la PC utilizamos un adaptador USB serial como se muestra en la foto:

bluetooth_hc-sr06_usb_serial

Realizando pruebas con un módulo HC-06 y una tarjeta USB serial con FT-232RL

El módulo HC-06 acepta un set muy básico de comandos (algo raros por cierto), que permite pocas configuraciones, pero que sin duda será util para personalizar este económico módulo y configurarlo para satisfacer las necesidades de la aplicación.

Los comandos que soporta son:

  • Prueba de funcionamiento:
    • Envíar: AT
    • Recibe: OK
  • Configurar el Baudrate:
    • Envíar: AT+BAUD<Numero>
    • El parámetro número es un caracter hexadecimal de ‘1’ a ‘c’ que corresponden a los siguientes Baud Rates: 1=1200, 2=2400, 3=4800, 4=9600, 5=19200, 6=38400, 7=57600, 8=115200, 9=230400, A=460800, B=921600, C=1382400
    • Recibe: OK<baudrate>
  • Configurar el Nombre de dispositivo Bluetooth:
    • Envíar: AT+NAME<Nombre>
    • Recibe: OKsetname
  • Configurar el código PIN de emparejamiento:
    • Envíar: AT+PIN<pin de 4 digitos>
    • Recibe: OK<pin de 4 digitos>
  • Obtener la version del firmware:
    • Enviar: AT+VERSION
    • Recibe: Linvor1.8

Si ya hemos trabajado con comandos AT observaremos que los comandos estan lejos del estándar, lo más obvio es que:

  • No es necesario finalizar el comando con \r\n, pero si es necesario ingresar los comandos con todos los caracteres seguidos sin pausas. NO hay necesidad de dar “enter” para finalizar un comando. El modulo tiene un Temporizador que hace necesario introducir el comando de una sola vez, sin pausas entre los caracteres.
  • Por lo anterior, si utilizamos un emulador de terminal hay que pegarlos en leste y no escribirlos uno a uno con el teclado. También podemos usar el “monitor serial” de Arduino configurado como se muestra en la imágen más arriba en este artículo.
  • Hay que tener cuidado de introducir TODAS LAS LETRAS DEL COMANDO en MAYUSCULAS, ya que de lo contrario, no funcionarán.
  • Las respuestas no parecen respuestas estándar a comandos AT.

Conexión básica con Arduino

Las conexiones para realizar con arduino son bastante sencillas. Solamente requerimos colocar como mínimo la alimentación y conectar los pines de transmisión y recepción serial (TX y RX). Hay que recordar que en este caso los pines se debe conectar cruzados TX Bluetooth -> RX de Arduino  y RX Bluetooth -> TX de Arduino. La siguiente imagen muestra las conexiones básicas para que funcione el módulo:

Conexión de un módulo HC-06 a Arduino

Conexión de un módulo HC-06 a Arduino. Hay que revisar la correspondencia de pines en la serigrafía, ya que puede variar dependiendo del proveedor o lote.

En este caso estamos utilizando el hardware de UART, por lo que la comunicación con la PC no será posible. Para poder utilizar la UART para comunicarse con la PC mediante USB, es necesario utilizar un UART emulado por software, de manera que los pines de comunicación con el módulo bluetooth queden en pines distintos.

El código para la comunicación a través del bluetooth es idéntico al que utilizaríamos para comunicarnos con la PC vía USB. El siguiente ejemplo permite encender o apagar el led de la tarjeta arduino mediante el módulo bluetooth. El código funciona de la siguiente manera:

  • Al envíar el caracter E, se pone en estado alto la salida del pin 13
  • Al enviar el caracter A, se pone en estado lógico bajo la salida del pin 13

 

Conclusión

Como podemos observar, los módulos HC-05 y HC-06 son bastante sencillos de configurar para usarse con el microcontrolador de nuestra preferencia. El HC-06 es el modelo más sencillo, presentando menos opciones para su configuración, pero siendo bastante util y económico para conectar nuestros dispositivos con microcontroladores a la PC, tablets, celulares, etc. El HC-05 por otra parte, nos permite hacer algunas cosas que su hermano menor no permite, como enlaces punto a punto entre dos módulos y también teniendo un juego de comandos más completo y un poco más “formal”, con algunas características interesantes como el control de pines de GPIO.

Ambos módulos son excelentes para proyectos escolares, de investigación e incluso para su integración en equipos o prototipos en el campo profesional, sin embargo, hay poca documentación formal. Esperamos que este artículo sea de utilidad para comprender mejor el funcionamiento y la configuración inicial.

Si requiere factura de su producto el pago se tiene que realizar a nuestra cuenta en Santander, no emitiremos facturas de pagos realizados por otro medio. Descartar