bclose

El módulo BlueTooth HC-05

ARduino y la conexión BlueTooth

Objetivos

 

 
    • Presentar el módulo HC-05.
    • Describir las ventajas y diferencias con el módulo HC-06.
    • Presentar más posibilidades con los comandos AT.
    • Presentar un montaje y programa que nos permite entrar directamente en modo de configuración de comandos AT..
 

Material requerido.

 

 Tienda EspañaTienda Mexico
Imagen de Arduino UNO Arduino Uno o similar.Arduino UNO R3
Imagen superiorModulo Bluetooth HC-05Modulo Bluetooth HC-05
Cables Dupont Macho-HembraCables Dupont Macho-HembraCables Dupont

 

El módulo BlueTooth HC-05

 

En la sesión anterior presentamos algunos conceptos básicos sobre las redes Bluetooth y las funciones que se suelen realizar con ellos. Presentamos el concepto de Master y Slave y configuramos el modulo HC-06 que solo podía trabajar en el modo Slave.

En esta sesión, vamos a utilizar su hermano mayor el modulo HC-05, que puede configurarse tanto como Master que como Slave, y que además dispone de bastante más parámetros de configuración y capacidades de interrogación.

El aspecto externo es bastante similar  y la mejor manera de diferenciarlos es por los pines el soporte, 4 para el HC-06 y 6 pines para el HC-05.

Dispositivos bluetooth

En la última sesión insistimos en que no hay diferencias hardware entre ambos modelos, pero sí que hay diferencias muy importantes en el firmware (La programación interna del módulo).

Además, mientras que el HC-06 entra en modo de programación en cuanto lo enciendes y mientras no haya nadie conectado por Bluetooth, el HC-05 es ligeramente más complicado de colocar en modo comandos y requiere una cierta manera de arrancado, concretamente requiere que el pin KEY, (Que no estaba conectado el caso del HC-06) este en HIGH cuando encendemos el modulo.

He visto bastante información he internet que recomendaba unos ciertos procesos para arrancar el modulo que siempre me han parecido confusos y tienden a despistar a los que se acercan al tema por primera vez.

Por eso hemos decidido implementar este procedimiento en un Sketch de Arduino, para que podamos correrlo cuando necesitemos programar el módulo.

El procedimiento normal con estos módulos, suele ser conectarlos, ver la configuración y reprogramarlos con nuestras preferencias. Después mantendrá la programación hasta que decidamos cambiarla.

Pero parece que el proceso da bastante guerra, así que vamos a ver si podemos ayudar.

Conexión del BlueTooth HC-05 al Arduino

 

La conexión es muy sencilla aunque requiere algún cable más que el modulo HC-06, y algún cambio:

 

Diagrama de protoboard

 

En primer lugar, para que el HC-05 entre en modo comandos AT, requiere que cuando se enciende el modulo, el pin KEY este HIGH. Por eso hemos conectado la tensión Vcc del módulo BlueTooth al pin 8 de nuestro Arduino.

El consumo del módulo es mínimo y nuestro Arduino es capaz de alimentarlo sin problemas, por eso el modulo se encenderá cuando pongamos HIGH en el pin 9. Esto nos permitirá poner en HIGH el pin digital 8, al iniciar nuestro programa y después levantar el pin 8, de este modo cuando arranque entrara sin más en el modo de comandos AT.

El resto de los pines se conectan de forma similar a lo que hicimos en la sesión anterior. Txd y Rxd se deben conectar cruzados con los pines de comunicación de Arduino, que usaremos mediante la librería software Serial.

El pin State refleja, supuestamente, la situación en la que se encuentra el modulo y por ahora no vamos a utilizarlo.

 

Programa de control

 

Así pues, no tenemos nada nuevo en el programa excepto que alimentaremos el modulo desde el pin digital 8, para forzarle a entrar en el modo comandos AT. Nuestro programa quedaría poco más o menos así:

Contenido solo disponible para suscriptores. ¡Accede al contenido!

      

#include <SoftwareSerial.h>

SoftwareSerial BT1(10, 11); // RX | TX
void setup()
   { pinMode(8, OUTPUT);        // Al poner en HIGH forzaremos el modo AT
     pinMode(9, OUTPUT);        // cuando se alimente de aqui
     digitalWrite(9, HIGH);
     delay (500) ;              // Espera antes de encender el modulo
     Serial.begin(9600);
     Serial.println("Levantando el modulo HC-06");
     digitalWrite (8, HIGH);    //Enciende el modulo
     Serial.println("Esperando comandos AT:");
     BT1.begin(57600); 
   }

