apuntes_Arduino/bluetooth/README.md

220 lines
5.7 KiB
Markdown
Raw Permalink Normal View History

2022-04-03 16:58:58 -04:00
## 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() {
}
```
----
2022-04-03 17:12:44 -04:00
### 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)
2022-04-03 16:58:58 -04:00
2022-04-03 17:12:44 -04:00
Conexiones:
|ARDUINO | BLUETOOTH|
|-|-|
|**` 5V `** | **` VCC `** |
|**` GND `** | **` GND `** |
|**` PIN 2 `** | **` TX `** |
|**` PIN 3 `** | **` RX `** |
2022-04-03 16:58:58 -04:00
2022-04-03 17:12:44 -04:00
```c
#include <SoftwareSerial.h>
2022-04-03 16:58:58 -04:00
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
2022-04-03 17:12:44 -04:00
void setup(){
2022-04-03 16:58:58 -04:00
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);
}
2022-04-03 17:12:44 -04:00
void loop(){
digitalWrite(13, !digitalRead(13)); // luego de configurar el Bluetooth el LED 13 queda parpadeando
2022-04-03 16:58:58 -04:00
delay(100);
}
```
----
2022-04-03 17:12:44 -04:00
```c
2022-04-03 16:58:58 -04:00
#include <SoftwareSerial.h>
2022-04-03 17:12:44 -04:00
SoftwareSerial BT1(4,2); // RX, TX recordar que se cruzan
void setup(){
Serial.begin(9600);
Serial.println("Enter AT commands:");
BT1.begin(9600);
2022-04-03 16:58:58 -04:00
}
2022-04-03 17:12:44 -04:00
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') ;
}
}
2022-04-03 16:58:58 -04:00
```
2022-04-03 17:12:44 -04:00
2022-04-03 16:58:58 -04:00
----
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;
2022-04-03 17:12:44 -04:00
void setup(){
2022-04-03 16:58:58 -04:00
Serial.begin(9600);
Serial.print("Listo");
miBT.begin(9600);
pepe = map(analogRead(A0), 0 , 1023, 0, 99);
}
2022-04-03 17:12:44 -04:00
void loop(){
if(miBT.available()){
2022-04-03 16:58:58 -04:00
Serial.write(miBT.read()); //lee BT y envia a Arduino
}
2022-04-03 17:12:44 -04:00
if(Serial.available()){
2022-04-03 16:58:58 -04:00
miBT.write(map(analogRead(A0), 0 , 1023, 0, 99)); // lee Arduino y envia a BT
miBT.write(pepe);
}
}
```