ESP8266 - Bluetooth

Este tutorial te enseña cómo usar el ESP8266 para controlar el módulo Bluetooth HC-05. En detalle, aprenderemos:

Bluetooth ESP8266 NodeMCU

El propósito de este tutorial es:

Este tutorial se centra en Bluetooth Clásico (Bluetooth 2.0). Si estás buscando información sobre Bluetooth de baja energía - BLE (Bluetooth 4.0), consulta este tutorial similar: ESP8266 - Bluetooth Low Energy

Hardware Requerido

1×ESP8266 NodeMCU
1×Cable USB Tipo-A a Tipo-C (para PC USB-A)
1×Cable USB Tipo-C a Tipo-C (para PC USB-C)
1×Módulo Bluetooth HC-05
1×Cables Puente
1×(Recomendado) Placa de Expansión de Terminales de Tornillo para ESP8266
1×(Recomendado) Divisor de Alimentación para ESP8266 Tipo-C

Or you can buy the following kits:

1×DIYables Sensor Kit (30 sensors/displays)
1×DIYables Sensor Kit (18 sensors/displays)
Divulgación: Algunos de los enlaces proporcionados en esta sección son enlaces de afiliado de Amazon. Podemos recibir una comisión por las compras realizadas a través de estos enlaces sin costo adicional para usted. Apreciamos su apoyo.

Acerca del módulo Bluetooth HC-05

HC-05 es un módulo Bluetooth serie que funciona como un convertidor de serie a Bluetooth. Tiene la capacidad de:

  • Tomar datos desde el pin RX del puerto serie y transmitirlos al dispositivo emparejado (como un teléfono inteligente) vía Bluetooth
  • Recibir datos desde Bluetooth (del dispositivo emparejado) y transferirlos al pin TX del puerto serie.

Específicamente, cuando el ESP8266 se comunica con una aplicación para smartphone (Android/iOS):

  • Se conecta al módulo Bluetooth HC-05 a través de sus pines Serial/SoftwareSerial.
  • El módulo Bluetooth HC-05 está emparejado con la aplicación del teléfono inteligente.
  • Para enviar datos a la aplicación del teléfono inteligente, ESP8266 simplemente los envía al Serial/SoftwareSerial.
  • Para recibir datos de la aplicación del teléfono inteligente, ESP8266 los lee desde el Serial/SoftwareSerial.
  • No es necesario código especial de Bluetooth en el ESP8266.

Pinout del módulo Bluetooth HC-05

Pinout de Bluetooth

El módulo Bluetooth HC-05 tiene 6 pines:

  • Pin de habilitación/clave: Este pin se utiliza para cambiar entre el modo de datos (configurado en LOW) y el modo de comandos (configurado en HIGH). Si no está conectado, estará en modo de datos por defecto.
  • Pin VCC: pin de alimentación, debe estar conectado al +5V de la fuente de alimentación.
  • Pin GND: pin de alimentación, debe estar conectado a GND de la fuente de alimentación.
  • Pin TX: pin de datos en serie, debe estar conectado al pin RX del ESP8266. Los datos recibidos a través de Bluetooth serán enviados a este pin como datos en serie.
  • Pin RX: pin de datos en serie, debe estar conectado al pin TX del ESP8266. Los datos recibidos por este pin serán enviados al Bluetooth.
  • Estado: El pin de estado está conectado al LED a bordo; puede usarse como retroalimentación para comprobar si el Bluetooth está funcionando correctamente.

Sin embargo, para el funcionamiento básico, solo cuatro pines del módulo HC-05 Bluetooth son necesarios para conectarse al ESP8266.

El módulo Bluetooth HC-05 tiene dos componentes integrados:

  • Un LED que indica el estado del módulo:
    • Parpadea una vez cada dos segundos significa que el módulo ha entrado en el Modo de Comando
    • Parpadeo rápido indica que está esperando una conexión en el Modo de Datos
    • Parpadeo dos veces por segundo significa que la conexión en el Modo de Datos fue exitosa
  • Un botón que se puede usar para controlar el pin Key/Enable para seleccionar el modo de operación (Datos o Modo de Comando)

Cómo funciona

El módulo Bluetooth HC-05 tiene dos modos de operación:

  • Modo de datos que se utiliza para intercambiar datos con el dispositivo emparejado
  • Modo de comandos que se utiliza para configurar parámetros

