Está en la página 1de 17

Riego de jardines mediante arduino y Android

A. Configurar mdulo bluetooh hc05.

Pareja bluetooth arduino


Un proyecto personal me lleva a utilizar un mdulo bluetooth con Arduino, me decanto por HC05. La cuestin es que si no quieres que el nombre de tu dispositivo sea HC-05 y la contrasea
1234, toca configurar el dispositivo.
Enviar y recibir datos del dispositivo bluetooh arduino es bastante fcil. Pero configuarlo es otra
cosa. He buscado bastante informacin y siempre la que he encontrado ha sido demasiado
escueta y me ha ayudado por partes, por ejemplo no encontr donde dijesen que el botn debes
mantenerlo pulsado al arrancar. As que he decidido crear mi propio post para documentar mejor
el proceso:
Compr 3 dispositivos, 2 son con la base para soldarla JY-MCU y un magnifico botn para el
modo master (con el que se configura el bluetooth con comandos AT). El otro no tiene botn, se
usa uno de los pines (Key) que debe conectarse a 3.3V. al arrancar.

1- Conectar la pareja Bluetooth Arduino.

JY-MCU (con botn):


Yo voy a utilizar un Arduino Nano, es el que tengo libre ahora. Conectamos:
GND y Vcc a nuestro arduino.
TxD al pin N13 (D10)
RxD al pin N14 (D11)
En el caso del que no lleva botn, es todo igual excepto que el pin Key del mdulo va
conectado al pin de 3.3v de arduino.
Si en este punto conectamos arduino al ordenador o bien lo alimentamos veremos que la luz del
mdulo bluetooth HC-05 parpadea de forma intermitente, esto ser as hasta que se establezca
una conexin. Entonces el parpadeo ser ms lento.
Aqu ya podemos buscar con nuestro movil, portatil, etc nuestro dispositivo. Aparecer con el
nombre HC-05. Incluso lo podemos emparejar, pero no lo recomiendo, ya que si lo hacemos,
despues no podremos volver a emparejarlo con el nuevo nombre hasta que lo des emparejemos.
El motivo es que se asocia por la direccin mac del dispositivo que es nica. La asociacin entre
dispositivos no es por el nombre. La direccin mac no se puede cambiar.

2 Cargando el sketch que nos permite enviar cdigos AT.


Ojo el primer include no est vaco, es un problema de los cdigos con WordPress, los embudos
los toma como comandos y los oculta. Pego una imgen para ver como van:

1. #include xx SoftwareSerial.h xxx


2. /*
3. Sustituye xx

por simbolo menor qu o embudo menor

4. y xxx por simbolo Mayor que o embudo mayor

5. Es un problema de la web.
6. */
7.
8. #define RxD 10
9. #define TxD 11
10.
11. SoftwareSerial BTSerial(RxD, TxD);
12.
13. void setup()
14. {
15.

BTSerial.flush();

16.

delay(500);

17.

BTSerial.begin(38400);

18.

Serial.begin(9600);

19.

Serial.println("Preparado para enviar comandos AT:");

20.
21.

BTSerial.print("ATrn");

22.
23.

delay(100);

24.
25. }
26.
27. void loop()
28. {
29.
30.
31.

if (BTSerial.available())
Serial.write(BTSerial.read());

32.
33.

if (Serial.available())

34.

BTSerial.write(Serial.read());

35.
36. }

Ahora toca arrancar en modo master, es decir que admita cdigos AT.
En el mdulo con el botn solo necesitamos:
1. Desconectar el pinGND o Vcc de alimentacin del mdulo bluetooth.
2. Apretar el botn y dejar pulsado.
3. Poner de nuevo el pin de alimentacin del paso 1 SIN soltar el botn del paso 2.
4. Cuando vemas un parapedo lento, unos 3 segundos. Soltamos el botn. Los parpadeos
son mucho ms lentos.
Ya estamos en modo master.
En el mdulo sin botn:
1. Desconectamos un pin de alimentacion del mdulo bluetooth (como antes).
2. Pinchamos el pin Key del mdulo a 3.3v de Arduino. (NO 5v sino 3.3v)
3. Poner de nuevo el pin de alimentacin.
4. Cuando vemos el parapadeo lento, ya estamos en modo master. NO despinchar el pin
Key. Todo el proceso de configuracin debe estar pinchado.

