Está en la página 1de 11

15/10/2020 Trabajando con el módulo Bluetooth | MiArduino

MiArduino

ARDUINO, LEDS, PROGRAMACIÓN

TRABAJANDO CON EL MÓDULO BLUETOOTH


11 MARZO, 2016 | JADIAZ

Objetivos
Presentar los conceptos básicos del BlueTooth.
Presentar los comandos AT.
Introducir el modulo BlueTooth HC-06 y HC-05 .
Presentar un programa básico de comunicación, entre un teléfono externo y un Arduino mediante
el modulo Bluetooth.

Material requerido

  Arduino Uno o similar. Esta sesión acepta cualquier otro modelo


de Arduino.

   Una Protoboard.

  Algunos cables de Protoboard.

Un módulo BlueTooth HC-06 o BlueTooth HC-05

www.iescamp.es/miarduino/2016/03/11/trabajando-con-el-modulo-bluetooth/ 1/11
15/10/2020 Trabajando con el módulo Bluetooth | MiArduino

Módulos BlueTooth disponibles


Hace ya un tiempo que disponemos de módulos BlueTooth sencillos y económicos, que resultan muy
prácticos para todo esto, y en esta sesión, vamos a empezar viendo cuales tenemos disponibles y
como trabajar con ellos.

Los más frecuentes en el mercado son los módulos HC-06 y HC-05 que si hacéis una búsqueda
rápida, veréis que se consiguen por poco dinero, y están disponibles independientes o en modo
SHIELD y para zocalo XBEE.

Hay bastante confusión en la red acerca de cómo diferenciar uno de otro y en muchas ocasiones
sobre las prestaciones de unos y otros.

Lo primero es que el hardware de ambos módulos es el mismo. No hay diferencia hardware, pero el
software que incorporan es diferente.

Además el modulo de conexión se monta sobre un soporte que a su vez puede presentar diferencias
notables según el fabricante y las conexiones que realice, pero por lo que he podido comprobar, hay
una diferencia obvia, el numero de pines del modulo montado.

www.iescamp.es/miarduino/2016/03/11/trabajando-con-el-modulo-bluetooth/ 2/11
15/10/2020 Trabajando con el módulo Bluetooth | MiArduino

El modelo HC-06 dispone de 4 pines, en lugar de los 6 que incluye el modelo HC-05, pero hay además
importantes diferencias de funcionalidad y de manejo.

Básicamente el modelo HC-06 solo puede actuar como esclavo y además dispone de un juego
reducido de instrucciones a las que atiende, mientras que el modelo HC-05 puede actuar  como
master o como Slave y acepta un número mayor de órdenes de con guración.

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.

Los comandos AT
La palabra Modem, que tal vez hayáis oído, deriva del apocope de MODulador DEModulador, y si
veis pelis de los años 80 y primeros 90 eran esos chismes que hacían los ruiditos típicos de audio,
asociados a la informática.

La velocidad de los módems empezaron sobre los 300 baudios o bits por segundos y fueron
aumentando con la revolución tecnológica hasta 1.200, 2.400, 9.600 y los últimos que se
comercializaron con ese nombre fueron de 56.000 baudios.

Por eso, los módems necesitaban una especie de comandos, que nos permitiera modi car la
velocidad según necesitáramos, cuando el ruido impedía una comunicación able y ya de paso
modi car algún que otro parámetro sobre la marcha.

Y como el RS232 solo disponía de dos hilos de comunicaciones, no había más remedio que 
incorporar una orden de atención que signi cara que a continuación venia una orden de
www.iescamp.es/miarduino/2016/03/11/trabajando-con-el-modulo-bluetooth/ 3/11
15/10/2020 Trabajando con el módulo Bluetooth | MiArduino

programación del modem, que no debía ser transmitida al otro extremo.

Es decir que las ordenes eran del tipo “AT+Orden”, donde AT era el comando especi cado de
atención. Enseguida todos los  módems y demás máquinas de comunicación serie empezaron a
aceptar este tipo de órdenes, y al conjunto de ellas se llamó comandos AT, por extensión.

Con el tiempo, mucho del hardware sencillo que se comunica con otros equipos vía un humilde
puerto serie, siguen aceptando ordenes AT para con gurarlos y este es el caso de los módulos
BlueTooth HC-05, HC-06 y otros pequeños dispositivos que veremos en el futuro.

El circuito HC-06 y HC-05


