Sunteți pe pagina 1din 21

Bluetooth HC-05 y HC-06 Tutorial de

Configuracin
by Jesus Ruben | feb 21, 2014 | Radio, Tutoriales | 22 Comments

Los mdulos de bluetooth HC-05 y HC-06 son mdulos muy populares para aplicaciones
con microcontroladores PIC y Arduino. Se trata de dispositivos relativamente
econmicos 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 mdulos y como configurarlos. Tambin abordaremos las diferencias entre el HC-
05 y el HC-06.
En la foto de portada del artculo vemos de izquierda a derecha: los mdulos HC-05
y HC-06 en formato amigable para protoboard y un mdulo HC-05 en formato
compatible con zcalos para Xbee (mdulo bluetooth bee).
Mdulo Bluetooth HC-05
El mdulo de bluetooth HC-05 es el que ofrece una mejor relacin de precio y
caractersticas, ya que es un mdulo Maestro-Esclavo, quiere decir que adems de
recibir conexiones desde una PC o tablet, tambin es capaz de generar conexiones hacia
otros dispositivos bluetooth. Esto nos permite por ejemplo, conectar dos mdulos de
bluetooth y formar una conexin punto a punto para transmitir datos entre dos
microcontroladores o dispositivos. En otro artculo posterior veremos como configurar
dos mdulos HC-05 para que se enlacen entre ellos y podamos transmitir
informacin de un punto a otro.

Mdulo HC-05 montado en una tarjeta adaptadora compatible con zcalos 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 mdulo. En lasversiones para
protoboard este pin viene marcado como Key. Una vez que estamos en el modo de
comandos AT, podemos configurar el mdulo bluetooth y cambiar parmetros como el
nombre del dispositivo, password, modo maestro/esclavo, etc.
Para comunicarnos con el mdulo y configurarlo, es necesario tener acceso al
mdulo 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 artculo estaremos usando unmdulo Bluetooth
Bee Pro que comercializamos en nuestra tienda web, as como una interfaz USB-Serial
con socket Xbee Foca que tambin vendemos. Este es el hardware que utilizamos en
nuestro taller, pero tambin es posible hacer los ensayos con el mdulo HC-05 suelt0 o en
formato para insertar en el protoboard sin mayor problema.

