Arduino - Bluetooth

En este tutorial, vamos a aprender:

Bluetooth de Arduino

El alcance de este tutorial:

Este tutorial trata sobre el uso de Bluetooth clásico (Bluetooth 2.0). Si está buscando Bluetooth Low Energy - BLE (Bluetooth 4.0), vea este tutorial similar: Arduino - Bluetooth Low Energy

Hardware Requerido

1×Arduino Uno R3
1×Cable USB 2.0 tipo A/B (para PC USB-A)
1×Cable USB 2.0 tipo C/B (para PC USB-C)
1×Módulo Bluetooth HC-05
1×Cables Puente
1×(Recomendado) Shield de Bloque de Terminales de Tornillo para Arduino Uno
1×(Recomendado) Shield de Protoboard para Arduino Uno
1×(Recomendado) Carcasa para Arduino Uno
1×(Recomendado) Placa Base de Prototipado y Kit de Protoboard para Arduino Uno

Or you can buy the following kits:

1×DIYables STEM V3 Starter Kit (Arduino included)
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 serial. Funciona como un convertidor de serie a Bluetooth. Hace:

  • Recibir datos desde el pin RX serial y transmitirlos al dispositivo emparejado (como un teléfono inteligente) vía Bluetooth
  • Recibir datos desde Bluetooth (del dispositivo emparejado) y enviar los datos al pin TX serial

Más específicamente, en el contexto de que Arduino se comunique con una aplicación para teléfonos inteligentes (Android/iOS):

  • Arduino se conecta al módulo Bluetooth HC-05 a través de pines Serial/SoftwareSerial
  • El módulo Bluetooth HC-05 está emparejado con una aplicación para smartphone
  • Arduino envía los datos a la aplicación para smartphone simplemente enviando datos a Serial/SoftwareSerial
  • Arduino recibe los datos de la aplicación para smartphone simplemente leyendo datos desde Serial/SoftwareSerial
  • No se necesita código Bluetooth específico en Arduino

Diagrama de pines

Diagrama de pines de Bluetooth

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

  • Pin de habilitación/clave: Este pin se usa para alternar entre el modo de datos (configurado en LOW) y el modo de comando (configurado en HIGH). Si no está conectado, por defecto está en modo de datos.
  • Pin VCC: Pin de alimentación; conecta este pin al +5V de la fuente de alimentación.
  • Pin GND: Pin de tierra; conecta este pin al GND de la fuente de alimentación.
  • Pin TX: Pin de datos en serie; conecta este pin al pin RX de Arduino. Los datos recibidos vía Bluetooth serán enviados a este pin como datos en serie.
  • Pin RX: Pin de datos en serie; conecta este pin al pin TX de Arduino. Los datos recibidos desde este pin serán enviados a Bluetooth.
  • Estado: El pin de estado está conectado al LED a bordo; puede usarse como retroalimentación para comprobar si Bluetooth funciona correctamente.

Sin embargo, para funciones básicas, solo necesitamos usar 4 pines del módulo Bluetooth HC-05 para conectarlo al Arduino.

El módulo Bluetooth HC-05 también cuenta con dos componentes integrados:

  • Un LED: indica el estado del módulo
    • Parpadea una vez cada 2 segundos: El módulo ha entrado en el Modo de Comandos
    • Parpadea repetidamente: Esperando conexión en el Modo de Datos
    • Parpadea dos veces por 1 segundo: Conexión exitosa en el Modo de Datos
  • Botón: puede usarse para controlar el pin Key/Enable para seleccionar el modo de operación (Modo de Datos o Modo de Comandos)

Cómo funciona

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

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

Afortunadamente, el módulo Bluetooth HC-05 puede funcionar con Arduino usando la configuración predeterminada sin necesidad de configurarlo.

Configuración predeterminada 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 que tiene una interfaz de usuario que se parece al Monitor Serial del IDE de Arduino. Se comunica con Arduino mediante Bluetooth. Puedes interactuar con Arduino mediante esta aplicación como si fuera el Monitor Serial de tu PC, sin añadir ningún código especial para el módulo Bluetooth en tu código de Arduino, siguiendo el siguiente paso:

  • Conecta Arduino 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

Y ahora puedes enviar y recibir datos desde Arduino, igual que el Monitor Serial del IDE de Arduino. No necesitas modificar el código existente de Arduino ni añadir código Bluetooth al nuevo código de Arduino.

Diagrama de Cableado

Diagrama de cableado de Bluetooth para Arduino

This image is created using Fritzing. Click to enlarge image

Tabla de cableado

Arduino Pins HC-05 Bluetooth Pins
RX (Pin 0) TX
TX (Pin 1) RX
5V VCC
GND GND
Enable/Key (NOT connected)
State (NOT connected)

※ Nota:

Puedes usar otros pines de Arduino cambiando el objeto Serial en el código de Arduino a otro Serial1, Serial2, ..., o SoftwareSerial si está disponible.

Cómo programar para Bluetooth

No se necesita código dedicado a Bluetooth. Solo necesitamos usar el código Serial.

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

Para enviar datos desde Arduino a la aplicación Bluetooth en un teléfono inteligente, necesitamos usar el siguiente código de Arduino:

En este ejemplo, enviaremos la “Arduino aquí, ¡mándame!” desde Arduino a la aplicación Bluetooth en el teléfono inteligente cada segundo

/* * Este código de Arduino fue desarrollado por es.newbiely.com * Este código de Arduino se proporciona al público sin ninguna restricción. * Para tutoriales completos y diagramas de cableado, visite: * https://es.newbiely.com/tutorials/arduino/arduino-bluetooth */ void setup() { Serial.begin(9600); } void loop() { Serial.println("Arduino here, command me!"); delay(1000); }

