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:
El esquema que vamos a utilizar es el siguiente:
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;
}
}
}
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);
}
}
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
#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
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);
}
// 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 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);
}
// 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.
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.
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:
No hay comentarios:
Publicar un comentario
Nota: solo los miembros de este blog pueden publicar comentarios.