Trabajando Con El Módulo Bluetooth - MiArduino
Trabajando Con El Módulo Bluetooth - MiArduino
MiArduino
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
Una Protoboard.
www.iescamp.es/miarduino/2016/03/11/trabajando-con-el-modulo-bluetooth/ 1/11
15/10/2020 Trabajando con el módulo Bluetooth | MiArduino
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
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.
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:
#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.
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+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.
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());
}
}
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:
www.iescamp.es/miarduino/2016/03/11/trabajando-con-el-modulo-bluetooth/ 9/11
15/10/2020 Trabajando con el módulo Bluetooth | MiArduino
Y con el siguiente código recogemos el comando recogido desde la aplicación del móvil:
#include <SoftwareSerial.h>
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);
}
}
Texto mostrado en la pantalla Serial:
www.iescamp.es/miarduino/2016/03/11/trabajando-con-el-modulo-bluetooth/ 11/11