Pasos R\u00e1pidos

  • Instala la Bluetooth Serial Monitor App en tu teléfono inteligente
  • Conecta el módulo Bluetooth HC-05 al Arduino según el diagrama de cableado anterior
  • Copia el código anterior y ábrelo con Arduino IDE
  • Haz clic en el botón Subir en el IDE de Arduino para cargar el código en el Arduino. Es posible que no puedas cargar el código en el Arduino. Si es así, desconecta los pines TX y RX del módulo Bluetooth, carga el código y luego vuelve a conectar los pines RX/TX
  • Abre el Monitor Serial en el IDE de Arduino
  • Abre la aplicación Bluetooth Serial Monitor en tu teléfono inteligente
  • Selecciona el modo Bluetooth Clásico
Aplicación de Monitor Serie Bluetooth
  • Emparejalo con el módulo Bluetooth HC-05
Emparejamiento del Monitor Serial Bluetooth
  • Ver el resultado en la aplicación de Android.
Aplicación de monitor serial Bluetooth
  • Vea el resultado en el Monitor Serial del IDE de Arduino.
COM6
Send
Arduino here, command me! Arduino here, command me! Arduino here, command me! Arduino here, command me! Arduino here, command me!
Autoscroll Show timestamp
Clear output
9600 baud  
Newline  

Verás que los datos en el Monitor Serial del IDE de Arduino y en la aplicación de Android son idénticos.

Aplicación Bluetooth Envía Datos a Arduino

Lo que hace el código de abajo:

  • La aplicación Bluetooth envía datos al Arduino
  • El Arduino lee los datos y envía la respuesta de vuelta a Bluetooth:
/* * Este código de Arduino fue desarrollado por es.newbiely.com * Este código de Arduino se proporciona al público sin ninguna restricción. * Para tutoriales completos y diagramas de cableado, visite: * https://es.newbiely.com/tutorials/arduino/arduino-bluetooth */ // NOTE: change the Serial to other Serial/Software Serial if you connects Bluetooth module to other pins void setup() { Serial.begin(9600); } void loop() { Serial.println(F("Arduino here, command me!")); if (Serial.available()) { // if there is data comming String command = Serial.readStringUntil('\n'); // read string until meet newline character if (command == "LED OFF") { Serial.println("LED is turned OFF"); // reports action to smartphone app // TODO: control your LED here } else if (command == "LED ON") { Serial.println("LED is turned ON"); // reports action to smartphone app // TODO: control your LED here } } delay(500); }

Pasos R\u00e1pidos

  • Copia el código anterior y ábrelo con Arduino IDE
  • Haz clic en el botón Subir en Arduino IDE para subir el código a Arduino
  • Abre el Monitor Serial en Arduino IDE
  • Abre la aplicación de Android y empareja la aplicación de Android con el módulo Bluetooth HC-05 (similar al ejemplo anterior)
  • Después de conectar, escribe "LED ON" o "LED OFF" en la aplicación de Android y haz clic en el botón "Enviar"
Aplicación de monitor serie Bluetooth
  • Arduino recibe los datos y imprime la respuesta en el puerto serie. Estos datos se enviarán a la aplicación Bluetooth
  • Ver el resultado en la aplicación Android
Aplicación de Monitor Serie Bluetooth
  • Ver el resultado en el Monitor Serial del IDE de Arduino
COM6
Send
Arduino here, command me! Arduino here, command me! Arduino here, command me! Arduino here, command me! Arduino here, command me! Arduino here, command me! LED ON LED is turned ON Arduino here, command me! Arduino here, command me! Arduino here, command me! LED OFF LED is turned OFF Arduino here, command me! Arduino here, command me!
Autoscroll Show timestamp
Clear output
9600 baud  
Newline  

Verás que los datos en el Monitor Serial de Arduino IDE y en la aplicación de Android son idénticos.

Código de Arduino - Controlar el LED con la app para el teléfono inteligente vía Bluetooth

El siguiente código de ejemplo de Arduino acepta dos comandos (“ON” y “OFF”) desde la aplicación Bluetooth Serial Monitor para encender/apagar un LED incorporado.

/* * Este código de Arduino fue desarrollado por es.newbiely.com * Este código de Arduino se proporciona al público sin ninguna restricción. * Para tutoriales completos y diagramas de cableado, visite: * https://es.newbiely.com/tutorials/arduino/arduino-bluetooth */ // NOTE: change the Serial to other Serial/Software Serial if you connects Bluetooth module to other pins #define LED_PIN 8 void setup() { Serial.begin(9600); pinMode(LED_PIN, OUTPUT); // set the digital pin as output: } void loop() { if (Serial.available()) { // if there is data comming String command = Serial.readStringUntil('\n'); // read string until meet newline character if (command == "OFF") { digitalWrite(LED_PIN, LOW); // turn off LED Serial.println("LED is turned OFF"); // reports action to smartphone app } else if (command == "ON") { digitalWrite(LED_PIN, HIGH); // turn on LED Serial.println("LED is turned ON"); // reports action to smartphone app } } }

Puede ver las instrucciones con más detalle en el tutorial Arduino controla LED vía Bluetooth/BLE.

Código de Arduino - Controlar el motor servo con la app de teléfono inteligente mediante Bluetooth

El siguiente código de Arduino recibió el valor del ángulo desde la aplicación Bluetooth Serial Monitor para controlar el ángulo del servomotor.

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

Puedes ver las instrucciones con más detalle en Arduino controla el motor servo vía Bluetooth/BLE tutorial.

Si la aplicación Bluetooth Serial Monitor te resulta útil, por favor dale una calificación de 5 estrellas en Play Store. ¡Gracias!

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!