Bluetooth HCHC-05 y HCHC-06 Tutorial de Configuración by Jesus by Jesus Ruben | feb 21, 2014 | Radio, | Radio, Tutoriales Tutoriales | 22 Comments
Los módulos de bluetooth HC-05 y HC-06 son módulos muy populares para aplicaciones con microcontrola microcontroladores dores PIC y Arduino 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, 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 abordaremos las diferencias entre el HC05 y el HC-06. En la foto de portada del artículo vemos vemos de izquierda a derecha: 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 ofrece una mejor relación relación de precio y características, característic as, ya que es un módulo Maestro-Esclavo, 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 microcontrola dores 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 PIN34 mientras se enciende (o se resetea) el módulo. En lasversiones las versiones para protoboard este pin viene marcado como “Key” “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. 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 usando unmódulo unmódulo Bluetooth Bee Pro que comercializamos 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 e s conveniente tener a mano un adaptador USBSerial TTL como los basados en el FT232RL o circuitos similares. Nosotros usamos las tarjetas mostradas en la fotografía pa ra 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
AT+UART=115200,1,2\r\n
Obtener la versión del firmware 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 HC05 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
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
Configurar el Nombre de dispositivo Bluetooth:
Envíar: AT+NAME
Recibe: OKsetname
Configurar el código PIN de emparejamiento:
Envíar: AT+PIN
Recibe: OK
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 l este 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 l a 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 i dé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 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 nos permite 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
// Creamos el puerto serie, le pasamos los pines que serán
2
// Tx (donde esta conectado en Rx del bluetooth)
3
// y Rx (donde esta conectado el Tx del bluetooth)
4
SoftwareSerial miPuetoSerie =
SoftwareSerial(rxPin, txPin);
5 6 7
// 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
#include
2 3
#define rxPin 10
4
#define txPin 11
5
#define ledPin 13
6 7
// configura un nuevo puerto SoftwareSerial miPuertoSerie =
SoftwareSerial(rxPin, txPin);
8 9 int unChar;
10 11 void setup()
12 13
{
miPuertoSerie.begin(9600); }
14 15
void loop() {
16
// escucha la llegada de nuevos datos serie:
17
char unChar = miPuertoSerie.read();
18
// imprime el caracter:
19
if (unChar > 0) { switch (unChar) {
20
case '1':
21
digitalWrite(ledPin, HIGH);
22 miPuertoSerie.write("Led encendido");
23 break;
24
case '0':
25
digitalWrite(ledPin, LOW);
26
miPuertoSerie.write("Led apagado");
27
break; }
28 }
29 30
}
31 32
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.)