Bluetooth está en todas partes hoy en día. Es una palabra que escuchamos todo el tiempo y se encuentra en millones de productos que usamos todos los días, incluidos auriculares, teléfonos celulares, computadoras portátiles, controladores de juegos, rastreadores de actividad, etc.

En nuestro mundo de electrónica integrada, Bluetooth sirve como una excelente manera de transmitir pequeñas cantidades de datos de forma inalámbrica en distancias cortas (menos de 100 metros). Se puede utilizar para el registro de datos en tiempo real o para controlar un proyecto mediante un teléfono inteligente. 

 En este tutorial, te ayudaremos a empezar con el HC-05. Pero no queremos abrumarte con demasiada información a la vez, así que lo dividiremos en tres tutoriales fáciles de seguir. Este primer tutorial le mostrará cómo enviar y recibir datos entre el HC-05 y su teléfono inteligente. En el siguiente tutorial, le enseñaremos cómo configurar el HC-05 usando comandos AT. Y en el tutorial final, aprenderás a hacer que dos placas Arduino se comuniquen de forma inalámbrica utilizando los módulos Bluetooth HC-05. 

Al final de estos tutoriales, tendrá una buena comprensión del uso del módulo Bluetooth HC-05 en sus proyectos. Así que, ¡comencemos! 

 
Descripción general del hardware HC-05 

El HC-05 es un módulo de Bluetooth a puente de serie que permite comunicaciones inalámbricas entre dos microcontroladores o entre un microcontrolador y un teléfono inteligente, computadora portátil o PC de escritorio con capacidad Bluetooth. ¡Es perfecto para reemplazar directamente una interfaz serial asíncrona cableada! 

 Cada uno de estos módulos contiene un transceptor Bluetooth, lo que significa que son capaces de enviar y recibir datos.

Como dispositivo Bluetooth de clase 2, el HC-05 tiene un alcance nominal de 10 m. Por supuesto, eso está a la vista. Su alcance se vuelve un poco más débil dentro de la casa, especialmente debido a las paredes. 

Por si fuera poco, estos módulos son muy fáciles de usar. No hay necesidad de meterse con los protocolos Bluetooth o la pila. Simplemente envíe datos a través de una interfaz serie y se canalizará a cualquier dispositivo Bluetooth al que esté conectado. 

  Modos de operación 

El control del módulo HC-05 y el envío de datos a través de él son dos operaciones diferentes, pero ambas se realizan a través de la interfaz serie. Para distinguir entre estos dos tipos de datos, el HC-05 emplea dos modos de comunicación distintos: el modo AT y el modo de datos. 

En el modo AT, puede configurar varios ajustes del módulo HC-05, como su nombre, velocidad en baudios, código PIN y velocidad de datos. 

En el modo de datos, el módulo HC-05 actúa como una puerta de enlace de datos transparente. Cuando el HC-05 recibe datos, elimina los encabezados y finalizadores Bluetooth y los envía al puerto UART. Cuando los datos se escriben en el puerto UART, el HC-05 construye un paquete Bluetooth y lo envía a través de la conexión inalámbrica Bluetooth. 

 Roles de conexión 

El módulo Bluetooth HC-05 puede funcionar en dos funciones principales: Maestro y Esclavo. 

En la función de esclavo, el módulo HC-05 espera a que otros dispositivos inicien una conexión. Esta es la función predeterminada del módulo y se usa comúnmente en proyectos en los que desea controlar cosas usando un teléfono inteligente. 

En la función maestra, el HC-05 busca activamente otros dispositivos Bluetooth e intenta iniciar una conexión. Este modo se utiliza en proyectos en los que dos microcontroladores necesitan comunicarse de forma inalámbrica. 

 Para cambiar entre roles, debe configurar el módulo HC-05 poniéndolo en modo AT y enviando comandos AT a través del puerto UART. 

Poder 

El voltaje máximo de funcionamiento del chip HC-05 desnudo es de 3,3 V. Por lo tanto, el módulo incluye un regulador lineal de 3,3 V, que permite utilizar un voltaje de 3,6 V a 6 V para suministrar energía al módulo. 

 

 Es importante tener en cuenta que el módulo HC-05 tiene un nivel lógico de 3.3V, por lo que no podemos conectar el pin Rx del módulo HC-05 directamente a un pin digital en un microcontrolador de 5V como un Arduino UNO. En otras palabras, el pin Rx del módulo HC-05 no es tolerante a 5V. Por lo tanto, antes de conectarse al módulo HC-05, la señal Tx del microcontrolador debe reducirse a 3,3 V. 

