Tutorial Arduino Y Bluetooth
Tutorial para usar módulo HC-06 de bluetooth en cualquier proyecto Arduino.
Supplies
- Placa Arduino y cable para conectar al ordenador
- Módulo bluetooth HC-06 (el que tiene 4 pines)
- Ordenador con Arduino IDE para programar
- Jumpers
- Led y resistencia
- LDR y resistencia
- Móvil
Primera Conexión Entre Placa Y Movil
Lo primero que vamos a hacer es aprender a conectar un móvil al módulo HC-06.
Para ello, lo primero es conectar el HC-06 a la placa Arduino (como en la imagen) :
- Pin VCC : 5V
- Pin GND : GND
- Pin TX : 2
- Pin RX : 3
Si conectamos ahora la placa al ordenador, veremos parpadear la luz del módulo. Ahora hay que copiar el siguiente programa :
#include //incluimos librería para usar el módulo
SoftwareSerial hc06(2,3); //establecer hc06 en los puertos 2 (TX) 3 (RX)
char mensaje; //variable para almacenar los mensajes
void setup() {
Serial.begin(9600); //iniciar monitor serial
hc06.begin(9600); //iniciar hc06
}
void loop() {
if (hc06.available()) { //si esta disponible (conectado)
mensaje = hc06.read(); //variable mensaje = lectura del hc06
Serial.print("Mensaje recibido: "); // imprimir mensaje recibido
Serial.println(mensaje);
}
}
Ahora subimos el programa a la placa, y en el móvil vamos a instalar la aplicación "Bluetooth terminal". Mientras la aplicación se instala, vamos a vincular el módulo al móvil. Para ello nos vamos dentro de ajustes a la sección "Bluetooth" donde tenderemos que buscar dispositivos hasta encontrar el módulo "HC-06" (puede tardar unos segundos en aparecer). La contraseña por defecto es 0000 o 1234.
Una vez vinculado el bluetooth (ya no tendremos que volver a hacerlo en este móvil), vamos a la aplicación y en el desplegable seleccionamos el dispositivo. Le damos a conectar y veremos como la luz del módulo deja de parpadear.
Ahora, todo lo que enviemos desde la aplicación del movil lo veremos en el monitor serial del arduino.
Encender Y Apagar Led Con Móvil
Una vez podemos recibir datos, utilizar para algo esos datos es muy facil. En este caso vamos a encender y apagar un led :
Lo primero es conectar el led a la placa como en la imagen, en el puerto 13. En el programa, añadiremos que cuando el mensaje sea "D" (o cualquier carácter) se encienda el led, y que cuando sea "E" se apague.
Quedaría algo así :
#include //incluimos la librería
SoftwareSerial hc06(2, 3); //TX RX
#define led 13 // definir led en puerto 13
char mensaje; //variable mensaje
void setup() {
pinMode(led, OUTPUT); //led commo input
Serial.begin(9600); //iniciar monitor serie
hc06.begin(9600); //iniciar hc06
}
void loop() {
if (hc06.available()) { //si esta disponible (conectado)
mensaje = hc06.read(); //variable mensaje = leer hc06
Serial.println(mensaje); //imprimir mensaje
if(mensaje == 'D'){digitalWrite(led, HIGH);} //si el mensaje es D apagar led
if(mensaje == 'E'){digitalWrite(led, LOW);} //si el mensaje es E encender led
}
}
Subimos el programa a la placa, conectamos el móvil al módulo y cuando deje de parpadear probamos a encender y apagar el led. Si enviamos "D" desde el móvil se encenderá, y si enviamos E se apagará.
Leer Ldr Desde El Movil
Ya hemos aprendido a enviar información del móvil a la placa, ahora vamos a ver como hacer lo contrario.
Para ello lo primero es desconectar el LED y conectar el LDR al puerto A0 como en la imagen. En el programa vamos a añadir el ldr y una variable nueva, donde almacenaremos el valor del ldr. Entonces cuando el hc06 esté conectado, cada segundo (o el tiempo que se elija) se enviará el valor del LDR.
El programa quedará así :
#include //incluir libreria
SoftwareSerial hc06(2, 3); //hc06
#define ldr A0
int ldrV = 0;//variable ldrV
void setup() {
Serial.begin(9600); //iniciar puerto seria
hc06.begin(9600); //
}
void loop() {
ldrV = analogRead(ldr);
if (hc06.available()) {
hc06.println(ldrV);
delay(1000);
}
}
Subimos el programa, conectamos el bluetooth y veremos como se envían los datos del ldr al movil, y se muestran en la consola de la aplicación.
Aplicación Con App Inventor
Ahora vamos a crear una aplicación con AppInventor para hacer lo que hemos hecho hasta ahora (o descargar la que he hecho yo desde aquí).
Accedemos aquí y creamos un nuevo proyecto. Como hemos visto, para encender y apagar un led solo hace falta que la placa reciba ciertos caracteres (en este caso "D" y "E").
Ahora veremos una pantalla de móvil en blanco. Esta pantalla es lo que se verá en nuestra aplicación cuando la exportemos a Android. Para añadir cosas basta con arrastrarlas del menú de la izquierda (Palette).
Nuestra aplicación solo necesita de 4 elementos para funcionar: Un Labell (texto), ListPicker (lista), dos Buttons (botones) y el cliente bluetooth (En el apartado conectivity, BluetoothClient).
Ahora podemos editarlos para darle una mejor imagen. Podemos cambiar los textos y moverlos por la aplicación, pero no es necesario para esta aplicación.
Para programar estos elementos accedemos al panel BLOCKS, donde vamos a copiar lo que hay en la imagen.
Básicamente, el programa funciona de este modo: El ListPicker nos va a mostrar todos los dispositivos bluetooth vinculados a nuestro teléfono y cuando pulsemos uno nos va a conectar a él. Entonces los botones tienen la función de enviar los caractéres asignados (en este caso "D" y "E"). Cuando el módulo reciba estas letras, las leerá la placa y hará la acción correspondiente.
Utilizar Bluetooth En Cualquier Proyecto Arduino
Para resumir, el módulo HC06 funciona de este modo :
Primero vamos a pensar que acciones queremos controlar mediante el bluetooth (Por ejemplo encender y apagar un led, o controlar la rotación de un servo). A cada acción le vamos a asignar un carácter, para que cuando el módulo reciba ese carácter haga esa acción (Por ejemplo, si recibe el carácter "D" que encienda el led o si recibe el carácter "A" que mueva un servo hacia la derecha). En el programa vamos a escribir estas condiciones como ya hemos hecho antes :
if(mensaje == 'D') {digitalWrite(led, HIGH);} //si el mensaje es D encender el led
Y desde la consola de la aplicación del móvil vamos a enviar esos caracteres, o si utilizamos app inventor, asignaremos a un botón la función de enviar el carácter. El módulo recibirá el mensaje, lo leerá y hará la acción correspondiente
Si por ejemplo queremos hacer que un buzzer suene cada vez que pulsamos un botón en el móvil, le asignaremos una letra a esa acción y lo pondremos como condición en el programa "si el mensaje es "A", tocar X nota". Entonces desde el móvil enviaremos ese carácter y el buzzer sonará.
Una vez entendido como funciona el módulo, aplicar todo esto a cualquier proyecto Arduino es muy simple.