conectar-arduino-por-bluetooth-con-los-modulos-hc-05-o-hc-06

Conectar Arduino por Bluetooth con los módulos HC-05 ó HC-06

¿Qué es un módulo HC-05 ó HC-06?

Los módulos HC-05 y HC-06 son módulos de Bluetooth que podemos usar para conectar comunicar con Arduino por Bluetooth.

Mucha gente puede tener la impresión de que el Bluetooth es una tecnología anticuada, que se usaba para trasmitir datos entre dispositivos, y que actualmente está en desuso. Nada más lejos de la realidad.

Bluetooth tiene la enorme ventaja de estar integrado de fábrica en la mayoría de dispositivos. Portátiles, Tablets, y Smartphones llevan integrado Bluetooth. Además, su uso es independiente del sistema operativo (Windows, Linux, Mac o Android).

Esto convierte a la tecnología Bluetooth en uno de los mejores medios para comunicarnos de forma inalámbrica con Arduino. Por ejemplo, podemos emplearlo para controlar un robot desde el móvil o Tablet, o recibir mediciones en un ordenador para registrarlas en un servidor web.

Incluso es posible programar Arduino de forma inalámbrica a través de Bluetooth, como veremos en una entrada posterior.

Los dos módulos, HC-05 y HC-06, nos permiten conectar de forma sencilla un Arduino por Bluetooth. La diferencia entre ambos módulos es que el HC-06 sólo permite recibir comunicaciones (slave) mientras que el HC-05 puede recibirlas e iniciarlas (master and server). Por tanto el módulo HC-05 es superior en características técnicas.

Precio

En la actualidad podemos encontrar tanto el HC-05 como el HC-06 por unos 2,75€, en vendedores internacionales de Ebay y Aliexpress.

arduino-bluetooth-hc05

Antiguamente el precio del HC-05 era bastante superior al del HC-06. Pero, dado que en la actualidad ambos módulos cuestan lo mismo y que el HC-05 es superior en características, lo normal es que siempre querremos comprar el módulo HC-05.

Como advertencia, ambos módulos (HC-05 y HC-06) están formados por dos componentes. El módulo de Bluetooth en sí, y una base a la que va soldado y que contiene el resto de circuitería. Tener cuidado de no comprar sólo la base o el módulo sueltos, que también se venden a un precio inferior.

arduino-bluetooth-modulo-base

¿Cómo funcionan los módulos HC-05 y HC-06?

La comunicación Bluetooth es similar al uso del puerto serie normal, que vimos en esta entrada. Por tanto, resulta muy versátil y muy sencillo de usar.

La diferencia principal es que, en lugar de un conectar un cable, tendremos que emparejar el módulo con nuestro dispositivo. El proceso de emparejado depende del sistema operativo (y la versión del mismo) pero es, en general, un proceso sencillo.

Para establecer la comunicación desde el dispositivo, podemos usar el propio Serial Monitor del Arduino IDE. También encontraremos en todos los sistemas (Windows, Linux, Mac, o Android) encontraremos aplicaciones para establecer la comunicación por el puerto serie.

Por último, resulta muy sencillo integrar en nuestros programas el uso del puerto serie (y por tanto del Bluetooth), en una gran variedad de lenguajes de programación, incluidos Java, C#, VB .Net, o Python, que disponen de funciones específicas para ellos.

Esquema montaje

Utilizar el módulo de Bluetooth requiere el uso de un puerto serie de nuestra placa Arduino. Por tanto, mientras usemos el módulo de Bluetooth no podremos usar el puerto serie en las placas modelo Uno, Mini, y Nano. En el modelo Mega no tiene este problema, ya que incorpora 4 puertos de serie.

Mientras estemos cargando un nuevo programa en la placa Arduino tenemos que desconectar el módulo Bluetooth, dado que la programación se realiza a través del puerto serie.

Si realmente necesitamos ambas comunicaciones podemos emplear la librería SoftSerial para establecer una comunicación de puerto serie por cualquier pareja de pins digitales, aunque ello supondrá un coste adicional de tiempo de proceso en Arduino.

La conexión es sencilla. Alimentamos mediante Vcc y GND. Posteriormente conectamos el TXD (pin de transmisión) y RXD (pin de recepción) a los opuestos de la placa Arduino (cada TXD a un RXD). Así quedarían las conexiones del módulo, con los pines de Arduino.

arduino-bluetooth-esquema-electrico

Mientras que el esquema visto desde Arduino queda así.

arduino-bluetooth-esquema-montaje

Ejemplos de código

Como hemos dicho, el uso del módulo Bluetooth es idéntico al uso de puerto serie, que vimos en esta entrada. Por tanto, todos los códigos de uso de puerto serie que vimos en esta y otras entradas de este blog funcionan igualmente por Bluetooth.

Por ejemplo, el siguiente código envía un número a Arduino por Bluetooth y hace parpadear el Led integrado en la pláca el número de veces que hemos enviado.

const int led = 13;

int option;
 
void setup(){
  Serial.begin(9600);
  pinMode(led, OUTPUT); 
}

void loop(){
  //si existe información pendiente
  if (Serial.available()>0){
    //leeemos la opcion
    char option = Serial.read();
    //si la opcion esta entre '1' y '9'
    if (option >= '1' && option <= '9')
    {
      //restamos el valor '0' para obtener el numero enviado
      option -= '0';
      for(int i=0;i<option;i++){
         digitalWrite(led, HIGH);
         delay(100);
         digitalWrite(led, LOW);
         delay(200);
      }
    }
  }
}

Descarga el código

Todo el código de esta entrada está disponible para su descarga en Github. github-full