Para las pruebas y configuracin del mdulo 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 fotografa para probar los comandos descritos en este artculo.
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 mdulo,
muchas veces uno pide un HC-05 y terminan vendindoles un HC-06. Esto se debe a que
esencialmente el hardware es el mismo para ambos mdulos. La nica diferencia real es
el firmware que viene cargado de fbrica. De hecho, si tenemos paciencia, podemos
convertir un HC-06 a un HC-05 nosotros mismos con solamente cambiar el firmware de los
mdulos, pero quedas advertido: Hay que construir la interfaz de programacin!
Existen unos mdulos aptos para insertarse en el protoboard que nos permiten una fcil
identificacin del mdulo soldado antes de comprar. En estos mdulos, losHC-05
normalmente tienen dos pines extra (adems de TX, RX, VCC, GND) etiquetado
como Key y State. El pin key es necesario para entrar al modo de comandos AT en
el mdulo HC-05 (pin 34) y por lo tanto, solo se instala cuando el mdulo de bluetooth a
bordo es un HC-05. Tambin 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 fotografa muestra una comparacin entre los mdulos HC-05 (izquierda) y HC-06 (derecha) en su
versin para insertar en protoboard. El HC-05 tiene 2 pines extra
Interfaz de configuracin de comandos AT en
HC-05
El puerto serie en modo de configuracin 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 alimentacin del mdulo (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 compilacin 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 mdulo en modo Maestro (Master)
AT+ROLE=0\r\n Comando para colocar el mdulo en modo Esclavo (Slave)
AT+VERSION?\r\n Obtener la versin 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 propsito general a nivel alto
Existen otros comandos AT que estn 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 direccin:
http://biblioteca.geekfactory.mx/Bluetooth_Bee_Pro/datasheet_hc-05.pdf
Es importante notar que al mdulo 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 enve \r\n al final de cada linea. Si utilizamos el Monitor Serial del IDE
de arduino hay que configurarlo de la siguiente forma:

Interfaz de configuracin de comandos AT en
HC-06
El HC-06 tiene un firmware distinto y tambin un funcionamiento distinto en cuanto a su
modo de configuracin. 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
configuracin (Comandos AT), aunque tambin 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:

Realizando pruebas con un mdulo HC-06 y una tarjeta USB serial con FT-232RL
El mdulo HC-06 acepta un set muy bsico de comandos (algo raros por cierto), que
permite pocas configuraciones, pero que sin duda ser util para personalizar este
econmico mdulo y configurarlo para satisfacer las necesidades de la aplicacin.
Los comandos que soporta son:
Prueba de funcionamiento:
Envar: AT
Recibe: OK
Configurar el Baudrate:
Envar: AT+BAUD<Numero>
El parmetro nmero 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:
Envar: AT+NAME<Nombre>
Recibe: OKsetname
Configurar el cdigo PIN de emparejamiento:
Envar: 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
estndar, lo ms 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. Tambin podemos usar el monitor serial de Arduino
configurado como se muestra en la imgen ms arriba en este artculo.
Hay que tener cuidado de introducir TODAS LAS LETRAS DEL COMANDO en
MAYUSCULAS, ya que de lo contrario, no funcionarn.
Las respuestas no parecen respuestas estndar a comandos AT.
Conexin bsica con Arduino
Las conexiones para realizar con arduino son bastante sencillas. Solamente requerimos
colocar como mnimo la alimentacin y conectar los pines de transmisin y recepcin 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 imgen
muestra las conexiones bsicas para que funcione el mdulo

Conexin de un mdulo HC-06 a Arduino. Hay que revisar la correspondencia de pines en la serigrafa, ya
que puede variar dependiendo del proveedor o lote.
En este caso estamos utilizando el hardware de UART, por lo que la comunicacin 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
comunicacin con el mdulo bluetooth queden en pines distintos.
El cdigo para la comunicacin a travs del bluetooth es idntico al que utilizaramos para
comunicarnos con la PC va USB. El siguiente ejemplo permite encender o apagar el led
de la tarjeta arduino mediante el mdulo bluetooth. El cdigo funciona de la siguiente
manera:
Al envar el caracter E, se pone en estado alto la salida del pin 13
Al enviar el caracter A, se pone en estado lgico bajo la salida del pin 13




1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
/************************* http://geekfactory.mx *******************************
*
* Sketch de prueba para modulos de bluetooth HC-05 y HC-06. Este programa puede
* controlar el led de la tarjeta arduino a travs de la conexin bluetooth. El
* programa puede ampliarse para controlar una mayor cantiad de salidas.
*
* ESTE SKETCH USA EL PUERTO SERIE (UART), MISMO QUE ES UTILIZADO PARA
* LA COMUNICACIN USB. EL USO DE BLUETOOTH O USB ES MUTUAMENTE EXCLUSIVO
* (NO SE PUEDEN USAR AMBOS AL MISMO TIEMPO).
*
* PARA USAR LA CONEXIN USB Y BLUETOOTH AL MISMO TIEMPO ES NECESARIO EMULAR
UNA
* UART POR SOFTWARE.
*
* El funcionamiento es sencillo:
*
* Enviar un caracter 'A' para encender el led
* Enviar un caracter 'a' para apagar el led
*
*/

char rxChar; // Variable para recibir datos del puerto serie
int ledpin = 13; // Pin donde se encuentra conectado el led (pin 13)

// Configurar el arduino
void setup()
{
// Pin 13 como salida
pinMode(ledpin, OUTPUT);
// Comunicacin serie a 9600 baudios
Serial.begin(9600);
}

// Ciclo infinito, programa principal
void loop()
{
// Si hay datos disponibles en el buffer
if( Serial.available() )
{
// Leer un byte y colocarlo en variable
rxChar = Serial.read();

// Procesar comando de un solo byte
if( rxChar == 'A' )
{
digitalWrite(ledpin, HIGH);
Serial.println("ON");
}
else if ( rxChar == 'a' )
{
digitalWrite(ledpin, LOW);
Serial.println("OFF");
}
}

// Podemos hacer otras cosas aqu
delay(100);
}


Conclusin
Como podemos observar, los mdulos HC-05 y HC-06 son bastante sencillos de
configurar para usarse con el microcontrolador de nuestra preferencia. El HC-06 es el
modelo ms sencillo, presentando menos opciones para su configuracin, pero siendo
bastante util y econmico 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 mdulos y tambin
teniendo un juego de comandos ms completo y un poco ms formal, con algunas
caractersticas interesantes como el control de pines de GPIO.
Ambos mdulos son excelentes para proyectos escolares, de investigacin e incluso para
su integracin en equipos o prototipos en el campo profesional, sin embargo, hay poca
documentacin formal. Esperamos que este artculo sea de utilidad para comprender
mejor el funcionamiento y la configuracin inicial.

















Mdulo Bluetooth HC-05
El mdulo de bluetooth HC-05 es el que ofrece una mejor relacin de precio y
caractersticas, ya que es un mdulo Maestro-Esclavo, quiere decir que
adems de recibir conexiones desde una PC o tablet, tambin es capaz de
generar conexiones hacia otros dispositivos bluetooth. Esto nos permite por
ejemplo, conectar dos mdulos de bluetooth y formar una conexin punto a
punto para transmitir datos entre dos microcontroladores o dispositivos. En otro
artculo posterior veremos cmo configurar dos mdulos HC-05 para que se
enlacen entre ellos y podamos transmitir informacin de un punto a otro.

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 mdulo. En
las versiones para protoboard este pin viene marcado como Key. Una vez
que estamos en el modo de comandos AT, podemos configurar el mdulo
bluetooth y cambiar parmetros como el nombre del dispositivo, password,
modo maestro/esclavo, etc.

Como configurarlo?

Para comunicarnos con el mdulo y configurarlo, es necesario tener acceso al
mdulo 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.

Conexin bsica con Arduino.

Las conexiones para realizar con arduino son bastante sencillas. Solamente
requerimos colocar como mnimo la alimentacin y conectar los pines de
transmisin y recepcin 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 imgen muestra las conexiones
bsicas para que funcione el mdulo.


Bluetooth Arduino
6 - TX RX1
7 - RX TX1
12 - Vcc 5 v
13 - Gnd GND
34 - PIO11 3,3 v





Bueno ahora si iniciemos......

Paso 1 (Conectar el Bluetooth).

Debes conectar el bluetooth como se muestra en la grafica, de tal forma entrar
en modo AT y su velocidad de transmisin cambiara a 38400 Baudios, te dars
cuenta que entr en modo AT porque el led empezar a encenderse y
pausadamente.




Paso 2 (Cargar el Sketch al arduino).


#include <SoftwareSerial.h>

SoftwareSerial serial2(6,7);

void setup() {

Serial.begin(9600);
serial2.begin(38400);
Serial.println("Configurando HC-05 By
www.ardobot.com!");
Serial.println("********Configurando HC-05
*********");

Serial.println("************************************"
);
Serial.println("");
Serial.println(" introducir comando AT;");
}

void loop() {

if (Serial.available())
serial2.write(Serial.read());

if (serial2.available())
Serial.write(serial2.read());
}
Una ves cargado el cdigo en tu placa Arduino, solamente tenes que introducir
los comandos AT, es muy fcil:

Paso 3 (Abrir el monitor Serial de Arduino IDE).

Debes abrir el Terminal de Arduino IDE, seleccionar 9600 Baudios como
velocidad de transferencia y habilitar la opcion "Ambos NL & CR". Al hacer esto
debers ver lo que aparece en la imagen. Seguido de esto enva el comando "AT"
automticamente debers recibir como respuesta "OK" si esto fue exitoso esta
todo bien.

Ahora si quieres saber a que velocidad de transmisin esta trabajando
tu Bluetooth HC-05, escribe el comando"AT+UART" debes recibir como
respuesta "+UART : 9600,0,0 / OK".Si deseas cambiarla solo ingresa:
"AT+UART = 115200,0,0" Enter y recibes como respuesta "OK", para verificarlo
repite el procedimiento anterior.

Para cambiar el nombre de tu dispositivo escribe el comando "AT+NAME =
"nombre"" y para verificarlo vuelve a escribir el comando "AT+NAME". De esta
forma debers realizar los mismos pasos con los diferentes comandos AT que
ofrece este dispositivo.







ARDUINO
COMUNICACIN BLUETOOTH Y
ARDUINO
17 DICIEMBRE, 2013 PRUEBAS DEJAR UN COMENTARIO

Aadirle lacomunicacin mediante bluetooth al arduino es muy sencilla. Lo nico que
tenemos que hacer es conseguir un adaptador bluetooth HC-05 o HC-06.
Este adaptador nospermite una comunicacin serie con el dispositivo bluetooth al
que nos conectemos. Podemos configurarlo en modo maestro, el adaptador
seleccionara el dispositivo al que se quiere conectar, o en modo esclavo, el adaptador
estar a la espera de dispositivos que se quieran conectar a el.
El HC-05 / HC-06 es un componente de tipo smd, es decir, es como un integrado que
tendremos que soldar a nuestra placa con conectores de superficie.

Pero hay en el mercado infinidad de montajes que ya bien preparados para su conexin
directa con arduino. La alimentacin estndar del HC-05/HC-06 es de 3.3v, pero el
sistema ya viene preparado para poderlo alimentarlo hasta los 6v.

Para conectarlo al arduino lo podemos hacer de dos formas,
1 Modo: Conectarlo directamente a los pines de Tx-Rx del
arduino.
Para ello solo tendremos que conectar el pin Tx del dispositivo bluetooth al Rx del
arduino, y el Rx del bluetooth al Tx del arduino. El problema que tiene este montaje,
es que eliminamos la posibilidad de utilizar el monitor del ide del arduino para depurar
el programa. Otro inconveniente que tiene, es que para poder programar el arduino, el
bluetooth no puede estar conectado a la placa del arduino.

2 Modo: Conectarlo a cualquier pin y utilizar la
librera Software Serial
Otra forma de conectarlo es utilizar las funciones que nos ofrece la librera Software
serial, para poder hacer que, cualquier pin del arduino, pueda funcionar como un
puerto serie. Lo nico que tenemos que tener en cuenta es que el pin donde este
conectado el Tx del bluetooth sera el pin Rx, y donde este el Rx sera el Tx

Como programarlo
La programacin es muy sencilla. Solo tendremos que crear una variable para poder
manejar el puerto serie.
Si lo conectamos directamente a los pines Rx-Tx del arduino solo tendremos que poner
1 Serial.begin(9600);
Si lo hacemos con la librera Software Serial tendremos que crear el puerto y luego
inicializarlo
1
2
3
4
5
6
7
// Creamos el puerto serie, le pasamos los pines que sern
// Tx (donde esta conectado en Rx del bluetooth)
// y Rx (donde esta conectado el Tx del bluetooth)
SoftwareSerial miPuetoSerie = SoftwareSerial(rxPin, txPin);

// Y lo inicializamos como cualquier puerto serie
miPuetoSerie.begin(9600);
Con esto ya tenemos establecida la comunicacin del bluetooth con el arduino.


Para leer los datos del bluetooth utilizaremos en los dos casos
1 char unChar = miPuertoSerie.read();
Y para escribir utilizaremos
1 miPuertoSerie.print("Informacin a enviar");
Ejemplo de funcionamiento bluetooth HC-05/HC-06 y
arduino
Ejemplo de funcionamiento, enciende el led del arduino, pin 13, cuando recibe a travs
del bluetooth un 1, y lo apaga cuando recibe un 0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <SoftwareSerial.h>

#define rxPin 10
#define txPin 11
#define ledPin 13

// configura un nuevo puerto
SoftwareSerial miPuertoSerie = SoftwareSerial(rxPin, txPin);

int unChar;

void setup() {
miPuertoSerie.begin(9600);
}

void loop() {
// escucha la llegada de nuevos datos serie:
char unChar = miPuertoSerie.read();
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
// imprime el caracter:
if (unChar > 0) {
switch (unChar) {
case '1':
digitalWrite(ledPin, HIGH);
miPuertoSerie.write("Led encendido");
break;
case '0':
digitalWrite(ledPin, LOW);
miPuertoSerie.write("Led apagado");
break;
}
}
}
Para probarlo, solo tendremos que enlazar nuestro telfono, ordenador, etc. al
dispositivo bluetooth, en el caso del HC-05 aparece como HC-05 y en el caso del HC-
06 como linvor o HC-06. Y, con un programa de terminal, mandar un 1 o un 0.
En mi caso lo prob con mi telfono y la aplicacin BlueTerm.






Using android mobile to control
arduino
on: February 13, 2013, 09:36:16 pm Bigger Smaller Reset

Here is my android controlled arduino project. A simple app sends
data through SPP over bluetooth and switches an LED on and off.

The circuit is just a bluetooth module, arduino UNO, LED, resistor and
some wires.

The LED can be switched on using buttons as well as voice activation
(anything that contains the word 'on','off' or 'blink' - so saying 'turn
the LED on' works as well as just uttering 'on').
I created the app using MIT app inventor and this project was created
pretty much only to show how easy it is to write custom apps using
the tool and interface with microcotrollers in this manner. One could
use MIT app inventor to add more more features, such as using
accelerometer or GPS data to control the LED, switching the state
using text messages, web communication, not only send but also
receive data, etc.
...well the point is - MIT app inventor is pretty cool and you should
check it out


VIDEO OF IT -> http://youtu.be/41MRGjdVIMQ







Here is the app for download -
> http://speedy.sh/63Q9N/bluetoothforarduino-app-2.apk

and here is the source, you can upload it to MIT's app inventor and
modify as much as you want to -
>http://speedy.sh/mDyAk/bluetoothforarduino-app-1.zip

Here is the arduino code
Code:

const int ledPin = 7; // the pin that the LED is
attached to
byte serialA;
void setup()
{
// initialize the serial communication:
Serial.begin(19200);
// initialize the ledPin as an output:
pinMode(ledPin, OUTPUT);
}

void loop() {




switch (serialA) {
case 1:
digitalWrite(ledPin, HIGH);
break;
case 2:
digitalWrite(ledPin, LOW);
break;
case 3:digitalWrite(ledPin, HIGH);
delay(100);
digitalWrite(ledPin, LOW);
delay(100);


}
}
void serialEvent(){
serialA = Serial.read();
}



MITappInventor.jpg (117.71 KB, 1019x733 - viewed 1954 times.)

MITappInventor2.jpg (110.13 KB, 1024x617 - viewed 1021 times.)

FILE0545.JPG (685.44 KB, 2048x1536 - viewed 765 times.)

FILE0546.JPG (709.89 KB, 1536x2048 - viewed 412 times.)

S-ar putea să vă placă și