- Introducción a ESP32 Bluetooth
- Comprensión de Bluetooth Low Energy (BLE) y ESP32 Classic Bluetooth
- Preparando Arduino IDE para ESP32
- Programa Bluetooth en serie para ESP32
- Prueba de Bluetooth serie con ESP32
Los módulos Bluetooth como HC-05 y HC-06 son fáciles de configurar y rápidos de usar con Arduino IDE, pero tienen sus propias limitaciones, como el alto consumo de energía y funcionan con el antiguo Bluetooth V2.0. Además, recientemente me compré un nuevo kit ESP32 DEV, estos módulos tienen una serie de características como Wi-Fi y Bluetooth integrados, amplios pines ADC y DAC, soporte de audio, soporte de tarjeta SD, modo de suspensión profunda, etc., casi tiene todo para construir proyectos de IoT.
Y como a cualquier aficionado le encantaría, el ESP32 ahora es oficialmente compatible con el IDE de Arduino. Anteriormente, teníamos que hacer una gran solución con la biblioteca de Neil Kolbans, pero ahora, gracias al arduo trabajo de este tipo, la programación de ESP32 con Arduino IDE se ha convertido en un juego de niños. Por lo tanto, lancé mi IDE de Arduino y revisé algunos programas BLE de ejemplo, a través de los cuales no entendí nada. Después de mucho tiempo navegando y haciendo youtubing, me di cuenta de que hay mucho más que entender si tienes que trabajar con Bluetooth Low Energy (BLE) usando ESP32. Decidí cubrir el BLE en artículos separados, así que aquí usaremos el Bluetooth serial clásico de ESP32 para alternar un LED usando un teléfono inteligente. Si está interesado en ver cómo utilizar las funciones BLE, consulte este artículo sobre el servidor ESP32 BLE y el cliente ESP32 BLE
Introducción a ESP32 Bluetooth
El primer programa que quise probar fue un programa simple con el cual puedo encender o apagar un LED desde una aplicación de terminal Bluetooth de un teléfono móvil, al igual que los viejos días HC-05. Pero resulta que, Bluetooth Low Energy (BLE) no tiene sangría para eso. También descubrí que hay dos tipos de Bluetooth en el módulo ESP32, uno es el Bluetooth clásico y el otro es BLE Bluetooth Low Energy. De acuerdo, pero ¿por qué?…. ¿Por qué tenemos dos tipos de Bluetooth y qué debo usar para mi proyecto?
Comprensión de Bluetooth Low Energy (BLE) y ESP32 Classic Bluetooth
El Bluetooth Low Energy, como su nombre indica, consume menos energía que el Bluetooth clásico. Se logra enviando datos según sea necesario con actualizaciones periódicas predefinidas. Pero a diferencia del Bluetooth clásico, no se usa para transferir archivos o música. ¿Alguna vez se ha preguntado cómo su teléfono identifica automáticamente que el dispositivo Bluetooth que acaba de emparejar es un dispositivo de audio o una computadora portátil o teléfono? Es posible que también haya visto que el nivel de batería en el reproductor de audio inalámbrico o la banda de fitness se muestra automáticamente en la barra de estado de tu celular; todo esto es posible con las características de los dispositivos BLE. Un dispositivo BLE funciona con Bluetooth V4.0 y puede funcionar con poca energía como servidor o como cliente, lo que haceBLE una opción ideal para los faros, relojes inteligentes, bandas de fitness, etc.
El Bluetooth clásico, por otro lado, es solo el simple y antiguo Bluetooth que usamos para transferir archivos y otros datos. Casi todos los dispositivos BLE tienen la funcionalidad Bluetooth clásica asociada. El Bluetooth utilizado en módulos como HC-05 es una versión del Bluetooth clásico llamado Bluetooth SSP (Protocolo de puerto serie), lo que significa que el Bluetooth sigue el protocolo serie estándar que facilita el envío y la recepción de datos sin demasiados gastos generales. Al final de este tutorial, aprenderemos cómo usar la funcionalidad de Bluetooth serie en ESP32.
Aquí, en este artículo , usaremos la función Bluetooth serie en ESP32 para emparejarlo con un teléfono inteligente y usaremos cualquier aplicación de terminal Bluetooth existente de Play Store para enviar comandos al ESP32 y alternar el LED integrado en consecuencia.
En artículos posteriores cubriremos ESP32 BLE como servidor y como cliente. El servidor BLE se usa generalmente para enviar datos BLE a otros dispositivos Bluetooth y el cliente BLE se usa para escanear otros dispositivos BLE, por lo que actúa como baliza.
Preparando Arduino IDE para ESP32
Tenga en cuenta que Arduino IDE por defecto no es compatible con la placa ESP32; tienes que descargarlos e instalarlos usando el administrador de la placa. Si este es su primer programa con ESP32, siga este tutorial de introducción para agregar la placa ESP32 a su Arduino y cargar un boceto de prueba.
Además, puede hacer más proyectos con ESP32, sin usar ningún microcontrolador con él.
Programa Bluetooth en serie para ESP32
El programa completo para alternar un LED usando ESP32 Bluetooth se proporciona al final de esta página. Debajo de este encabezado, vamos a dividir el código en pequeños fragmentos e intentar entenderlos. Si ya ha utilizado otros módulos Bluetooth como HC-05, encontrará que este programa de ejemplo ESP32 Bluetooth Classic es muy similar.
La idea del programa es inicializar una conexión Bluetooth serie usando ESP32 y escuchar datos de dispositivos emparejados. Si el dato entrante es '1' entonces encendemos el LED y si es '0' debemos apagar el LED. Comenzamos nuestro programa agregando el archivo de encabezado BluetoothSerial que hace que el ESP32 Bluetooth funcione como Bluetoth SSP.
#include "BluetoothSerial.h" // Archivo de encabezado para Bluetooth serie, se agregará de forma predeterminada en Arduino
Hay muchas cosas detrás de esta biblioteca, pero elegimos no profundizar en ella para simplificar las cosas. Lo siguiente que necesitamos es un objeto para nuestras operaciones relacionadas con Bluetooth. Aquí he nombrado el mío como ESP_BT , pero puedes elegir cualquier nombre.
BluetoothSerial ESP_BT; // Objeto para Bluetooth
A continuación, dentro de la función void setup () . Comenzamos la comunicación serial con una tasa de baudios 9600 e inicializamos la señal Bluetooth con un nombre. Aquí lo he nombrado como “ESP32_LED_Control ”, este será el nombre que nuestro teléfono encontrará al intentar emparejar. Finalmente, he declarado el pin LED incorporado como pin de salida, ya que lo cambiaremos según la señal de Bluetooth.
configuración vacía () { Serial.begin (9600); // Iniciar monitor de serie en 9600 ESP_BT.begin ("ESP32_LED_Control"); // Nombre de su señal Bluetooth Serial.println ("El dispositivo Bluetooth está listo para emparejarse"); pinMode (LED_BUILTIN, OUTPUT); // Especifique que se emite el pin LED }
Dentro de la función de bucle de vacío infinito, verificamos si hay datos provenientes del módulo Bluetooth, si es así, los datos se leen y almacenan en la variable de entrada . También imprimimos este valor en el monitor serial solo para verificar lo que está recibiendo el Arduino.
if (ESP_BT.available ()) // Verifica si recibimos algo de Bluetooth { entrante = ESP_BT.read (); // Leer lo que recibimos Serial.print ("Received:"); Serial.println (entrante);
Ahora, cualquier dato recibido se almacena en la variable entrante , por lo que podemos comparar directamente esta variable con el valor esperado y realizar la acción requerida. Pero el valor enviado desde Bluetooth estará en Char forma y Arduino leerá el valor decimal del carbón que está siendo enviado desde el teléfono. En nuestro caso para el carácter '0' el valor decimal será 48 y para el carácter '1' el valor decimal será 49. Puede consultar la tabla ASCII para comprender cuál será el valor decimal para cada carácter.
Aquí hemos comparado la variable entrante con 48 y 49 para verificar 0 y 1 respectivamente. Si es un 1, apagamos el LED y también imprimimos un mensaje de reconocimiento a Bluetooth diciendo que el LED se apagó y viceversa para 0.
if (entrante == 49) { digitalWrite (LED_BUILTIN, HIGH); ESP_BT.println ("LED encendido"); } if (entrante == 48) { digitalWrite (LED_BUILTIN, LOW); ESP_BT.println ("LED apagado"); }
Prueba de Bluetooth serie con ESP32
Conecte su ESP a su Arduino IDE y seleccione la placa y el puerto correctos como se explica en el tutorial de introducción. Dado que es un 3 rd gestor de dirección del partido que podría tomar un poco más para que el código para obtener compilado y cargado. Una vez cargados, inicie los monitores en serie (solo para depurar) y abra la configuración de Bluetooth en su teléfono. Debería encontrar un dispositivo Bluetooth llamado ESP32_LED_Control emparejado con.
Ahora puede abrir cualquier aplicación de terminal Bluetooth en su teléfono inteligente, estoy usando la que se llama "Terminal Bluetooth" que se descargó de la tienda de aplicaciones de Google. Conecta la aplicación Bluetooth al dispositivo que acabamos de emparejar, escribe 1 y presiona enviar.
El módulo ESP32 debe recibirlo y encender el LED según nuestro programa y también darle un mensaje de reconocimiento diciendo que el LED está encendido como en la captura de pantalla que se muestra arriba. También puede verificar el monitor serial que mostrará los datos que está recibiendo el ESP32 Bluetooth en formato decimal, es decir, su Arduino leerá 48 para 0 y 49 para 1 como se explicó anteriormente. La instantánea de la ventana de mi terminal se muestra a continuación.
Del mismo modo, también debería poder apagar el LED enviando 0 desde la aplicación móvil. El trabajo completo se muestra en el video a continuación. Espero que hayas entendido el tutorial y hayas aprendido algo útil. Si tiene alguna duda, no dude en dejarla en la sección de comentarios a continuación o utilizar nuestros foros para obtener ayuda técnica.