Enviando comandos AT
Desde el mismo editro de Skech abrimo el Monitor Serial

Ahora en el terminal Poner bien lo que he marcado en la imgen:

Para comprobar que todo est bien, prueba a escribir AT+


Debes recibir un OK (como se ve en la imagen superior).
Si no lo recibes, intercambia los pin Rx y Tx por si los has pinchado al revs y enva de nuevo el
at+.
En Internet hay mucha informacin sobre los cdigos AT, yo voy a exponer los nicos que creo
necesarios.
Cambiar el nombre del distpositivo: AT+NAME:nuevoNombre
Cambiar contrasea a 5555: AT+PSWD:5555 Ver la versin: AT+VERSION
Para ver nombre o contrasea actual, se usa ni nada despues de los dos puntos.
Fuente: http://www.cecilioruiz.com/bluetooth-arduino/

B. Programa para encender leds mediante Android (aplicacin


ya creada).
Con lo que se explica a continuacin logre conectar la Tablet al
mdulo bluetooh y hacer que los leds se encienda y apaguen.

ARDUINO + BLUETOOTH

En este tutorial vamos a dotar al Arduino de comunicacin Bluetooth usando un mdulo Bluetooth,
veremos cmo configurarlo y cmo enviar y recibir datos desde un dispositivo Android.
Material
-Arduino Uno Rev 3
-Mdulo Bluetooth JY-MCU
-Dispositivo Android con Bluetooth
-Leds rojo, amarillo y verde
-Resistencias 220 ohms x 3, 5K6, 10K

Mdulo Bluetooth
El Bluetooth es un estndar de comunicacin inalmbrica que permite la transmisin de datos a travs de
radiofrecuencia en la banda de 2,4 GHz. Existen muchos mdulos Bluetooth para usarlos en nuestros
proyectos de electrnica, pero los ms utilizados son los mdulos de JY-MCU, ya que son muy
econmicos y fciles de encontrar en el mercado. Son mdulos pequeos y con un consumo muy bajo que
nos permitirn agregar funcionalidades Bluetooth a nuestro Arduino. Estos mdulos contienen el chip con
una placa de desarrollo con los pins necesarios para la comunicacin serie.
Existen dos modelos de mdulos 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 mdulo, mientras que en modo maestro es el mdulo quien se
conecta con un dispositivo.
Fsicamente, los dos mdulos son muy parecidos, solo varan algunas conexiones. Los pins que
encontraremos son los siguientes:
-Vcc: Alimentacin del mdulo entre 3,6V y 6V.
-GND: La masa del mdulo.
-TXD: Transmisin de datos.
-RXD: Recepcin de datos a un voltaje de 3,3V.
-KEY: Poner a nivel alto para entrar en modo configuracin del mdulo (solo el modelo HC-05)
-STATE: Para conectar un led de salida para visualizar cuando se comuniquen datos.

Comandos AT
Los comandos AT son un tipo de comandos que sirven para configurar el mdulo Bluetooth a travs de un
microcontrolador, un ordenador o con cualquier dispositivo que posea una comunicacin serie (Tx/Rx).
Son unas instrucciones que nos permiten cambiar los baudios del mdulo, el PIN, el nombre, etc. Para
usar los comandos AT el mdulo Bluetooth no debe estar vinculado a ningn dispositivo (led rojo del
mdulo parpadeando). Segn las especificaciones del mdulo, el tiempo que se tiene que respetar entre el
envo de un comando AT y otro tiene que ser de 1 segundo. Si se enva un comando AT y en menos de un
segundo se enva otro, el mdulo no devuelve respuesta.
Ahora vamos a configurar el mdulo Bluetooth a travs de comandos AT enviados desde el Monitor
Serial del Arduino. El cdigo del Arduino necesario tanto por el mdulo HC-05 como el HC-06 es el
siguiente:
1
2
3
4
5
6
7
8
9
1
0
1
1
1
2
1
3
1
4
1
5
1
6
1
7
1
8
1
9
2
0
2
1
2

#include <SoftwareSerial.h> //Librera que permite establecer comunicacin serie en


otros pins
//Aqu conectamos los pins RXD,TDX del mdulo Bluetooth.
SoftwareSerial BT(10,11); //10 RX, 11 TX.
void setup()
{
BT.begin(9600); //Velocidad del puerto del mdulo Bluetooth
Serial.begin(9600); //Abrimos la comunicacin serie con el PC y establecemos
velocidad
}
void loop()
{
if(BT.available())
{
Serial.write(BT.read());
}
if(Serial.available())
{
BT.write(Serial.read());
}
}

