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í.

No hay comentarios:

Publicar un comentario

Nota: solo los miembros de este blog pueden publicar comentarios.