Por suerte, el módulo Bluetooth HC-05 es capaz de operar con ESP8266 sin necesidad de ninguna configuración, utilizando la configuración predeterminada.

Ajustes predeterminados de HC-05

Default Bluetooth Name “HC-05”
Default Password 1234 or 0000
Default Communication Slave
Default Mode Data Mode
Default Data Mode Baud Rate 9600, 8, N, 1
Default Command Mode Baud Rate 38400, 8, N, 1

Acerca de la Aplicación Bluetooth Serial Monitor

La aplicación Bluetooth Serial Monitor es una aplicación móvil con una interfaz de usuario similar al Monitor Serial del IDE de Arduino. Se puede utilizar para comunicarse con ESP8266 vía Bluetooth sin requerir ningún código especial para el módulo Bluetooth en el código del ESP8266. Para ello, deben seguirse los siguientes pasos:

  • Conecta el ESP8266 al módulo Bluetooth HC-05
  • Instala la Bluetooth Serial Monitor App en tu teléfono inteligente
  • Abre la App y empareja con el módulo Bluetooth HC-05

Ahora, puedes transmitir y recibir datos desde el ESP8266 de la misma manera que lo harías con el Monitor Serial del IDE de Arduino. No necesitas hacer ningún cambio en tu código existente para ESP8266 ni añadir ningún código Bluetooth a tu nuevo código para ESP8266.

Diagrama de Cableado

Diagrama de cableado Bluetooth para ESP8266 NodeMCU

This image is created using Fritzing. Click to enlarge image

Para obtener m\u00e1s informaci\u00f3n, consulte Pines del ESP8266 y c\u00f3mo alimentar ESP8266 y otros componentes.

Tabla de cableado. Gráfico de cableado. Diagrama de cableado

ESP8266 Pins HC-05 Bluetooth Pins
Pin D7 TX
Pin D6 RX
5V VCC
GND GND
Enable/Key (NOT connected)
State (NOT connected)

※ Nota:

Puedes usar otros pines del ESP8266 modificando el objeto Serial en el código del ESP8266 para otro diferente, como Serial1, Serial2 o SoftwareSerial si está disponible.

Cómo programar para Bluetooth

No es necesaria ninguna programación específica para Bluetooth. Solo necesitamos utilizar el código Serial.

ESP8266 envía datos a la aplicación Bluetooth en el teléfono inteligente

Para transmitir datos desde un ESP8266 a una aplicación de Bluetooth en un teléfono inteligente, debe utilizarse el siguiente código en el Arduino:

En este caso, haremos que el ESP8266 transmita “ESP8266 aquí, dame órdenes!” a la aplicación Bluetooth en un teléfono inteligente en intervalos de un segundo.

/* * Este código de ESP8266 NodeMCU fue desarrollado por es.newbiely.com * Este código de ESP8266 NodeMCU se proporciona al público sin ninguna restricción. * Para tutoriales completos y diagramas de cableado, visite: * https://es.newbiely.com/tutorials/esp8266/esp8266-bluetooth */ #include <SoftwareSerial.h> #define SOFT_RX D7 // The ESP8266 pin connected to the TX of the bluetooth module #define SOFT_TX D6 // The ESP8266 pin connected to the RX of the bluetooth module SoftwareSerial bluetooth(SOFT_RX, SOFT_TX); void setup() { Serial.begin(9600); bluetooth.begin(9600); } void loop() { Serial.println("ESP8266 here, command me!"); bluetooth.println("ESP8266 here, command me!"); delay(1000); }

Pasos R\u00e1pidos

Para empezar con ESP8266 en el IDE de Arduino, siga estos pasos:

  • Consulta el tutorial cómo configurar el entorno para ESP8266 en Arduino IDE si es la primera vez que usas ESP8266.
  • Conecta los componentes como se muestra en el diagrama.
  • Conecta la placa ESP8266 a tu computadora usando un cable USB.
  • Abre Arduino IDE en tu computadora.
  • Elige la placa ESP8266 correcta, como por ejemplo NodeMCU 1.0 (ESP-12E Module), y su puerto COM correspondiente.
  • Instala la Bluetooth Serial Monitor App en tu teléfono inteligente. Conecta el módulo Bluetooth HC-05 al ESP8266 según el diagrama de cableado. Copia el código y ábrelo con Arduino IDE. Haz clic en el botón Upload en Arduino IDE para cargar el código en ESP8266. Si no puedes cargar el código, desconecta los pines TX y RX del módulo Bluetooth, carga el código y luego vuelve a conectar el pin RX/TX. Abre el Monitor Serial en Arduino IDE. Abre la aplicación Bluetooth Serial Monitor en tu teléfono inteligente y selecciona el modo Bluetooth clásico.