void loop()
   {  if (BT1.available())
            Serial.write(BT1.read());
      if (Serial.available())
            BT1.write(Serial.read());
   }

Con este procedimiento garantizamos que el modulo HC-05 entra solo en modo AT comandos, y que nuestra consola nos va a servir para programarlo, y confío en que nos evite todas las complicaciones.

Mi HC-05 me envía a la consola un mensaje de Status en cuanto arranca en el modo AT, si es vuestro caso deberíais ver un mensaje en la consola. Si no es así,  o veis signos raros, suele ser indicador de que la velocidad de comunicación entre Arduino y el modulo es incorrecta.

Id probando velocidades hasta que veáis algún mensaje correcto. Enviar un AT siempre debería recibir una respuesta de OK.

 

Programando el HC-05 con comandos AT

 

Confío en que si hemos seguido los pasos anteriores cuando abras la consola deberías recibir un mensaje del módulo directamente, y si no, basta con que escribáis AT Intro, recibiréis un OK como muestra la captura de pantalla:

Muestra el mensaje de inicio

El mensaje que obtengáis no tiene por qué ser el mismo e incluso puede que no tengáis ningún mensaje en absoluto, pero es importante que os aseguréis de que tenéis seleccionado Ambos NL&CR para terminar las líneas.

El modulo HC-6, finaliza los comandos por tiempo y por eso en la sesión anterior usamos GetLine para conseguir líneas completas. Pero el HC-05, no hace esto sino que espera que la línea acabe educadamente  en \r\n y entonces ejecuta el comando.

 
  • Aparentemente el número de modificaciones de software con la que se venden estos módulos es bastante elevada y por ello no es fácil garantizar nada con ellos.
  • Aparentemente todos los módulos que he probado aceptan ordenes similares, pero no todos los módulos aceptan todas las ordenes,(Supongo que dependiendo del Firmware).
 

Cuando menos si escribís en mayúsculas AT e intro, deberías recibir una respuesta de OK en la consola. Y si es así podemos seguir viendo más comandos.

AT+VERSION, Requiere la versión del Firmware. En la captura de arriba muestra el resultado

AT+NAME, Requiere que nos informe del nombre que tiene asignado el modulo. Debería devolvernos un mensaje del tipo +NAME=HC-05, indicando que se llama HC-05.

 
  • El modulo HC-06 se podía renombrar exactamente así, pero no podíamos preguntarle qué nombre tenía asignado. Solo cambiarlo.
 

AT+NAMEXXXX, programa el nombre que queremos presentar cuando alguien nos localice:

AT+NAMECharly

AT+BAUD, nos permite solicitar la velocidad a la que está programado el modulo para hablar con Arduino, y AT+BAUDX, Fija la velocidad de comunicación entre el modulo y la consola de acuerdo a la siguiente tabla:

1 configura        1200bps
2 configura        2400bps
3 configura        4800bps
4 configura        9600bps (Default)
5 configura        19200bps
6 configura        38400bps
7 configura        57600bps
8 configura        115200bps

Ejemplo: AT+BAUD7 configura la comunicación a 57600 baudios

Si enviamos AT+BAUD, la respuesta es de la misma forma: BAUD=7 para indicar 9600.

AT+PIN, Solicita el PIN actual y  en la consola veris: PIN=1234 o similar.

AT+PINXXXX, configura el número de identificación personal, que se requerirá para establecer la vinculación

AT+PIN4516, establece 4516 como PIN.

 
  • Recordad que el PIN es el número de identificación personal, que usaremos al conectarnos al módulo, pues exigirá conocer la contraseña.
  • El PIN es de 4 dígitos siempre
 

Básicamente estos son los mismos comandos que aceptaba el modulo HC-06 pero el HC-05 acepta bastante más.

Contenido solo disponible para suscriptores. ¡Accede al contenido!

Resumen de la sesión

 

 
    • Hemos presentado el modulo BlueTooth HC-05.
    • Hemos visto las diferencias con el módulo HC-06 y que a diferencia de este, se puede configurar como maestro o como esclavo.
    • También hemos visto que acepta bastantes mas ordenes en comandos AT.
    • Hemos presentado un montaje que fuerza a entrar en el modo AT al módulo cuando arranca. Una vez programado podemos soltar el pin KEY y el modulo estará listo para el servicio.

 
 
 

 

 

 

 