El consumo de corriente del módulo HC-05 depende del estado en el que se encuentre. Esta tabla de la hoja de datos proporciona algunas buenas estimaciones: 

Modo                                                                                                      Consumo de corriente 
Conectado con transferencia de datos                                                                          45 mA 
Inactivo conectado                                                                                                         8 mA 

 

 Status LED 

Muchos módulos HC-05 vienen con un LED integrado. 

Parpadea a varias velocidades para indicar el estado: 

  1. Cuando se enciende, el módulo entra en modo de emparejamiento Bluetooth, y el LED parpadea rápidamente a unos 2 Hz. 
  1. Cuando el módulo se empareja con un dispositivo, el patrón de destello LED cambia a dos destellos rápidos, seguidos de una pausa y luego se repite. 
  1. Cuando el módulo se pone en modo AT, el LED parpadea a un ritmo lento y constante. 

 

 Modo AT 

El modo AT es el modo de configuración en el que puede enviar comandos de estilo AT de Hayes al módulo HC-05 para cambiar su configuración como el nombre, la velocidad de transmisión, la contraseña, etc. 

Normalmente, el módulo HC-05 está en modo de datos. Para ponerlo en modo AT, debe mantener presionado el botón integrado mientras enciende el módulo. El LED comenzará a parpadear a un ritmo lento y constante, lo que indica que el módulo está en modo AT. 


 Una vez en modo AT, puede enviar comandos AT al módulo a través del puerto UART. El módulo responderá a los comandos, ya sea reconociendo el comando, proporcionando los datos solicitados o señalando un error. Los comandos generalmente comienzan con “AT+” seguido del comando específico, por ejemplo, ¿“AT+NAME?” consulta el nombre del módulo o “AT+NAME=MyHC05″cambia el nombre a”MyHC05”.
 

Los comandos AT deben enviarse a la velocidad en baudios especificada para el modo AT, que a menudo es diferente de la velocidad en baudios utilizada para la transmisión de datos. La velocidad de transmisión predeterminada para el modo AT es de 38400 bps, pero se puede cambiar si es necesario.  

 HC-05 Pinout 

El módulo HC-05 rompe seis pines. Echemos un vistazo a la distribución de pines. 


STATEEste pin se puede utilizar para determinar el estado actual del módulo HC-05. El pin de estado es BAJO cuando el módulo no está emparejado y ALTO cuando lo está. 

RXDEste pin recibe datos en serie del microcontrolador. Debe estar conectado a la TX del microcontrolador. Tenga en cuenta que este pin no es tolerante a 5V. Por lo tanto, antes de conectar el módulo a un microcontrolador de 5 V, la señal de transmisión del microcontrolador debe reducirse a 3,3 V. 

TXDEl PIN envía datos en serie al microcontrolador. Debe estar conectado al RX del microcontrolador.  

GNDes el pin de tierra, común a cualquier otro dispositivo conectado al módulo.  

VCCes donde se conecta el voltaje de alimentación positivo. Esta señal de suministro de voltaje se enruta al chip HC-05 a través de un regulador de 3,3 V. Debe oscilar entre 3,6 V y 6 V. 

EN está conectado al pin de habilitación del regulador integrado y es elevado por una resistencia de 220K. Al tirar de este pasador hacia abajo, se desactiva el regulador, que en consecuencia apaga el HC-05. 

Control del módulo HC-05 

Una interfaz serie es todo lo que se requiere para controlar el módulo Bluetooth HC-05 y enviar datos a través de él. Actúa, esencialmente, como una canalización de datos: los datos en serie que entran en el módulo (desde el pin RXD) se pasan a través de la conexión Bluetooth. Los datos que entran desde el lado de Bluetooth se pasan por el lado serie (por el pin TXD). 

Para configurar esta canalización de datos, seguimos un proceso de dos pasos: 

  1. Conecte el módulo HC-05 a un dispositivo capaz de enviar y recibir datos en serie, como un Arduino o cualquier microcontrolador con UART. 
  1. En el lado de Bluetooth, establecemos una conexión inalámbrica entre el módulo HC-05 y otro dispositivo habilitado para Bluetooth, como un teléfono Android. Esta conexión implica un proceso de emparejamiento similar a la conexión de cualquier otro dispositivo Bluetooth. También necesitará un programa de terminal instalado en su teléfono que pueda comunicarse a través de Bluetooth. Para ello, recomendamos utilizar el “Terminal Bluetooth serie”, que está disponible en Play Store. Sin embargo, también hay muchas otras opciones gratuitas que puedes explorar. 

 

