arduino

Bluetooth en Arduino con el módulo HC-06

Gran parte de la versatilidad que tiene Arduino es la capacidad de conectar cualquier cosa a un PC, smartphone o internet.

En este caso vamos a aprender como dar conectividad bluetooth a nuestros proyectos con un módulo barato y fácil de utilizar, el HC-06.

El HC-06 es posiblemente el módulo Bluetooth más extendido en la comunidad Arduino junto con su hermano mayor el HC-05, este último lo veremos en otra entrada.

La principal diferencia entre ambos es que el HC-06 únicamente puede funcionar como esclavo y el HC-05 también permite configurarse como maestro. Veremos el tema en detalle cuando veamos el HC-05.

Por el momento, para hacer la primera toma de contacto con el Bluetooth, el HC-06 nos va de perlas, así que al lio.

El módulo tiene 4 conexiones, RXD, TXD, GND y VCC.

El esquema de conexiones Arduino HC-06

Las conexiones son simples pero hay que tener en cuenta que los TX y RX van cruzados, el TX del HC-06 al RX de la placa y el RX del HC-06 al TX de la placa.

Por otro lado, como la programación del Arduino es por serie y utiliza los pines TX y RX, en el momento de cargar el sckech los pines deben estar sin conectar.

HC-06Arduino
VCC3.3V o 5v
GNDGND
TXDRX0
RXDTX0

La mayoría de módulos son a 3.3v pero hay algunos a 5v.


Código de ejemplo

const int pinLED = 13;
 
void setup(){
  Serial.begin(9600);
  pinMode(pinLED, OUTPUT); 
}

void light(int n, int tdelay){
  for (int i = 0; i<n; i++){
    digitalWrite(pinLED, HIGH);
    delay(tdelay);
    digitalWrite(pinLED, LOW);
    delay(tdelay);  
  }
}

bool chknumber(char param){
  /* Como recibimos caracteres trabajamos con valores ascii
   los carácteres que identifican números estan comprendidos entre 48 y 57.
   0 = 48 ascii y 9 = 57 ascii
   para valores entre 1 y 9 ambos inclusive
  */
    if (param > 48 && param < 58)
    {   
      int n = param-48;
      light(n,1000);
      return true;
    }
    return false;
}

void chkkeyboard(char param){
  switch(param){
    case 'a':  // left
      light(6,100);
      break;
    case 'd': // right
      light(3,200);
      break;
    case 'w': // up
      light(2,300);
      break;
    case 's': // down
      light(1,600);
      break;
  }
}

void loop(){
  //si existe información pendiente
  if (Serial.available()>0){
    //leeemos la opcion
    char param = Serial.read();    
    if(!chknumber(param)){
      chkkeyboard(param);
    }
  }
}

Utilizamos el led 13 para controlar los comandos que enviamos a Arduino.

En el bucle principal loop(), leemos los datos recibidos por Bluetooth con Serial.read() y lo pasamos como parámetro a las funciones chknumber() y chkkeyboard() para ejecutar la acción correspondiente.

Como estamos jugando con parpadeos del Led, utilizamos la funcion light() que habéis visto en otras entradas.

Y eso es todo, a partir de aquí solo queda usar la imaginación y controlar en remoto lo que se os ocurra.

Puede que te interese como vincular Android con Arduino por Bluetooth, mira aquí!

Sugerencias, ideas, dudas o comentarios son siempre bien recibidos.

Saludos!

2 Comments

    • admin

      Hola Victor,
      un bluetooth no deja de ser una conexión serie inalambrica, por lo que únicamente se puede vincular a un dispositivo a la vez, por ejemplo a un movil o un pc.
      Una vez establecida la conexión, desde el bluetooth puedes enviar y recibir comandos a cualquier otro componente conectado a Arduino.

      Un saludo!

Deja un comentario

Tu dirección de correo electrónico no será publicada.