Tutorial Arduino Bluetooth HC-05 o HC-06 con Android usando App Inventor 2 – PARTE 1

En este tutorial implementaremos la comunicación entre una placa Arduino UNO y un Smartphone utilizando Android para realizar dos sencillas cosas:

  • Primero: vamos a enviar comandos (datos) desde el Smartphone hacia Arduino para que pueda encender tres leds.
  • Segundo: leeremos del puerto analógico A0 una señal proveniente de un potenciómetro y desplegaremos su valor numérico en un cuadro de texto.


Definidas las dos tareas principales, no hay más que empezar listando los requerimientos de hardware y software, y para eso primeramente hablemos de los materiales necesarios:

  • Placa Arduino Uno
  • Módulo Bluetooth HC-05 o HC-06, si usas el módulo HC-05 debe estar configurado como esclavo y es el modo normal que traen de fábrica.
  • Cables de conexión de preferencia Dupont.
  • 3 Leds de diferente color para diferenciarlos fácilmente.
  • 3 Resistencia de 330 ohm.
  • Potenciómetro de 10k ohm.
  • Smartphone con Android.
  • Protoboard.
  • Herramientas como pinzas de corte, de punta etc.

Conexiones físicas en la placa Arduino

Primeramente debemos visualizar al módulo de comunicación inalámbrica HC-05, como una extensión del puerto serie, es decir, como si en vez de un cable que sirve como medio de conexión, utilizáramos un “cable inalámbrico” a esto se le llama transparencia en el uso del módulo Bluetooth.

En la realidad esto quiere decir que todo funciona igualmente y el puerto de comunicación que programamos el envío y recepción de datos es el puerto serial que trae Arduino y el módulo Bluetooth se conecta a las terminales Tx y Rx de la placa Arduino, tal como se muestra en la Figura 1.

Diagrama de conexión
Imagen de conexión de los leds, potenciómetro y módulo HC-05 a la placa Arduino UNO

También conectamos los leds de color rojo, verde y azul a las terminales 2,3 y 4 respectivamente.
Como debemos leer una señal analógica de nuestro potenciómetro, conectamos la terminal A0 de Arduino a la terminal de en medio de nuestro pot y las terminales de los extremos del pot se alimentan con +Vcc y GND (no importa el orden).

Nota* Antes de conectar el modulo Bluetooth es recomendable comprobar su funcionamiento simplemente alimentándolo y creando una conexión con tu teléfono, hecho esto lo conectamos y debemos tener cuidado en colocar los cables de datos (Tx, Rx) al arduino y jamás a Vcc o GND, porque quemaremos nuestro chip.

Algoritmo y código de programación en Arduino

Nuestro programa debe de configurar las terminales de los leds en modo escritura y la velocidad en el puerto serie a 9600. Cuando el puerto serie reciba un dato, este debe de leer el buffer de entrada y si encuentra un carácter que haya sido asignado a prender/apagar un led entonces realizar la acción y regresar un mensaje que se realizó la acción.

Así mismo debe de leer la entrada analógica A0 y transmitirla por el puerto serie hacia Android con un carácter que distinga entre este dato y un mensaje cualquiera, en este caso utilizaremos el símbolo de # (gato). Es decir, cuando Android reciba una cadena de caracteres que empiece con # sabrá que es un dato de nuestro sensor (pot en este caso) que debe de mostrar en pantalla.

En resumen, el algoritmo lo podemos visualizar en un diagrama de flujo como el siguiente:

Diagrama de flujo de algoritmo de control
Se muestra el diagrama de flujo de nuestro programa en Arduino

En este diagrama, para realizar ciertas acciones debemos saber el estado de cada uno de los leds, por lo que vamos agregar variables de tipo booleano que no los indiquen.

El código de nuestro programa en Arduino es el siguiente:

 



Pruebas preliminares de la tarjeta Arduino

Compilado el código y cargado a nuestra placa Arduino, verificaremos su funcionamiento usando el puerto serie de la computadora, por lo que abrimos nuestro monitor serial de Arduino verificando la velocidad de conexión a 9600 y el número de puerto correcto.

IDE de Arduino y monitor serial
Monitor serial comunicando la PC con nuestra placa Arduino para iniciar las pruebas

Debemos de ver los datos numéricos con el carácter # al inicio, y esos son los que envía el Arduino UNO desde la entrada analógica A0.

Ahora debemos comprobar el funcionamiento de los led, escribiendo el comando adecuado, es decir si quiero prender/apagar el led rojo escribo una “r” y doy enter.

