Vous êtes sur la page 1sur 8

Configurando Maestro o como Esclavo

Para esto ocuparemos 2 Mdulo Bluetooth HC-05, 2 Arduinos y la misma configuracin del LED al pin
Ya que no sabemos que tiene cargado el Arduino es importante primero programarlo
y as prevenir voltajes de entrada indeseados a nuestros componentes.
Apara esta configuracin si es mesetario que se alimente con 3.3V y GND no 5V.
Para hacer la configuracin KEY se ocupa en estado ALTO
y gracias a la biblioteca <SoftwareSerial.h> podemos colorar a Tx y Rx en donde sea necesario.

Como lo menciona el Datasheet ese Modulo se puede habilitar como Maestro o como esclavo.
Usando cdigos AT y la comunicacin serial de muestro Arduino.
Rpidamente mencionare los principales cdigos AT:
-Configuracin del modulo HC-05
01
02 Regresar a opcin Fabrica AT+RESET
03 Saber el nombre del modulo: AT+NAME?
Cambiarlo a MINOMBRE: AT+NAME=MINOMBRE
04 Saber configuracin: AT+ROLE?
05 Cambiarlo al modo esclavo: AT+ROLE=0
06 Cambiarlo al modo maestro: AT+ROLE=1
07 Saber la contrasea: AT+PSWD?
08 Cambiarlo a 0000: AT+PSWD=1234 <---segn la Contrasea a Conectar
Saber la velocidad (9600): AT+UART?
09 Cambiarlo a 57600: AT+UART=57600,0,0
10 Saber modo de Conexin: AT+CMODE? (0 Espesifico 1 General)
11 A cualquier dispositivo: AT+CMODE=1
12
Paso 1 Programar Arduino:
#include <SoftwareSerial.h>
01
02
#define RxD 11
03 #define TxD 10
04 #define KEY 9
05
06 SoftwareSerial BTSerial(RxD, TxD);
07
08 void setup()
{
09 pinMode(KEY, OUTPUT);
10 digitalWrite(KEY, HIGH); // Como se mencion en configuracin colocar a KEY en estado alt
11
12 delay(500);
13
14 BTSerial.flush();
15 delay(500);
BTSerial.begin(38400); // comunicacin directa al Modulo.
16 Serial.begin(9600); // comunicacin directa al Monitor.
17 Serial.println("Enter AT commands:");
18
19 BTSerial.print("AT\r\n");
20 delay(100);
21
}
22
23 void loop()
24 {
25 if (BTSerial.available())
26 Serial.write(BTSerial.read());
27
28 if (Serial.available())
BTSerial.write(Serial.read());
29 }
30
31
32
33
34
Paso 2:
Una vez programado y Conectado el modulo, abriremos el IDE de Arduino el monitor serial
Modificamos los valores de velocidad a 9600 baud y a Ambos Nl y CR y apriete el Reset del Arduino.
En este momento observaremos en la pantalla que dice: Enter AT commands:,
Por programa manda un AT enseguida por lo que la respuesta debe ser OK.
Revisar que el Bluetooth parpadea cada 2 Seg de lo contrario,
Desconectar el Bluetooth con el Arduino aun encendido (cable VCC al final)
y presionar botn Reset o abrir y cerrar Monitor Serial.
En este momento observaremos en la pantalla que dice: Enter AT commands:,
El programa manda un AT enseguida por lo que la respuesta debe ser un OK.
En caso contrario revisar Conexin, usualmente puede ser un error con los Tx y Rx.
Configuracin para HC-05 en Modo Esclavo
Una vez abierta la puerta de configuracin OK
Para cambiarlo al modo esclavo: AT+ROLE=0 la respuesta debe se un OK
Verificamos respuesta AT+ROLE? La respuesta debe ser 0
Solo para estar seguros que conocemos la contrasea y la velocidad resis los siguientes pasos:
Es importante ya que configuraremos
?
1
Cambiarlo a MINOMBRE: AT+NAME=MINOMBRE
2 Saber el nombre del modulo: AT+NAME?
3 Cambiarlo a 0000: AT+PSWD=1234 <---segn la Contrasea a Conectar (max
4 Saber la contrasea: AT+PSWD?
5 Cambiarlo a 9600: AT+UART=9600,0,0
6 Saber la velocidad (9600): AT+UART?
Conectar a cualquier dispositivo: AT+CMODE=1
7 Saber modo de Conexin: AT+CMODE? (0 Espesifico 1 General)
8
Ahora desconectamos el cable de key y reiniciamos el Arduino.
Verificamos preguntando una vez ms lo esencial como Nombre, Contrasea, Modo, Velocidad.
(Puede que el nombre no arroje respuesta, pero siga adelante)
En caso ser exitosa la operacin.
Para terminar desconecte por completo el Bluetooth, una ves apagado el Modulo
Solo alimente Vcc y GND las veces que sean necesarias hasta que vuelva al estado de Operacin,
Eso es cuando esta parpadeando cada 1/2 segundo.
Recomiendo etiquetar de alguna manera los Mdulos,
a fin de asegurar que estamos Configurando un Mdulo en especfico
Para el segundo Modulo Bluetooth HC-05, lo configuraremos en modo Maestro.
Configuracin para HC-05 en modo Maestro
Una vez abierta la puerta de configuracin OK
Para cambiarlo al modo esclavo: AT+ROLE=1 la respuesta debe se un OK
Verificamos respuesta AT+ROLE? La respuesta debe ser 1
Punto importante es que la contrasea del esclavo sea la misma Contrasea que el Maestro entregue.
As como su velocidad de operacin. Lo dejamos en 9600 para seguir teniendo comunicacin con Arduino.
Solo para estar seguros que conocemos la contrasea y la velocidad resis los siguientes pasos:
?
1
Cambiarlo a MINOMBRE: AT+NAME=MINOMBRE
2 Saber el nombre del modulo: AT+NAME?
3 Cambiarlo a 0000: AT+PSWD=1234 <---segn la Contrasea a Conectar (max
4 Saber la contrasea: AT+PSWD?
5 Cambiarlo a 9600: AT+UART=9600,0,0
6 Saber la velocidad (9600): AT+UART?
Conectar a cualquier dispositivo: AT+CMODE=1
7 Saber modo de Conexin: AT+CMODE? (0 Espesifico 1 General)
8
En caso de solicitar Conectarse a una MAC especfica, gracias a la App podemos ver su MAC.
Recomiendo ancar el Modulo Maestro a un Mdulo Esclavo de esta manera aunque se apague y prenda
nuevamente siempre ara conexin con solo ese modulo. Los pasos son los siguientes sin alterar el orden.
La MAC es muy fcil de ubicar en la App Bluetooth Serial Controller de cualquier modulo Esclavo, al
intentar comunicarse haciendo bsqueda en la lupa. Revisar Tutorial Comun. App-Android a Arduino
?
01 Direcion especifica: AT+CMODE=0
02 Cambiarlo al modo maestro: AT+ROLE=1
Espesificar Contrasea: AT+PSWD=1234
03 Espesificar direccin MAC: AT+BIND=98D3,31,B3FFB8 <---en este ejemplo 001312136293
04 Iniciar SPP: AT+INIT
05 AT+IAC=9E8B33
06 AT+CLASS=0
AT+INQM=1,9,48
07 AT+INQ
08 AT+PAIR=0013,12,136293
09 AT+LINK=0013,12,136293
10
11
Todo debera arrojar un OK, digo debera ya que a m no me mando OK siempre, pero funciono.
No hay estrs, prueben ms adelante si logro la comunicacin, ya en caso de contrario.
Repetir nuevamente el Proceso.
Ahora desconectamos el cable de key y reiniciamos el Arduino.
Verificamos preguntando una vez ms lo esencial como Nombre, Contrasea, Modo, Velocidad.
(Puede que el nombre no arroje respuesta, pero siga adelante)
Encaso ser exitosa la operacin
Para terminar desconecte por completo el Bluetooth, una vez apagado el Modulo
Solo alimente Vcc y GND las veces que sean necesarias hasta que vuelva al estado de Operacin,
Eso es cuando est parpadeando cada 1/2 segundo.
Comunicacin Arduino Arduino va Bluetooth (HC-05 o HC-06).

Ya que no sabemos que tiene cargado el Arduino es importante primero programarlo


y as prevenir voltajes de entrada indeseados a nuestros componentes.
Recordemos que la transmisin (abreviatura: Tx) va a nuestra recepcin (abreviatura: Rx) y viceversa.
Aunque el Modulo puede operar a 5V lo recomendable son los 3.3V para el ahorro de energa.
Y como respuesta Colocar un LED con una resistencia de 220 ohm del Pin 12 a GND.
El programa ser el siguiente, tanto para HC-06 o HC-05 en modo Esclavo:

01 int ledPin = 12; // usamos un pin de salida al LED


02 int state = 0; // Variable lectrura serial
03
04 void setup() {
pinMode(ledPin, OUTPUT);
05 digitalWrite(ledPin, LOW);
06 Serial.begin(9600);
07 }
08
09 void loop() {
//si el modulo a manda dato, guardarlo en estado.
10 if(Serial.available() > 0){
11 state = Serial.read();
12 } // esta parte del cdigo es para solo 1 Carcter o Unidad.
13
14 // si el estado es 0 ese sera Apagado OFF
15 if (state == '0') {
digitalWrite(ledPin, LOW);
16 Serial.println("LED: off");
17 }
18
19 // si el estado es 1 ese sera Encendido ON
20 else if (state == '1') {
21 digitalWrite(ledPin, HIGH);
22 Serial.println("LED: on");
}
23 }
24
25
26
27

Como se podrn dar cuenta es el la misma configuracin que nuestro pasado tutorial,
Comunicacin App-Android a Arduino. Por lo que recomiendo revisarlo para comprobar funcionamiento de
encendido y apagado de LED por Comunicacin Serial 1 y 0.
Una vez tenemos Asegurado nuestro Modulo HC-05 en modo esclavo lo conectamos segn muestra el
Siguiente Programa: (recordemos que gracias a la librera SoftwareSerial.h TX y RX se han cambiado)
?
01
02
03 /*
Programa Modulo Bluetooth-HOST
04
05 El siguiente programa enviara informacin mediante el modulo bluetooth.
06 Dado que el programa del mdulo Bluetooth SLAVE
07 Espera que se le envi '1' y '0' cada 2 segundos, as encienda y apague el LED
08
09 */
10
11 #include <SoftwareSerial.h>
12
// se define al Pin2 como RX, Pin3 como TX
13 SoftwareSerial mySerial(2,3);// RX,TX
14
15 void setup()
16 {//inicializa la comunicacin serial
17 Serial.begin(9600);
18 mySerial.begin(9600);
}
19 void loop()
20 {
21 mySerial.write('1'); Serial.println("LED: on");
22 delay(2000);
mySerial.write('0'); Serial.println("LED: off");
23 delay(2000);
24 }
25
26
Con estas sencillas bases se comprende lo bsico, como lo explico en el Primer tutorial,
Comunicacin App-Android a Arduino esto es el cdigo bsico para Comunicacin con 1 solo Carcter, si
por equivocacin o practica se dieron cuenta que si mandan 10 o 01 el ultimo digito es el que prevalece.
01 /*
02 www.diymakers.es
by A.Garca
03 Arduino + Bluetooth
04 Tutorial en: http://diymakers.es/arduino-bluetooth/
05 */
06
07 #include <SoftwareSerial.h> //Librera que permite establecer comunicacin serie en otro pi
08 //Aqu conectamos los pins RXD,TDX del mdulo Bluetooth.
SoftwareSerial BT(10,11); //10 RX, 11 TX.
09
10 int green=4;
11 int yellow=5;
12 int red=6;
13 char cadena[255]; //Creamos un array de caracteres de 256 oposiciones
int i=0; //Tamao actual del array
14
15
void setup()
16 {
17 BT.begin(9600); Serial.begin(9600); pinMode(green,OUTPUT);
18 pinMode(yellow,OUTPUT); pinMode(red,OUTPUT);
19 }
20
void loop()
21 { //Cuando haya datos disponibles
22 if(BT.available())
23 { char dato=BT.read(); //Guarda los datos carcter a carcter en la variable "dato"
24 cadena[i++]=dato; //Vamos colocando cada carcter recibido en el array "cadena"
25 //Cuando reciba una nueva lnea (al pulsar enter en la app) entra en la funcin
26
if(dato=='\n') { Serial.print(cadena); //Visualizamos el comando recibido en el Monitor Se
27 //GREEN LED
28 if(strstr(cadena,"green on")!=0) { digitalWrite(green,HIGH); }
29 if(strstr(cadena,"green off")!=0) { digitalWrite(green,LOW); }
30 //YELLOW LED
31 if(strstr(cadena,"yellow on")!=0) { digitalWrite(yellow,HIGH); }
if(strstr(cadena,"yellow off")!=0){ digitalWrite(yellow,LOW); }
32 //RED LED
33 if(strstr(cadena,"red on")!=0) { digitalWrite(red,HIGH); }
34 if(strstr(cadena,"red off")!=0) { digitalWrite(red,LOW); }
35 //ALL ON
if(strstr(cadena,"on all")!=0) { digitalWrite(green,HIGH); digitalWrite(yellow,HIGH);
36 digitalWrite(red,HIGH); }
37 //ALL OFF
38 if(strstr(cadena,"off all")!=0) { digitalWrite(green,LOW); digitalWrite(yellow,LOW);
39 digitalWrite(red,LOW); }
40
41 BT.write("\r"); //Enviamos un retorno de carro de la app. La app ya crea una lnea nueva
clean(); //Ejecutamos la funcin clean() para limpiar el array
42 }
43 }
44 }
45
46 //Limpia el array
47 void clean()
{ for (int cl=0; cl<=i; cl++) { cadena[cl]=0; } i=0;}
48
49
50
51
52
53
54
55
56
Anexo 1: Bluetooth Esclavo Servo

01
02
03 /*
04 Programa Modulo Bluetooth-SLAVE
05
El siguiente programa recibe la informacion desde un modulo Bluetooth(HOST).
06 El envio de un '1', PRENDE el LED conectado al pin 12.
07 El envio de un '0', APAGA el LED conectado al pin 12.
08 */
09 #include <Servo.h>
10
11 Servo myservo; // Crea un objeto servo para controlar el servomotor
char state = 0;
12
13 void setup()
14 { //inicializa la comunicacion serial
15 Serial.begin(9600);
16 myservo.attach(4); // asocia el servo en pin 3 al objeto servo}
//se configura los pines de entrada y salida
17
delay(150);
18 }
19
20 void loop()
21 { if(Serial.available() > 0){
22 state = Serial.read();
Serial.println(state);
23 }
24
25 myservo.write(state); // fija la posicin del servo de acuerdo al
26 delay(15); // espera a que el servo se posicione
27 }
28
29
Anexo 2: Bluetooth Maestro Potenciometro

/*
01 Programa Modulo Bluetooth-HOST
02
03 El siguiente programa enviara informacion mediante el modulo bluetooth.
04 Dado que el programa del modulo Bluetooth SLAVE
05 espera que se le envie '1' y '0' cada 2 segundos
asi ecienda y apage el LED
06
07 */
08
09 #include <SoftwareSerial.h>
10
11 int sensorPin = A0; // select the input pin for the potentiometer
12 int sensorValue = 0; // variable to store the value coming from the sensor
13
14 // se define al Pin2 como RX, Pin3 como TX
SoftwareSerial mySerial(2,3);// RX,TX
15
16 void setup()
17 {//inicializa la comunicacion serial
18 Serial.begin(9600);
mySerial.begin(9600);
19 Serial.println("Ready");
20 mySerial.print("Ready");
21 }
22 void loop()
{ int U = analogRead(sensorPin); // escala el valor para usarlo con el servo (valor entre 0
23 mySerial.print(U); mySerial.print("."); Serial.println(U);
24 delay(15);
25 }
26
27
28
29
30

Vous aimerez peut-être aussi