Módulo 5

Bluetooth Clásico vs BLE (Bluetooth Low Energy)

Conectividad Inalámbrica

ESP32 Mecatrónica IoT UNAM

Introducción Teórica

El Bluetooth es una tecnología de comunicación inalámbrica que permite la transferencia de datos entre dispositivos a corta distancia. Existen dos versiones principales de Bluetooth: el Bluetooth Clásico y el Bluetooth Low Energy (BLE).

El Bluetooth Clásico, también conocido como Bluetooth Basic Rate/Enhanced Data Rate (BR/EDR), es la versión original de Bluetooth y es ideal para aplicaciones que requieren una transmisión continua de datos, como la transmisión de audio.

Por otro lado, el BLE, también conocido como Bluetooth Smart, es una versión más reciente de Bluetooth diseñada para aplicaciones que requieren pequeñas cantidades de datos y baja potencia, como los dispositivos de salud y fitness, dispositivos IoT y sensores.

En el campo de la mecatrónica y el IoT, el BLE es especialmente relevante debido a su bajo consumo de energía, lo que lo hace ideal para dispositivos alimentados por baterías. En la industria, el BLE se utiliza en una variedad de aplicaciones, desde el seguimiento de activos y la monitorización del estado de la maquinaria hasta la automatización de la producción y la seguridad en el lugar de trabajo.

Explicación Técnica Detallada

El ESP32 es un microcontrolador de bajo costo con capacidades de Wi-Fi y Bluetooth, incluyendo BLE. Para utilizar el BLE en el ESP32, es necesario trabajar con la librería BLE de ESP32 en el Arduino IDE.

El proceso para configurar el BLE en el ESP32 implica varias etapas, incluyendo la inicialización del BLE, la configuración del servidor BLE, la definición de los servicios y características BLE, y la configuración de los callbacks.

Un ejemplo de código para configurar un servidor BLE en el ESP32 utilizando el Arduino IDE es el siguiente:

C++ (Arduino IDE)
#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("Starting BLE work!");

  BLEDevice::init("ESP32-BLE");
  BLEServer *pServer = BLEDevice::createServer();
  BLEService *pService = pServer->createService(SERVICE_UUID);
  BLECharacteristic *pCharacteristic = pService->createCharacteristic(
                                         CHARACTERISTIC_UUID,
                                         BLECharacteristic::PROPERTY_READ |
                                         BLECharacteristic::PROPERTY_WRITE
                                       );

  pCharacteristic->setValue("Hello World");
  pService->start();
  BLEAdvertising *pAdvertising = pServer->getAdvertising();
  pAdvertising->start();
  Serial.println("Characteristic defined! Now you can read it in your phone!");
}

void loop() {
  // put your main code here, to run repeatedly:
  delay(2000);
}

Este código crea un servidor BLE que anuncia un servicio con una característica que puede ser leída y escrita. Cuando un cliente se conecta, puede leer el valor de la característica ("Hello World") y cambiarlo.

Ejercicios Prácticos Visuales

1

Conexión Bluetooth con Smartphone

Básico 30-40 min

Objetivo: Conectar el ESP32 con un smartphone a través de Bluetooth y transmitir datos.

Materiales: ESP32, smartphone con una aplicación de Bluetooth.

Código: Utilizar el código de ejemplo proporcionado anteriormente.

Esquema de conexiones: No aplica, ya que no se requieren conexiones físicas adicionales.

Resultados esperados: El smartphone debe ser capaz de conectarse al ESP32 y leer y cambiar el valor de la característica.

2

Transmisión de datos del sensor a través de BLE

Intermedio 60-90 min

Objetivo: Conectar un sensor al ESP32 y transmitir los datos del sensor a un smartphone a través de BLE.

Materiales: ESP32, sensor (por ejemplo, un sensor de temperatura), smartphone con una aplicación de Bluetooth.

Código: Modificar el código de ejemplo para leer los datos del sensor y establecer el valor de la característica con estos datos.

Esquema de conexiones: Conectar el sensor al ESP32 de acuerdo con las especificaciones del sensor.

Resultados esperados: El smartphone debe ser capaz de conectarse al ESP32 y leer los datos del sensor.

3

Control de un actuador a través de BLE

Avanzado 90-120 min

Objetivo: Conectar un actuador al ESP32 y controlarlo a través de BLE.

Materiales: ESP32, actuador (por ejemplo, un LED o un motor), smartphone con una aplicación de Bluetooth.

Código: Modificar el código de ejemplo para leer el valor de la característica y controlar el actuador de acuerdo con este valor.

Esquema de conexiones: Conectar el actuador al ESP32 de acuerdo con las especificaciones del actuador.

Resultados esperados: El smartphone debe ser capaz de conectarse al ESP32 y controlar el actuador a través de BLE.

Proyecto Aplicado

Sistema de Monitoreo de Temperatura Inalámbrico

Objetivo: Crear un sistema de monitoreo de temperatura inalámbrico que transmita los datos de la temperatura a un smartphone a través de BLE.

Código: Combinar y modificar los códigos de los ejercicios 1 y 2 para leer los datos de la temperatura y transmitirlos a través de BLE.

Procedimiento:
  1. Conectar el sensor de temperatura al ESP32
  2. Configurar el servidor BLE en el ESP32
  3. Leer los datos de la temperatura y establecer el valor de la característica con estos datos
  4. Conectar el smartphone al ESP32 y leer los datos de la temperatura
Materiales
  • ESP32
  • Sensor DHT11
  • Smartphone con Bluetooth

Evaluación y Troubleshooting

Problemas Comunes
  • Dificultades para conectar el smartphone al ESP32
  • Problemas para leer o cambiar el valor de la característica
  • Problemas para leer los datos del sensor
  • Problemas para controlar el actuador
Posibles Causas:
  • Errores en el código
  • Problemas con la librería BLE
  • Problemas con la aplicación de Bluetooth
  • Problemas con el sensor o actuador
Soluciones
  1. Revisar el código para asegurarse de que no hay errores
  2. Revisar la documentación de la librería BLE
  3. Probar la aplicación de Bluetooth con otros dispositivos
  4. Probar el sensor o actuador con otros microcontroladores
Criterios de Evaluación:
  • Configuración correcta del servidor BLE
  • Lectura y escritura de características
  • Integración con sensores/actuadores
  • Capacidad de resolución de problemas