2
2
3

Entre los dos modelos de mdulo Bluetooth existen diferencias a la hora de enviar los comandos AT:

HC-06
En el HC-06 solo se necesitan cuatro pins: Vcc, GND, TXD y RXD. El pin KEY no es necesario.
Al enviar un comando AT no se debe enviar ningn carcter de LF (nueva lnea) ni CR (retorno de carro)
al final del comando. En el Monitor Serial del Arduino tenemos que poner No hay fin de lena.

Los comandos AT que se pueden enviar en este mdulo son los siguientes:

Comando AT

Descripcin

Respuesta

AT

Test de comunicacin.

Responde con un OK

Retorna la versin del Modulo

AT+VERSION

AT+BAUDx

OKlinvorV1.8
Configura la velocidad de trasmisin del AT+BAUD4 Configura la
modulo segn el valor de x1 = 1200 bps velocidad a 9600 baud
rate Responde con
OK9600
2 = 2400 bps

3 = 4800 bps
4 = 9600 bps (por defecto)

5 = 19200 bps
6 = 38400 bps
7 = 57600 bps
8 = 115200 bps
9 = 230400 bps
A = 460800 bps
B = 921600 bps
C = 1382400 bps
Configura el nombre con el que se
AT+NAMEx visualizara el modulo, soporta hasta 20
caracteres

AT+NAMEDIYMakers
Configura el nombre del
modulo a DIYMakers
Responde con
OKsetname

Configura el Pin de acceso al modulo


AT+PINxxxx (password).1234 por defecto.

AT+PIN1122 Configura
el pin a 1122 Responde
con OKsetPIN

Una vez compilado el cdigo en el Arduino, abrimos el Monitor Serial y enviamos el comando AT,
vemos que el mdulo Bluetooth nos responde con un OK.

HC-05

El HC-05 es necesario poner el pin KEY del mdulo a nivel alto (5V) para enviar comandos AT. Adems,
al enviar un comando AT hay que enviar un carcter de LF (nueva lnea) y de CR (retorno de carro) al
final del comando. Por lo tanto, en el Monitor Serial de Arduino pondremos Ambos NL & CR.

En el HC-05 se pueden enviar muchos ms comandos AT que en el HC-06. Aqu os dejamos un archivo
pdf con todos los comandos AT.

Recibir datos de un dispositivo Android


Ahora que ya sabemos cmo conectar y configurar un mdulo Bluetooth en nuestro Arduino, vamos a
vincularlo a un dispositivo Android con Bluetooth y enviar datos al Arduino mediante la aplicacin
BlueTerm, que es un emulador de terminal que permite comunicarse con un dispositivo Bluetooth para
enviar y recibir informacin va serie. La app es gratuita y se puede descargar desde este enlace.
Conectaremos tres leds de diferentes colores al Arduino y mediante unos comandos que ingresaremos en
la app BlueTerm los encenderemos y apagaremos. En este ejemplo hemos usado un mdulo HC-06 pero
se puede usar tambin un HC-05 ya que no hay diferencia en este caso.

Cdigo Arduino
1
2
3
4
5
6
7
8
9
1
0
1
1
1
2
1
3
1
4
1
5
1
6
1
7
1
8
1
9
2
0
2
1
2
2
2
3
2

