Manufactura industrial
Internet industrial de las cosas | Materiales industriales | Mantenimiento y reparación de equipos | Programación industrial |
home  MfgRobots >> Manufactura industrial >  >> Manufacturing Technology >> Proceso de manufactura

Domina Arduino Bluetooth: Tutorial módulo HC‑05 para control con Smartphone y PC

En este tutorial de Arduino Bluetooth aprenderemos a usar el módulo HC-05 para controlar Arduino vía comunicación Bluetooth. Puedes ver el siguiente vídeo o leer el tutorial escrito a continuación para más detalles.

Resumen

Para este tutorial hice dos ejemplos: controlar el Arduino usando un smartphone y controlar el Arduino usando un portátil o PC. Para no sobrecargar este tutorial, en mi próximo tutorial aprenderemos cómo podemos configurar el módulo Bluetooth HC-05 y hacer una comunicación Bluetooth entre dos placas Arduino separadas como dispositivos maestro y esclavo.

Domina Arduino Bluetooth: Tutorial módulo HC‑05 para control con Smartphone y PC

Antes de empezar con el primer ejemplo, controlando un Arduino usando un smartphone, echemos un vistazo más de cerca al módulo Bluetooth HC-05. Comparándolo con el módulo HC-06, que solo puede configurarse como Esclavo, el HC-05 puede configurarse como Maestro también, lo que permite hacer una comunicación entre dos placas Arduino separadas. Hay varias versiones diferentes de este módulo, pero recomiendo el que viene en una placa breakout porque así es mucho más fácil de conectar. El módulo HC-05 es un módulo Bluetooth SPP (Protocolo de Puerto Serial), lo que significa que se comunica con el Arduino vía Comunicación Serial.

Puedes conseguir los componentes necesarios para este tutorial de Arduino en cualquiera de los sitios a continuación:

  • Módulo Bluetooth HC-05 …………….
  • Placa Arduino ……………………………
  • Protoboard y cables jumper ………

Esquemáticos del Circuito


Aquí está cómo necesitamos conectar el módulo a la placa Arduino.

Domina Arduino Bluetooth: Tutorial módulo HC‑05 para control con Smartphone y PC

El módulo particular que tengo puede alimentarse de 3,6 a 6 voltios, porque viene en una placa breakout que contiene un regulador de voltaje. Sin embargo, el nivel de voltaje lógico de los pines de datos es 3,3V. Así que, la línea entre el pin TX del Arduino (Pin de Transmisión, que tiene salida de 5V) y el pin RX del módulo Bluetooth (Pin de Recepción, que solo soporta 3,3V) necesita conectarse a través de un divisor de voltaje para no quemar el módulo. Por otro lado, la línea entre el pin TX del módulo Bluetooth y el pin RX del Arduino puede conectarse directamente porque la señal de 3,3V del módulo Bluetooth es suficiente para ser aceptada como un nivel lógico alto en la placa Arduino.

Código Fuente Ejemplo Comunicación Bluetooth Arduino

Así que, ahora estamos listos para hacer el código de Arduino para habilitar la comunicación entre la placa Arduino y el smartphone. Haremos un ejemplo simple, solo encender y apagar un LED, pero será suficiente para entender la comunicación.

#define ledPin 7
int state = 0;
void setup() {
  pinMode(ledPin, OUTPUT);
  digitalWrite(ledPin, LOW);
  Serial.begin(38400); // Velocidad de comunicación por defecto del módulo Bluetooth
}
void loop() {
  if (Serial.available() > 0) {
    state = Serial.read();
  }
  if (state == '0') {
    digitalWrite(ledPin, LOW); // Apagar LED
    Serial.println("LED: OFF"); // Enviar de vuelta al teléfono la cadena "LED: OFF"
    state = 0;
  } else if (state == '1') {
    digitalWrite(ledPin, HIGH);
    Serial.println("LED: ON");
    state = 0;
  }
}Lenguaje: Arduino (arduino)

Descripción: Primero necesitamos definir el pin al que se conectará nuestro LED y una variable en la que almacenaremos los datos que vienen del smartphone. En la sección setup necesitamos definir el pin del LED como salida y ponerlo en bajo de inmediato. Como se mencionó anteriormente, usaremos la comunicación serial, así que necesitamos iniciar la comunicación serial a 38400 baudios, que es la velocidad en baudios por defecto del módulo Bluetooth. En la sección loop, con la función Serial.available() comprobaremos si hay datos disponibles en el puerto serial para ser leídos. Esto significa que cuando enviaremos datos al módulo Bluetooth, esta sentencia será verdadera, así que entonces, usando la función Serial.read(), leeremos esos datos y los pondremos en la variable "state". Así que si el Arduino recibe el carácter '0', apagará el LED y, usando la función Serial.println(), enviará de vuelta al smartphone, vía el puerto serial, la cadena "LED: OFF". Adicionalmente, reiniciaremos la variable "state" a 0 para que las dos líneas anteriores se ejecuten solo una vez. Ten en cuenta aquí que la variable "state" es entera, así que cuando recibimos el carácter '0' que viene del smartphone, el valor real de la variable entera "state" es 48, que corresponde al carácter '0', según la tabla ASCII. Por eso en la sentencia "if" estamos comparando la variable "state" con un carácter '0'. Por otro lado, si el carácter recibido es '1', el LED se encenderá y la cadena "LED: ON" se enviará de vuelta.