Aplicación de monitor de puerto serie Bluetooth
  • Conéctalo con el módulo Bluetooth HC-05.
Emparejamiento del Monitor Serie Bluetooth
  • Consulta el resultado en la aplicación de Android.
Aplicación de Monitor de Serie Bluetooth
  • Ver el resultado en el Monitor Serial del Entorno de Desarrollo Integrado ESP8266.
COM6
Send
ESP8266 here, command me! ESP8266 here, command me! ESP8266 here, command me! ESP8266 here, command me! ESP8266 here, command me!
Autoscroll Show timestamp
Clear output
9600 baud  
Newline  

Notarás que la información mostrada en el Monitor Serial del IDE de Arduino y en la aplicación de Android es la misma.

Aplicación Bluetooth envía datos a ESP8266

El siguiente código habilita:

  • Envío de datos desde una aplicación Bluetooth a un ESP8266
  • Lectura de los datos por el ESP8266, seguida del envío de una respuesta de vuelta a la aplicación Bluetooth
/* * Este código de ESP8266 NodeMCU fue desarrollado por es.newbiely.com * Este código de ESP8266 NodeMCU se proporciona al público sin ninguna restricción. * Para tutoriales completos y diagramas de cableado, visite: * https://es.newbiely.com/tutorials/esp8266/esp8266-bluetooth */ #include <SoftwareSerial.h> #define SOFT_RX D7 // The ESP8266 pin connected to the TX of the bluetooth module #define SOFT_TX D6 // The ESP8266 pin connected to the RX of the bluetooth module SoftwareSerial bluetooth(SOFT_RX, SOFT_TX); void setup() { Serial.begin(9600); bluetooth.begin(9600); } void loop() { bluetooth.println(F("ESP8266 here, command me!")); if (bluetooth.available()) { // if there is data comming String command = bluetooth.readStringUntil('\n'); // read string until meet newline character if (command == "LED OFF") { bluetooth.println("LED is turned OFF"); // reports action to smartphone app // TODO: control your LED here } else if (command == "LED ON") { bluetooth.println("LED is turned ON"); // reports action to smartphone app // TODO: control your LED here } } delay(500); }

Pasos R\u00e1pidos

  • Conecte los componentes como se muestra en el diagrama.
  • Conecte la placa ESP8266 a su computadora usando un cable USB.
  • Abra el IDE de Arduino en su computadora.
  • Elija la placa ESP8266 correcta, como (p. ej. NodeMCU 1.0 (Módulo ESP-12E)), y su puerto COM respectivo.
  • Copie el código y ábralo con el IDE de Arduino.
  • Haga clic en el botón Upload en el IDE de Arduino para compilar y cargar el código al ESP8266.
  • Abra el Monitor Serial en el IDE de Arduino.
  • Conecte la aplicación Android al módulo Bluetooth HC-05, como se hizo en el ejemplo anterior.
  • Una vez conectado, escriba ya sea "LED ON" o "LED OFF" en la aplicación Android y presione el botón "SEND".
Aplicación de monitor serial Bluetooth
  • El ESP8266 recibe los datos y imprime la respuesta en el puerto serie. Estos datos se envían luego a la aplicación Bluetooth, y el resultado se puede ver en la aplicación de Android.
Aplicación de monitor de serie Bluetooth
  • Revisa el resultado en la ventana del Monitor Serial del Entorno de Desarrollo Integrado ESP8266.
COM6
Send
ESP8266 here, command me! ESP8266 here, command me! ESP8266 here, command me! ESP8266 here, command me! ESP8266 here, command me! ESP8266 here, command me! LED ON LED is turned ON ESP8266 here, command me! ESP8266 here, command me! ESP8266 here, command me! LED OFF LED is turned OFF ESP8266 here, command me! ESP8266 here, command me!
Autoscroll Show timestamp
Clear output
9600 baud  
Newline  

Notará que la información mostrada en el Monitor Serial del IDE de Arduino y en la aplicación de Android es la misma.

Código ESP8266 - Controla el LED con la app del teléfono inteligente vía Bluetooth

