Select Page

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.

Este es un modulo bluetooth que puede ser configurado como maestro o esclavo. Esta claro que maestro con maestro y esclavo con esclavo no se pueden aparear entre. dado que los dos reciben o los dos emiten data. El modulo configurado como esclavo puede aparearse con computadoras y celulares, resultando perfecto para comenzar a programar algo en IOT. Está pensado para usarlo directamente por el puerto UART de cualquier micro haciendo la conversación totalmente transparente, es como si estuvieran conectados por cable. (el micro con BT y la PC o el celular). La idea de que la conexión es transparente es que uno no tiene que conocer nada de bluetooth, PCB layout o la pila bluetooth (memoria de pila-alias STACK-overflow si se programa mal).

modulos_bluetooth_ch05_hc06-1024x675

En la foto de arriba 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). Como verán, sin indistinguibles a primera vista.

Se puede conectar a los siguientes sistemas: (por el momento no somos especialistas con bluetooth)

  • MCU, ARM or DSP systems.
  • SOC systems.
  • Personal Digital Assistants (PDAs)
  • Computer Accessories
  • Other systems your want to use under bluetooth functions.

Hardware:

  • CSR solution, Bluetooth V2.0 protocol
  • support AT commander
  • support Master and Slave mode, modify by AT commander
  • support 1200-115200 baudrate
  • 3.3V single supply
  • Size: core module: 28mm*15mm*2.35mm, whole module:35.33mm*19.6mm*3.7mm
  • current: 30mA MAX
  • alcance: 10mts
  • can be used with all MCU by UART port
  • 2 indicator lights
Item Name Bluetooth UART RS232 serial converter Module
Operating Frequency Band 2.4GHz unlicensed ISM band
Bluetooth Specification V2.0+EDR
Output Power Class Class 2
Operating Voltage 3.3V
Host Interface USB/UART
Audio Interface None
Flash Memory Size 8Mbit
Dimensions 27.2mm x 12.8mm x 2.5mm
Net Weight 9.6 g / 0.3 oz

1. CSR Bluetooth Chip Solution
2. Bluetooth Spec v2.0+EDR Compliant
3. Enhanced Data Rate (EDR) compliant with V2.0.E.2 of specification for both 2Mbps and 3Mbps modulation modes
4. Full Speed Bluetooth Operation with Full Piconet Support and Scatternet Support
5. Increadible samll size with 3.3V input, and RoHS Compliant
6. UART interface and with baudrate setup function
7. Support for 8Mbit External Flash Onboard
8. Support for 802.11Co-Existence

 Conexión

Los cables de conexión del HC-05 UART van cruzados con cualquier micro. 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

Código de apareo: 1234 (puede ser cambiado mediante comandos AT)

connection hc-05

connection hc-05

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 no comercializamos en nuestra tienda web, así como una interfaz USB-Serial con socket Xbee “Foca” que si 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 bee pro usb serial

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 AT

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

Programa arduino Hc-05: prueba hc-05 arduino

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, losHC-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″.

Básicamente, la diferencia a simple vista radica en los 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 el siguiente link: datasheet_hc-05

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:

modulos bluetooth configuracion terminal

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.

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.

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.

Realmente es dificil de aceptar, pero los mexicanos que hicieron este blog son unos genios y la pagina web de ellos es todo lo que queremos ser por motus propio. Ayudanos a crecer! http://www.geekfactory.mx/radio/bluetooth-hc-05-y-hc-06-tutorial-de-configuracion/

http://www.techbitar.com/modify-the-hc-05-bluetooth-module-defaults-using-at-commands.html

http://www.instructables.com/id/Cheap-2-Way-Bluetooth-Connection-Between-Arduino-a/

http://www.instructables.com/id/Andruino-A-Simple-2-Way-Bluetooth-based-Android-C/