Ahora el código está listo para ser subido, pero para hacerlo necesitamos desconectar las líneas TX y RX porque al subir el código el Arduino usa la comunicación serial, así que los pines RX (pin digital 0) y TX (pin digital 1) están ocupados. Podemos evitar este paso si usamos los otros pines TX y RX de la placa Arduino, pero en ese caso tendremos que usar la librería SoftwareSerial.h para la comunicación serial.

Relacionado: Cómo Configurar y Emparejar Dos Módulos Bluetooth HC-05 como Maestro y Esclavo | Comandos AT

Conectando el Smartphone al Módulo Bluetooth HC-05 y al Arduino

Ahora estamos listos para conectar el smartphone al módulo Bluetooth y al Arduino. Lo que necesitamos hacer aquí es activar el Bluetooth y el smartphone encontrará el módulo Bluetooth HC-05.

Domina Arduino Bluetooth: Tutorial módulo HC‑05 para control con Smartphone y PC

Luego necesitamos emparejar los dispositivos y la contraseña por defecto del módulo HC-05 es 1234. Después de haber emparejado los dispositivos, necesitamos una aplicación para controlar el Arduino. Hay muchas aplicaciones en la Play Store para este propósito que funcionarán con el código de Arduino que escribimos. Sin embargo, hice mi propia aplicación personalizada para este tutorial usando la aplicación online MIT App Inventor. Esta es una aplicación genial y fácil de usar para construir aplicaciones Android y en mi próximo tutorial puedes encontrar una guía detallada paso a paso de cómo construir tu propia aplicación Android personalizada para tu Proyecto Arduino.

Domina Arduino Bluetooth: Tutorial módulo HC‑05 para control con Smartphone y PC

Puedes descargar la app que hice para este ejemplo aquí:

Domina Arduino Bluetooth: Tutorial módulo HC‑05 para control con Smartphone y PC

Arduino Bluetooth Tutorial Example Android App

1 archivo(s) 1.38 MB Descargar

Con el botón de conectar, conectaremos el smartphone al módulo Bluetooth y el texto de estado debajo del botón nos dirá si hemos conectado exitosamente. Usando los botones "Turn ON" y "Turn OFF" podemos encender y apagar el LED. El texto encima de los botones es el que el Arduino envía de vuelta al smartphone cuando se pulsa un botón en particular.

Controlando Arduino Usando un Portátil o PC vía Comunicación Bluetooth

Veamos cómo podemos controlar el Arduino vía Bluetooth usando un Portátil o una PC. Así que, primero necesitamos emparejar nuestro portátil con el módulo Bluetooth HC-05 y podemos hacer eso desde la Configuración de Bluetooth del Portátil. El portátil descubrirá el módulo HC-05 y usando la contraseña '1234' emparejaremos los dispositivos.

Domina Arduino Bluetooth: Tutorial módulo HC‑05 para control con Smartphone y PC

Una vez que hayamos emparejado los dispositivos, en el Administrador de Dispositivos del Portátil, bajo Puertos (COM y LPT), aparecerán dos nuevas entidades llamadas "Standard Serial over Bluetooth link". Desde aquí podemos ver el número de Puerto COM del puerto serial a través del cual los dispositivos se comunicarán.

Domina Arduino Bluetooth: Tutorial módulo HC‑05 para control con Smartphone y PC

Nos quedaremos con el mismo ejemplo que anteriormente, encender y apagar un LED y enviar de vuelta una cadena al portátil, así que usaremos el mismo código de Arduino que se describió anteriormente.

Código Fuente Processing IDE

Ahora, usando el IDE Processing, haremos un programa para controlar el Arduino. Aquí está el código fuente.

