Tutorial Básico de Uso del Módulo Bluetooth HC-06 y HC-05
Este tutorial tiene el objetivo principal de dar a nuestros lectores los conocimientos necesarios para poder añadir a nuestro Arduino la función de poder comunicarse sin cables con otros dispositivos mediante módulos Bluetooth y poder empezar a incorporarlos en nuestros proyectos de electrónica y robótica, además de utilizarlos más adelante en la serie de tutoriales que NAYLAMP MECHATRONICS ha preparado para su público aficionado.
Módulos Bluetooth HC-06 y HC-05:
Es necesario saber que existen diferentes modelos de módulos Bluetooth entre los más populares se encuentran HC-06 y el HC05, ambos de tipo Bluetooth 2.0 compatibles con Smartphones Android y PC. El módulo HC-06 y HC-05 son prácticamente idénticos a simple vista.
Entonces: ¿Cuáles son las diferencias entre el módulo Bluetooth HC-06 y el HC-05?
Una simple diferencia es que el módulo HC-06 funciona solo como Slave y el HC-05 puede trabajar como Master o Slave (lo que podría confundir a algunos).
El módulo HC-06 se comporta siempre como esclavo(Slave), esperando peticiones de conexión, si algún dispositivo se conecta el HC-06 transmite a este todos los datos que recibe del Arduino y viceversa. El módulo HC-05 se puede configurar para trabajar como Esclavo y trabajar igual a un HC-06 o configurar como Master y de esa forma trabajar de forma similar a un Smartphone/PC y poder establecer la comunicación con un Slave.
Físicamente se diferencian por el número de pines: en el HC-06 posee 4 pines mientras que el HC-05 posee 6 pines.
HC-06 (arriba) y HC-05(abajo)
Para este tutorial trabajaremos con un módulo HC06 pero también es válido para un módulo HC-05 en modo Esclavo, que es su configuración de fábrica.
Conexión del módulo Bluetooth HC-06 con Arduino:
1. VCC, Voltaje positivo de alimentación, aquí hay tener cuidado porque hay módulos que solo soportan voltajes de 3.3V, pero en su mayoría ya vienen acondicionados para q trabajen en el rango de 3.3V a 6V pero es bueno revisar los dato técnicos de nuestro módulo antes de hacer las conexiones. En este caso se conecta al pin 5V del Arduino.
2. GND, Voltaje de tierra de alimentación, se tienen que conectar al GND del Arduino o al GND de la placa que se esté usando.
3. TX, Pin de Transmisión de datos, por este pin el HC-06 transmite los datos que le llegan desde la PC o Móvil mediante bluetooth, este pin debe ir conectado al pin RX del Arduino.
4. RX, Pin de Recepción de datos, a través de este pin el HC-06 recibirá los datos del Arduino los cuales se transmitirán por Bluetooth, este pin va conectado al Pin TX del Arduino.
Explicado esto podemos iniciar con la conexión entre Arduino y el módulo Bluetooth, recomendamos utilizar cables jumper Dupont macho-hembra. En este tutorial trabajaremos con un Arduino UNO R3, pero se pueden realizar las mismas conexiones con el Arduino Mega, Arduino Nano, etc.
Para cargar el programa al Arduino, desconectaremos los pines RX0 y TX0 del Arduino, pues internamente el Arduino trabaja con los mismos pines para cargar el programa y si están conectados al módulo Bluetooth no se podrá cargar sketchs (para evitar este inconveniente se puede usar el software serial y usar otros pines).
Sketch Arduino:
Ahora en el IDE Arduino copiamos el siguiente código y luego lo cargamos a nuestro Arduino:
Luego de cargar el sketch, nuevamente volvemos a conectar los pines RX y TX. El programa/sketch que hemos cargado al Arduino básicamente devolverá por el Bluetooth cualquier dato que se reciba a través de él.
Ej1. Conexión Bluetooth con PC:
Para nuestro ejemplo utilizaremos Windows 8, (pero el procedimiento es similar para Windows 10, Windows 7 y XP)
Si es la primera vez que el módulo Bluetooth se va conectar a la PC lo primero es vincularlo, para esto en la PC hacemos una búsqueda de los dispositivos Bluetooth:
En la búsqueda debería de Aparecer nuestro módulo Bluetooth con el nombre HC-06 o Linvor, Para vincularlo nos pedirá una clave o código de emparejamiento, generalmente es 1234.
El nombre y código de vinculación que mencionamos son los que vienen por defecto al igual que la velocidad de transmisión que viene por defecto de 9600, todos estos parámetro se pueden configurar con comandos AT, esto se explica en este otro tutorial (Comandos AT para el HC-06)
Una vez vinculado, tenemos que averiguar que puerto COM se le ha asignado al módulo Bluetooth, para esto hacemos click en el icono Bluetooth y entramos a abrir configuración, generalmente se encuentran dos puertos relacionados al módulo, uno entrante y otro saliente, el saliente es el que inicia la conexión, por lo que es el puerto que usaremos, en nuestro ejemplo es el COM6.
Para conectarse al Módulo Bluetooth desde la PC usaremos el Hyperterminal (Link de descarga modo prueba)
Abrimos y le asignamos un nombre a la conexión y luego elegimos el puerto COM perteneciente al Bluetooth que en nuestro caso es el COM6:
Al pulsar Aceptar, Hyperterminal hará la conexión al HC-06, cuando se establezca la conexión el HC-06 dejará de parpadear y en la parte inferior del Hyperterminal indicará CONECTADO, ahora podemos enviar por teclado cualquier carácter y el Arduino nos devolverá el carácter enviado.
También podemos hacer la conexión desde otros programas como: Proteus, Proton, Micro Code Studio, Java, Labview, entre otros.
Ej2. Conexión Bluetooth HC-06 con Smartphone Android:
Primero tenemos que instalar una aplicación que haga la función de un terminal Serial, para el caso de Android se puede utilizar Blue Term, también existen otras aplicaciones pero esta aplicación es la más popular.
Antes de empezar a usar la aplicación debemos vincular nuestro Smartphone con el módulo HC-06, esto al igual que en la PC, solo se hace una sola vez, para esto vamos a Ajustes->Bluetooth y Buscar dispositivos, en la búsqueda nos debería aparecer nuestro HC06, al seleccionarlo nos pedirá el código de vinculación, que como recordamos lo explicado al inicio generalmente es 1234.
Una vez vinculado abrimos la aplicación Blue Term, antes de hacer la conexión, con el botón menú entramos a preferencias y activamos la opción de Echo Local para que se muestre en pantalla los caracteres que se ingresan por teclado, que son los que se envían:
En esta sección también podemos cambiar el tamaño de fuente y color. Una vez realizadas las configuraciones, volvemos y entramos a menú->conectarse a un dispositivo:
En la lista muestra todos los dispositivos vinculados en nuestro celular, seleccionamos el HC-06, la aplicación intentará conectar con el HC-06, si logra la conexión en la parte superior debe salir el estado de: "conectado".
Una vez conectado, podemos enviar datos, es bueno mencionar que la aplicación envía el carácter tan pronto se presione la tecla. Como el programa en nuestro Arduino devuelve el dato recibido, si todo anda bien, en nuestra aplicación se debería mostrar las teclas presionadas:
Esperamos que este tutorial sea de utilidad a todos para iniciar a utilizar el módulo bluetooth en sus proyectos, cualquier duda o consulta no olviden dejar sus comentarios!
Ca**** 30/05/2022 Responder
Hola! Hay alguna función para saber si el Bluetooth esta conectado a algún dispositivo? Tengo que realizar un proyecto y me interesaria saber si el bluetooth esta conectado a un dispistivo o no, ya que depende de eso si se tiene que utilizar o no. GraciasDa**** P 02/06/2020 Responder
Hola. Mi pregunta es, ¿si yo quiero conectar mi arduino-bluetooth a un dispositivo externo como un reproductor de sonido, lo puedo hacer desde arduino, es decir, conectarme desde arduino-bluetooh a otro dispositivo y no desde otro dispositivo al arduino-bluetooth como en el caso del uso del celular para realizar la conexión?Jo***** 25/05/2020 Responder
Hola;Tengo un problema con varios HC-06 configurados a 19200bau y al emparejar lo con mi pc no me crea un puerto saliente "SPP Dev " si no un puerto serie normal.
¿ Cómo podría solucionar esto?
Saludos
Is****** 15/05/2020 Responder
Hola, estoy tratando de hacer que cuando suene un buzzer llegue una señal a el teléfono al que el módulo Bluetooth está conectado, como le hago?Lu** ****by 03/12/2019 Responder
Alguna aplicacion q controle al bluetooth sin arduino y poder controlar bombillas de 220vGu***** 29/09/2019 Responder
Buenos días Naylamp, tengo un arduino que toma 2 tipos de medición (distancia (HC-SR04) y temperatura (LM35)), cuando el arduino esta conectado a la raspberry pi por el cable USB la transmisión de datos por el puerto serial es buena, eso datos transmitidos por arduino los leo por la parte de raspberry pi con un script python el cual se encarga de mostrarme los datos en su respectiva consola.Cuando desconecto el arduino de la raspberry y lo coloco a una distancia de 10mts. aprox. me da un error de puerto serial, es obvio ya no esta conectado, ahora el arduino necesita enlazarse vía inalambrica (módulo bluetrooth HC-05), creo que aparte de conectarlo a teléfonos que me parece genial la idea, el alma de este módulo es poder hacer el tipo de conexión que propongo y que un script python lea los datos que se estan transmitiendo por el HC-05, y me gustaría saber como hacerlo, espero puedan ayudarme con mi tema sin resolver.
Desde ya les agradezco su atención.
Saludos cordiales.
re****** 23/08/2019 Responder
por favor necesito alguien me indique que hacer, el modulo HC06 cuando no interactuo con el a los 30 segundos se desconecta.. habra alguna solucion,, ya he probado con varios y todo igual, mientras estoy enviandole datos todo ok,, muchas gracias reinaldo..Do**** ******* ****as 23/10/2018 Responder
Buenas noches. Tengo un HC 05 configurado como Maestro. Tengo una impresora bluetooth POS58 con su direccion bluetooth. Como podria emparejarlo para que se conecte directamente el HC 05 a la impresora si es que esta impresora(o cualquier otro dispositivo) tiene una clave de emparejamiento. Muchas gracias
An* ******* *******ez 26/08/2018 Responder
Hola buenas tardes, en primer lugar agradecer todo el material expuesto en esta pagina porque me ha servido de mucha ayuda, pero no ha terminado de solventarlas. La problemática con la que me encuentro es la siguiente: quiero poder controlar el encensido y apagado de unos leds que se encontrarían en una camiseta, a través del móvil por buettothJA**** **** ********EZ 30/07/2018 Responder
Hola, tengo un teclado inalámbrico y quiero convertirlo a Bluetooth. Es posible hacerlo solo sustituyendo el modulo de transmision / recepción por el módulo HC-06?Gracias!
Ma***** *****di 05/06/2018 Responder
el archivo del Hyperterminal en Mega ya no está disponible.Podrías actualizarlo o enviarmelo por mail.
Muchas gracias
da**** 07/02/2018 Responder
os escribo para comentaros que tengo algunos problemas para conseguir la correcta comunicación entre el módulo Bluetooth HC-06 y el dispositivo Android (móvil alcatel idol 5; tablet samsung note 8). Os expongo el problema para que me orientéis, si es posible.symbol varA = w0
symbol varB = w1
symbol varC = w2
symbol varD = w3
symbol varE = w4
symbol varF = w5
symbol varG = w6
symbol varH = w7
main:
setfreq m16
do
serin C.7, N4800_16, varA
pause 50
debug
if varA = 1 then
servo B.6, 75
endif
loop
stop
El de arriba es el programa realizado con Blockly for Picaxe (aplicación disponible en Google Play. Esta aplicación es para microprocesadores Picaxe. No sé si la conocéis, pero me parece que el problema puede no estar en ella, ahora veréis porqué lo digo. En cualquier caso, y por dar todos los datos, yo estoy trabajando con una placa AXE 020, y un micro Picaxe 28x2).
Esta pequeño programa configura un movimiento para la variable A=1 , que es la que en teoría manda la señal que transmite el Bluetooth del Android al módulo Bluetooth HC06.
Tan sólo he conseguido que haga algo (un movimiento a duras penas) en estas configuraciones en Blockly del bloque entrada serie,(en las demás nada) a pesar de que la configuración del Bluetooth es la que trae por defecto de fábrica, es decir 9600 baudios:
N2400 a frecuencia valor por defecto
N1200_4 a frecuencia valor por defecto(hace ruidos,nada más)
N4800_16 a frecuencia valor por defecto
Aunque sólo tiene configurado un movimiento para varA=1, cuando pulsaba 2 ó 3 ocurría lo mismo (mover el servo B6 a 75º) la primera vez. Luego ya no hace nada más.
En otros programas, configuraba tres teclas con movimientos distintos en Blockly, pero al enviar la señal a través del móvil, sólo respondía una, la primera vez.
Os mando un vídeo de cómo está configurada la aplicación Bluetooth Electronics a través de wetransfer, con el asunto "Problemas de conexión módulo Bluetooth HC-06 Android Daniel Pozo"
Creo, que el problema está en cómo he configurado Bluetooth Electronics, y posiblemente también en el primer bloque azul de la foto de arriba(que lo puse así porque era el único que conseguía algún movimiento). Los android se emparejan bien con el módulo HC06, el problema es la comunicación de los datos.
Agradecería cualquier ayuda.
Se**** 23/11/2017 Responder
Hola tengo un modulo blutooth n-05 y no responde cuando lo conecto a mi telefono los comandos y no se que puede serDe*** ******* 21/11/2017 Responder
Buen dia, estoy ensayando el modulo blouthoo le cargue el programa, dice subido, conecto con la app, dice conectado, sale la pantalla azul, le doy cualquier letra enter pero no me devuelve nada. que podria se. GraciasJo*** ***id 24/05/2019 Responder
Mi problema es similar, el movil se conecta al modulo HC-06 pero no recepciona y no transmite nada, porfavor comentar si solucionaste estoDe*** ******* 21/11/2017 Responder
Buen dia, estoy ensayando el modulo blouthoo le cargue el programa, dice subido, conecto con la app, dice conectado, sale la pantalla azul, le doy cualquier letra enter pero no me devuelve nada. que podria se. GraciasLo***** 02/10/2017 Responder
Hola, trato de simular dos arduinos con dos dispositivos bluetooth, donde uno transmite y el otro recibe, lo conecte al Virtual Terminal en proteus, pero no hallo manera de que el otro lo reciba, y no se lo que debo configurar en el proteus para ello. Que puedo hacer. Lo que quiero es una manera de simular el modulo bluetooth en proteus con el arduino y si puedo comunicarlo con el cell mejor, antes de montar el arduino con el modulo. Otra pregunta, yo estoy simulando con HC-05, pero lo que tenmgo fisicamente es un ftb-06, sera lo mismo.Se******* *****as 15/09/2017 Responder
HolaUso la aplicacion, pero cuando el conecto la aplicacion, el deja de parapadear pero se apaga y empeiza a parapadear cada 5 seg.
¿Por que sucede eso, y como se puede solucionar?
Jo**** ****jo 12/06/2018 Responder
Amigo, estoy teniendo el mismo problema que tú, quisiera saber si pudiste solucionar tu problema y como lo hiciste,espero tu respuesta, gracias.
Na***** 19/09/2017 Responder
Hola Sebastián, la forma en que parpadea el led va a depender si es un HC-06 o un HC-05, si es un HC06 sin conexión parpadea y cuando se conecta se queda encendido, y si es un HC05 sin conexión parpadea rápido y cuando se conecta hace un doble parpadeo.Ro***** 23/05/2018 Responder
Hola NaylampEl parpadeo rapido del led del HC 05 debe disminuir cuando este se conecta a un microcontrolador (despues de haber configurado los pines donde hace conexion como UART) o despues de que ha hecho conexion con otro dispositivo mediante bluetooth.
Da**** 02/06/2017 Responder
Una pregunta similar a la primera. Tengo de proyecto encender una carga (tengo mi módulo relevador para arduino) digamos un foco. Pero quiero que cuando yo conecte mi smartphone al módulo HC 06 esclavo éste sin yo tener que presionar más botones encienda dicho foco. ¿Hay alguna forma o código para añadir que además de que el módulo conecte al teléfono, encienda el foco sin presionar más botones? GraciasNa***** 18/06/2017 Responder
Hola, Damián, puedes usar el pin STATE de un HC-05, el estado de ese pin cambia cuando el bluetooth está conectado.Mi**** 29/05/2017 Responder
Buen Día . Amigo disculpe tengo una pregunta. Una vez conectado el dispositivo hc al arduino y emparejado al teléfono como puedo ver los valores enviados en el monitor serie para usarlos en la programación? Lo pregunto porque sólo me da un patrón codificado en cuadros y figuras , no se como llevarlo a un valor numérico que pueda ser usado en el SketchNa***** 18/06/2017 Responder
Hola Miguel, el Arduino y la PC se comunican por los pines RX0 y TX0, si usas el monitor serial ya no podrás usar esos pines para el modulo Bluetooth, tienes que implementar un SoftwareSerial en otros pines para el bluetooth. Puede usar el sketch que usamos en nuestro tutorial: Configuración del módulo bluetooth HC-06 usando comandos ATga***** ****da 06/05/2017 Responder
saludos..Tengo una inquietud, estoy queriendo hacer un proyecto de domotica pero quiero controlar cada bombilla de mi casa con arduinos independientes y controlarlos por bluetooth. quiero saber si es posible utilizar un arduno con hc - 05 de maestro y 5 arduinos independientes con hc - 05 en modo esclavos.
Na***** 11/05/2017 Responder
Hola Gabriela, Un HC-05 como maestro puede estar conectado o emparejado solo con un esclavo a la vez, lo que puedes hacer es usando comandos AT configurar el modulo para que pueda conectarse con determinado esclavo, tendrías que hacer esto cada vez que quieras conectar con un diferente esclavo, la configuración tendría que ser en tiempo real, lo que tomaría un tiempo antes de poder enviar información al esclavo. Lo recomendable es usar un maestro por cada esclavo si la comunicación va a ser continua.