Bluetooth HC-05.pdf

21
Bluetooth HC-05 y HC-06 Tutorial de Configuración by Jesus Ruben | feb 21, 2014 | Radio, Tutoriales | 22 Comments 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.

Transcript of Bluetooth HC-05.pdf

Bluetooth HC-05 y HC-06 Tutorial de Configuración by Jesus Ruben | feb 21, 2014 | Radio, Tutoriales | 22 Comments

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 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 lasversiones 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 unmó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.

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

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:

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:

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 imágen

muestra las conexiones básicas para que funcione el módulo

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

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 través de la conexión 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 COMUNICACIÓN USB. EL USO DE BLUETOOTH O USB ES MUTUAMENTE EXCLUSIVO

* (NO SE PUEDEN USAR AMBOS AL MISMO TIEMPO).

*

* PARA USAR LA CONEXIÓN 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);

// Comunicación 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);

}

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.

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 cómo configurar dos módulos HC-05 para que se

enlacen entre ellos y podamos transmitir información 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 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.

¿Como configurarlo?

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.

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 imágen muestra las conexiones

básicas para que funcione el módulo.

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 transmisión cambiara a 38400 Baudios, te darás

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 código en tu placa Arduino, solamente tenes que introducir

los comandos AT, es muy fácil:

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

deberás ver lo que aparece en la imagen. Seguido de esto envía el comando "AT"

automáticamente deberás recibir como respuesta "OK" si esto fue exitoso esta

todo bien.

Ahora si quieres saber a que velocidad de transmisión 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 deberás realizar los mismos pasos con los diferentes comandos AT que

ofrece este dispositivo.

ARDUINO

COMUNICACIÓN BLUETOOTH Y

ARDUINO 17 DICIEMBRE, 2013 PRUEBAS DEJAR UN COMENTARIO

Añadirle lacomunicación 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 comunicación 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 conexión

directa con arduino. La alimentación estándar 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

librería “Software Serial”

Otra forma de conectarlo es utilizar las funciones que nos ofrece la librería “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 programación 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 librería “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 serán

// 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 comunicación 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("Información 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 través

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 teléfono, 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 teléfono y la aplicación “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.)