esp32-bluetooth-classic

Cómo usar Bluetooth Serial en ESP32

El ESP32 cuenta con Bluetooth integrado, que nos permite establecer de forma sencilla una comunicación inalámbrica con otros dispositivos (como smartphones, ordenadores, etc)

El ESP32 soporta tanto Bluetooth Classic como BLE (Bluetooth Low Energy). Hoy vamos a ver el Bluetooth Classic (en la siguiente entrada veremos el BLE).

Voy a llamar al Bluetooth Classic al “normal”, al de toda la vida, simplemente para diferenciarlo del BLE.

Bluetooth Classic es una tecnología de comunicación inalámbrica que opera en la banda de 2.4 GHz y permite la transmisión de datos entre dispositivos a distancias cortas (generalmente hasta 10 metros).

  • Banda de frecuencia: 2.4 GHz (ISM band).
  • Alcance: Hasta 10 metros (puede extenderse con amplificadores).
  • Velocidad de transmisión: Hasta 3 Mbps (en la versión 2.0 + EDR).
  • Topología: Conexiones punto a punto (P2P) o multipunto.
  • Seguridad: Soporta autenticación y cifrado.

Una de las aplicaciones más comunes y útiles de esta tecnología es la comunicación por puerto de serie, que permite enviar y recibir datos entre el ESP32 y otro dispositivo mediante Bluetooth.

Comunicación Serial sobre Bluetooth Classic

La comunicación serie es un método sencillo para transferir datos entre dispositivos como una secuencia de bits (seguro que ya la habréis usado, por ejemplo, con un cable USB).

BluetoothSerial es una librería integrada en el entorno ESP32 que permite la comunicación por Bluetooth en el modo clásico. Este modo se basa en el perfil SPP (Serial Port Profile), que emula una conexión serial sobre un canal inalámbrico.

Vamos a ver cómo usarlo con un ejemplo,

#include "BluetoothSerial.h"

BluetoothSerial SerialBT;

void setup() {
  Serial.begin(115200);
  SerialBT.begin("ESP32_BT_Classic"); // Nombre del dispositivo Bluetooth
  Serial.println("El dispositivo Bluetooth está listo para emparejarse.");
}

void loop() {
  if (Serial.available()) {
    SerialBT.write(Serial.read()); // Envía datos desde el monitor serie al Bluetooth
  }
  if (SerialBT.available()) {
    Serial.write(SerialBT.read()); // Envía datos desde el Bluetooth al monitor serie
  }
}
  1. Incluir la biblioteca BluetoothSerial: Esta biblioteca facilita la implementación de Bluetooth Classic en el ESP32.
  2. Creamos una instancia de BluetoothSerial: SerialBT es el objeto que maneja la comunicación Bluetooth.
  3. Inicializar Bluetooth: En setup(), llamamos a SerialBT.begin("ESP32_BT_Classic") para iniciar el dispositivo Bluetooth con el nombre “ESP32_BT_Classic”.
  4. Comunicación bidireccional: En loop(), el código verifica si hay datos disponibles en el puerto serie o en el Bluetooth y los transmite en consecuencia.

Conexión desde un dispositivo externo

Para probar este ejemplo, sigue estos pasos:

  1. Cargar el código en el ESP32: Conecta tu ESP32 al ordenador y carga el código anterior.
  2. Emparejar el dispositivo: En tu teléfono o computadora, busca dispositivos Bluetooth y selecciona “ESP32_BT_Classic”.
  3. Conectar con una aplicación de terminal: Usa una aplicación de terminal Bluetooth (como Serial Bluetooth Terminal en Android) para conectarte al ESP32 y enviar/recepcionar datos.

Una vez que la conexión Bluetooth está establecida, puedes enviar y recibir datos entre el ESP32 y el otro dispositivo.

Por ejemplo, puedes utilizar las funciones disponibles en la librería BluetoothSerial para enviar y recibir datos como si estuvieras utilizando un puerto de serie físico.

Ejemplos prácticos