Mostrando entradas con la etiqueta HC-06. Mostrar todas las entradas
Mostrando entradas con la etiqueta HC-06. Mostrar todas las entradas

miércoles, 3 de febrero de 2016

ESP8266 HC-06 con Arduino IDE

En este artículo estableceremos una conexión por el puerto serie entre nuestro ESP8266 y el módulo Bluetooth HC-06.

El esquema que vamos a utilizar es el siguiente:


Untitled Sketch_bb.png


Una diferencia con Arduino UNO es que el puerto serie del módulo presente en los pins TX y RX es el mismo que el puerto serie con el que programamos por lo que durante la programación del módulo debemos de dejar de alimentar el módulo HC-06. Una vez programado y para realizar las pruebas, debemos de desconectar el PC y conectar el módulo.

En este ejemplo, vamos a encender y apagar un led conectado a GPIO16 enviando comandos a través del módulo bluetooth.

La programación del módulo ESP8266 es sencilla. La parte principal del programa es la función que lee los comandos enviados por la aplicación android:

void LeerPuertoSerie() {
 comando = "";
 while(Serial.available()){
    delay(10);
    if(Serial.available() > 0) {
     dato = Serial.read();
     comando += dato;
    }
 } 
}

En esta función, se almacena en comando los mensajes recibidos por el puerto serie y es llamado en loop():

LeerPuertoSerie();
  if (comando.length() > 0) {
    if(comando == "OFF") { //apaga el led
     digitalWrite(LED,LOW);
    }
    if(comando == "ON") { //enciende el led
     digitalWrite(LED,HIGH);
    }
}

El programa completo es el siguiente:

#define LED 16 // GPIO16 (D0) Puerto al que conectamos el LED
char dato; // Carácter que recibimos por bluetooth
String comando; // Comando que generamos con los caracteres
void setup() {
 // Configuramos el puerto serie a 9600
 Serial.begin(9600);
 delay(10);
 // Inicializa el Led
 pinMode(LED,OUTPUT);
 digitalWrite(LED,LOW);
}
// Lee el puerto serie hasta recibir el último carácter
void LeerPuertoSerie() {
 comando = "";
 while(Serial.available()){
    delay(10);
    if(Serial.available() > 0) {
     dato = Serial.read();
     comando += dato;
    }
 }  
}
void loop() {
 // lee los comandos por el puerto serie
 LeerPuertoSerie();
 if (comando.length() > 0) {
    if(comando == "OFF") { //apaga el led
     digitalWrite(LED,LOW);
    }
    if(comando == "ON") { //enciende el led
     digitalWrite(LED,HIGH);
    }
 }
}

Además, he creado una aplicación android en AppInventor para que, conectándose al módulo de bluetooth, envíe los comandos para encender y apagar el led.



Screenshot_2016-02-03-23-21-15.png

Los módulos que componen el programa son los siguientes:



Con el siguiente código conectamos con el módulo bluetooth HC-06:


y con este código enviamos el comando “ON”. Para enviar el comando “OFF” es similar cambiando únicamente el texto enviado.



Al finalizar el programa:


El programa compilado lo puedes descargar aquí mientras que el proyecto appinventor lo puedes decargar aquí.

martes, 15 de abril de 2014

Módulo de Bluetooth HC-06

Fuente: diymakers.es

El Bluetooth es un estándar de comunicación inalámbrica que permite la transmisión de datos a través de radiofrecuencia en la banda de 2,4 GHz. Existen muchos módulos Bluetooth para usarlos en nuestros proyectos de electrónica, pero los más utilizados son los módulos de JY-MCU, ya que son muy económicos y fáciles de encontrar en el mercado. Son módulos pequeños y con un consumo muy bajo que nos permitirán agregar funcionalidades Bluetooth a nuestro Arduino. Estos módulos contienen el chip con una placa de desarrollo con los pins necesarios para la comunicación serie.

Existen dos modelos de módulos Bluetooth: el HC-05 que puede ser maestro/esclavo (master/slave), y el HC-06 que solo puede actuar como esclavo (slave). La diferencia entre maestro y esclavo es que en modo esclavo es el dispositivo quien se conecta al módulo, mientras que en modo maestro es el módulo quien se conecta con un dispositivo.

Físicamente, los dos módulos son muy parecidos, solo varían algunas conexiones. Los pins del módulo HC-06 son los siguientes:
  • Vcc: Alimentación del módulo entre 3,6V y 6V.
  • GND: La masa del módulo.
  • TXD: Transmisión de datos.
  • RXD: Recepción de datos (Precaución: Algunos módulos no permiten en su pin RX mas de 3.3v. En mi caso, he adquirido un módulo que admite hasta 5 v.)

Comandos AT

Los comandos AT son un tipo de comandos que sirven para configurar el módulo Bluetooth a través de un microcontrolador, un ordenador o con cualquier dispositivo que posea una comunicación serie (Tx/Rx). Son unas instrucciones que nos permiten cambiar los baudios del módulo, el PIN, el nombre, etc. Para usar los comandos AT el módulo Bluetooth no debe estar vinculado a ningún dispositivo (led rojo del módulo parpadeando). Según las especificaciones del módulo, el tiempo que se tiene que respetar entre el envío de un comando AT y otro tiene que ser de 1 segundo. Si se envía un comando AT y en menos de un segundo se envía otro, el módulo no devuelve respuesta.


Los parámetros por defecto del módulo HC-06 son los siguientes:
  • Baud rate: 9.600 N 8 1
  • ID: Linvor
  • Password: 1234
Los comandos AT que admite el módulo HC-06 son los siguientes:




Lo normal es conectar el módulo HC-06 a los pines del Arduino 0 y 1 (RX y TX) y establecer una conexión serie:

Serial.begin(9600);

Luego, utilizaremos los métodos estándar para trabajar con el puerto serie (ver el siguiente enlace)