Pues es fácil. Fíjate que el modulo tiene rotulado el nombre de los pines, y simplemente conectar
tensión y GND al módulo y después conectamos Txd y Rxd a los pines digitales 2 y 4 respectivamente
de tu Arduino.  Para el módulo HC-06:

Fijaros que al hacer esta conexión, el LED del módulo HC-06, parpadea continuamente. Esto indica
que no está pareado o vinculado.

Cuando conectes algo al módulo, esta luz se quedará ja y es la forma de saber si hay conexión o no.

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

www.iescamp.es/miarduino/2016/03/11/trabajando-con-el-modulo-bluetooth/ 4/11
15/10/2020 Trabajando con el módulo Bluetooth | MiArduino

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 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 re eja, supuestamente, la situación en la que se encuentra el modulo y por ahora no
vamos a utilizarlo.

El programa de control
Como el modulo BlueTooth es básicamente un nodo BT conectado a un interface serie, podríamos en
principio conectar los pines RX y Tx a los equivalentes de Arduino en los pines 0 y 1 digitales, sin más
que cruzarlos (BT Tx  a Arduino Rx y BT Rx a Aduano Tx) y de hecho muchos ejemplos en Internet
utilizan este esquema y se comunican con el BT mediante las familiares instrucciones de Serial.print
().

Sin embargo, pre ero desaconsejar hacerlo así, porque los pines 0 y 1 se utilizan en la comunicación
serie de Arduino con el PC a través del USB y por tanto, si los usamos para comunicar con el modulo
BT, perderíamos la conexión con el PC.

Por ello pre ero destinar otro par de pines cualesquiera a la transmisión, aunque para ello tenemos
que importar una librería que habilite la comunicación serie con otros pines como es la librería
SoftwareSerial.

www.iescamp.es/miarduino/2016/03/11/trabajando-con-el-modulo-bluetooth/ 5/11
15/10/2020 Trabajando con el módulo Bluetooth | MiArduino

Para ello importamos la librería que viene de serie en el IDE y creamos un nuevo objeto serie llamado
BT1 conectado a los pines 4 y 2:

El programa queda algo así:

#include <SoftwareSerial.h>
 
//Aquí conectamos los pins RXD,TDX del módulo Bluetooth.
SoftwareSerial BT(2,4);void setup()
{
  BT.begin(9600);
  Serial.begin(9600);
}
 
void loop(){
  if(BT.available())
 {
    Serial.write(BT.read());
 }
  if(Serial.available())
 {
     BT.write(Serial.read());
 }
}
Si por cualquier motivo, no consigues establecer comunicación con el modulo BT, ve cambiando la
velocidad hasta que veas que hay conexión.Fíjate ahora, en el modulo, verás una luz roja
parpadeando. Eso signi ca que el modulo está listo para vincularse a un dispositivo BlueTooth o para
aceptar comandos AT, el modulo HC-06 no necesita nada más para entrar en modo de aceptar
comandos AT.