Para porder realizar consultas a nuestros expertos, tienes que ser suscriptor. Suscribiendote nos ayudas a mantener este proyecto en marcha.

¡ Quiero Suscribirme !

Si ya eres premium y no puedes comentar haz login. Hacer login

(263) Comments

    • Kotin

    Si hacéis esta práctica y no os responde en la consola cuando escribes “AT” con la esperanza de que os responda un “ok”. debéis poner como defecto una velocidad de transferencia de 38400 baudios.

    • Carlos González

    Buen día, los módulos que ustedes comercializan del hc-05 le es funcional el pin STATE es decir si nos muestra el estado de conexión al dispositivo de tal forma que va a 0 cuando abre la conexión? Y se va a 1 cuando cierra la conexión? Para solicitar un puño de estos, pero si necesito que funcione este pin. Ya que hay módulos que internamente no vienen conectados

      • Ivan Uriarte

      Hola Carlos, no he usado nunca ese pin, pero vienen con él, así que es de suponer que funcionarán.

    • Jesustor

    Hola, creo que en el código se activan los pin al revés, primero debería ser el 8 y después el 9.

    • Raúl Becerra

    Hola estoy desarrollando un medidor de pulso, con un medidor de pulso, un modulo HC-05 ya configurado como esclavo y un Arduino Mega. El tema es que recibo efectivamente la señal del pulsor, pero al momento de revisar en bluetooth electronics no muestra ninguna señal. (El modulo ya esta conectado la aplicación de mi celular).

    Alguien me podría ayudar con esto?

    Saludos.

      • Ivan Uriarte

      Tienes que enviar el dato por el puerto serie al que tengas conectado el bluetooth. Si usas una app que lea los mensajes deberías poder leerlo.

    • Montes

    Buenas, cuando conecto el modulo Bluetooth no me da señales de vida, ya que la luz del modulo no enciende.. que puede sere?

      • Ivan Uriarte

      Sólo con alimentarlo debería encenderse el led de testigo. Si no pinta que está roto. Un saludo.

  • Buenas he seguido todos los pasos, se enciende el hc05 y todo per quando le escribo AT no hace nada… Las conecciones como las de el diagrama y la velocidad y todo como decis

      • Ivan Uriarte

      Asumiendo que esté todo bien conectado, el problema puede estar en que no tengas seleccionado en ajuste de línea del monitor serie “Ambos NL & NR” o que tu módulo esté a otra velocidad si lo has utilizado antes. Un saludo.

  • Hola.
    Se puede sacar el micro 328 y conectar los HC directo a los pines 0 y 1 y comunicar directo el monitor serial de Arduino con el módulo.
    Lo mismo sirve con el módulo de wifi.
    Saludos.

    • Joaquín

    Hola, me parece que todo esta muy bien explicado, pero apesar de eso no puedo enviar ningun solo comando AT. Podrian ayudarme?
    Saludos

      • Ivan Uriarte

      Hola Joaquín, pueden ser varias cosas.
      Que los cables estén al revés, recuerda, Tx a Rx y Rx a Tx.
      Que la velocidad que selecciones para el puerto serie no sea la que tiene configurada el HC-05.
      Recuerda también que en el monitor serie tienes que seleccionar Ambos NL & CR abajo a la derecha.

      Un saludo.

        • Christian

        Hola! tal como a Joaquin, no responde a ningún comando, y he revisado todo esto ultimo que se ha mencionado y nada. El hc 05 (JY_MCU) no responde a ningún comando, y aun fuera de modo AT, tampoco es reconocido por ningún bluetooth desde que lo compre. Alguna idea de si alguien lo soluciono ya?

          • Ivan Uriarte

          Hola Christian, la verdad es que me he encontrado con varios tipos de HC que funcionan cada uno un poco como le da la gana. Primero mira a ver si te lo encuentra el teléfono. Sólo con alimentar el hc debería ser suficiente para encontrarlo.

          Prueba con los comandos del HC05, y activa y desactiva el retorno de carro y de línea del monitor serie a ver si funciona de alguna de las dos formas. Y si nunca lo has programado debería estar a 9600 baudios por defecto.

    • René

    Ivan el tutorial es bastante claro. Siguiendo la continuación de otros tutoriales de la página estoy en la controversia de que me parece que el HC-05 no se podrá utilizar para hacer un robot auto con motores DC, ya que los pines que se utilizan en los motores son utilizados para el módulo HC-05

      • Ivan Uriarte

      Hola rené, no se que controlador de motores quieres usar, pero puedes utilizar para el bluetooth dos pines cualesquiera que soporte la librería Software Serial, así que si deberías poder. UN saludo.

    • Carlos

    Hola tengo un hc05 pero le cambie el pin y ahora no logro recordar cual le puse , hay algun programa que me permita conectarme a el

      • Ivan Uriarte

      Puedes hacerlo con el comando AT AT+PSWD.

    • Vicent

    Hola , he conectado el módulo hc-05 en modo AT para comprovar que hay comunicación con el arduino y todo perfecto . Mi método de activación para el modo AT ha sido , antes de conectar el pin Vcc del modulo hc-05 a 5V ,he presionado el boton anexo al mismo , manteniendo este ,he conectado el pin Vcc a 5V i después he soltado el boton . He podido conectar-me perfectamente con el monitor serie del arduino y provar varios comandos . Después lo he vinculado ( sincronizado) con el mobil .
    Para salir del modo AT he desconectado el pin KEY y el módulo hc-05 continua parpadeando lentamente . Tambien he provado salir del modo AT desconectando el pin Vcc del módulo , parpadea rápidamente pero no conecta con el mobil ( deberia dejar de parpadear )

    He configurado UART=38400
    role =0 . Si pongo role=1 no puedo sincronizar-lo con el mobil.

      • Juan carlos macho mangas

      SI entrar en detalles que descoozco de tu modulo y de lo que le hayas programado, cuando lo desconectas de tension y lo rearrancas deberias entrar en el modo normal. SI no es asi, es que le has programado algo que no se

  • Hola, quiero configurar un HC-05 como maestro pero en una Arduino Mega 2560, esto también me sirve o qué debo hacer? Estoy muy perdido, ayuda por favor.

      • Ivan Uriarte

      Hola Erick, da igual el Arduino que vayas a usar los comandos AT para configurar el módulo son los mismos. Un saludo.

    • Luisa

    Buenas tardes, configuré el arduino tal como se muestra pero al intentar dar comandos AT no me los reconoce, aparece el mensaje en consola de “Levantando el modulo HC-06” y “Esperando comandos AT:” pero al hacer AT+ intro no aparece el Ok

      • Juan carlos macho mangas

      Hola Luisa, Los ejemplos que ponemos en nuestros tutos estan comprobados repetidamente, pero a veces hay modulos BT de diferenctes fabricantes que pueden respondor de maneras diferentes por lo que tienes que hacer pruebas hasta dar con la clave

      • Abraham

      Hola! yo tenía el mismo problema con un hc05, después de probar todas las velocidades, coloqué el divisor de tensión en RX y el modulo comenzó a responder, asi que me ha tocado el modulo que si es sensible a los 3,3 voltios.

      • ¿Podrías explicarme como lo has hecho? Es decir, ¿como has dispuesto el hardware y como lo has programado? Tengo el mismo problema.
        Un saludo.

      • Gonzalo

      Que tal a mi también me paso lo mismo hasta que probé mantener presionado el boton que tiene mientras enviaba los comandos AT y al fin funciono.

    • Reinel

    Buenas noches.
    He logrado vincular el hc-05 al arduino cambiar el nombre, pero ahora ningun celular detecta el bluetooth, y solo lo hacen cuando desvinculo el hc-05 del arduino, hay algun comando aparte de maestro y esclavo que ya intente al cambiar que me pueda solucionar este problema? gracias

      • Ivan Uriarte

      Hola Reinel, Si estás usando el HC-05 como esclavo sólo puedes conectarlo a un único maestro, no puede estar conectado a dos a la vez. Si quieres que se le conecten varios dispositivos tienes q configurarlo como maestro.

Para porder realizar consultas a nuestros expertos, tienes que ser suscriptor. Suscribiendote nos ayudas a mantener este proyecto en marcha.

¡ Quiero Suscribirme !

Si ya eres premium y no puedes comentar haz login. Hacer login