ESP32 Bluetooth Classic con Arduino IDE – Primeros pasos

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.

ESP32 Bluetooth Classic con Arduino IDE – Primeros pasos

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.

ESP32 Bluetooth Classic con Arduino IDE – Primeros pasos

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:

Puedes utilizar los enlaces anteriores o ir directamente MakerAdvisor.com/tools ¡Para encontrar todas las piezas para tus proyectos al mejor precio!

ESP32 Bluetooth Classic con Arduino IDE – Primeros pasos

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.

ESP32 Bluetooth Classic con Arduino IDE – Primeros pasos

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);
}

Ver código sin formato

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!“.

ESP32 Bluetooth Classic con Arduino IDE – Primeros pasos

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.

ESP32 Bluetooth Classic con Arduino IDE – Primeros pasos

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.

ESP32 Bluetooth Classic con Arduino IDE – Primeros pasos

Luego regrese al terminal serie Bluetooth. Haga clic en el icono de arriba para conectarse al ESP32. Deberías tener un «Conectado» Noticias.

ESP32 Bluetooth Classic con Arduino IDE – Primeros pasos

Luego ingrese algo en la aplicación «Serial Bluetooth Terminal». Por ejemplo: «Hola“.

ESP32 Bluetooth Classic con Arduino IDE – Primeros pasos

Debería recibir inmediatamente este mensaje en el Arduino IDE Serial Monitor.

ESP32 Bluetooth Classic con Arduino IDE – Primeros pasos

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.

ESP32 Bluetooth Classic con Arduino IDE – Primeros pasos

Debería recibir este mensaje inmediatamente en la aplicación Serial Bluetooth Terminal.

ESP32 Bluetooth Classic con Arduino IDE – Primeros pasos

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.

ESP32 Bluetooth Classic con Arduino IDE – Primeros pasos

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.

ESP32 Bluetooth Classic con Arduino IDE – Primeros pasos

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

  1. Haga clic aquí para descargar la biblioteca One Wire. Deberías tener una carpeta .zip en tus descargas.
  2. Descomprime eso .Cremallera carpeta y deberías recibir Maestro OneWire Carpeta
  3. Cambie el nombre de su carpeta de Maestro OneWire A Un cable
  4. mueve eso Un cable Carpeta a su instalación Arduino IDE Bibliotecas Carpeta
  5. Finalmente, vuelva a abrir su IDE de Arduino

Biblioteca de temperatura de Dallas

  1. Haga clic aquí para descargar la biblioteca de temperaturas de Dallas. Deberías tener una carpeta .zip en tus descargas.
  2. Descomprime eso .Cremallera carpeta y deberías recibir Maestro de la biblioteca de control de temperatura Arduino Carpeta
  3. Cambie el nombre de su carpeta de Maestro de la biblioteca de control de temperatura Arduino A Dallastemperatura
  4. mueve eso DallastemperaturaCarpeta a su instalación Arduino IDE Bibliotecas Carpeta
  5. 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);
}

Ver código sin formato

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.

ESP32 Bluetooth Classic con Arduino IDE – Primeros pasos

Entonces puedes escribir eso“led_encendido” (LED_encendido) Y “led_off” (apagado) Mensajes para controlar el LED.

ESP32 Bluetooth Classic con Arduino IDE – Primeros pasos

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.

ESP32 Bluetooth Classic con Arduino IDE – Primeros pasos

Ahora puedes controlar los GPIO ESP32.

Al mismo tiempo, deberías recibir las lecturas de temperatura cada 10 segundos.

ESP32 Bluetooth Classic con Arduino IDE – Primeros pasos

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.

Error 403 The request cannot be completed because you have exceeded your quota. : quotaExceeded

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:

  1. Placa ESP32 DOIT DEVKIT V1 (consulta las mejores placas de desarrollo ESP32)
  2. Smartphone Android con Bluetooth
  3. LED de 5 mm
  4. Resistor de 330 Ohm
  5. Sensor de temperatura DS18B20
  6. Resistor de 4.7k Ohm
  7. Cables de puente
  8. 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:

Código en GitHub

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.

5 comentarios en «ESP32 Bluetooth Classic con Arduino IDE – Primeros pasos»

Deja un comentario