Bluetooth Documento
Bluetooth Documento
BLUETOOTH
Transmisión inalámbrica
Hoy en día, este grupo está formado por miles de empresas y se utiliza no sólo para
teléfonos sino para cientos de dispositivos.
Bluetooth es una red inalámbrica de corto alcance pensada para conectar pares de
dispositivos y crear una pequeña red punto a punto, (sólo 2 dispositivos).
Utiliza una parte del espectro electromagnético llamado “Banda ISM”, reservado para
fines no comerciales de la industria, área científica y medicina. Dentro de esta banda
también se encuentran todas las redes WIFI que usamos a diario. En concreto
funcionan a 2,4GHz.
Hay 3 clases de bluetooth que nos indican la máxima potencia a la que emiten y por
tanto la distancia máxima que podrán alcanzar:
También es muy importante la velocidad a la que pueden enviarse los datos con este
protocolo:
Recuerda que:
Bluetooth y Arduino
Como ya sabrás los dipositivos de este tipo tienen que “emparejarse” y tienen que
compartir una contraseña para que los datos puedan intercambiarse. Por defecto, estos
módulos tienen la contraseña 1234, aunque tanto esto como el nombre, pueden ser
Arduino tiene 2 pines que permiten enviar y transmitir datos serie (uno datos tras
otro).
Es MUY IMPORTANTE conectar de manera correcta estos pines con Arduino para la
correcta comunicación. La patilla que emite los datos (TX) en el bluetooth debe estar
conectada a la que recibe los datos (RX) en arduino, y viceversa.
MCCT
Aunque el módulo funciona a 3.3v, normalmente las placas comerciales, (como la que
estamos usando), llevan un regulador y las podemos conectar directamente a los 5v de
arduino.
NOTA:
Ten en cuenta que estamos usando los 2 mismos pines que arduino usa para la comunicación USB con el
ordenador (0, 1), así que siempre que quieras usar el cable para pasar el código o para leer datos desde
el monitor, el bluetooth deberá estar DESCONECTADO.
conectado a un pc).
Para ello hemos creado un nuevo puerto serie para que no interfiera con el USB y
podamos usarlo simultáneamente, lo haremos en las patillas 10 y 11.
Deberás conectar el módulo como ves en la figura, y luego cargar el código. Una vez
súbido, abre la consola serie y (EN MAYÚSCULAS) ejecuta los comandos que necesites.
Bluetooth Maestro
Hemos comentado que las redes bluetooth se crean entre 2 dispositivos. Normalmente
uno emite y el otro recibe, pero puede darse que los dos emitan y reciban. Para esto el
módulo tiene que ser capaz de poder cambiar de modo master a slave. No todos los BT
permiten hacer esto. Si compramos algún módulo económico para arduino,
Seguramente estaremos comprando un módulo SLAVE. Este sólo podrá recibir datos de
otro dispositivo. Si queremos que nuestra arduino envíe datos deberemos usar un
módulo MASTER.
para que el módulo entre en modo de “comandos AT”, y así podamos programar su
funcionamiento. Esto lo podemos hacer con el mísmo código que te hemos mostrado
en el punto anterior.
Los comandos AT en HC-05, al contrario que en el HC-06 (esclavo), que es el que tendrá
mucha gente , tienen que llevar el símbolo "=", por ejemplo:
En HC-06: AT+NAMEnombre
En HC-05: AT+NAME=nombre
MCCT
El datasheet indica que por defecto vienen con el modo CMODE=1 (para conectarse a
cualquier esclavo disponible), sin embargo hay que comporbarlo (AT+CMODE?) por si
tienen el CMODE=0 por lo que se intenta conectar al último emparejado, (en este caso
no se emparejaría con ningún esclavo), así que hay que cambiar el
● con la función dato= Serial.read(); guardamos el dato en una variable (de typo byte)
EJEMPLOS DE PROGRAMACION
Para entrar en el modo comandos AT en este caso es muy sencillo. Lo primero que
tienes que hacer es cargar el siguiente código a tu placa Arduino UNO.
- Código
Comenzamos el código añadiendo la librería para utilizar dos pines digitales como
pines RX y TX de comunicación serial. Este es opcional si quieres ahorrarte líneas de
código y utilizar los pines 0 y 1 de la placa.
MCCT
Antes del pasar a las configuraciones, abriremos una variable de tipo char para
almacenar los caracteres de ambos puertos seriales e inicializamos las variables que
almacenarán los pines de los LEDS.
Dentro del void setup(), iniciamos el nuevo puerto serial a 9600 y enviamos un mensaje
para corroborar que la conexión fue exitosa. Después declaramos los pines de los LEDS
como salida.
En la función loop() haremos la misma lógica como cuando queremos obtener valores
desde el monitor serial de la PC. Cuando se obtenga información, la variable “myChar”
almacenará el carácter.
MCCT
void loop(){
if(mySerial.available()){
myChar = mySerial.read();
switch(myChar){
case 'a':
digitalWrite(LED1,HIGH);
break;
case 'A':
digitalWrite(LED1,LOW);
break;
case 'b':
digitalWrite(LED2,HIGH);
break;
case 'B':
digitalWrite(LED2,LOW);
break;
case 'c':
digitalWrite(LED3,HIGH);
break;
case 'C':
digitalWrite(LED3,LOW);
break;
case 'd':
digitalWrite(LED1,HIGH);
digitalWrite(LED2,HIGH);
digitalWrite(LED3,HIGH);
break;
case 'D':
digitalWrite(LED1,LOW);
MCCT
digitalWrite(LED2,LOW);
digitalWrite(LED3,LOW);
break;
default:
mySerial.println("Opcion invalida");
break;
}
}
}