HC-07 Bluetooth Module for Arduino
HC-07 Bluetooth Module for Arduino

De entre todos los módulos que hay para Arduino, el bluetooth es en mi opinión el más interesante. Es muy barato, muy sencillo (no tiene más que 2 pines quitando alimentación y tierra), funciona como un puerto serie, es compatible con cualquier cacharro moderno como móviles y portátiles… y puede dar mucho juego.

Yo compré uno por 7$ en Aliexpress, el modelo HC-07 (no todos son iguales, los comandos AT pueden variar). Ahora están más baratos:
HC-07 bluetooth

Pero eso ya es cosa vuestra, yo os voy a dejar un pequeño programa para cargar en Arduino y que os permita configurar el módulo bluetooth. Sí, hay que configurar cosas como el nombre, el pin o la velocidad. No es complicado, basta con conectar los pines TX y RX del módulo bluetooth a un par de pines de Arduino, por ejemplo el 10 y el 11. Le diremos a nuestro Arduino que use esos dos pines como si fuesen un puerto serie y enlazaremos la entrada y salida con el puerto serie de nuestro Arduino. De esta forma, cuando escribas en el monitor serie, Arduino enviará eso al módulo bluetooth, y cuando el módulo responda, Arduino nos enchufará su respuesta en el monitor serie:

/*
+ Ejemplo de configuracion:
+ Cargamos el programa
+ Abrimos el monitor serial y seleccionamos "Nueva linea"
+ Escribimos los siguientes comandos:
AT
AT+PIN0000
AT+NAMEarduino
+ Deberia devolvernos:
OKOKsetPINOKsetname

* Comandos disponibles:
AT+VERSION     //devuelve la version
AT+PINxxxx     //establece como pin xxxx (maximo 4 digitos)
AT+NAMEmyname  //establece como nombre "myname" (maximo 20 chars)
AT+PN          //establece la paridad: AT+PN = No parity check
AT+BAUDx
*      1 >> 1200
*      2 >> 2400
*      3 >> 4800
*      4 >> 9600 (Default)
*      5 >> 19200
*      6 >> 38400
*      7 >> 57600
*      8 >> 115200
*      9 >> 230400
*/

#include 

int led =         13;           // Pin of Blinking LED, default should be fine.
SoftwareSerial    bt(10, 11);   // Pins for RX, TX on Arduino Side (cruzados al bt)

String inputString = "";         // a string to hold incoming data
boolean stringComplete = false;  // whether the string is complete

void setup()
{
  pinMode(led, OUTPUT);
  Serial.begin(9600);

  bt.begin(9600);               // Speed of your bluetooth module, 9600 is default
  //digitalWrite(led, HIGH);      // Turn on LED to signal programming has started
  delay(1000);

  inputString.reserve(200);
}

void loop()                     // bridge the serial ports so setup can be done manually.
{
  if (bt.available()) {
    Serial.write(bt.read());    // Pipe Bluetooth to Debug Console
  }
  if (stringComplete) {
    bt.print(inputString);    // Pipe Debug Console to Bluetooth
    inputString = "";
    stringComplete = false;
    digitalWrite(led, HIGH);
    delay(100);
    digitalWrite(led, LOW);
  }
}

void serialEvent() {
  while (Serial.available()) {
    // get the new byte:
    char inChar = (char)Serial.read(); 
    // if the incoming character is a newline, set a flag
    // so the main loop can do something about it:
    if (inChar == '\n') {
      stringComplete = true;
    } else{
      // add it to the inputString:
      inputString += inChar; 
    }
  }
}

Cargad el programa, abrid el monitor serie y escribid los comandos que queráis, por ejemplo para cambiar el nombre del dispositivo:
AT+NAMEsalvatore

Recordad que si cambiáis la velocidad del módulo, la próxima vez que queráis configurarlo deberéis editar esta línea en el setup:

bt.begin(9600);

Eso es todo, espero que os sirva. Cualquier duda, respondo en los comentarios.

If you think my content is worth it you can Buy me a Coffee at ko-fi.com Buy me a Ko-fi