220 lines
5.7 KiB
Markdown
220 lines
5.7 KiB
Markdown
## Bluetooth
|
|
|
|
```c
|
|
const byte LED = 13;
|
|
const byte BTPWR = 12;
|
|
String nombreBT= "FznBTS";
|
|
char velocidad ='4';//9600
|
|
String pass="11111";
|
|
|
|
void setup() {
|
|
pinMode(LED,OUTPUT);
|
|
pinMode(BTPWR, OUTPUT);
|
|
digitalWrite(LED, LOW);
|
|
digitalWrite(BTPWR, HIGH);
|
|
Serial.begin(9600);
|
|
Serial.print("AT");
|
|
delay(1000);
|
|
Serial.print("AT+NAME");
|
|
Serial.print(nombreBT);
|
|
delay(1000);
|
|
Serial.print("AT+BAUD");
|
|
Serial.print(velocidad);
|
|
delay(1000);
|
|
Serial.print("AT+PIN");
|
|
Serial.print(pass);
|
|
delay(1000);
|
|
digitalWrite(LED,HIGH);
|
|
}
|
|
|
|
void loop() {
|
|
|
|
}
|
|
```
|
|
----
|
|
|
|
### Programar el modulo bluetooth HC-06
|
|
con un nuevo:
|
|
- **NOMBRE** (Nombre de 20 caracteres)
|
|
- **PIN** (Clave de cuatro numeros)
|
|
- **BPS** (Velocidad de conexion en baudios)
|
|
|
|
Conexiones:
|
|
|ARDUINO | BLUETOOTH|
|
|
|-|-|
|
|
|**` 5V `** | **` VCC `** |
|
|
|**` GND `** | **` GND `** |
|
|
|**` PIN 2 `** | **` TX `** |
|
|
|**` PIN 3 `** | **` RX `** |
|
|
|
|
```c
|
|
#include <SoftwareSerial.h>
|
|
|
|
SoftwareSerial blue(2, 3); //Crea conexion al bluetooth - PIN 2 a TX y PIN 3 a RX
|
|
|
|
char NOMBRE[21] = "FznBTSlave"; // Nombre de 20 caracteres maximo
|
|
char BPS = '4'; // 1=1200 , 2=2400, 3=4800, 4=9600, 5=19200, 6=38400, 7=57600, 8=115200
|
|
char PASS[5] = "4321"; // PIN O CLAVE de 4 caracteres numericos
|
|
|
|
void setup(){
|
|
blue.begin(9600); // inicialmente la comunicacion serial a 9600 Baudios (velocidad de fabrica)
|
|
pinMode(13,OUTPUT);
|
|
digitalWrite(13,HIGH); // Enciende el LED 13 durante 4s antes de configurar el Bluetooth
|
|
delay(2000);
|
|
|
|
digitalWrite(13,LOW); // Apaga el LED 13 para iniciar la programacion
|
|
|
|
blue.print("AT"); // Inicializa comando AT
|
|
delay(1000);
|
|
|
|
blue.print("AT+NAME"); // Configura el nuevo nombre
|
|
blue.print(NOMBRE);
|
|
delay(1000); // espera 1 segundo
|
|
|
|
blue.print("AT+BAUD"); // Configura la nueva velocidad
|
|
blue.print(BPS);
|
|
delay(1000);
|
|
|
|
blue.print("AT+PIN"); // Configura el nuevo PIN
|
|
blue.print(PASS);
|
|
delay(1000);
|
|
}
|
|
|
|
void loop(){
|
|
digitalWrite(13, !digitalRead(13)); // luego de configurar el Bluetooth el LED 13 queda parpadeando
|
|
delay(100);
|
|
}
|
|
```
|
|
----
|
|
|
|
```c
|
|
#include <SoftwareSerial.h>
|
|
SoftwareSerial BT1(4,2); // RX, TX recordar que se cruzan
|
|
|
|
void setup(){
|
|
Serial.begin(9600);
|
|
Serial.println("Enter AT commands:");
|
|
BT1.begin(9600);
|
|
}
|
|
|
|
void loop(){
|
|
if (BT1.available()) {
|
|
Serial.write(BT1.read());
|
|
}
|
|
if (Serial.available()) {
|
|
String S = GetLine();
|
|
BT1.print(S);
|
|
Serial.println("---> " + S);
|
|
}
|
|
}
|
|
|
|
String GetLine(){
|
|
String S = "" ;
|
|
if (Serial.available()) {
|
|
char c = Serial.read();
|
|
while ( c != '\n') { //Hasta que el caracter sea intro
|
|
S = S + c ;
|
|
delay(25) ;
|
|
c = Serial.read();
|
|
}
|
|
return( S + '\n') ;
|
|
}
|
|
}
|
|
|
|
```
|
|
|
|
----
|
|
|
|
Cambio de configuración del módulo bluetooth mediante **comandos AT**.
|
|
|
|
Para ello el módulo no debe estar vinculado con ningún dispositivo bluetooth,
|
|
en este caso el led debe estar en modo intermitente, si esta vinculado, el led
|
|
queda encendido de forma permanente.
|
|
```c
|
|
int contador=1;
|
|
|
|
void setup(){
|
|
//Led 13 para indicar final de operacion de configuracion AT
|
|
pinMode(13,OUTPUT);
|
|
//Velocidad del modulo bluetooth, 9600 por defecto
|
|
Serial.begin(9600);
|
|
//Apagamos el led 13
|
|
digitalWrite(13,LOW);
|
|
}
|
|
void loop(){
|
|
while (contador==1) { // Es para realizar los cambios una sola vez
|
|
digitalWrite(13,HIGH);// Indicacion de tiempo de espera iniciado
|
|
/*Tiempo de espera de 5 segundos
|
|
(prudencial, se puede cambiar, depende de lo que tardes en volver a conectarlos)
|
|
para reconectar cables RX y TX del modulo bluetooth al Arduino,
|
|
ya que para programar esta deben estar desconectados*/
|
|
delay(5000);
|
|
digitalWrite(13,LOW); // Indicacion de tiempo de espera finalizado
|
|
Serial.print("AT"); // Inicio comunicacion con modulo bluetooth mediante comandos AT
|
|
delay(1000); // Espera de 1 segundo según datasheet entre envio de comandos AT
|
|
Serial.print("AT+NAMEFznBTSlv"); // Cambio de nombre donde se envia AT+NAME y seguido el nombre que deseemos
|
|
delay(1000); // Espera de 1 segundo según datasheet entre envio de comandos AT
|
|
|
|
/*Cambio de la velocidad del modulo en baudios
|
|
Se envia AT+BAUD y seguido el numero correspondiente:
|
|
1 --> 1200 baudios
|
|
2 --> 2400 baudios
|
|
3 --> 4800 baudios
|
|
4 --> 9600 baudios (por defecto)
|
|
5 --> 19200 baudios
|
|
6 --> 38400 baudios
|
|
7 --> 57600 baudios
|
|
8 --> 115200 baudios*/
|
|
|
|
//Serial.print("AT+BAUD4");
|
|
//delay(1000); // Espera de 1 segundo según datasheet entre envio de comandos AT
|
|
Serial.print("AT+PIN4321"); // Config Password, se envia AT+PIN seguido del password
|
|
delay(1000); // Espera de 1 segundo según datasheet entre envio de comandos AT
|
|
|
|
//Informe por puerto serial y por led la finalizacion de la configuracion AT
|
|
//del modulo bluetooth
|
|
Serial.print("OK Cambios Realizados correctamente");
|
|
digitalWrite(13,HIGH);
|
|
|
|
// Si contador=2, ya no se vuelve a repetir el while, a no ser que
|
|
// se produzca un reset, por tanto comenzaria un nuevo cambio de configuración
|
|
contador=2;
|
|
}
|
|
}
|
|
```
|
|
|
|
----
|
|
|
|
### Conexiones
|
|
|HC - 06 | ARDUINO|
|
|
|-|-|
|
|
|**`VCC`**|**5V** |
|
|
|**`GND`**|**GND** |
|
|
|**`TXD`**|**10** |
|
|
|**`RXD`**|**11** |
|
|
|
|
```c
|
|
#include <SoftwareSerial.h>
|
|
|
|
SoftwareSerial miBT(10,11);
|
|
byte pepe;
|
|
|
|
void setup(){
|
|
Serial.begin(9600);
|
|
Serial.print("Listo");
|
|
miBT.begin(9600);
|
|
pepe = map(analogRead(A0), 0 , 1023, 0, 99);
|
|
}
|
|
|
|
void loop(){
|
|
if(miBT.available()){
|
|
Serial.write(miBT.read()); //lee BT y envia a Arduino
|
|
}
|
|
if(Serial.available()){
|
|
miBT.write(map(analogRead(A0), 0 , 1023, 0, 99)); // lee Arduino y envia a BT
|
|
miBT.write(pepe);
|
|
}
|
|
}
|
|
```
|
|
|