Si estás interesado en adentrarte en el emocionante mundo de la tecnología Bluetooth con tu ESP32 y Arduino IDE, ¡has llegado al lugar indicado! En este artículo, te guiaremos a través de los primeros pasos para utilizar Bluetooth Classic en tu ESP32 con la ayuda del Arduino IDE. Descubrirás lo sencillo que es empezar a comunicarte de forma inalámbrica y llevar tus proyectos al siguiente nivel. ¡No te lo pierdas!
El ESP32 tiene WiFi, Bluetooth Low Energy y Bluetooth Classic. En este tutorial aprenderá cómo usar ESP32 Bluetooth Classic con Arduino IDE para intercambiar datos entre un ESP32 y un teléfono inteligente Android.
Controlamos una salida ESP32 y enviamos valores de sensores a un smartphone Android a través de Bluetooth Classic.
Nota: este proyecto es solo compatible con teléfonos inteligentes Android.
Mira el vídeotutorial
Puede ver el video tutorial o continuar leyendo esta página para obtener las instrucciones escritas.
Bluetooth clásico con ESP32
Por el momento, usar Bluetooth Classic es mucho más fácil que Bluetooth Low Energy. Si ya tienes un Arduino con un Módulo Bluetooth como el HC-06esto es muy parecido. Utiliza funciones y protocolos de serie estándar.
En este tutorial usaremos primero un ejemplo que viene con el IDE de Arduino. Luego crearemos un proyecto simple para intercambiar datos entre el ESP32 y su teléfono inteligente Android.
Piezas requeridas
Para seguir este tutorial necesitarás los siguientes elementos:
- Placa ESP32 DOIT DEVKIT V1 (leer Las mejores placas de desarrollo ESP32)
- Teléfono inteligente Android con Bluetooth
- LED de 5 mm
- Resistencia de 330 ohmios
- Sensor de temperatura DS18B20
- Resistencia de 4,7k ohmios
- Cables de puente
- tablero de circuitos
Puedes utilizar los enlaces anteriores o ir directamente MakerAdvisor.com/tools ¡Para encontrar todas las piezas para tus proyectos al mejor precio!
Aplicación de terminal Bluetooth
Para continuar con este tutorial, deberás tener instalada una aplicación de terminal Bluetooth en tu smartphone.
Recomendamos utilizar la aplicación de Android “Terminal serie Bluetoothdisponible en Play Store.
Bluetooth serie a serie
Programaremos el ESP32 usando Arduino IDE. Por lo tanto, asegúrese de tener instalado el complemento ESP32 antes de continuar:
- Ventanas: Instrucciones – Placa ESP32 en Arduino IDE
- Mac y Linux: Instrucciones – Placa ESP32 en Arduino IDE
Abra su IDE de Arduino y vaya a archivo > Ejemplos > BluetoothDe serie > SerialtoSerialBT.
Debería cargarse el siguiente código.
//This example code is in the Public Domain (or CC0 licensed, at your option.)
//By Evandro Copercini - 2018
//
//This example creates a bridge between Serial and Classical Bluetooth (SPP)
//and also demonstrate that SerialBT have the same functionalities of a normal Serial
#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("ESP32test"); //Bluetooth device name
Serial.println("The device started, now you can pair it with bluetooth!");
}
void loop() {
if (Serial.available()) {
SerialBT.write(Serial.read());
}
if (SerialBT.available()) {
Serial.write(SerialBT.read());
}
delay(20);
}
Cómo funciona el código
Este código establece una comunicación serie Bluetooth bidireccional entre dos dispositivos.
El código comienza con la integración del BluetoothDe serie Biblioteca.
#include "BluetoothSerial.h"
Las siguientes tres líneas comprueban si Bluetooth está activado correctamente.
#if !defined(CONFIG_BT_ENABLED) || !defined(CONFIG_BLUEDROID_ENABLED)
#error Bluetooth is not enabled! Please run `make menuconfig` to and enable it
#endif
Luego crea una instancia de BluetoothDe serie llamado SerieBT:
BluetoothSerial SerialBT;
configuración()
En el configuración() Inicialice una comunicación en serie con una velocidad de baudios de 115200.
Serial.begin(115200);
Inicialice el dispositivo serie Bluetooth y pase el nombre del dispositivo Bluetooth como argumento. Por defecto dice prueba ESP32 Sin embargo, puedes cambiarle el nombre y darle un nombre único.
SerialBT.begin("ESP32test"); //Bluetooth device name
Cinta()
En el Cinta()Envío y recepción de datos vía Bluetooth Serial.
En la primera declaración if comprobamos si se reciben bytes a través del puerto serie. Si es así, enviamos esta información al dispositivo conectado a través de Bluetooth.
if (Serial.available()) {
SerialBT.write(Serial.read());
}
SerieBT.write() envía datos a través de la conexión serie Bluetooth.
Serie.read() devuelve los datos recibidos a través del puerto serie.
La siguiente declaración if verifica si hay bytes disponibles para leer en el puerto serie de Bluetooth. En caso afirmativo, escribimos estos bytes en el monitor serie.
if (SerialBT.available()) {
Serial.write(SerialBT.read());
}
En la demostración será más fácil entender exactamente cómo funciona este boceto.
Probando el código
Sube el código anterior al ESP32. Asegúrese de haber seleccionado la placa y el puerto COM correctos.
Después de cargar el código, abra el monitor serie con una velocidad de baudios de 115200. Presione el botón Habilitar ESP32.
Después de unos segundos deberías recibir el siguiente mensaje: “El dispositivo se ha iniciado, ¡ahora puedes emparejarlo mediante Bluetooth!“.
Vaya a su teléfono inteligente y abra el botón «Terminal serie Bluetooth”aplicación. Asegúrese de tener Bluetooth habilitado en su teléfono inteligente.
Para conectarse al ESP32 por primera vez, deberá emparejar un nuevo dispositivo.
Ir a Dispositivos.
Haga clic en el icono de Configuración y seleccione Emparejar nuevo dispositivo. Debería recibir una lista de dispositivos Bluetooth disponibles, incluidos prueba ESP32. Combina con eso prueba ESP32.
Luego regrese al terminal serie Bluetooth. Haga clic en el icono de arriba para conectarse al ESP32. Deberías tener un «Conectado» Noticias.
Luego ingrese algo en la aplicación «Serial Bluetooth Terminal». Por ejemplo: «Hola“.
Debería recibir inmediatamente este mensaje en el Arduino IDE Serial Monitor.
También puede intercambiar datos entre su monitor serie y su teléfono inteligente. Escriba algo en la barra superior del monitor serie y presione «Enviar» botón.
Debería recibir este mensaje inmediatamente en la aplicación Serial Bluetooth Terminal.
Intercambio de datos vía Bluetooth Serial
Ahora que sabes cómo intercambiar datos a través de Bluetooth Serial, puedes modificar el boceto anterior para convertirlo en algo útil. Por ejemplo, controle las salidas del ESP32 cuando reciba un mensaje específico o envíe datos como valores de sensores a su teléfono inteligente.
El proyecto que estamos creando enviará lecturas de temperatura a su teléfono inteligente cada 10 segundos. Usamos el sensor de temperatura DS18B20.
A través de la aplicación de Android enviamos mensajes para controlar una salida ESP32. Si el ESP32 el llevado en Mensaje, encendamos el GPIO si tiene el Llevar afuera Mensaje, apagamos el GPIO.
Esquema
Antes de continuar con este proyecto, monte el circuito según el siguiente diagrama de circuito.
Conectar un LED GPIO25y conecte el pin de datos DS18B20 a GPIO32.
Recomendaciones de literatura: Referencia de distribución de pines de ESP32: ¿Qué pines GPIO debería utilizar?
código
Para poder trabajar con el sensor de temperatura DS18B20 es necesario Biblioteca One Wire de Paul Stoffregen y eso Biblioteca de temperatura de Dallas. Siga las siguientes instrucciones para instalar estas bibliotecas si aún no lo ha hecho.
Biblioteca de un cable
- Haga clic aquí para descargar la biblioteca One Wire. Deberías tener una carpeta .zip en tus descargas.
- Descomprime eso .Cremallera carpeta y deberías recibir Maestro OneWire Carpeta
- Cambie el nombre de su carpeta de
Maestro OneWireA Un cable - mueve eso Un cable Carpeta a su instalación Arduino IDE Bibliotecas Carpeta
- Finalmente, vuelva a abrir su IDE de Arduino
Biblioteca de temperatura de Dallas
- Haga clic aquí para descargar la biblioteca de temperaturas de Dallas. Deberías tener una carpeta .zip en tus descargas.
- Descomprime eso .Cremallera carpeta y deberías recibir Maestro de la biblioteca de control de temperatura Arduino Carpeta
- Cambie el nombre de su carpeta de
Maestro de la biblioteca de control de temperatura ArduinoA Dallastemperatura - mueve eso DallastemperaturaCarpeta a su instalación Arduino IDE Bibliotecas Carpeta
- Finalmente, vuelva a abrir su IDE de Arduino
Después de ensamblar el circuito e instalar las bibliotecas necesarias, copie el siguiente boceto en su IDE de Arduino.
/*********
Rui Santos
Complete project details at https://randomnerdtutorials.com
*********/
// Load libraries
#include "BluetoothSerial.h"
#include <OneWire.h>
#include <DallasTemperature.h>
// Check if Bluetooth configs are enabled
#if !defined(CONFIG_BT_ENABLED) || !defined(CONFIG_BLUEDROID_ENABLED)
#error Bluetooth is not enabled! Please run `make menuconfig` to and enable it
#endif
// Bluetooth Serial object
BluetoothSerial SerialBT;
// GPIO where LED is connected to
const int ledPin = 25;
// GPIO where the DS18B20 is connected to
const int oneWireBus = 32;
// Setup a oneWire instance to communicate with any OneWire devices
OneWire oneWire(oneWireBus);
// Pass our oneWire reference to Dallas Temperature sensor
DallasTemperature sensors(&oneWire);
// Handle received and sent messages
String message = "";
char incomingChar;
String temperatureString = "";
// Timer: auxiliar variables
unsigned long previousMillis = 0; // Stores last time temperature was published
const long interval = 10000; // interval at which to publish sensor readings
void setup() {
pinMode(ledPin, OUTPUT);
Serial.begin(115200);
// Bluetooth device name
SerialBT.begin("ESP32");
Serial.println("The device started, now you can pair it with bluetooth!");
}
void loop() {
unsigned long currentMillis = millis();
// Send temperature readings
if (currentMillis - previousMillis >= interval){
previousMillis = currentMillis;
sensors.requestTemperatures();
temperatureString = String(sensors.getTempCByIndex(0)) + "C " + String(sensors.getTempFByIndex(0)) + "F";
SerialBT.println(temperatureString);
}
// Read received messages (LED control command)
if (SerialBT.available()){
char incomingChar = SerialBT.read();
if (incomingChar != 'n'){
message += String(incomingChar);
}
else{
message = "";
}
Serial.write(incomingChar);
}
// Check received message and control output accordingly
if (message =="led_on"){
digitalWrite(ledPin, HIGH);
}
else if (message =="led_off"){
digitalWrite(ledPin, LOW);
}
delay(20);
}
Cómo funciona el código
Echemos un vistazo rápido al código y veamos cómo funciona.
Comience por incluir las bibliotecas necesarias. BluetoothDe serie Biblioteca para Bluetooth y el Un cable Y Dallastemperatura para el sensor de temperatura DS18B20.
#include "BluetoothSerial.h"
#include <OneWire.h>
#include <DallasTemperature.h>
Crear un… BluetoothDe serie Instancia llamada SerieBT.
BluetoothSerial SerialBT;
Crea una variable llamada bolígrafo LED para mantener presionado el GPIO que desea controlar. En este caso GPIO25 hay un LED conectado.
const int ledPin = 25;
Defina el pin del sensor DS18B20 y cree objetos para que funcione. El sensor de temperatura está conectado a GPIO32.
// GPIO where the DS18B20 is connected to
const int oneWireBus = 32;
// Setup a oneWire instance to communicate with any OneWire devices
OneWire oneWire(oneWireBus);
// Pass our oneWire reference to Dallas Temperature sensor
DallasTemperature sensors(&oneWire);
Crea una cadena vacía con el nombre. Noticias para guardar los mensajes recibidos.
String message = "";
Crea una variable de carácter llamada carácter entrante para guardar los caracteres que vienen a través de Bluetooth Serial.
char incomingChar;
El Cadena de temperatura La variable contiene los valores de temperatura a enviar vía Bluetooth.
String temperatureString = "";
Cree variables de temporizador adicionales para enviar lecturas cada 10 segundos.
unsigned long previousMillis = 0; // Stores last time temperature was published
const long interval = 10000; // interval at which to publish sensor readings
configuración()
En el configuración()Pon el bolígrafo LED como salida.
pinMode(ledPin, OUTPUT);
Inicialice el ESP32 como un dispositivo Bluetooth llamado «ESP32».
SerialBT.begin("ESP32"); //Bluetooth device name
Cinta()
En el Cinta()enviar los valores de temperatura, leer los mensajes recibidos y tomar las acciones oportunas.
El siguiente fragmento de código comprueba si han pasado 10 segundos desde la última medición. Cuando llega el momento de enviar una nueva medición, obtenemos la temperatura más reciente y la almacenamos en grados Celsius y Fahrenheit. Cadena de temperatura Variable.
unsigned long currentMillis = millis();
if (currentMillis - previousMillis >= interval) {
previousMillis = currentMillis;
sensors.requestTemperatures();
temperatureString = " " + String(sensors.getTempCByIndex(0)) + "C " + String(sensors.getTempFByIndex(0)) + "F";
Entonces envía el Cadena de temperatura a través de Bluetooth SerialBT.println().
SerialBT.println(temperatureString);
La siguiente declaración if lee los mensajes entrantes. Cuando recibe mensajes en serie, recibe un carácter a la vez. Sabrás que el mensaje ha terminado cuando NORTE.
Entonces verificamos si hay datos disponibles en el puerto serie de Bluetooth.
if (SerialBT.available()) {
En caso afirmativo, almacenamos los caracteres en el carácter entrante Variable.
char incomingChar = SerialBT.read();
Si eso carácter entrante es diferente que NORTEAgregaremos este carácter a nuestro mensaje.
if (incomingChar!= 'n'){
message += String(incomingChar);
}
Cuando terminamos de leer los caracteres, los borramos. Noticias Variable. De lo contrario, todos los mensajes recibidos se concatenarían.
message = "";
Después de eso tenemos dos declaraciones if para verificar el contenido del mensaje. si el mensaje llevado enel LED se enciende.
if (message =="led_on"){
digitalWrite(ledPin, HIGH);
}
si el mensaje Llevar afuerael LED se apaga.
else if (message =="led_off"){
digitalWrite(ledPin, LOW);
}
Probando el proyecto
Sube el boceto anterior a tu placa ESP32. Luego abra el monitor serie y presione el botón Habilitar ESP32. Cuando reciba el siguiente mensaje, podrá ir a su teléfono inteligente y conectarse al ESP32.
Entonces puedes escribir eso“led_encendido” (LED_encendido) Y “led_off” (apagado) Mensajes para controlar el LED.
La aplicación tiene varios botones donde puedes guardar mensajes estándar. Por ejemplo, puedes vincular M1 con el «llevado en«mensaje y M2 con el «Llevar afuera» Noticias.
Ahora puedes controlar los GPIO ESP32.
Al mismo tiempo, deberías recibir las lecturas de temperatura cada 10 segundos.
Envolver
En resumen, el ESP32 es compatible con BLE y Bluetooth Classic. Usar Bluetooth Classic es tan fácil como usar la comunicación serial y sus funciones.
Si quieres aprender a usar BLE con el ESP32, puedes leer nuestra guía:
- Comenzando con ESP32 Bluetooth Low Energy (BLE) en Arduino IDE
Esperamos que este tutorial te haya resultado útil. Puede encontrar más proyectos con ESP32 en nuestra colección de proyectos: más de 20 proyectos y tutoriales de ESP32.
Este tutorial es una vista previa del curso Aprenda ESP32 con Arduino IDE. Si le gusta este proyecto, asegúrese de consultar la página del curso ESP32 donde cubrimos este y muchos otros temas de ESP32.
ESP32 Bluetooth Classic con Arduino IDE – Primeros pasos
El ESP32 viene con Wi-Fi, Bluetooth de baja energía y Bluetooth Clásico. En este tutorial, aprenderás cómo utilizar el Bluetooth Clásico del ESP32 con Arduino IDE para intercambiar datos entre un ESP32 y un smartphone Android.
Bluetooth Clásico con ESP32
En este momento, usar Bluetooth Clásico es mucho más simple que Bluetooth de baja energía. Si ya has programado un Arduino con un módulo Bluetooth como el HC-06, esto es muy similar. Utiliza el protocolo serial estándar y sus funciones.
En este tutorial, comenzaremos utilizando un ejemplo que viene con el Arduino IDE. Luego, construiremos un proyecto simple para intercambiar datos entre el ESP32 y tu smartphone Android.
Partes Requeridas
Para seguir este tutorial, necesitas las siguientes partes:
- Placa ESP32 DOIT DEVKIT V1 (consulta las mejores placas de desarrollo ESP32)
- Smartphone Android con Bluetooth
- LED de 5 mm
- Resistor de 330 Ohm
- Sensor de temperatura DS18B20
- Resistor de 4.7k Ohm
- Cables de puente
- Protoboard
Puedes encontrar todas las partes para tus proyectos al mejor precio en MakerAdvisor.
Aplicación de Terminal Bluetooth
Para continuar con este tutorial, necesitas una aplicación de Terminal Bluetooth instalada en tu smartphone.
Recomendamos usar la aplicación Android «Serial Bluetooth Terminal» disponible en la Play Store.
Código
Puedes encontrar el código completo y detallado del proyecto en el enlace a continuación:
Esperamos que este tutorial sea útil para ti. Para más proyectos con el ESP32, puedes consultar nuestra recopilación de proyectos: 20+ Proyectos y Tutoriales de ESP32.
Este tutorial es un avance del curso «Aprende ESP32 con Arduino IDE». Si te ha gustado este proyecto, asegúrate de echar un vistazo a la página del curso del ESP32 donde cubrimos este y muchos más temas con el ESP32.
¡Interesante tutorial! Nunca había probado a conectar mi ESP32 por Bluetooth, ¡gracias por la info!
¡Muy útil y bien explicado! ¡Gracias por los consejos para empezar con el ESP32 y Bluetooth! 👍💡
¡Excelente artículo para los que estamos empezando con el ESP32 y Bluetooth! Me ha dado la motivación y los conocimientos necesarios para dar los primeros pasos. ¡Gracias por compartir! 🙌👏
Qué buen inicio para adentrarse en el mundo del ESP32 y Bluetooth con Arduino. Gracias por compartir los primeros pasos, ¡me animaré a probarlo! 🚀🔵
¡Gracias por compartir los primeros pasos con ESP32 y Bluetooth! Me ha dado la confianza y la información necesaria para probarlo por primera vez. ¡Excelente guía para principiantes! 👌🔵