apuntes_Arduino/bluetooth/README.md
jp.av.dev 85bf8bb429 proyectos renombrados, reestructuracion
pendientes crear, indexar y linkear readmes
2022-04-04 01:11:04 -04:00

5.7 KiB

Bluetooth

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
#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);
}

#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.

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
#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);
  }
}