diff --git a/BlueTooth/Bluetooth3/Bluetooth3.ino b/BlueTooth/Bluetooth3/Bluetooth3.ino new file mode 100755 index 0000000..a29c32f --- /dev/null +++ b/BlueTooth/Bluetooth3/Bluetooth3.ino @@ -0,0 +1,34 @@ +#include +SoftwareSerial BT1(4,2); // RX, TX recorder 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') ; + } + } diff --git a/BlueTooth/Bluetooth4/Bluetooth4.ino b/BlueTooth/Bluetooth4/Bluetooth4.ino new file mode 100755 index 0000000..4a671ab --- /dev/null +++ b/BlueTooth/Bluetooth4/Bluetooth4.ino @@ -0,0 +1,67 @@ +/*Cambio de configuracion del modulo bluetooth mediante comandos AT +para ello el modulo no debe estar vinculado con ningun dispositivo +bluetooth, en mi caso el led debe estar en modo intermitente, si esta +vinculado aparece 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() +{ + //Es para realizar los cambios una sola vez + while (contador==1) + { + //Indicacion de tiempo de espera iniciado + digitalWrite(13,HIGH); + /*Tiempo de espera de 15 segundos (prudencial, se puede cambiar, depende de lo que tardes + en volver a conectarlos) para reconectar cables RX y TX del modulo bluetooth + a la placa Arduino ya que para programar esta deben estar desconectados*/ + delay(5000); + //Indicacion de tiempo de espera finalizado + digitalWrite(13,LOW); + //Iniciamos comunicacion con modulo bluetooth mediante comandos AT + Serial.print("AT"); + //Espera de 1 segundo según datasheet entre envio de comandos AT + delay(1000); + //Cambio de nombre donde se envia AT+NAME y seguido el nombre que deseemos + Serial.print("AT+NAMEFznBTSlv"); + //Espera de 1 segundo según datasheet entre envio de comandos AT + delay(1000); + /*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"); + //Espera de 1 segundo según datasheet entre envio de comandos AT + //delay(1000); + //Configuracion Password, se envia AT+PIN y seguido password que queremos + Serial.print("AT+PIN4321"); + //Espera de 1 segundo según datasheet entre envio de comandos AT + delay(1000); + //Mostramos tanto por puerto serial y por led la finalizacion de la + //configuracion AT del modulo bluetooth + Serial.print("OK Cambios Realizados correctamente"); + digitalWrite(13,HIGH); + //Al tener 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 configuracion + + contador=2; + +} + +} diff --git a/BlueTooth/README.md b/BlueTooth/README.md new file mode 100644 index 0000000..19d7e1c --- /dev/null +++ b/BlueTooth/README.md @@ -0,0 +1,225 @@ +## 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() { + +} +``` +---- + +``` +#include + +/* Programa el modulo bluetooth HC-06 con un nuevo: + NOMBRE (Nombre de 20 caracteres) + PIN (Clave de cuatro numeros) + BPS (Velocidad de conexion en baudios) + + Tienda donde se compro el modulo: http://dinastiatecnologica.com/producto/modulo-bluetooth-hc-05/ + By: http://elprofegarcia.com + + CONEXIONES: + ARDUINO BLUETOOTH + 5V VCC + GND GND + PIN 2 TX + PIN 3 RX + + */ + +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)); // cuando termina de configurar el Bluetooth queda el LED 13 parpadeando + delay(100); +} +``` +---- + +``` +#include +SoftwareSerial BT1(4,2); // RX, TX recorder 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); + } +} +``` +