El Bluetooth es un estándar de comunicación inalámbrica que permite la transmisión de datos a través de radiofrecuencia en la banda de 2,4 GHz. Existen muchos módulos Bluetooth para usarlos en nuestros proyectos de electrónica, pero los más utilizados son los módulos de JY-MCU, ya que son muy económicos y fáciles de encontrar en el mercado. Son módulos pequeños y con un consumo muy bajo que nos permitirán agregar funcionalidades Bluetooth a nuestro Arduino. Estos módulos contienen el chip con una placa de desarrollo con los pins necesarios para la comunicación serie.
Existen dos modelos de módulos Bluetooth: el HC-05 que puede ser maestro/esclavo (master/slave), y el HC-06 que solo puede actuar como esclavo (slave). La diferencia entre maestro y esclavo es que en modo esclavo es el dispositivo quien se conecta al módulo, mientras que en modo maestro es el módulo quien se conecta con un dispositivo.
Físicamente, los dos módulos son muy parecidos, solo varían algunas conexiones. Los pins que encontraremos son los siguientes:
- Vcc: Alimentación del módulo entre 3,6V y 6V.
- GND: La masa del módulo.
- TXD: Transmisión de datos.
- RXD: Recepción de datos a un voltaje de 3,3V.
- KEY: Poner a nivel alto para entrar en modo configuración del módulo (solo el modelo HC-05)
- STATE: Para conectar un led de salida para visualizar cuando se comuniquen datos.
Comandos AT
Los comandos AT son un tipo de comandos que sirven para configurar el módulo Bluetooth a través de un microcontrolador, un ordenador o con cualquier dispositivo que posea una comunicación serie (Tx/Rx). Son unas instrucciones que nos permiten cambiar los baudios del módulo, el PIN, el nombre, etc. Para usar los comandos AT el módulo Bluetooth no debe estar vinculado a ningún dispositivo (led rojo del módulo parpadeando). Según las especificaciones del módulo, el tiempo que se tiene que respetar entre el envío de un comando AT y otro tiene que ser de 1 segundo. Si se envía un comando AT y en menos de un segundo se envía otro, el módulo no devuelve respuesta.
Ahora vamos a configurar el módulo Bluetooth a través de comandos AT enviados desde el Monitor Serial del Arduino. El código del Arduino necesario tanto por el módulo HC-05 como el HC-06 es el siguiente:
#include <SoftwareSerial.h> //Librería que permite establecer comunicación serie en otros pins
//Aquí conectamos los pins RXD,TDX del módulo Bluetooth.
SoftwareSerial BT(10,11); //10 RX, 11 TX.
void setup()
{
BT.begin(9600); //Velocidad del puerto del módulo Bluetooth
Serial.begin(9600); //Abrimos la comunicación serie con el PC y establecemos velocidad
}
void loop()
{
if(BT.available())
{
Serial.write(BT.read());
}
if(Serial.available())
{
BT.write(Serial.read());
}
}
Comando AT
|
Descripción
|
Respuesta
|
AT
|
Test de comunicación.
|
Responde con un OK
|
AT+VERSION
| Retorna la versión del Modulo |
OKlinvorV1.8
|
AT+BAUDx
| Configura la velocidad de trasmisión del modulo según el valor de “x”1 = 1200 bps
2 = 2400 bps
3 = 4800 bps
4 = 9600 bps (por defecto)
5 = 19200 bps
6 = 38400 bps
7 = 57600 bps
8 = 115200 bps
9 = 230400 bps
A = 460800 bps
B = 921600 bps
C = 1382400 bps
| AT+BAUD4 Configura la velocidad a 9600 baud rate Responde con OK9600 |
AT+NAMEx
| Configura el nombre con el que se visualizara el modulo, soporta hasta 20 caracteres | AT+NAMEDIYMakers Configura el nombre del modulo a DIYMakers Responde con OKsetname |
AT+PINxxxx
| Configura el Pin de acceso al modulo (password).1234 por defecto. | AT+PIN1122 Configura el pin a 1122 Responde con OKsetPIN |
En HC-05 tiene más comandos descargar pdf o también se puede ver en la siguiente imagen
Importante: Para hacer poder usar todos los comandos ANTERIORES, si o si, no tiene que estar conectado a un dispositivo.
Por ejemplo si hacen lo siguiente (de abajo) que conectan el bluetooth al celular, van a poder apagar y prender leds, así como lo indican pero no van a poder mandar el comando AT, AT+VERSION, etc.
Para poder usarlo, vamos a tener que desconectarlo y recién probar.
Ejemplo app en Android para poder conectarse por bluetooth descargar sino se puede descargar directamente del playStore
Código
/*
www.diymakers.es
by A.García
Arduino + Bluetooth
Tutorial en: http://diymakers.es/arduino-bluetooth/
*/
#include <SoftwareSerial.h> //Librería que permite establecer comunicación serie en otros pins
//Aquí conectamos los pins RXD,TDX del módulo Bluetooth.
SoftwareSerial BT(10,11); //10 RX, 11 TX.
int green=4;
int yellow=5;
int red=6;
char cadena[255]; //Creamos un array de caracteres de 256 cposiciones
int i=0; //Tamaño actual del array
void setup()
{
BT.begin(9600);
Serial.begin(9600);
pinMode(green,OUTPUT);
pinMode(yellow,OUTPUT);
pinMode(red,OUTPUT);
}
void loop()
{
//Cuando haya datos disponibles
if(BT.available())
{
char dato=BT.read(); //Guarda los datos carácter a carácter en la variable "dato"
cadena[i++]=dato; //Vamos colocando cada carácter recibido en el array "cadena"
//Cuando reciba una nueva línea (al pulsar enter en la app) entra en la función
if(dato=='\n')
{
Serial.print(cadena); //Visualizamos el comando recibido en el Monitor Serial
//GREEN LED
if(strstr(cadena,"green on")!=0)
{
digitalWrite(green,HIGH);
}
if(strstr(cadena,"green off")!=0)
{
digitalWrite(green,LOW);
}
//YELLOW LED
if(strstr(cadena,"yellow on")!=0)
{
digitalWrite(yellow,HIGH);
}
if(strstr(cadena,"yellow off")!=0)
{
digitalWrite(yellow,LOW);
}
//RED LED
if(strstr(cadena,"red on")!=0)
{
digitalWrite(red,HIGH);
}
if(strstr(cadena,"red off")!=0)
{
digitalWrite(red,LOW);
}
//ALL ON
if(strstr(cadena,"on all")!=0)
{
digitalWrite(green,HIGH);
digitalWrite(yellow,HIGH);
digitalWrite(red,HIGH);
}
//ALL OFF
if(strstr(cadena,"off all")!=0)
{
digitalWrite(green,LOW);
digitalWrite(yellow,LOW);
digitalWrite(red,LOW);
}
BT.write("\r"); //Enviamos un retorno de carro de la app. La app ya crea una línea nueva
clean(); //Ejecutamos la función clean() para limpiar el array
}
}
}
//Limpia el array
void clean()
{
for (int cl=0; cl<=i; cl++)
{
cadena[cl]=0;
}
i=0;
}
CR
:
Retorno de carro, u000D
CR
+LF
: CR
seguido por LF
NEL
:
Next Line, u0085
FF
:
Form Feed, u000C
LS
:
Line Separator, u2028
PS
:
Paragraph Separator, u2029
CR
: decimal 13, hexadecimal 0DLF
: decimal 10, hexadecimal 0A
Fuente: wikipedia
El Retorno de Carro (CR) carácter (0x0D, \r) mueve el cursor al principio de la línea, sin avanzar a la siguiente línea. Este carácter se utiliza como un carácter de nueva línea en Comodoro y Principios de los sistemas operativos de Macintosh (OS 9 y anteriores).
El avance de Línea (LF) carácter (0x0A, \n) mueve el cursor a la línea siguiente, sin volver al principio de la línea. Este carácter se utiliza como un carácter de nueva línea en los sistemas basados en UNIX (Linux, Mac OSX, etc)
El Fin de Línea (EOL) secuencia (0x0D 0x0A, \r\n) es en realidad dos caracteres ASCII, una combinación de la CR y LF caracteres. Mueve el cursor hacia abajo en ambos a la línea siguiente y al principio de la línea. Este carácter se utiliza como un carácter de nueva línea en la mayoría de los otros no son tipo Unix, sistemas operativos, incluyendo Microsoft Windows, Symbian OS y otros
Fuente: iteramos
En mi experiencia utilice un mb102 y no tuve suerte. No funcionaba mi bluetooth, a pesar que led parpadeaba que parecía que tenía conexión, pero cuando le mandaba AT no me respondía el OK, desde el celular o desde la consola de la pc.
Después cambie el vcc y gnd del mb102 al que trae el arduino uno/mega y volvió a funcionar perfectamente.
Disculpa, soy novato en esto, tengo una arduino mega, no la uno, como puedo usar los comando AT con la arduino mega?
ResponderEliminar