import processing.serial.*;
Serial myPort;
String ledStatus = "LED: OFF";
void setup() {
  size(450, 500);
  myPort = new Serial(this, "COM5", 38400); // Inicia la comunicación serial
  myPort.bufferUntil('\n'); // Define hasta qué carácter se leerán los datos del puerto serial. El carácter '\n' o 'Nueva Línea'
}
void serialEvent(Serial myPort) {
  // Comprueba si hay datos disponibles en el Puerto Serial
  ledStatus = myPort.readStringUntil('\n'); // Lee los datos enviados desde el Arduino (la cadena "LED: OFF/ON") y los pone en la variable "ledStatus"
}
void draw() {
  background(237, 240, 241);
  fill(20, 160, 133); // Color Verde
  stroke(33);
  strokeWeight(1);
  rect(50, 100, 150, 50, 10); // Botón Turn ON
  rect(250, 100, 150, 50, 10); // Botón Turn OFF
  fill(255);
  textSize(32);
  text("Turn ON", 60, 135);
  text("Turn OFF", 255, 135);
  textSize(24);
  fill(33);
  text("Status:", 180, 200);
  textSize(30);
  textSize(16);
  text("Program made by Dejan Nedelkovski,\n www.HowToMechatronics.com", 80, 320);
  text(ledStatus, 155, 240); // Imprime la cadena que viene del Arduino
  // Si se pulsa el botón "Turn ON"
  if (mousePressed && mouseX > 50 && mouseX < 200 && mouseY > 100 && mouseY < 150) {
    myPort.write('1'); // Envía el carácter '1' y eso encenderá el LED
    // Resalta el botón en color rojo cuando se pulsa
    stroke(255, 0, 0);
    strokeWeight(2);
    noFill();
    rect(50, 100, 150, 50, 10);
  }
  // Si se pulsa el botón "Turn OFF"
  if (mousePressed && mouseX > 250 && mouseX < 400 && mouseY > 100 && mouseY < 150) {
    myPort.write('0'); // Envía el carácter '0' y eso apagará el LED
    stroke(255, 0, 0);
    strokeWeight(2);
    noFill();
    rect(250, 100, 150, 50, 10);
  }
}Lenguaje: Arduino (arduino)

Descripción: Necesitamos incluir la librería Serial y crear un objeto serial para habilitar la comunicación serial, así como definir una variable String para el estado del LED. En la sección setup necesitamos establecer el tamaño de la ventana del programa e iniciar la comunicación serial. En cuanto al Número de Puerto COM, aquí necesitamos probar uno de los dos números de Puerto COM que notamos anteriormente en el administrador de dispositivos. La siguiente línea define el buffering del puerto serial y en nuestro caso es hasta que hay una nueva línea y, de hecho, hay una nueva línea cada vez que el Arduino envía la cadena "LED: OFF" o "LED ON" debido a la función println(). Luego, usando la función serialEvent() comprobamos si hay datos disponibles en el puerto serial para ser leídos. Si es así, usando la función readStringUntil() leeremos esos datos del puerto serial que han sido enviados desde el Arduino y en nuestro caso es la cadena "LED: OFF" o "LED: ON".

En la función principal draw(), que se repite constantemente, hacemos todos los gráficos y funciones del programa. Así que primero necesitamos establecer el color de fondo, el color de relleno, el tamaño y color del trazo y, usando la función rect(), dibujamos los dos botones. Usando la función text() imprimimos todo el texto, incluyendo la cadena ledStatus que viene del Arduino. Lo que queda ahora es hacer los botones funcionales. Así que usando la primera sentencia "if" delimitamos el área del botón "Turn ON", así que cuando se pulsa el botón, el carácter '1' se enviará por el puerto serial al Arduino y eso encenderá el LED. Las siguientes cuatro líneas se usan para resaltar el botón cuando se pulsa. El mismo procedimiento va para el botón "Turn OFF".

Domina Arduino Bluetooth: Tutorial módulo HC‑05 para control con Smartphone y PC

Ahora el programa está listo, así que cuando hagamos clic en el botón de ejecutar, el programa activará automáticamente la comunicación Bluetooth entre el portátil y el Arduino. El módulo Bluetooth HC-05 comenzará a parpadear cada dos segundos, lo que indica que el módulo está conectado y podremos controlar el LED usando nuestro Portátil.

Eso es todo para este tutorial, pero no olvides revisar mi próximo tutorial donde aprenderemos cómo podemos configurar el módulo Bluetooth HC-05 y hacer una comunicación Bluetooth entre dos placas Arduino separadas como dispositivos maestro y esclavo.

También, siéntete libre de hacer cualquier pregunta en la sección de comentarios a continuación y no olvides revisar mi colección de Proyectos Arduino.


Proceso de manufactura

  1. Crea un Cerrojo RFID Seguro con Arduino – Guía Paso a Paso
  2. Generador de Ondas JX – Oscilador DDS Compatible con Arduino con Pantalla OLED
  3. Módulo GPS u-blox LEA‑6H 02: Guía de integración con Arduino y Python
  4. Sistema Avanzado de Detección de Caídas con Arduino, Windows IoT y Azure Cloud
  5. Control remoto de coche con Arduino Uno y Bluetooth: Guía paso a paso
  6. Proyecto Sensor de Huella Dactilar con Arduino Nano – Tutorial Paso a Paso
  7. ArduRadio: Reloj Despertador con Radio FM Basado en Arduino
  8. Cafetera inteligente con Arduino, control por Bluetooth y monitorización de temperatura
  9. Construye un Portátil Raspberry Pi 3 y Arduino: Guía Paso a Paso
  10. Kit de proyecto Arduino Due: TFT, GPS, RTC, sensores, Bluetooth y joystick - Lista completa de componentes
  11. Termostato inteligente y control de iluminación con Bluetooth