En resumen, solo necesitamos configurar la interfaz serie entre el HC-05 y nuestro microcontrolador y luego emparejar el HC-05 con el otro dispositivo Bluetooth, ¡y listo! 

 Cableado de un módulo HC-05 a un Arduino 

Conectar el módulo HC-05 a un Arduino es tan fácil como aplicar energía y cablear los pines serie RX y TX. 

En lugar de conectar el módulo HC-05 al UART de hardware del Arduino, usaremos SoftwareSerial y conectaremos los pines RX y TX del HC-05 a cualquiera de los pines digitales libres del Arduino. Esto ayudará a evitar la contención del bus y garantizará que el HC-05 no reciba ningún dato no deseado durante la carga de un boceto. 

Por lo tanto, el TXD del módulo HC-05 está conectado al D3 de Arduino, el RXD a D2, el GND a GND y el VCC a 5V. Los pines TXD y RXD se pueden conectar a cualquier pin digital (excepto 0 y 1). Por lo tanto, si los pines 2 y 3 son necesarios para otros fines, no dude en cambiarlos. 

Sin embargo, si recuerda, el pin Rx del módulo HC-05 no es tolerante a 5V. Por lo tanto, no puede conectar el pin Rx del HC-05 directamente al pin digital del Arduino (MCU de 5 V). La señal Tx del Arduino debe reducirse a 3,3 V. Hay numerosas formas de lograr esto, pero la más simple es usar un divisor de resistencias. Una resistencia de 1K entre el Rx de HC-05 y el D2 de Arduino, y una resistencia de 2K entre el Rx y el GND de HC-05, funcionarán bien. 

En resumen, las siguientes son las conexiones que haremos para el código de ejemplo más adelante en este tutorial 

 

 

 La siguiente imagen muestra cómo conectar el módulo HC-05 al Arduino Uno 

 

 Esquema de pasos a través de Bluetooth Serial 

Con un poco de ingenio, podemos usar el Arduino como medio entre nosotros y el módulo HC-05. A continuación se muestra un boceto simple que transmite datos entre el monitor serie Arduino y el módulo HC-05.  

#include <SoftwareSerial.h> 

//Crear un objeto serie de software para comunicarse con HC-05 

SoftwareSerial mySerial(3, 2);//HC-05 Tx & Rx está conectado a Arduino #3 & #2 

void setup() 

{ 

//Iniciar la comunicación en serie con Arduino y Arduino IDE (Serial Monitor) 

  Serial.begin(9600); 

  //Iniciar la comunicación en serie con Arduino y HC-05 

  mySerial.begin(9600); 

  Serial.println("Initializing..."); 

  Serial.println("The device started, now you can pair it with bluetooth!"); 

} 

void loop() 

{ 

  if(Serial.available())  

  { 

    mySerial.write(Serial.read());//Reenviar lo que Serial recibió al puerto serie del software 

  } 

  if(mySerial.available())  

  { 

    Serial.write(mySerial.read());//Reenviar lo que el número de serie de software recibió a Serial Port 

  } 

  delay(20); 

} 

 

 

Una vez que haya cargado el boceto, abra el monitor serie a una velocidad de transmisión de 9600. Debería ver un mensaje que dice: “El dispositivo se inició, ¡ahora puede emparejarlo con bluetooth!”. 

 

  

Conexión al teléfono Android 

