Arduino - Bluetooth de bajo consumo (BLE)

En este tutorial, vamos a aprender:

Arduino BLE

El alcance de este tutorial:

Cabe señalar que este tutorial cubre específicamente Bluetooth Low Energy (BLE, Bluetooth 4.0). Si estás buscando información sobre Bluetooth Clásico (Bluetooth 2.0), consulta un tutorial similar Arduino - Bluetooth.

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 BLE HM-10
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 HM-10

El HM-10 es un módulo BLE serie que funciona como un convertidor de serie a Bluetooth de baja energía. Realiza las siguientes acciones:

  • Recibe datos desde el pin Serial RX y los transmite a un dispositivo emparejado, como un teléfono inteligente, mediante BLE
  • Recibe datos de BLE (del dispositivo emparejado) y los envía al pin Serial TX

Específicamente, cuando se utiliza un Arduino para comunicarse con una aplicación para teléfonos inteligentes (Android/iOS), ocurre lo siguiente:

  • El Arduino se conecta al módulo Bluetooth HM-10 a través de los pines Serial/SoftwareSerial
  • El módulo Bluetooth HM-10 está emparejado con una aplicación de teléfono inteligente
  • El Arduino envía datos a la aplicación de teléfono inteligente enviándolos al Serial/SoftwareSerial
  • El Arduino recibe datos de la aplicación de teléfono inteligente leyéndolos desde el Serial/SoftwareSerial
  • No se requiere código BLE adicional en el Arduino

Diagrama de pines

Disposición de pines de BLE

El módulo BLE HM-10 tiene 6 pines:

  • Pin BKR: para controlar el comportamiento del módulo. Ignora este pin si eres principiante.
  • Pin RX: pin de datos en serie, conecta este pin al pin TX del Arduino. Los datos recibidos desde este pin se enviarán a Bluetooth.
  • Pin TX: pin de datos en serie, conecta este pin al pin RX del Arduino. Los datos recibidos vía BLE serán enviados a este pin como datos en serie.
  • Pin GND: pin de alimentación, conecta este pin al GND de la fuente de alimentación.
  • Pin VCC: pin de alimentación, conecta este pin a 3.3V de la tensión de suministro.
  • Pin STATE: Indica los estados de funcionamiento:
    • Parpadea en modo de espera - pulso de 500 ms;
    • Encendido en estado de conexión - nivel alto.

    ※ Nota:

    • Solo necesitamos usar 4 pines: VCC, GND, RX, TX
    • Algunos fabricantes producen el HM-10 con solo cuatro pines.

Acerca de la aplicación Bluetooth Serial Monitor

La aplicación Bluetooth Serial Monitor es una aplicación móvil que imita la apariencia del Monitor Serial en el IDE de Arduino. Permite la comunicación con una placa Arduino a través de Bluetooth sin necesidad de código adicional en el sketch de Arduino. Para usarla, siga estos pasos:

  • Conecta el Arduino al módulo Bluetooth HM-10
  • Descarga e instala la Bluetooth Serial Monitor App en tu teléfono inteligente
  • Abre la aplicación y conéctala al módulo Bluetooth HM-10

Con estos pasos completos, ahora puedes enviar y recibir datos desde el Arduino como si estuvieras usando el Monitor Serial en el IDE de Arduino, sin necesidad de modificar tu código de Arduino existente ni añadir código específico para Bluetooth.

Diagrama de Cableado

Diagrama de cableado de Arduino BLE

This image is created using Fritzing. Click to enlarge image

La tabla de cableado

Arduino Pins HM-10 Bluetooth Pins
RX (Pin 0) TX
TX (Pin 1) RX
5V VCC
GND GND
BKR (NOT connected)
STATE (NOT connected)

※ Nota:

El código de Arduino puede usar otros pines reemplazando el objeto Serial por una alternativa como Serial1, Serial2 o SoftwareSerial (si está disponible).

Cómo programar para Bluetooth

No se necesita ningún código Bluetooth especializado; solo se necesita código serie.

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

Para transmitir datos desde una placa Arduino a una aplicación Bluetooth en un teléfono inteligente, se puede usar el siguiente código de Arduino. Este ejemplo demuestra enviar el mensaje “Arduino aquí, ¡dame órdenes!” desde el Arduino a la aplicación del teléfono 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-ble */ void setup() { Serial.begin(9600); } void loop() { Serial.println("Arduino here, command me!"); delay(1000); }

Pasos R\u00e1pidos

Para usar el código y conectar una placa Arduino a un teléfono inteligente mediante BLE, siga estos pasos:

  • Instala la Bluetooth Serial Monitor App en tu teléfono inteligente.
  • Conecta el módulo Bluetooth HM-10 a la placa Arduino de acuerdo con el diagrama de cableado proporcionado.
  • Abre el IDE de Arduino, copia el código proporcionado arriba y súbelo a la placa Arduino. 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 los pines RX/TX.
  • Abre el Monitor Serial en el IDE de Arduino.
  • En tu teléfono inteligente, abre la Bluetooth Serial Monitor App y selecciona el modo BLE.
Aplicación de monitor serie Bluetooth
  • Empareja el teléfono inteligente con el módulo Bluetooth HM-10.
Emparejamiento del Monitor Serial Bluetooth
  • Observe el resultado en la aplicación de Android.
Aplicación de Monitor Serie Bluetooth
  • Observe 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  

Si sigues los pasos y ejecutas el código, verás que los datos mostrados en el Monitor Serial del IDE de Arduino y en la aplicación de Android coincidirán.

Aplicación Bluetooth Enviar datos a Arduino

El código a continuación realiza las siguientes acciones:

  • Enviar datos desde la aplicación Bluetooth a la placa Arduino
  • La placa Arduino leerá los datos entrantes y luego enviará una respuesta de vuelta al dispositivo 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-ble */ // 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

A continuación se presentan los pasos para usar el código con Arduino y una aplicación de Android:

  • Abra el IDE de Arduino y pegue el código proporcionado arriba.
  • Haga clic en el botón Subir para subir el código a la placa Arduino.
  • Abra el Monitor Serial en el IDE de Arduino.
  • Abra la aplicación de Android y empareje con el módulo Bluetooth HM-10 siguiendo las instrucciones proporcionadas en un ejemplo anterior.
  • Una vez conectado, escriba "LED ON" o "LED OFF" en la aplicación de Android y pulse el botón "ENVIAR".
Aplicación de Monitor Serie Bluetooth
  • La placa Arduino recibirá los datos, imprimirá una respuesta en el puerto Serial. Estos datos se enviarán a la aplicación Bluetooth.
  • Verifique el resultado en la aplicación de Android.
Aplicación de monitor serie Bluetooth
  • Comprueba 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  

Cuando completes los pasos anteriores, notarás que la información mostrada en el Monitor Serial del IDE de Arduino y en la aplicación de Android será la misma.

Código de Arduino - Controlar un LED con una aplicación para smartphone mediante BLE

El siguiente código de ejemplo de Arduino utiliza comandos “ON” y “OFF” recibidos a través de 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-ble */ // 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 } } }

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

Código de Arduino - Controlar el servomotor con una aplicación para teléfono inteligente vía BLE

El siguiente código de Arduino recibe un valor de ángulo desde la aplicación Bluetooth Serial Monitor para controlar el ángulo de un 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-ble */ // 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); } } }

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

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!