Este código de ejemplo para ESP8266 responderá a dos comandos: “ON” y “OFF”. Cuando se reciban, estos comandos se utilizarán para encender o apagar un LED incorporado a través de la aplicación Bluetooth Serial Monitor.

/* * Este código de ESP8266 NodeMCU fue desarrollado por es.newbiely.com * Este código de ESP8266 NodeMCU se proporciona al público sin ninguna restricción. * Para tutoriales completos y diagramas de cableado, visite: * https://es.newbiely.com/tutorials/esp8266/esp8266-bluetooth */ #include <SoftwareSerial.h> #define SOFT_RX D7 // The ESP8266 pin connected to the TX of the bluetooth module #define SOFT_TX D6 // The ESP8266 pin connected to the RX of the bluetooth module #define LED_PIN 8 SoftwareSerial bluetooth(SOFT_RX, SOFT_TX); void setup() { Serial.begin(9600); bluetooth.begin(9600); pinMode(LED_PIN, OUTPUT); // Configure the ESP8266 pin as a digital output pin } void loop() { if (bluetooth.available()) { // if there is data comming String command = bluetooth.readStringUntil('\n'); // read string until meet newline character if (command == "LED OFF") { digitalWrite(LED_PIN, LOW); // turn off LED bluetooth.println("LED is turned OFF"); // reports action to smartphone app } else if (command == "LED ON") { digitalWrite(LED_PIN, HIGH); // turn on LED bluetooth.println("LED is turned ON"); // reports action to smartphone app } } }

Puede encontrar una explicación más detallada de las instrucciones en el tutorial ESP8266 controla LED vía Bluetooth/BLE.

Código ESP8266 - Control del servomotor con la app del teléfono inteligente mediante Bluetooth

El código ESP8266 que se muestra a continuación recibe el valor del ángulo desde la aplicación Bluetooth Serial Monitor para controlar el ángulo del servomotor.

/* * Este código de ESP8266 NodeMCU fue desarrollado por es.newbiely.com * Este código de ESP8266 NodeMCU se proporciona al público sin ninguna restricción. * Para tutoriales completos y diagramas de cableado, visite: * https://es.newbiely.com/tutorials/esp8266/esp8266-bluetooth */ #include <SoftwareSerial.h> #include <Servo.h> #define SOFT_RX D7 // The ESP8266 pin connected to the TX of the bluetooth module #define SOFT_TX D6 // The ESP8266 pin connected to the RX of the bluetooth module SoftwareSerial bluetooth(SOFT_RX, SOFT_TX); Servo servo; // create servo object to control a servo int pos = 0; // variable to store the servo position void setup() { Serial.begin(9600); bluetooth.begin(9600); servo.attach(11); // attaches the servo on pin 11 to the servo object } void loop() { if (bluetooth.available()) { // if there is data comming int angle = bluetooth.parseInt(); if (angle >= 0 && angle <= 180) { servo.write(angle); // rotate servo bluetooth.print("Rotated servo to angle: ");// reports action to smartphone app bluetooth.println(angle); } else { bluetooth.print("Invalid angle: ");// reports invalid value to smartphone app bluetooth.println(angle); } } }

Puedes ver las instrucciones con más detalle en el tutorial ESP8266 controls Servo Motor via Bluetooth/BLE. Para una mirada más exhaustiva de las instrucciones, consulta el tutorial ESP8266 controls Servo Motor via Bluetooth/BLE. Si necesitas ver las instrucciones con mayor profundidad, consulta el tutorial ESP8266 controls Servo Motor via Bluetooth/BLE. Para obtener una visión más amplia de las instrucciones, ve al tutorial ESP8266 controls Servo Motor via Bluetooth/BLE.

Si encuentra útil la aplicación Bluetooth Serial Monitor, por favor dé una calificación de 5 estrellas en Play Store. ¡Agradezco su apoyo!

Video Tutorial

Estamos considerando crear tutoriales en video. Si considera que los tutoriales en video son importantes, suscríbase a nuestro canal de YouTube para motivarnos a crear los videos.

Referencias de funciones

※ NUESTROS MENSAJES

  • No dude en compartir el enlace de este tutorial. Sin embargo, por favor no use nuestro contenido en otros sitios web. Hemos invertido mucho esfuerzo y tiempo en crear el contenido, ¡por favor respete nuestro trabajo!