Shield Bluetooth con Arduino UNO

Shield Bluetooth con Arduino UNO

Es increíble la cantidad de proyectos que involucran un Shield Bluetooth con Arduino. Parece que a la mayoría de los que se inician le atrae mucho la idea de que su Arduino se pueda comunicar con su teléfono móvil o dispositivo Bluetooth. Si bien el Shield que les presento en esta página no es el más popular, la mayoría de los módulos y Shields de Bluetooth para Arduino comparten la manera de conectarse y de comunicarse, y difieren en el set de comandos AT que usan, a veces compartiendo algunos, y otras veces no.

Presentando el Shield Bluetooth

Shield Bluetooth BLE4.0

El Shield Bluetooth como todos los Shields se conecta directamente a un Arduino UNO o MEGA sin mayores problemas. El Shield posee un interruptor de voltaje con opciones para 3,3v y 5v, y el mio lo tengo en 5v ya que es el voltaje por defecto del Arduino. Lo otro a destacar es una serie de jumpers que permiten configurar el Shield para que se conecte al Arduino usando 2 pines que pueden ser elegidos entre D0 a D7.

Configurando el Shield Bluetooth

Como dije el Shield posee jumpers para configurar que pin del Shield será RX y cual será TX. Algo que no es tan obvio como parece, es que el pin que seleccionemos como RX debe conectarse al pin que configuremos como TX en nuestro Sketch de Arduino. Y lo mismo con TX del Shield que deberá conectarse al pin configurado como RX en el Sketch de Arduino. Mi Shield Bluetooth está configurado con pin 2 como TX y pin 3 como RX (recuerde que esto es del lado del Shield y debe invertirse en la configuración del programa de Arduino).

Shield Bluetooth - configuración de pines

Probando el Shield solo

El siguiente Sketch se puede usar para hacer algunas pruebas iniciales:

// Librería para usar pines digitales para comunicación serie
#include <SoftwareSerial.h> 
 
// Recuerde que el pin que recibe acá debe conectarse con el que transmite en el Shield y viceversa 
#define RX_PIN 2
#define TX_PIN 3

// Iniciamos un objeto serie por software con los pines definidos
SoftwareSerial mySerial(RX_PIN, TX_PIN); 
 
void setup() { 
  // Iniciamos el Monitor Serial
  Serial.begin(9600);
  Serial.setTimeout(500);
  
  pinMode(RX_PIN, INPUT); 
  pinMode(TX_PIN, OUTPUT);
 
  // El Shield se comunica a 9600 por defecto pero esto es configurable  
  mySerial.begin(9600);
} 
 
void loop() { 
  int x;
  String buffer;

  if (Serial.available()) {
    // Para facilitar la visualización leemos strings. 
    buffer = Serial.readString();
    
    Serial.println(""); // Para compensar que el Shield no envia salto de linea
    Serial.println(String("> ") + buffer);
    
    // Manda los caracteres leidor del Monitor Serial de a uno a la vez
    for (x=0; x<buffer.length(); x++) {
      mySerial.print(buffer[x]);
    }
  }  
  
  // Se fija si hay datos disponibles para leer del Shield Bluetooth y los manda al Monitor Serial
  if(mySerial.available()) { 
     Serial.print((char)mySerial.read()); 
  }   
}

El Sketch simplemente conecta el Monitor Serial al Shield Bluetooth de ida y vuelta de manera de que lo que mandamos por el Monitor Serial es enviado al Shield, y lo que el Shield contesta lo manda de regreso al Monitor Serial. Para facilitar la lectura de lo que ocurre, el Sketch hace eco de lo que nosotros mandamos agregándole el caracter ‘>’ delante. Pueden cargar el Sketch, conectar su Arduino con el Shield conectado, abrir el Monitor Serial, y enviar lo siguiente: AT y luego presione ENTER. El Shield debería contestar con: OK.

Pareando un dispositivo Android con el Shield Bluetooth

Una vez que tenemos nuestro Shield funcionando y que podemos enviarle comandos mediante el Monitor Serial, lo siguiente sería probar conectarlo con algun otro dispositivo externo. En este caso les muestro como conectarse e interactuar con un dispositivo Android estandard. Para ello lo primero que deberemos hacer es obtener el código de seguridad de nuestro Shield. En nuestro caso el comando a enviarle por el Monitor Serial es: AT+PASS?

El Shield debería contestarnos con algo así como: OK+Get:000000

Donde 00000 es el código (sí, puede tener 5 dígitos en lugar de lo usual que son 4), y será el código que debamos ingresar cuando nos intentemos conectar al Shield desde nuestro dispositivo Android.

Conectándose al Shield

Bueno, supongo que todo el mundo sabe como conectarse a un dispositivo BlueTooth desde su teléfono móvil o tableta. Simplemente encienda su servicio Bluetooth (si no lo tiene encendido aun), y busque nuevos dispositivos para conectarse y deberá ver uno nuevo disponible con el nombre similar a: BLE_SHD

Conéctense y si les pide el PIN usen el que obtuvimos más arriba.

App que necesitaremos

Hay muchas apps que podemos probar. Yo les dejo la que usé yo que al menos sé que funciona: https://play.google.com/store/apps/details?id=de.kai_morich.serial_bluetooth_terminal&hl=es

Una vez instalada córranla (ejecútenla) y deberá ver una pantalla similar a la siguiente:

Abra el menu de la izquiera presionando en: 

Y luego verá algo parecido a:

Vaya a “Bluetooth Devices” y en la solapa “BLUETOOTH LE” deberá encontrar el dispositivo “BLE_SHD”, selecciónelo:

Finalmente volviendo al menu y seleccionando “Terminal” volverá a la pantalla inicial, y ahi debe hacer click en el ícono superior que tiene como dos conectores desconectados. Ese ícono es para iniciar una conexión con el dispositivo. Y abajo deberá ver also similar a lo que se muestra a continuación.

A partir de aqui lo que usted ingrese en su Monitor Serial (que no sean comandos AT), se enviará a su dispositivo Android y también lo que usted ingrese en su dispositivo será enviado a su Monitor Serial.

Que sigue?

Bueno, desde aquí ustedes deberían ser capaces de diseñar sus Sketchs para que respondan a comandos por Bluetooth, como por ejemplo encender un led cuando recibimos un 1, apagarlo con un 0 o lo que se le ocurra. Por otro lado, si le interesa profundizar en los comandos AT y ver que más puede hacer, como por ejemplo cambiarle el nombre a su Shield (el nombre con el que aparece cuando nos conectamos) o cambiar el código para “parearse” (conectarse), todo eso es posible y ya lo dejo con el datasheet de referencia para que lo investiguen y vean solos:

 

Deja un comentario