Tutorial para recibir datos desde tu Arduino en aplicación Android mediante conexión bluetooth

Ya hemos visto cómo crear una aplicación simple que controla cada una de las salidas del arduino enviando comandos mediante una conexión bluetooth para controlar motores, leds, relés o cualquier tipo de módulos en el Tutorial para controlar tu Arduino desde Android mediante conexión bluetooth, pero ahora quiero mostrarte cómo recibir datos desde el arduino.

El proceso es más que simple, así que te voy a enseñar algunos ejemplos de lo que se podría hacer para mejorar tus habilidades y hacerte una idea de lo que se podría crear con esta configuración.

Materiales:

  • Módulo bluetooth HC-06
  • Potenciómetro.
  • Arduino UNO.
  • Sensor de distancia.
  • Dispositivo Android.
  • Cables tipo dupont.
  • Protoboard.

 

¿Cómo recibir señales Bluetooth de un potenciómetro con Arduino?

Conexiones

He usado el Módulo bluetooth HC-06, el cual tiene una comunicación UART de rx y tx así que esta es la conexión que se tiene que hacer entre el módulo y el arduino como se muestra en el siguiente esquema.

Antes de correr un código modificado asegúrate de desconectar los pines rx y tx, ya que el arduino usa esa misma comunicación para cargar el código al chip y no puede tener nada conectado en esos pines mientras lo hace.

Conecta 5 voltios y tierra al potenciómetro, el pin de medio va conectado al pin analógico A0 del arduino para luego obtener su valor mediante el código.

Código

Primero obtenemos el valor de la entrada A0 y la dividimos entre 205 para dividir la señal de 10 bits (1024 puntos) entre el número de voltios (5v), de esta manera obtendremos valores entre 0 y 5.

 

Como el valor que tenemos es de tipo flotante y podría tener decimales usaremos la función serial.print para enviar el valor en formato de texto, este sería el código final correspondiente a este esquema, ya que tan sólo basta con enviar el valor de la lectura para posteriormente procesarla en la app Android.

 

 

Para crear nuestra aplicación, al igual que en el tutorial anterior, usaremos una aplicación en línea llamada App Inventor, para ello abriremos el navegador y buscamos la aplicación de Google App Inventor, probablemente deberías hacer una nueva cuenta usando tu Google Mail.

Crea tu nueva cuenta (si es necesario), e ingresa a App Inventor. Si esta es la primera vez que usas la aplicación, deberías comenzar un nuevo proyecto.

Ahora bien, vamos a crear nuestro proyecto.

App Android

Primero, debes dar clic en iniciar nuevo proyecto, y le daremos un nombre, el cual en este caso se llamará Room_control2.


En la imagen que se muestra a continuación, podrás observar como se muestra la pantalla principal. En la izquierda tenemos una paleta con todos los elementos que puedes agregar, y en la derecha es donde estableceremos las propiedades para cada elemento insertado.


En ajustes de pantalla puedes cambiar el cambiar el nombre de pantalla, su color de fondo y la orientación de la misma.
En este caso se estableció un fondo de pantalla color gris, y se le dio una orientación vertical, en la pestaña de componentes. Puedes observar que sólo tenemos una pantalla.

Diseño

Ahora bien, primero tenemos que añadir la lista de conexión de bluetooth, añadiré una disposición horizontal y dentro de ella un selector de lista, esto contendrá la lista de todos los dispositivos bluetooth sincronizados con el teléfono.

Le pondré a este selector de lista una imagen con el ícono de una conexión de bluetooth, a continuación añade una disposición horizontal más y dentro de esta coloca tres etiquetas: la primera tendrá la etiqueta de valor, la última tendrá la etiqueta de voltios y la del medio tendrá los valores recibidos tal como se muestra en la siguiente imagen.

Finalmente, debemos añadir los componentes no visibles, primero el cliente de bluetooth y luego el reloj.

En el tutorial anterior no necesitamos este reloj ya que para enviar datos no es necesario tener todo bien sincronizado, pero para recibir los datos sí que lo es, por lo que configuramos los intervalos del temporizador a 100 milisegundos y ahora vamos a la codificación de bloques de esta aplicación.