De hecho siempre que veas la luz parpadeando signi ca que el modulo no retransmitirá los
comandos AT, sino que los interpretara como ordenes internas. Pero si realizas una conexión (y la luz
roja se queda ja, ignorará los comandos AT y los transferirá sin más.

Si no lo has vinculado aún, y la luz roja parpadea, ya podemos enviar comandos AT. Veamos algún
ejemplo.

El primero y más básico es enviar (siempre en mayúsculas) un simple AT desde la consola. Se supone
que debería responder con OK.

AT+VERSION, devuelve la versión del Firmware


AT+NAMEXXX, modi ca el nombre que queremos presentar cuando alguien nos busque:
AT+NAMEIESCAMP

www.iescamp.es/miarduino/2016/03/11/trabajando-con-el-modulo-bluetooth/ 6/11
15/10/2020 Trabajando con el módulo Bluetooth | MiArduino

AT+BAUDX, Fija la velocidad de comunicación entre el modulo y la consola según a la siguiente


tabla:

1 con gura        1200bps


2 con gura        2400bps
3 con gura        4800bps
4 con gura        9600bps (Default)
5 con gura        19200bps
6 con gura        38400bps
7 con gura        57600bps
8 con gura        115200bps

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

AT+PINXXXX, con gura el número de identi cación personal, que se requerirá para establecer la
vinculación
AT+PIN4516, establece 4516 como PIN

En caso de que probando varios de estos comandos, no obtuvierais respuesta, o vierais caracteres
extraños en la consola, probad con otras velocidades hasta conseguir una que funcione. Probad
diferentes velocidades en la línea:

BT1.begin(9600);

Una vez volcado el programa anterior a nuestro Arduino, con una velocidad de comunicación
correcta con el módulo, vamos a probar a enviar y recibir información desde y hacia, un teléfono
móvil.

Lo primero es con rmar que el LED del módulo BT parpadea, indicando que está en modo AT o
esperando vinculación con otro dispositivo. Después asegúrate de que el BlueTooth del teléfono está
activo y por último, dependiendo del programa que uses como terminal, pídele que busque
dispositivos BT en los alrededores y vincúlate al que encuentres.

Si todo va bien ya podrás enviar y recibir mensajes de texto entre tu móvil y Arduino en ambas
direcciones.

App Arduino Control Car


Descargamos la aplicación en nuestro móvil.

Asociamos el bluetooth de nuestro arduino a nuestro móvil si lo lo hemos hecho ya.

Cargamos el siguiente programa:

www.iescamp.es/miarduino/2016/03/11/trabajando-con-el-modulo-bluetooth/ 7/11
15/10/2020 Trabajando con el módulo Bluetooth | MiArduino

#include <SoftwareSerial.h>
 
//Aquí conectamos los pins RXD,TDX del módulo Bluetooth.
SoftwareSerial BT(2,4);
int x;

void setup()
{
  BT.begin(9600);
  Serial.begin(9600);
}
 
void loop(){
  if(BT.available())
 {
    x = BT.read();
    Serial.println(x);

 }
 
  if(Serial.available())
 {
     BT.write(Serial.read());
 }
}

Y arrancamos nuestra aplicación:

www.iescamp.es/miarduino/2016/03/11/trabajando-con-el-modulo-bluetooth/ 8/11
15/10/2020 Trabajando con el módulo Bluetooth | MiArduino

Conectamos a aplicación al módulo de nuestro arduino pulsando el botón con el nombre Bluetooth,
una vez conectado (el led ya no debe parpadear) podremos ver en la pantalla Serial los valores que
recibe al pulsar los botones:

Corresponde a:

Botón arriba -> 97

Botón abajo -> 101

Botón izquierda -> 98

Botón derecha -> 100

Botón ON -> 102

Botón OFF -> 103

Con nuestro L298N conectado y nuestro bluetooth de la siguiente manera:

//Aquí conectamos los pins RXD,TDX del módulo Bluetooth.


SoftwareSerial BT(10,11);

// Con guramos los pines que vamos a usar


int motorDer1=4;  //El pin 4 a In1 del L298N
int motorDer2=5;  //El pin 5 a In2 del L298N
int motorIzq1=7;  //El pin 7 a In3 del L298N
int motorIzq2=8;  //El pin 8 a In4 del L298N

www.iescamp.es/miarduino/2016/03/11/trabajando-con-el-modulo-bluetooth/ 9/11
15/10/2020 Trabajando con el módulo Bluetooth | MiArduino

int derecho=3;       //El pin 3 a EnA del L298N


int izquierdo=6;     //El pin 6 a EnB del L298N

El programa se puede descargar L298N

Con la App AMR_Voice


Le daremos ordenes a nuestro robot con la voz, lo que necesitamos es que lleguen los comandos en
forma de String, para ello leeremos de la aplicación carácter a carácter y los uniremos hasta alcanzar
una cadena con la orden. La app la puedes descargar en el Google Play:

Y con el siguiente código recogemos el comando recogido desde la aplicación del móvil:

#include <SoftwareSerial.h>

//Aquí conectamos los pins RXD,TDX del módulo Bluetooth.


SoftwareSerial BT(2,4);
String voice;

void setup()
{
    BT.begin(9600); //Velocidad del puerto del bluetooth
   Serial.begin(9600); //Abrimos la comunicación serie
}

void loop(){
    voice=»»;
    while (BT.available()){
        delay(10);
        char c = BT.read();
       voice += c;
}
www.iescamp.es/miarduino/2016/03/11/trabajando-con-el-modulo-bluetooth/ 10/11
15/10/2020 Trabajando con el módulo Bluetooth | MiArduino

if (voice.length() > 0) {
      Serial.println(voice);

     // acciones según respuesta

   }
}
Texto mostrado en la pantalla Serial:

ARDUINO BLUETOOTH PROGRAMACIÓN SENSOR

www.iescamp.es/miarduino/2016/03/11/trabajando-con-el-modulo-bluetooth/ 11/11

También podría gustarte