Objetivos

 

  • Veremos los comandos AT que acepta cada uno.
  •  

    Material requerido.

    <  

    Dispositivos bluetooth     Un módulo BT hc-05 o hc-06

     

    Los módulos Bluetooth HC-06 y HC-05

     

    Hace ya bastante tiempo, que todos llevamos un móvil en el bolsillo o bolso (Según el caso) y nos hemos acostumbrado a conectar con el bluetooth las cosas mas peregrinas, que van desde auriculares inalámbricos a relojes deportivos. Por eso los que jugamos con cositas electrónicas estamos bastante familiarizados con el BlueTooth y antes o después, vamos a querer conectar algún cacharrito Arduino y gobernarlo mediante el móvil.

    Puede ser un robot de 2 o 4 ruedas para dirigirlo con alguna app, o simplemente como manera de encender o activar cualquier cosa como luces leds, motorcitos o en muchos casos, esos pequeños robots tan divertidos.

    Para conseguir la conexión desde Arduino disponemos de múltiples módulos BT que podemos usar y los más típicos son los HC-05 y HC-06 (De los hay varios ejemplos en prometec) y los HM-10 que son bastante parecidos. La principal diferencia es que los HC son bluetooth 2, mientras que los HM son BT 5.0.

    ¿Es esto importante? Pues sí. Porque, aunque poco menos que cualquier teléfono Android soporta ambos modos, los chicos de la manzana han decidido que ellos pasan de cosas antiguas como el BT2, y no se “ajuntan”, lo que puede ser un problema si tienes uno de los últimos modelos carísimos de Apple porque no va a funcionar con HC-05 y HC-06.

    Para los de Apple tienes que usar HM-10 y olvidar el resto, para los demás no hay problema normalmente. Y aquí está la clave: “Normalmente”; los módulos BT son simpáticos, sencillos y baratos, pero… tienen mucha facilidad para volverte loco y hacerte perder horas y días para sacarles partido.

    Como en esta casa nos preocupamos seriamente por la salud mental de nuestros amigos, hemos decidido preparar este tuto para intentar hacer una guía general de conexiones de los modulitos bluetooth para ver si podemos poner un poco de orden a los que empecéis con el tema.

     

    Módulos HC-05 y HC-06

     

    La principal diferencia es que suelen tener distinto número de patas:

    Dispositivos bluetoothLos de 4 patas suelen ser HC-06 y los de 6 patas solían ser HC-05. Digo salían porque hoy, gracias a la creatividad china, existen HC-05 de 4 patas y HC-06 de 6, para que no haya envidias y además los hay con botoncito y sin él. Intentaremos poner un poco de luz.

    Básicamente en BT hay dos modos de trabajo: Master y Slave. Los HC-05 son Master y los hc-06 Slave. ¿Y cuál es la diferencia? Pues no está muy claro, ya que los dos te permiten conectarte desde tu móvil y hacer prácticamente lo mismo. (Los que tengáis una cierta edad, quizás recordéis aquel viejo chiste de Eugenio, de las ovejas blancas y las negras)

    En la práctica, la mayor diferencia es la forma de configurarlos y programarlos ya que es distinta, y es importante entender que prácticamente siempre tendremos que configurar los modulitos a nuestras necesidades, así que no penséis que vais a libraros.

    Vamos a empezar viendo cómo se pueden conectar estos módulos y luego pasamos a la forma de programarlos

     

    Conectando HC-06 BT a nuestro Arduino

     

    Vamos a empezar por usar un HC-06 y un Mega para ver conexiones y como programarlos. La conexión quedaría así:

    Conexion bluetooth

    El HC-06 se puede programar en cuanto lo conectas (A diferencia del HC_05) y una vez conectado correctamente podemos enviarle comandos en cuanto tengamos cargado un programa de comunicación como este:

    void setup()
    {   Serial1.begin(9600);
        Serial.begin(9600);
        delay(100);
    }
    
    void loop()
    { //Envíamos y recibimos datos
       if (Serial.available() > 0)
           Serial1.write(Serial.read());
       if (Serial1.available() > 0)
           Serial.write(Serial1.read());
    }

    Lo único que hace el programa es abrir el puerto Serial y el Serial1 del Mega a 9600 bauds y luego mandar lo que viene por un puerto al otro de manera que podamos ver en la consola lo que recibimos y lo que enviamos. Sube este programa a tu Mega y podemos empezar con las pruebas.

  • Normalmente estos módulos HC-06 vienen por defecto a 9600 baud y otros a 115200 (los menos) pero a priori no lo sabemos, así que hay que probar. En mi caso empezare haciendo las pruebas a 9600.  [/fancy-ul] [/three-fourth]
  •  

    Si tienes todo alimentado, veras que el módulo BT tiene una luz roja parpadeante. Esto significa que no hay nadie conectado al módulo, y cuando conectes verás como la luz se queda fija.

    Ahora, asegúrate, antes de seguir, que:

  • Has seleccionado el modelo y puerto correcto de Arduino.
  • Que seleccionas “Sin ajuste de línea” en la última línea de la consola.
  • Que seleccionas velocidad de 9600 baudios.  [/fancy-ul] [/three-fourth]
  •  

    Abre la consola Arduino y escribe AT (En mayúsculas, las minúsculas no funcionan) Verás algo así:

    comandos Bluetooth HC-06

    La respuesta OK significa que tienes la línea abierta y el módulo te escucha. Si no recibes respuesta de vuelta, el OK, no sigas y vuelve a empezar. NECESITAS tener comunicación.

    Si hemos recibido la respuesta OK, entonces podemos programar el módulo según nuestro interés y podemos usar estos comandos:

    Comando AT Función
    AT+NAMExxxxxx Fija el nombre que publica el modulo a xxxx y es el nombre que veremos desde el bluetooth del teléfono
    AT+BAUDx Fija la velocidad de comunicación con el BT, donde:

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

    AT+VERSION Imprime en la consola la versión del firmware
    AT+PINxxxx Fija el valor del pin al valor que le des aquí (No dejes espacio ni antes ni entre los 4 dígitos)

     

  • En el caso de un centro de enseñanza, no te conviene permitir que los alumnos cambien el pin porque cunado se vayan no sabaras que pin han puesto e inutilizaras el módulo BT
  • Por otro lado, en un centro con alumnos, tampoco te conviene dejar que 10 alumnos enciendan a la vez sus módulos HC-06 porque se llamaran igual y no sabrás cual es cual. En este caso te conviene poner antes el nombre a los 10 módulos tu mismo antes de que los alumnos los puedan usar para que sean una serie nombres diferentes: BT1, BT2, BT3…. .   [/fancy-ul] [/three-fourth]
  •  

    Puedes encontrar una lista mas o menos completa de los comandos del HC-06 aquí. Podemos ver unos ejemplos de uso como estos:

    Comando bluetooth hc-06

    Si quieres poner el módulo con el nombre de SET1:

    comandos bluetooth hc-06

    Para poner el módulo a 9600 baud que es lo típico:

    comando AT hc-06

    El HC-06 no nos permite interrogarle sobre su estatus mientras que el HC-05 si que nos deja preguntarle por su situación, como por ejemplo el nombre o la velocidad de comunicación. Así que si quieres estar seguro de a que velocidad está programado, por ejemplo, pues reprogramalo y listo.

     

    Conectando HC-05 BT a nuestro Arduino

     

    Si quieres conectar un módulo HC-05 a tu Arduino MEGA es bastante parecido, pero hay dos versiones, un HC-05 de 4 pines con botón y otra de 6 pines sin botón. A diferencia del HC-06 que está en modo programación directamente, como vimos más arriba, el HC-05 necesita poner el pin ENABLE a 5V para que podamos programarlo. Si se trata del modelo de 4 pines con botón, ese botón hace eso exactamente y necesitamos mantenerlo pulsado mientras le enviamos comandos y luego al soltarlo entra en el modo normal de trabajo

    Si tiene es botón, la conexión es la misma que en el caso del HC-06, La conexión para 6 pines para programarlo, quedaría así:

    Conexion mega al HC-05

    Una vez programado, podemos retirar el cable que une KEY/ENABLE de los 5v y ya podemos trabajar normalmente (Que es lo que hace el botón al soltarlo).

    Coamndo AT Funcion
    AT+NAME? Interroga el nombre interno
    AT+NAME=xxxxx Fija el nombre interno del módulo a xxxx
    AT+UART? Interroga la velocidad de comunicación serie
    AT+UART=9600 1200

    2400

    9600

    19200

    38400

    57600

    115200

    En general, con el HC-05, si acabamos un comando con «?» nos responderá con el valor actual del parámetro. Si añadimos un valor al comando con un signo igual programará el módulo a ese parámetro concreto. Por lo demas usamos el mismo programa de comunicación que vimos arriba y responde igual al comando AT para conseguir la atencion del modulo.

    Aquí os dejo una lista más exhaustiva de los comandos disponibles