Archivo de la etiqueta: bluetooth

modúlo bluetooth HC-06 y arduino


Hoy os traemos una nueva entrada donde hablamos del económico módulo bluetooth HC-06 y su funcionamiento con Arduino. Dicho módulo trabajo mediante conexión serie con el Arduino, y se comunica con el exterior mediante bluetooth, ya sea a través de un teléfono móvil, ordenador, tablet, etc.

El módulo en cuestión es este, lo he comprado ya con regulación a 3.3V, así que lo puedo conectar directamente a los 5V del Arduino sin problema (Aunque Arduino ya nos proporciona 3.3V, es mejor tener los 5V por si lo usamos en un montaje exterior sin la placa Arduino):

Como véis solo disponemos de 4 pines que son los necesarios, por un lado tenemos VCC que irá conectado a los 5V del Arduino, por otro GND que ira al pin GND de Arduino, después tenemos TXD que irá conectado al pin RXD del Arduino y RXD que irá al pin TXD de Arduino.

En concreto yo he probado dicho módulo en un teléfono HTC Desire S y con el software BlueTerm, y en el portátil con el software Octoplus Terminal (que es un software de comunicación-monitor serie).

Para añadir el módulo al pc mediante bluetooth se debe hacer como un puerto serie virtual, los pasos que yo he seguido son los siguientes:

1º Buscamos los dispositivos bluetooth:

2º Seleccionamos Puerto Serie Virtual:

3º Configuramos el puerto COM que queramos:

4º Finalizamos el proceso de añadir el módulo bluetooth:

Aquí está el video del funcionamiento del módulo:

Y aquí unas capturas para la comunicación del software BlueTerm con el módulo:

Aquí os dejo el código de comunicación para placas Arduino Uno, Mega y Nano:

//Programa prueba modulo bluetooth GP-GC021 o HC-06
//Probado con programas para android Blueterm y Amarino 2.0
//Probado con bluetooth portatil y software Octoplus Terminal
//Programa realizado para www.tallerarduino.wordpress.com por Regata

void setup()
{
  //Pin donde conectamos el led para ver el correcto funcionamiento del modulo
   pinMode(13,OUTPUT);
   //Configuracion de la velocidad del modulo 9600 por defecto, se puede cambiar
   //mediante comandos AT
   Serial.begin(9600);
}

void loop()
{
   //Mientras el puerto serie del modulo bluetooth esta disponible
   while (Serial.available())
   {
      //Guardamos en la variable dato el valor leido por el modulo bluetooth
       char dato= Serial.read();
       //Comprobamos el dato
       switch(dato)
       {
         //Si recibimos una 'w' encendemos el led 13 y enviamos para mostrar
         //en Blueterm Led encendido
         case 'w':
         {
           digitalWrite(13,HIGH);
           Serial.println("Led encendido");
           break;
         }
         //Si recibimos una 'e' apagamos el led 13 y enviamos para mostrar
         //en Blueterm Led apagado
         case 'e':
         {
           digitalWrite(13,LOW);
           Serial.println("Led apagado");
           break;
         }
         //Si recibimos una 'r' encendemos y apagamos el led mediante la secuencia
         //programa y mostramos en Blueterm Led intermitente
         case 'r':
         {
           digitalWrite(13,HIGH);
           delay(200);
           digitalWrite(13,LOW);
           delay(200);
           digitalWrite(13,HIGH);
           delay(100);
           digitalWrite(13,LOW);
           delay(100);
           Serial.println("Led intermitente");
           break;
         }
       }       
   }
}

Aquí el código para la placa Arduino Leonardo:

//Programa prueba modulo bluetooth GP-GC021 o HC-06
//Programa para la placa ARDUINO LEONARDO
//Probado con programas para android Blueterm y Amarino 2.0
//Probado con bluetooth portatil y software Octoplus Terminal
//Programa realizado para www.tallerarduino.wordpress.com por Regata
 
void setup()
{
  //Pin donde conectamos el led para ver el correcto funcionamiento del modulo
   pinMode(13,OUTPUT);
   //Configuracion de la velocidad del modulo 9600 por defecto, se puede cambiar
   //mediante comandos AT
   Serial1.begin(9600);
}
 
void loop()
{
   //Mientras el puerto serie del modulo bluetooth esta disponible
   while (Serial1.available())
   {
      //Guardamos en la variable dato el valor leido por el modulo bluetooth
       char dato= Serial1.read();
       //Comprobamos el dato
       switch(dato)
       {
         //Si recibimos una 'w' encendemos el led 13 y enviamos para mostrar
         //en Blueterm Led encendido
         case 'w':
         {
           digitalWrite(13,HIGH);
           Serial1.println("Led encendido");
           break;
         }
         //Si recibimos una 'e' apagamos el led 13 y enviamos para mostrar
         //en Blueterm Led apagado
         case 'e':
         {
           digitalWrite(13,LOW);
           Serial1.println("Led apagado");
           break;
         }
         //Si recibimos una 'r' encendemos y apagamos el led mediante la secuencia
         //programa y mostramos en Blueterm Led intermitente
         case 'r':
         {
           digitalWrite(13,HIGH);
           delay(200);
           digitalWrite(13,LOW);
           delay(200);
           digitalWrite(13,HIGH);
           delay(100);
           digitalWrite(13,LOW);
           delay(100);
           Serial1.println("Led intermitente");
           break;
         }
       }       
   }
}