/*
www.diymakers.es
by A.Garca
Arduino + Bluetooth
Tutorial en: http://diymakers.es/arduino-bluetooth/
*/
#include <SoftwareSerial.h> //Librera que permite establecer comunicacin serie en
otros pins
//Aqu conectamos los pins RXD,TDX del mdulo Bluetooth.
SoftwareSerial BT(10,11); //10 RX, 11 TX.
int green=4;
int yellow=5;
int red=6;
char cadena[255]; //Creamos un array de caracteres de 256 cposiciones
int i=0; //Tamao actual del array
void setup()
{
BT.begin(9600);
Serial.begin(9600);
pinMode(green,OUTPUT);
pinMode(yellow,OUTPUT);
pinMode(red,OUTPUT);
}
void loop()
{
//Cuando haya datos disponibles
if(BT.available())
{
char dato=BT.read(); //Guarda los datos carcter a carcter en la variable "dato"
cadena[i++]=dato; //Vamos colocando cada carcter recibido en el array "cadena"
//Cuando reciba una nueva lnea (al pulsar enter en la app) entra en la funcin
if(dato=='\n')
{
Serial.print(cadena); //Visualizamos el comando recibido en el Monitor Serial
//GREEN LED

4
2
5
2
6
2
7
2
8
2
9
3
0
3
1
3
2
3
3
3
4
3
5
3
6
3
7
3
8
3
9
4
0
4
1
4
2
4
3
4
4
4
5
4
6
4
7
4
8
4
9
5
0
5
1
5
2
5
3
5
4
5
5
5
6
5

if(strstr(cadena,"green on")!=0)
{
digitalWrite(green,HIGH);
}
if(strstr(cadena,"green off")!=0)
{
digitalWrite(green,LOW);
}
//YELLOW LED
if(strstr(cadena,"yellow on")!=0)
{
digitalWrite(yellow,HIGH);
}
if(strstr(cadena,"yellow off")!=0)
{
digitalWrite(yellow,LOW);
}
//RED LED
if(strstr(cadena,"red on")!=0)
{
digitalWrite(red,HIGH);
}
if(strstr(cadena,"red off")!=0)
{
digitalWrite(red,LOW);
}
//ALL ON
if(strstr(cadena,"on all")!=0)
{
digitalWrite(green,HIGH);
digitalWrite(yellow,HIGH);
digitalWrite(red,HIGH);
}
//ALL OFF
if(strstr(cadena,"off all")!=0)
{
digitalWrite(green,LOW);
digitalWrite(yellow,LOW);
digitalWrite(red,LOW);
}
BT.write("\r"); //Enviamos un retorno de carro de la app. La app ya crea una
lnea nueva
clean(); //Ejecutamos la funcin clean() para limpiar el array
}
}
}
//Limpia el array
void clean()
{
for (int cl=0; cl<=i; cl++)
{
cadena[cl]=0;
}
i=0;
}

7
5
8
5
9
6
0
6
1
6
2
6
3
6
4
6
5
6
6
6
7
6
8
6
9
7
0
7
1
7
2
7
3
7
4
7
5
7
6
7
7
7
8
7
9
8
0
8
1
8
2
8
3
8
4
8
5
8
6
8
7
8
8
8
9
9

0
9
1
9
2
9
3
9
4
9
5
9
6
9
7
9
8

El cdigo es bastante simple. Primero creamos un array de 256 posiciones tipo char llamado cadena para
almacenar los caracteres que recibiremos de la app. Cuando haya datos disponibles los vamos guardando
uno por uno en forma de carcter en la variable dato. Despus ponemos estos caracteres por orden en el
array cadena. Cuando reciba un carcter de fin de lnea (\n), se compara el texto almacenado en el array
con el texto que deseamos. Para hacer la comparacin se usa la funcin strstr() que procede de C++ y que
permite encontrar partes de texto en un String. Despus de esto, se limpia el array poniendo a 0 todas las
posiciones usadas para recibir el siguiente comando.

Configurar app Android


Una vez descargada la app la abrimos y en ajustes ponemos Conectarse a un dispositivo.

Pulsamos Buscar dispositivos y escogemos nuestro mdulo Bluetooth que en nuestro caso le hemos
puesto el nombre DIYMakers. Si no lo habis cambiado pondr por defecto LINVOR o HC-06.

Ponemos el PIN del mdulo. Si no lo habis modificado ser 1234.

Despus de esto, arriba a la derecha pondr conectado:<nombre> Significa que tenemos asociado nuestro
dispositivo Android con nuestro mdulo Bluetooth y el led de este deja de parpadear y se queda fijo.

Luego solo hay que poner los comandos para encender y apagar los leds. Cuando se escribe un comando
tenemos que pulsar Enter del teclado para enviarlos al Arduino. En el terminal no se pueden borrar
caracteres, por lo que si nos equivocamos pulsamos Enter y lo volvemos a escribir.

Al cargar en arduino el programa detallado en lo anterior y al utilizar la app


BlueTerm, pude encender y apagar leds. Esto quiere decir que el mdulo
bluetooh est bien configurado.
El siguiente paso ser crear mi propia app y el cdigo para encender leds.

C. Programa para encender leds


D. Creacin del programa para android.
E.

También podría gustarte