Prender/Apagar el led rojo en Arduino
Siguiendo las pruebas para verificar que prende o apaga el led rojo
Prueba Preliminar Led Mensaje
Al enviar el comando “r”, Arduino nos regresa el mensaje que el led rojo cambio

Y debe enviarme el mensaje que cambio el Led Rojo. En la siguiente foto se ve el cambio en nuestro protoboard:

Protobard de control de un led a través de Arduino y puerto serie
Parte izquierda led apagado, parte derecha led encendido

Por otra parte, si envió o escribo varias veces la letra a, consecutivamente cambia el estado del Led Azul y se muestra en nuestra terminal del puerto serie.

Se muestra la terminal del puerto serie de Arduino
En esta ocasión enviamos comandos para prender y apagar el led azul.

Y debemos observar en nuestra placa que efectivamente, se prenden y apagan los leds de acuerdo a la letra de comando que le asignamos, si enviamos cualquier otra letra, nos muestra el mensaje de comando no reconocido.

Monitor serial recibiendo un comando no reconocido
Cuando no encuentra un comando, nos muestra el mensaje de no reconocido

Finalizamos las pruebas en esta etapa y aseguramos el funcionamiento de nuestro algoritmo en la placa de Arduino.

Pruebas preliminares con el módulo Bluetooth

Ahora verificamos el buen funcionamiento de nuestro módulo Bluetooth, esto es, con nuestro teléfono con Android vamos a instalar una aplicación que se comunique con el puerto serie, en la playstore de google buscamos la aplicación “S2 Terminal for Bluetooth Free” que tiene el icono siguiente:

Instalamos la aplicación BTTerm para probar nuestro código.
Instalamos la aplicación BTTerm para probar nuestro código.

Abrimos la aplicación y nos  muestra la siguiente pantalla:

Ventana principal de la aplicación BT Term

 

Nos vamos a conectar, por lo que le damos clic en el icono del enchufe (Parte superior derecha) y seleccionamos el dispositivo HC-05, primeramente nos muestra la MAC Address de nuestro dispositivo y después el nombre o ambos.

Seleccionamos nuestro dispositivo BT

Si no se encuentra nuestro módulo, debemos de sincronizarlo desde los ajustes del Bluetooth, recordando que por defecto los módulos HC-05 están configurados como modo esclavo (Esto significa que no hay que hacer alguna configuración extra al módulo) y con contraseña “1234” o “0000”.

Cuando se conecte con exito, nos debe de desplegar los valores que esta capturando del potenciometro con el prefijo #, y si enviamos una letra de comando (r, v, a) debe de prender/apagar el led seleccionado y regresar el mensaje de estado. Esto lo podemos ver en la siguiente imagen.

Se muestran los valores leídos (en color rojo) con el prefijo # y en azul el comando enviando, en este caso la letra r para cambiar el estado del led rojo.
Pantalla de la aplicación que nos muestra la interfaz de conexión serial Bluetooth

Con esto finalizamos la primera parte de nuestro tutorial de comunicación entre Arduino y Android, como conclusión se ha visto que el funcionamiento de nuestro módulo es totalmente transparente, es decir, jamás programamos nada respecto a su configuración, solamente lo conectamos a la placa Arduino y lo enlazamos a Android.

Espera la segunda parte, en la que vamos a desarrollar una aplicación para nuestro dispositivo Android a través de la plataforma App Inventor 2 del MITCon la finalidad de personalizar nuestra Interfaz Gráfica a nuestras necesidades especificas.

Aquí te presentamos el video:

Si tienes preguntas, dudas, comentarios, sugerencias acerca de este tutorial con gusto te las podemos responder, si necesitas ayuda en un proyecto más personal puedes acceder a nuestra hora gratis de asesoría en la semana por Periscope y si buscas algo más profesional, contratanos a través de nuestro correo ventas@gadgetas.com.

Si quieres que hagamos algún tutorial de un tema en especifico también no lo puedes pedir. Sin más que decir, nos vemos en el siguiente tutorial.

¡Suscribete a nuestro canal de youtube!

Patrocinadores




Entradas recientes

Augusto Valdez Written by:

Emprendedor, científico, desarrollador y vendedor, Biónico apasionado de la tecnología enfocada a la salud, Gurú de las TIC's, PAD y amante de la vida