Aquí el código de configuración del módulo mediante comandos AT (el módulo no debe de estar emparejado):

/*Cambio de configuracion del modulo bluetooth mediante comandos AT
para ello el modulo no debe estar vinculado con ningun dispositivo
bluetooth, en mi caso el led debe estar en modo intermitente, si esta
vinculado aparece encendido de forma permanente*/

int contador=1;

void setup()
{
  //Led 13 para indicar final de operacion de configuracion AT
  pinMode(13,OUTPUT);
  //Velocidad del modulo bluetooth, 9600 por defecto
  Serial.begin(9600);
  //Apagamos el led 13
  digitalWrite(13,LOW);
}

void loop()
{
  //Es para realizar los cambios una sola vez
  while (contador==1)
  {
   //Indicacion de tiempo de espera iniciado
   digitalWrite(13,HIGH);
   /*Tiempo de espera de 15 segundos (prudencial, se puede cambiar, depende de lo que tardes
   en volver a conectarlos) para reconectar cables RX y TX del modulo bluetooth
   a la placa Arduino ya que para programar esta deben estar desconectados*/
   delay(15000);
   //Indicacion de tiempo de espera finalizado
   digitalWrite(13,LOW);
   //Iniciamos comunicacion con modulo bluetooth mediante comandos AT
   Serial.print("AT");
   //Espera de 1 segundo según datasheet entre envio de comandos AT
   delay(1000);
   //Cambio de nombre donde se envia AT+NAME y seguido el nombre que deseemos
   Serial.print("AT+NAMEtallerarduino");
   //Espera de 1 segundo según datasheet entre envio de comandos AT
   delay(1000);
   /*Cambio de la velocidad del modulo en baudios
   Se envia AT+BAUD y seguido el numero correspondiente:
   
   1 --> 1200 baudios 
   2 --> 2400 baudios
   3 --> 4800 baudios
   4 --> 9600 baudios (por defecto)
   5 --> 19200 baudios
   6 --> 38400 baudios
   7 --> 57600 baudios
   8 --> 115200 baudios
   
   */
   Serial.print("AT+BAUD4");
   //Espera de 1 segundo según datasheet entre envio de comandos AT
   delay(1000);
   //Configuracion Password, se envia AT+PIN y seguido password que queremos
   Serial.print("AT+PIN1234");
   //Espera de 1 segundo según datasheet entre envio de comandos AT
   delay(1000);
   //Mostramos tanto por puerto serial y por led la finalizacion de la
   //configuracion AT del modulo bluetooth
   Serial.print("OK Cambios Realizados correctamente");
   digitalWrite(13,HIGH);
   //Al tener contador=2 ya no se vuelve a repetir el while, a no ser que
   //se produzca un reset, por tanto comenzaria un nuevo cambio de configuracion
   contador=2;
  }  
}

Por último os dejo los datasheets y los programas arriba expuestos:

http://www.mediafire.com/?m76srfxzx4i0amc

Si te ha servido de ayuda esta entrada, puedes realizar un donativo para agradecer el tiempo que dedico al blog y ayudar a hacer más entradas.

donativo_paypal

Módulo bluetooth gp-gc021


Me ha llegado a casa un nuevo juguete con el que cacharrear, se trata de un módulo bluetooth GP-GC021 de sure electronics, que compré por ebay a un precio próximo a los 12. Esto me va a servir para poder aprender a comunicar nuestro Arduino o Pinguino PIC mediante bluetooth con cualquier dispositivo que tenga bluetooth, en mi caso lo voy a intentar hacer con mi telefono móvil, un htc desire s que lleva sistema android y que gracias a la appinventor podremos diseñar nuestros programas de control a medida.

Os voy a contar un poco sobre este dispositivo:

Se trata de un módulo bluetooth basado en el chipset BlueCore4-AudioROM. Presenta un chip GL-6B que puede operar con una memoria Flash externa de hasta 8Mbit de 16 bits. Cuando es usado con la pila de software CSR Bluetooth, provee un sistema totalmente compatible con especificación Bluetooth V2.0+EDR para comunicaciones de datos y voz.

Como características principales podemos destacar:

  • 3.3V de voltaje de operación.
  • No necesita componentes externos para su funcionamiento.
  • Interface UART.
  • Bluetooth Spec v2.0+EDR Compliant
  • Enhanced Data Rate (EDR) compliant with V2.0.E.2 of specification for both 2Mbps and
    3Mbps modulation modes.
  • Full Speed Bluetooth Operation with Full Piconet Support.
  • Support for 8Mbit External Flash Onboard.
  • Support for 802.11Co-Existence.

Ahora toca aprender a realizar programas para android con appinventor para poder sacar el máximo jugo a este módulo y poder dotar a mis futuros proyectos de comunicación inalámbrica media bluetooth.

Para practicar con él he realizado en eagle una placa para poder pinchar el módulo en un placa protobard, además de ser más cómoda para realizar los prototipos. Os dejo una imagen del módulo para que veais que pequeñito es y una imagen del fotolito que he realizado, así como el datasheet del módulo y la libreria para eagle del mismo.

Aquí teneís los ficheros (datasheet y libreria para eagle del módulo bluetooth): http://www.mediafire.com/?x3wbuxs89xh1bq0

Si te ha servido de ayuda esta entrada, puedes realizar un donativo para agradecer el tiempo que dedico al blog y ayudar a hacer más entradas.

donativo_paypal