Objetivos
-
- Conectar los módulos Bluetooth a Arduino.
- Presentar una aplicación Android llamada ArduDroid.
- Ver como podemos usar ArduDroid para controlar Arduino desde el movil.
- Montar un circuito de ejemplo.
Material requerido.
Trabajando con HC-05 y Android
Una vez que hemos visto cómo usar los comandos AT para programar los módulos Bluetooth, en las sesiones anteriores, podemos pasar a la parte fácil que es usar nuestros móviles Android para controlar cualquier proyecto con BlueTooth. Es tan sencillo como conectarnos al módulo y escribir un pequeño programa que gobierne el flujo de control.
Podríamos hacerlo con comandos de texto directos, pero es demasiado poco elegante y aquí nos gustan las cosas presentables, por lo que vamos a usar un programa de lo más simpático, disponible para Android que se llama ArduDroid.
Está escrito por TechBitar, y podéis encontrar aquí su página Ardudroid.
Básicamente es un programa Android con botones y deslizadores, más un esquema de programa Arduino que podemos usar para enviar y recibir comandos de una forma presentable, y que además funciona muy bien.
Para ello necesitaremos que descarguéis ArduDroid de la GooglePlay para Android y lo instaléis en vuestro teléfono.
- Siento tener que decir, de nuevo, que los módulos HC-05 y HC-06 no son capaces de conectar con los móviles de Apple o al menos yo no lo he conseguido
Después basta con conectar cualquiera de los dos módulos a nuestros Duinos con un par de cables para GND y Vcc más Rxd y Txd.
Vamos a dedicar esta sesión a ver como conectamos uno de los módulos para la conexión normal de trabajo y cómo usar el Ardudroid para gobernar mensajes de texto, pines digitales y ya puestos algún pin PWM.
Diagrama de conexión
Vamos a montar inicialmente un pequeño circuito con tres diodos LED para que veamos cómo controlarlos desde el móvil, y luego iremos complicando un poco más el montaje (No, no es una amenaza).

El montaje de la protoboard es trivial para gente tan experimentada:

El programa de control ArduDroid
Ardudroid incluye un programa Arduino, que podemos utilizar como esqueleto para nuestros propios proyectos. Pero nosotros vamos a hacer algunos cambios en la conexión que él hace, porque no me gusta nada que usemos los pines 0 y 1 para comunicarnos con Arduino, así que nosotros usaremos los pines 2 y 3 para la conexión con el módulo BlueTooth.
- Creo que ya comentamos que si usamos los pines 0 y 1 nuestro código funcionara, pero anularemos la conexión con el PC vía USB, que usa los pines 01 y 1.
- El autor, que es un hombre de mundo, no tiene problemas, porque prueba los programas con un segundo módulo BT, y cuando tiene el programa pulido, no necesita volver a reprogramar, pero yo soy un poco más torpe y prefiero no cerrar esa puerta mantener abierto el USB para mensajes por ejemplo.
Vamos a ir presentando el programa de control de Arduino en pequeñas dosis para evitar asustar a nadie, y que los sufridos lectores huyan despavoridos, y de ese modo, además, podremos ir viendo poco a poco las diferentes secciones del programa, que estoy seguro ayudara a su mejor comprensión.
En primer lugar, necesitamos saber, que el programa Ardudroid envía todos los comandos con una sintaxis sencilla. Todas las ordenes empiezan por * y terminan en #, y si la orden incluye múltiples datos, esto vienen separados por el símbolo |
Cuando ArduDroid envía una orden típica, es algo así: *10|3|2#
Por eso, porque las órdenes se envían codificadas, vamos a empezar con algunas definiciones previas:
#define START_CMD_CHAR '*' #define END_CMD_CHAR '#' #define DIV_CMD_CHAR '|' #define CMD_DIGITALWRITE 10 #define CMD_ANALOGWRITE 11 #define CMD_TEXT 12 #define CMD_READ_ARDUDROID 13 #define MAX_COMMAND 20 // max command number code. used for error checking. #define MIN_COMMAND 10 // minimum command number code. used for error checking. #define IN_STRING_LENGHT 40 #define MAX_ANALOGWRITE 255 #define PIN_HIGH 3 #define PIN_LOW 2
Además usaremos la librería SoftwareSerial, para hablar con el modulo BlueTooth, mediante los pines digitales 2 y 3:
#include <SoftwareSerial.h> SoftwareSerial BT1(3, 2); // RX | TX
Definiremos unas variables para contener los valores que leeremos del comando:
int ard_command = 0; int pin_num = 0; int pin_value = 0;
El cuerpo principal del loop es muy sencillo, Vamos a empezar recibiendo mensajes de texto:
Y aquí teneís un minivídeo con el resultado del programa
Resumen de la sesión
-
- Hemos presentado el programa ArduDroid. Una aplicación de lo más simpática para manejar vuestros proyectos a través del móvil.
- Hemos incluido un ejemplo de circuito para manejar desde el móvil.
- Hemos presentado como complementar la aplicación Android con un programa base que nos proporciona Ardudroid, para manejar nuestros dispositivos.