Cómo programar Módulo Bluetooth
Cuando queremos comunicar nuestros proyectos de manera inalámbrica hay varios métodos, pero uno de ellos muy sencillo de utilizar es el Bluetooth, no solo porque es fácil de programar sino porque también podemos controlar nuestro proyecto mediante un Smartphone o dispositivo inteligente.
Hoy vamos a aprender cómo hacerlo.
Los materiales que vamos a necesitar son:
Arduino UNO o equivalente
Lo primero que debemos saber es que es un Módulo BLuetooth HC-05.
Los módulos de bluetooth HC-05 y HC-06 son módulos muy eficientes para aplicaciones con PIC microcontroladores y Arduino. Se trata de dispositivos relativamente económicos y que habitualmente se venden en un formato que permite insertarlos en un protoboard y cablearlo directamente a cualquier microcontrolador, incluso sin realizar soldaduras.
Módulo Bluetooth HC-05
El módulo de bluetooth HC-05 es el que ofrece una mejor relación de precio y características, ya que es un módulo Maestro-Esclavo, quiere decir que además de recibir conexiones desde una PC o tablet, también es capaz de generar conexiones hacia otros dispositivos bluetooth. Esto nos permite por ejemplo, conectar dos módulos de bluetooth y formar una conexión punto a punto para transmitir datos entre dos microcontroladores o dispositivos.
El HC-05 tiene un modo de comandos AT mientras se enciende (o se resetea) el módulo. En las versiones para protoboard este pin viene marcado como “Key”. Una vez que estamos en el modo de comandos AT, podemos configurar el módulo bluetooth y cambiar parámetros como el nombre del dispositivo, password, modo maestro/esclavo, etc.
Para comunicarnos con el módulo y configurarlo, es necesario tener acceso al módulo mediante una interfaz serial. Podemos usar un arduino con un par de cables (aprovechando el puente USB-Serial del Arduino),
Para empezar debemos conectar el módulo bluetooth en nuestro arduino, en este caso usaremos un Arduino Uno.
Ahora vamos con la programación:
Lo primero que debemos tomar en cuenta es que nuestro dispositivo bluetooth debe ser configurado por comandos AT. para ello debemos correrle este pequeño programa.
#include <SoftwareSerial.h>
SoftwareSerial BT1(10, 11); // RX | TX void setup() { pinMode(8, OUTPUT); // Al poner en HIGH forzaremos el modo AT pinMode(9, OUTPUT); // cuando se alimente de aqui digitalWrite(9, HIGH); delay (500) ; // Espera antes de encender el modulo Serial.begin(9600); Serial.println("Levantando el modulo HC-06"); digitalWrite (8, HIGH); //Enciende el modulo Serial.println("Esperando comandos AT:"); BT1.begin(57600); }
void loop() { if (BT1.available()) Serial.write(BT1.read()); if (Serial.available()) BT1.write(Serial.read()); }
Con este procedimiento garantizamos que el modulo HC-05 entra solo en modo AT y que nuestra consola nos va a servir para programarlo.
El HC-05 nos envía a la consola un mensaje de Status en cuanto arranca en el modo AT, si es su caso deberías ver un mensaje en la consola. Si no es así, vas a ver signos raros, suele ser indicador de que la velocidad de comunicación entre Arduino y el módulo es incorrecta.
tienes que ir probando velocidades hasta que veas algún mensaje correcto. Enviar un AT siempre debería recibir una respuesta de OK.
Si escribes en mayúsculas AT e intro, deberías recibir una respuesta de OK en la consola. Y si es así podemos seguir viendo más comandos.
AT+VERSION, Requiere la versión del Firmware.
AT+NAME, Requiere que nos informe del nombre que tiene asignado el módulo. Debería devolvernos un mensaje del tipo +NAME=HC-05, indicando que se llama HC-05.
AT+NAMEXXXX, programa el nombre que queremos presentar cuando alguien nos localice.
ejemplo: AT+NAMELozuryTech
AT+BAUD, nos permite solicitar la velocidad a la que está programado el módulo para hablar con Arduino, y AT+BAUDX, Fija la velocidad de comunicación entre el módulo y la consola de acuerdo a la siguiente tabla:
1 configura 1200bps 2 configura 2400bps 3 configura 4800bps 4 configura 9600bps (Default) 5 configura 19200bps 6 configura 38400bps 7 configura 57600bps 8 configura 115200bps
Ejemplo: AT+BAUD7 configura la comunicación a 57600 baudios
Si enviamos AT+BAUD, la respuesta es de la misma forma: BAUD=7 para indicar 57600.
AT+PIN, Solicita el PIN actual y en la consola veris: PIN=1234 o similar.
AT+PINXXXX, configura el número de identificación personal, que se requerirá para establecer la vinculación
AT+PIN4516, establece 4516 como PIN.
Recordad que el PIN es el número de identificación personal, que usaremos al conectarnos al módulo, pues exigirá conocer la contraseña.
El PIN es de 4 dígitos siempre
AT+ROLE Nos informa de si está configurado como Maestro 1, o como esclavo 0.
ROLE=0 (Esclavo)
AT+ROLE1 Configura el módulo como Master.
AT+ROLE0 Configura el módulo como Slave.
Adjunto una lista de comandos AT que te puedan interesar.
Una vez configurado el módulo Bluetooth, ya podemos programarlo como queramos, en este caso vamos a hacer un pequeño ejemplo recibiendo datos enviados desde un dispositivo móvil android.
Primero debemos conectar nuestro módulo, ya que en esta configuración usaremos el TX y RX directamente del arduino de los pines 0 y 1.
Una vez conectado nuestro módulo bluetooth a nuestro arduino vamos a cargar el programa.
char dato; String readString; int key = 8; void setup() { pinMode(key, OUTPUT); Serial.begin(9600); Serial.println(readString); } void loop() { digitalWrite(key, HIGH); leer_Dato(); if(readString.length() >0){ if(readString == "Dato1"){ Serial.println("Recibido el Dato1"); } } else if(readString == "Dato2"){ Serial.println("Recibido el Dato2"); } } else if(readString == "Dato3"){ Serial.println("Recibido el Dato3"); } } else if(readString == "Dato4"){ Serial.println("Recibido el Dato4"); } } readString = ""; } } void leer_Dato(){ while(Serial.available()){ delay(10); if (Serial.available() >0){ dato=Serial.read(); readString += dato; } } }
Una vez cargado el programa usamos una aplicación de envío de datos que podemos encontrar en el Google Play o podemos hacerla nosotros mismos en AppInventor.
esta aplicación lo que debe hacer es enviar datos a nuestro módulo bluetooth, este los lee y lo puedes programar para que haga lo que necesites. bien sea activar un relay, encender un led, sonar un buzzer, girar un servomotor o lo que sea que necesites.