Bluetooth HC05/HC06
Los módulos de bluetooth HC-05 y HC-06 son módulos muy populares para aplicaciones con microcontroladores.
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.
El HC-05.
El módulo de bluetooth HC-05 es 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.
El HC-05 tiene un modo de comandos AT que debe activarse mediante un estado alto en el marcado “Key” mientras se enciende o se resetea el módulo. 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.
Muchas personas, incluso comercios en internet venden el HC-06 y HC-05 como un mismo módulo, debido a que esencialmente el hardware es el mismo para ambos, la diferencia real es el firmware que viene cargado de fábrica en cada uno de ellos.
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.
Si buscamos cambian algo de su configuración por defecto podemos seguir los siguientes pasos:
- Poner a estado alto en el pin "KEY".
- Conectar la alimentación del módulo (o resetearlo de preferencia).
- Enviar un comando AT\r\n para comprobar que estemos en modo de comando AT.
La siguiente lista es una compilación de algunos comandos importantes, el resto de comando se pueden consultar el la hoja de datos del módulo.
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
Al módulo HC-05 siempre debemos enviarle \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.
El HC-06
El HC-06 tiene un firmware distinto, un módulo es esclavo y otro es maestro, 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 ningún dispositivo.
De igual forma que el HC-05 es necesario conectarlo a la PC mediante una interfaz serial para darle instrucciones de configuración (Comandos AT).
El módulo HC-06 acepta un set muy básico de comandos, que permite pocas configuraciones, pero sin duda muy útil para personalizar este económico módulo y configurarlo para satisfacer las necesidades de la aplicación.
Es de remarcar que para usar estos módulos no es necesario cambiar nada en su configuración, esto es solo válido si la necesidad de uso lo exige, pero el módulo en si mismo ya es operativo.
Para configurar el Baudrate los pasos de configuración son los siguientes:
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
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 como si fuera un string o una cadena de caracteres y no escribirlos uno a uno con el teclado. Todas las letras de los comandos van en mayúsculas ya que de lo contrario, no funcionarán.
Uso practico con microcontroladores.
El uso de estos módulos con microcontroladores es relativamente sencillo.
Se puede ver aquí un microcontrolador PIC conectado a un HC-06 al que no se ha modificado nada en su configuración interna, simplemente se lo conectó al microcontrolador y ya funciona perfecto.
La recepción de los datos, en este caso la hace una computadora con su Bluetooth interno corriendo Linux Debian. Los datos recibidos son el voltaje medido en el punto medio del potenciómetro conectado a un canal analógico del PIC y la parte gráfica en Liunux está en Python.
Desde luego que los datos pueden ser recibidos con cualquier dispositivo que tenga Bluetooth, también podemos guardar los datos en una base de datos.
En este ejemplo se ha usado MySQL que podemos correrlo en Windows, Linux, etc. y la base de datos almacena la temperatura de un sensor DS18B20 enviado por Bluetooth desde un PIC.
Luego podríamos, por ejemplo consultar estos datos via web, en la imagen se aprecian los datos en una tabla MySQL, y se consulta la base de datos desde una pagina en PHP. El servidor usado en el ejemplo es Apache que también corre en Windows, Linux, Unix, etc.
Con un esquema así se podría, por ejemplo, tener una electrónica simple que colecte datos, los envía por medio de Bluetooth, RS-232, 485, socket, etc, etc, a un concentrador, este los almacena en una base de datos y desde cualquier lugar del mundo, consultar estos datos por Internet.
El adquisidor de datos podría ser un simple PIC puesto en terreno, el concentrador una placa Raspberry, o cualquier microcontrolador con capacidad para contener una base de datos MySQL y el STACK TCP-IP y el acceso remoto, cualquier dispositivo con capacidad de navegar por Internet.
Armar algo de este tipo tiene un costo muy bajo si lo comparamos con un PLC, o incluso algún dispositivos para el control domótico, sobre todo si pensamos que los datos guardados en la base de datos podrían ser fotos de un sistema de seguridad o incluso vídeos de una cámara de vigilancia.