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