Configuremos una conexión inalámbrica entre el módulo HC-05 y un teléfono Android. El proceso puede variar según el dispositivo, pero los pasos generales son bastante similares. 

  1. Asegúrese de que el módulo HC-05 esté encendido y listo para establecer una conexión. El LED integrado debe parpadear rápidamente a unos 2 Hz, lo que indica que se puede detectar.
  2. Ahora, desliza el dedo hacia abajo desde la parte superior de la pantalla de tu teléfono Android y asegúrate de que Bluetooth esté activado.


  1. Mantenga presionado el ícono de Bluetooth, luego toque “Emparejar nuevo dispositivo” y espere unos segundos. 

  1. Toque el nombre del dispositivo Bluetooth que desea emparejar con su dispositivo (en nuestro caso, HC-05). Siga las instrucciones que aparecen en pantalla.


  1. Cuando se le solicite, ingrese 1234 como código PIN. Este es el PIN predeterminado para cada módulo HC-05.


 

  1. Para los siguientes pasos de este tutorial, necesita una aplicación Bluetooth Terminal instalada en su teléfono inteligente. Recomendamos usar la aplicación de Android “Serial Bluetooth Terminal”, disponible en Play Store.

  1. Después de la instalación, inicie la aplicación “Serial Bluetooth Terminal”. Haga clic en el icono en la esquina superior izquierda y elija “Dispositivos”.

  1. Deberías ver una lista de los dispositivos con los que te has emparejado anteriormente. Seleccione “HC-05” de esta lista. 

  1. Debería recibir un mensaje de “Conectado”. El patrón de destello en el LED integrado de su HC-05 ahora debería cambiar a dos destellos rápidos seguidos de una pausa. ¡Eso es todo! Su teléfono inteligente ahora está emparejado correctamente con el módulo Bluetooth HC-05 y listo para comunicarse.


  1. Ahora, escriba algo en el cuadro de entrada ubicado en la parte inferior de la aplicación, por ejemplo, “¡Hola!”


 

  1. Debería recibir instantáneamente ese mensaje en el monitor serie Arduino IDE.


  1. También puede intercambiar datos entre su monitor serie y su teléfono inteligente. Escriba algo en el cuadro de entrada superior del monitor serie y presione el botón “Enviar”.


 

  1. Debería recibir instantáneamente ese mensaje en la aplicación Serial Bluetooth Terminal.

 Proyecto Arduino: relé controlado por Bluetooth 

Vamos a crear un proyecto sencillo que le permita controlar los relés de forma inalámbrica mediante Bluetooth. Esto puede ser útil para la domótica, la iluminación inteligente, los sistemas de seguridad y otras aplicaciones similares. 

En este proyecto, utilizaremos un módulo de relé de dos canales. Si no está familiarizado con él, considere leer el tutorial a continuación.  

 Cableado 

Usaremos la misma configuración de Arduino que en el ejemplo anterior, pero esta vez agregaremos un módulo de relé de dos canales para operar una lámpara. 

La siguiente imagen muestra cómo construir el circuito.  

 

 Código Arduino 

Una vez que haya terminado con el cableado, pruebe el siguiente boceto.  

#include <SoftwareSerial.h> 

// GPIO donde el relé está conectado a 

const int relayPin =  6; 

// Gestionar los mensajes recibidos 

String message = ""; 

// Crear un objeto serie de software para comunicarse con HC-05 

SoftwareSerial mySerial(3, 2); //HC-05 Tx & Rx está conectado a Arduino #3 & #2 

void setup() { 

  // Iniciar la comunicación en serie con Arduino y Arduino IDE (Serial Monitor) 

  Serial.begin(9600); 

  // Inicializar relayPin como salida 

  pinMode(relayPin, OUTPUT); 

  digitalWrite(relayPin, HIGH); 

   //Iniciar la comunicación en serie con Arduino y HC-05 

  mySerial.begin(9600); 

 Serial.println("Initializing..."); 

  Serial.println("The device started, now you can pair it with bluetooth!"); 

} 

void loop() { 

  if (mySerial.available()){ 

    char incomingChar = mySerial.read(); 

    if (incomingChar != '\n'){ 

      message += String(incomingChar); 

    } 

    else{ 

      message = ""; 

    } 

    Serial.write(incomingChar);   

  } 

  // Verifique el mensaje recibido y controle la salida en consecuencia 

  if (message == "on"){ 

    digitalWrite(relayPin, LOW); 

  } 

  else if (message == "off"){ 

    digitalWrite(relayPin, HIGH); 

  } 

  delay(20); 

} 

 Probar el código 

Una vez que haya cargado el boceto, abra el monitor serie a una velocidad de transmisión de 9600. Debería ver un mensaje que dice: “El dispositivo se inició, ¡ahora puede emparejarlo con bluetooth!”. 


Inicie la aplicación Serial Bluetooth Terminal y conéctese a su módulo HC-05.  

Ahora, cuando escriba “encendido” en el cuadro de entrada en la parte inferior de la aplicación, el relé debería activarse instantáneamente. Del mismo modo, al escribir “apagado” se desactivará el relé inmediatamente. 


Además, recibirá estos mensajes en el monitor serie IDE de Arduino para fines de monitoreo. 


 

 La aplicación ofrece varias macros que puedes personalizar para guardar los mensajes predeterminados. Por ejemplo, puede asociar M1 con el mensaje “encendido” y M2 con el mensaje “apagado”. De esta manera, puede controlar fácilmente el relé usando los botones predefinidos, agregando una capa adicional de conveniencia a su proyecto.