Introducción al ESP32 y Bluetooth Low Energy (BLE)
En la actualidad, el Bluetooth Low Energy (BLE) se ha convertido en una tecnología omnipresente, presente en una variedad de dispositivos que utilizamos diariamente. Si alguna vez has utilizado un escáner en tu teléfono, seguro has detectado decenas, si no cientos, de dispositivos BLE a tu alrededor. Pero, ¿qué es exactamente el BLE y cómo puedes comenzar a trabajar con él, especialmente a través del popular microcontrolador ESP32?
Este artículo proporciona una introducción exhaustiva al BLE, su funcionamiento, y una guía práctica sobre cómo implementarlo en el ESP32. Ya sea que seas un aficionado a la electrónica o un desarrollador experimentado, este tutorial te ayudará a comprender y utilizar esta fascinante tecnología.
Qué es Bluetooth Low Energy (BLE)
Bluetooth Low Energy, a menudo conocido como BLE o Bluetooth Smart, es una versión optimizada del Bluetooth clásico, diseñada específicamente para aplicaciones que requieren bajo consumo energético y la transmisión de pequeñas cantidades de datos. Desde su introducción en el estándar Bluetooth 4.0, BLE ha ganado popularidad en una amplia gama de dispositivos, desde rastreadores de fitness hasta dispositivos médicos y aplicaciones para el hogar inteligente.
Algunas de las características clave de BLE incluyen:
- Bajo consumo energético: BLE está diseñado para operar con baterías de bajo consumo, lo que lo hace ideal para dispositivos portátiles.
- Frecuencia de operación: Utiliza la banda ISM de 2.4GHz, la misma que el Bluetooth clásico, pero con un enfoque en la eficiencia.
- Conexiones rápidas: BLE permite una rápida conexión y desconexión, lo que ahorra energía cuando no se necesita una conexión constante.
- Menor potencia de transmisión: Con potencias que van de 0.01 a 10 mW, comparado con los hasta 100 mW del Bluetooth clásico.
- Transferencia de datos eficiente: Aunque la velocidad máxima de transmisión es de 1 Mb/s, es suficiente para la mayoría de las aplicaciones que requieren pequeñas cantidades de datos.
Perfiles Bluetooth: el lenguaje del BLE
Los perfiles Bluetooth son protocolos adicionales que definen cómo se utiliza el Bluetooth. Mientras que las especificaciones de Bluetooth determinan el funcionamiento básico, los perfiles especifican el uso particular de los datos transmitidos. Cada dispositivo BLE puede soportar diferentes perfiles, lo que determina su funcionalidad. Algunos ejemplos son:
- Perfil de manos libres (HSP): utilizado en auriculares.
- Perfil de dispositivo de interfaz humana (HID): utilizado en teclados y ratones.
Los perfiles más relevantes en el contexto de BLE son GAP (Generic Access Profile) y GATT (Generic Attribute Profile). Ambos son esenciales para entender la comunicación entre dispositivos BLE.
GAP: El perfil de acceso genérico
GAP es crucial para establecer conexiones y publicidad en BLE. Define cómo los dispositivos se descubren y conectan entre sí. Dentro de GAP, se destacan dos roles principales:
- Dispositivos Periféricos: Generalmente son dispositivos de bajo consumo como monitores de frecuencia cardíaca.
- Dispositivos Centrales: Son dispositivos más potentes, como teléfonos móviles o tablets, que se conectan a los periféricos.
Cuando un dispositivo periférico está disponible, envía paquetes de publicidad que permiten a los dispositivos centrales detectarlo. Una vez que se establece la conexión, se activa el perfil GATT para gestionar la transferencia de datos.
GATT: El perfil de atributos genérico
GATT define cómo se organiza y comparte la información entre dispositivos BLE. A diferencia de GAP, que se ocupa de las interacciones de conexión, GATT se centra exclusivamente en los procedimientos de transferencia de datos.
La información se organiza en servicios y características:
- Servicios: Colecciones de características que están relacionadas conceptualmente. Cada servicio tiene un identificador único (UUID).
- Características: Grupos de información que incluyen atributos. Por ejemplo, en el servicio de frecuencia cardíaca, se pueden encontrar características como la medición de frecuencia cardíaca y la ubicación del sensor corporal.
Roles de GATT: Servidor y Cliente
En el contexto de GATT, cada dispositivo conectado asume uno de dos roles:
- Servidor GATT: Contiene la base de datos de características.
- Cliente GATT: Lee y escribe datos en el servidor.
Es importante resaltar que los roles de GATT son independientes de los roles de GAP. Un dispositivo periférico puede actuar como cliente o servidor y viceversa.
Usando BLE en el ESP32
Ahora que comprendes el funcionamiento básico del BLE, es el momento de implementarlo utilizando el ESP32. Este microcontrolador es conocido por su versatilidad y compatibilidad con BLE, lo que lo convierte en una opción popular entre los desarrolladores.
Para comenzar, necesitarás la biblioteca ESP32 BLE, que se instala automáticamente al configurar el núcleo de ESP32 en el entorno de desarrollo de Arduino. Puedes acceder a ejemplos de código para comenzar rápidamente.
Un ejemplo básico es el BLE_server, que configura el ESP32 como un servidor BLE y permite la comunicación con clientes como teléfonos inteligentes:
#include <BLEDevice.h>
#include <BLEUtils.h>
#include <BLEServer.h>
#define SERVICE_UUID "4fafc201-1fb5-459e-8fcc-c5c9c331914b"
#define CHARACTERISTIC_UUID "beb5483e-36e1-4688-b7f5-ea07361b26a8"
void setup() {
Serial.begin(115200);
Serial.println("Iniciando trabajo BLE!");
BLEDevice::init("MiESP32");
BLEServer *pServer = BLEDevice::createServer();
BLEService *pService = pServer->createService(SERVICE_UUID);
BLECharacteristic *pCharacteristic = pService->createCharacteristic(
CHARACTERISTIC_UUID,
BLECharacteristic::PROPERTY_READ |
BLECharacteristic::PROPERTY_WRITE
);
pCharacteristic->setValue("¡Hola Mundo!");
pService->start();
BLEAdvertising *pAdvertising = BLEDevice::getAdvertising();
pAdvertising->addServiceUUID(SERVICE_UUID);
pAdvertising->setScanResponse(true);
pAdvertising->setMinPreferred(0x06);
pAdvertising->setMinPreferred(0x12);
BLEDevice::startAdvertising();
Serial.println("Característica definida! Ahora puedes leerla en tu teléfono!");
}
void loop() {
delay(2000);
}
Explicación del código
El código anterior establece un servidor BLE en el ESP32, permitiendo a los dispositivos clientes interactuar. Aquí desglosamos las partes más importantes:
- Inclusión de bibliotecas: Se incluyen las bibliotecas necesarias para las operaciones BLE.
- Definición de UUIDs: Se definen UUIDs para el servicio y la característica, asegurando una identificación única.
- Configuración del dispositivo: Se inicia la comunicación serie y se configura el nombre del dispositivo.
- Creación del servidor y servicio: Se crea el servidor BLE y se asocia un servicio con UUID.
- Definición de características: Se establecen las propiedades de la característica, permitiendo lectura y escritura.
- Publicidad del servicio: Se configura y activa la publicidad para que el ESP32 sea detectable.
Usando nRF Connect para pruebas
Para probar la conexión BLE, es fundamental emparejar el ESP32 con tu teléfono inteligente. Utiliza una aplicación de depuración Bluetooth como nRF Connect, disponible en iOS y Android, que te permite explorar y comunicarte con dispositivos BLE.
- Descarga e instala: Busca "nRF Connect for Mobile" en la tienda de aplicaciones y ábrela.
- Activa el Bluetooth: Asegúrate de que el Bluetooth de tu teléfono esté encendido.
- Escanea dispositivos: Toca el botón "SCAN" en la app para buscar dispositivos BLE cercanos.
- Conéctate al ESP32: Busca "MiESP32" en la lista y toca "Conectar".
- Accede a los servicios: En la vista de "Servicios", selecciona el servicio correspondiente al UUID especificado en el código.
- Interacción con características: Toca en la característica deseada para leer o escribir datos.
- Verifica la comunicación: Al leer la característica, deberías ver el valor "¡Hola Mundo!", como se definió en el código.
Este enfoque práctico no solo te permitirá experimentar con BLE, sino que también te proporcionará una base sólida para desarrollar aplicaciones más complejas. Con el ESP32 y BLE, las posibilidades son infinitas, desde dispositivos de monitoreo hasta sistemas de automatización del hogar.
Deja una respuesta
Estos temas te pueden interesar