23 Comments

  1. Omar Andres Garcia Baracaldo
    4 septiembre, 2015
    Reply

    es posible mediante esta app, poder tener una camara (ov7076) y recibir una foto mediente bluetooth??… no encuentro mucha informacion.. gracias de antemano.

    • 5 septiembre, 2015
      Reply

      Si es posible. Aunque no se me había ocurrido esa utilidad. En App inventor se utilizaría un canvas de imagen para verla. En la semana hago el tutoriales y lo publico.

  2. Milton Mendieta
    4 octubre, 2015
    Reply

    Pregunta: ¿Cómo podría enviar un código a través de un chat bluetooth que me muestre una imagen previamente guardada en la aplicación?

    Es decir, que si pulso un botón en uno de los dispositivos, no envíe la imagen, pero si un código para que esa misma imagen se muestre en el segundo dispositivo?

    Muchas Gracias…

    • 5 octubre, 2015
      Reply

      En App Inventor es muy sencillo, se debe hacer un bloque de selección de casos, y al momento de recibir el comando, cambiar la imagen. ¿Puedes especificar un poco más en que aplicación lo vas a usar?

  3. Aldo
    19 octubre, 2015
    Reply

    Gran vídeo me ha sido de gran ayuda ya me suscribí al canal, quisiera saber cuando suben la parte 2, la espero con ansias gracias! 😀

    • 19 octubre, 2015
      Reply

      Este miércoles ya lo estaré subiendo. ¡Saludos! y gracias por suscribirte.

      • Aldo
        19 octubre, 2015

        Que bien! gracias

  4. 1 diciembre, 2015
    Reply

    Amigp gostei muito do video, mas meu projeto quando coloco pra rodar vai tranquilo, mas quando do algum comando (rva) ele trava, e quando conecto no android ele não aparece o codigo, se puder me ajudar ficarei muito grato !!!

  5. Edaurdo García
    14 abril, 2016
    Reply

    En primer lugar enhorabuena por el tutorial.

    No he encontrado la segunda parte, y lo cierto es que creo que es lo que estoy buscando. Verás yo he conseguido activar salidas en el Arduino desde botones en el Android con el APP Inventor, y también he conseguido visualizar en un text-box o label el texto enviado desde Arduino.

    Pero lo que necesito es separar de la cadena de texto recibida en la app, lo que es datos de sensores, de lo que son “alarmas”. Imagino que por eso a unos datos les has puesto la almohadilla. En mi aplicación, unas veces el Arduino envía mensajes de estado del tipo a tu “Comando no reconocido”, pero otras veces nos debe indicar si una variable está a true o false, y eso, por una lado no necesito mostrarlo en el TEXT-BOX, y por otro debo detectarlo como variable para hacer visible o no una imagen. Creo que la solución está en usar adecuadamente los comandos SPLIT o Segment, pero no lo he conseguido.

    Agradezco cualquier pista. Muchas gracias

  6. carlos
    30 noviembre, 2016
    Reply

    buen trabajo, gracias… serias tan amable de compartir el aia de app,..
    saludos.

  7. Nicolas
    8 diciembre, 2016
    Reply

    Hola una consulta…podrias mostrar como programaste el boton de AUTO SCROLL para visualizar los datos.

  8. ALBERT
    20 diciembre, 2016
    Reply

    excelente explicación , lo que gustaría saber el la lógica que se sigue para saber que bloque utilizar

  9. Rakwong
    25 marzo, 2017
    Reply

    Set the starting line from the bottom corner anyway.

  10. Julian
    18 abril, 2017
    Reply

    Che, para cuando la parte 2??????

  11. 7 mayo, 2017
    Reply

    Merci bien pour votre travail,
    Est-ce-que vous pouvez m’aider pour réaliser le même travail mais avec ethernet shield et merci.

  12. 7 mayo, 2017
    Reply

    Merci bien pour votre travail,
    Est-ce-que vous pouvez m’aider pour réaliser le même travail mais avec ethernet shield et merci.

  13. Deisy
    6 junio, 2017
    Reply

    Hola es un excelente tutorial, una pregunta es que conecte el S2 Terminal a un HC-06 y no me muestra datos, sabes porque podría ser esto?

  14. 13 septiembre, 2017
    Reply

    Me gusta la forma en la que redactas, muchas gracias, seguiré leyendo tu blog.

  15. EDGAR TEHUANZITL MORENO MARTINEZ
    14 octubre, 2017
    Reply

    Hola soy nuevo en app inevntor y mi pregunta es, ¿cómo puedo poner mensajes en mi app según lo que valla leyendo el potenciometro?

  16. Fernanda
    25 noviembre, 2017
    Reply

    Buenísimo tutorial pero cómo podría hacerle si quisiera graficar los datos que mande arduino de dos potenciómetros?

    • 28 noviembre, 2017
      Reply

      En mi canal de youtube voy a hacer un directo de como lo puedes hacer, ya tengo el código del programa.

Deja un comentario

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