ESP32 y Bluetooth Serial

El ESP32 es un SoC que aparte de contar con módulo WiFi también trae uno de Bluetooth. En este tutorial aprenderás a utilizar esta función para recibir datos provenientes de otros dispositivo y mostrarlos en el Monitor Serie.

¿Qué es Bluetooht?

Bluetooth es una tecnología de comunicación inalámbrica de corto alcance entre dispositivos. El rango de alcance es de aproximadamente 10 metros. Usa una frecuencia de 2.4 GHz lo que ayuda a traspasar algunas barreras, incluso paredes. Al utilizar radiofrecuencia no es necesario que los dispositivos vinculados estén uno frente al otro.

Otro detalle es la cantidad de dispositivos que puedes conectar. Si bien se acostumbra conectar 2 dispositivos también es posible conectar varios dispositivos como si fuesen nodos en una malla.

Programación

#include "BluetoothSerial.h"

#if !defined(CONFIG_BT_ENABLED) || !defined(CONFIG_BLUEDROID_ENABLED)
#error Bluetooth is not enabled! Please run `make menuconfig` to and enable it
#endif

BluetoothSerial SerialBT;

void setup() {
  Serial.begin(115200);
  SerialBT.begin("TodoMakerESP32");
  Serial.println("El ESP32 está listo, puedes emparejarlo mediante Bluetooth");
}

void loop() {
  if (Serial.available()) {
    SerialBT.write(Serial.read());
  }
  if (SerialBT.available()) {
    Serial.write(SerialBT.read());
  }
  delay(20);
}

Explicación del código

Empezamos agregando la librería para el manejo de las funciones de Bluetooth por serial en el ESP32.

#include "BluetoothSerial.h"

Estas condiciones son para detectar si la función de Bluetooth está desactivada en tu teléfono. Por ello en la condición se toma en cuenta también a Bluedroid, que es la forma en la que ahora Androis gestiona las funciones de Bluetooth en los teléfonos.

#if !defined(CONFIG_BT_ENABLED) || !defined(CONFIG_BLUEDROID_ENABLED)
#error Bluetooth is not enabled! Please run `make menuconfig` to and enable it
#endif

Creamos una instancia de la librería y la nombramos como SerialBT.

BluetoothSerial SerialBT;

En setup() activaremos el Monitor Serie a un velocidad de 115200 baudios. También la damos la instrucción a la instancia SerialBT de iniciar. En los paréntesis se agrega como como argumento el nombre que tendrá el ESP32.

  Serial.begin(115200);
  SerialBT.begin("TodoMakerESP32");
  Serial.println("El ESP32 está listo, puedes emparejarlo mediante Bluetooth");

En loop usaremos unas condiciones para la recepción y envío de datos.

Empezando con el envío está condición indica que si hay datos en el puerto Serie del ESP32 estos datos serán escritos en la instancia SerialBT que creamos. Por lo tanto se enviarían al otro dispositivo que esté conectado.

if (Serial.available()) {
    SerialBT.write(Serial.read());
  }

Lo que hace la siguiente condición es detectar cuando la instancia Bluetooth ha recibido datos estos serán escritos en el puerto Serie del ESP32. Por lo que nos mostrará la información que recibamos.

if (SerialBT.available()) {
    Serial.write(SerialBT.read());
  }

El programa se pausa durante 20 milisegundos y después se vuelve a repetir.

  delay(20);

Conectando el ESP32 a un teléfono mediante Bluetooth

Después de subir el código debes vincular el ESP32 a tu teléfono. Para ello abre los ajustes de tu dispositivo y activa Bluetooth. Cuando realices una búsqueda deberías ver un dispositivo con el nombre que colocaste al ESP32.

Ahora abre la aplicación Serial Bluetooth Terminal.

Descárgala aquí.

Abre el menú que está en la parte superior izquierda y ve a la sección Devices.

Allí selecciona el ESP32. Recuerda que solo aparecerá si está vinculado.

En unos segundos se realizará la conexión entre el teléfono y el ESP32.

Prueba enviado texto desde el teléfono al ESP32 y también en sentido contrario.

Conclusión

El ESP32 cuenta con un módulo para las funciones de comunicación mediante Bluetooth. Gracias a ello lo podemos conectar a diversos dispositivos e intercambiar datos.

Síguenos y comparte para llegar a más personas entusiastas en la tecnología.

Te invitamos a tomar el curso de Introducción al ESP32: Introducción al ESP32 | TodoMaker’s School

Previous Post
Next Post