Como antes primero debemos crear la parte de conexión, ahora añadimos el bloque de selección para el selector de lista y relacionamos los elementos a las direcciones bluetooth que tendrá el teléfono.

Después de seleccionar el dispositivo bluetooth nos conectamos con este módulo seleccionando estos bloques.

Muy bien, ahora vamos a recibir los datos, inicia una variable global y le doy el nombre de datos recibidos y un valor de un formato de texto de 0.0 ya que ese será el valor inicial.

Ahora cada vez que se coloca un bucle en el temporizador comprobaremos si tenemos una conexión bluetooth y si está establecida. En caso afirmativo verificamos si hay datos hacia el teléfono verificando si hay bytes para recibir que sean mayor a 0.

En caso afirmativo, establecemos el valor de los datos recibidos en la variable para el texto recibido con estos bloques y finalmente imprimimos en la etiqueta del medio el texto que acabamos de recibir y ya está, seleccionamos compilar y una vez que la aplicación esté lista copiala en la memoria del teléfono.

Abre el administrador de los archivos e instala la aplicación y asegúrate de habilitar la instalación de las aplicaciones desconocidas en la configuración del teléfono.

Ahora debes habilitar las conexiones de bluetooth y buscar dispositivos, arrancamos el arduino, subimos el código y una vez subido conectamos los pines de rx y tx del módulo de bluetooth.

Una vez encuentras el dispositivo HC-06 conéctate con la contraseña 0000″ o “1234”.

 

Ahora abre la aplicación y haz clic en el icono de bluetooth para abrir la lista de dispositivos que hemos añadido en los bloques de la aplicación, selecciona el HC-06 y listo, ahora estamos recibiendo el voltaje del potenciómetro.

¿Cómo recibir señales Bluetooth de un sensor de distancia con Arduino?

Este ejemplo fue muy básico, podríamos hacer lo mismo pero con este sensor de distancia, en es

 

te caso cada vez que detecto algo, cambiará el color de la etiqueta a verde y escribirá “detectado”.

Lo accionaremos enviando la letra “d” para detectar y la “n” para dejar de hacerlo, en los bloques del código hago esto usando la instrucción if para averiguar si se ha detectado algo o no y luego cambiamos el color de la etiqueta a rojo o verde y escribimos detectado o escribimos nada.

El código es el siguiente:

 

Con  eso basta para configurar nuestro sensor de movimiento:

 

¿Cómo graficar valores obtenidos mediante bluetooth con Arduino?

Código

Para el siguiente ejemplo usaremos la función serial.write, ya que enviaré datos con valores inferiores a 255 que son 8 bits.

App Android

Como lo que queremos es graficar el valor del potenciómetro, añadimos una nueva disposición horizontal en la aplicación de app inventor y, dentro de él, un nuevo gráfico como se muestra en la siguiente imagen.

 

El resto de la parte visual de la aplicación es igual que la anterior.

Diseño

Ahora, en la selección de bloques colocamos todo esto en el ciclo del temporizador, luego de nuestro segundo if tal y como se muestra en la siguiente imagen:

Estos bloques harán lo siguiente, en la imagen indicamos cada una de las instrucciones:

1.- Verificamos si hay datos para recibir,

2.- Guardamos el valor anterior de los datos “x” e “y”.

3.- Aumentamos el valor “x” cada ciclo.

4.- Luego guardamos el nuevo valor de “y” recibido.

5.- Ahora trazamos una línea entre el último dato y el presente, esto creará un gráfico con los valores recibidos.

6.- Finalmente llegamos al valor “x” máximo que es el ancho total del gráfico.

7.- Reiniciamos el gráfico.

8.- Seguimos dibujando.

 

Guarda los cambios en la memoria de tu dispositivo y, como podrás ver, recibimos los datos del potenciómetro pero también graficamos su valor.

 

Esto podría ayudarte para hacer un proyecto bastante interesante, estos ejemplos fueron extremadamente simples si los juntamos con la última aplicación de android del tutorial anterior de arduino,  ya tendrías una app que envía y recibe datos desde el arduino, depende de ti cómo usarás esto para diseñar tus propias aplicaciones.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

ocho − tres =