Vamos a explicar de forma fácil cómo conectar y comunicar un módulo Bluetooth con Bitbloq, para ello realizaremos un repaso a modo de tutorial para aquellos que les cueste llegar a la solución.

Para empezar solo deberemos de conectar el módulo Bluetooth a nuestra placa .

Para este ejemplo disponemos de un módulo Bluetooth HC-05 que podemos conectar al puerto Serial de Arduino. Resumidamente hemos de conectar los pines de recepción (RX) y transmisión (TX); que por defecto son los pines 0 y 1 respectivamente de nuestra placa con los pines de transmisión (TX) y recepción (RX) del módulo de forma inversa; tal y como se indica en la figura.

hc-05-serialUNO_bbPara mayor comodidad, tal y como explico en un post anterior, conectaremos el módulo a los pines 10 y 11, en lugar de al 0 y al 1; mediante el uso de la librería softwareSerial de Arduino.

Desde Bitbloq podemos asociar el mismo comportamiento en la sección Hardware y utilizaremos una comunicación por USB para observar la respuesta de nuestra placa. IMPORTANTE: A la hora de arrastrar los bloques, hay que arrastrar primero el componente de USB y después el módulo Bluetooth que vamos a utilizar. Si  no, no podremos leer nada.

Una vez creado este diagrama procederemos al desarrollo de nuestro programa en Bitbloq. Para ello nos dirigiremos a la sección de Software y crearemos un sencillo ejemplo para observar cuál es la información que leeremos a través de la aplicación que tenemos instalada en nuestro móvil.

SimpleBluetoothPara entenderlo de una forma rápida, la programación con Arduino se basa en 3 apartados. El primero es la creación de variables globales, funciones y objetos. La segunda es la función setup inicialización de la placa que se ejecuta una sola vez y el bucle loop es un bucle que se ejecuta repetidamente que nos informa de los cambios que pueden ocurrir en los valores leidos por los sensores.

Lo primero que haremos, es crear una variable de texto para guardar el valor que leeremos a través del Bluetooth.

La inicialización no hace falta que pongamos nada, ya que a sección hardware se encarga de asociar los pines e inicializar el puerto serie.

En el bucle leeremos los valores que obtenemos del bluetooth y en caso de que la longitud del texto sea mayor que 0 o que no sea vacío, nos lo enseñe por pantalla. Después identificaremos si el valor leido es una S y en caso de que así sea, nos aparezca un texto por el puerto serie. Luego explicaré el por qué.

Hecho esto nos dirigiremos a la aplicación Robopad++ instalada en nuestro móvil y leeremos los valores que obtendremos al apretar los distintos botones del interfaz.

Robopad++interfaceBT


 

Una vez instalada y si somos primerizos en esto, deberemos buscar con el móvil el dispositivo Bluetooth. Establecer la comunicación es muy fácil. Solo hay que apretar el botón azul de arriba a la izquierda y buscar el nombre de nuestro módulo Bluetooth. Por defecto todos los módulos tiene el mismo nombre (HC-05), así que tendremos que fijarnos en la dirección que tiene nuestro modelo concreto.

Cuando se establezca conexión; el LED pasará de parpadear un poco más lento y nos indicará que los Bluetooth del móvil y el HC-05 están emparejados.

La aplicación nos pedirá una contraseña de cuatro dígitos. Es superhipermegasecreta, así que no se la digáis a nadie.

El código es…………..mirad a los lados no vaya a ser que alguien lea esto…

Contraseña: 1234

Para vuestras contraseñas de seguridad espero que pongáis alguna más complicada.

Principalmente utilizaremos los siguientes botones de:

  • Arriba (Up) → U(SS)
  • Izquierda (Left) →L(SS)
  • Derecha (Right) →R(SS)
  • Abajo (Down)→ D(SS)
  • Stop →S
  • Modo siguelineas → I
  • Parar siguelineas → M

Y si abrimos el monitor serie de Bitbloq, o el de Arduino que lo mismo da, podremos observar lo siguiente.

MonitorSimpleBluetoothSi os habéis dado cuenta, y como se documenta anteriormente, cada botón está asociado a una letra, pero realmente no es así. El botón UP por ejemplo ejecuta las letras USS, estas 3 letras contienen una letra indicativa de UP y dos de Stop.

Por eso hay una función que verifica si solo leo una S o más para ejecutar una frase de que el valor leido es solo de una S.

Pero cuidado porque a veces puede ocurrir que la frase quede cortada, como me ha pasado al pulsar Down. Se supone que debe aparecer DSS, pero se me ha partido en DS y después escribe la S restante. Esta S perdida y huerfana hace que se ejecute la función de STOP y por ello se escribe “el valor es S”.

Esto puede ser una fuente de errores dependiendo de cómo queramos que se comporte nuestra placa. A partir de este momento, nuestra misión será asociar distintas instrucciones en función de los valores leidos. Pero deberemos tener cuidado a la hora de leer y gestionar la información leida por el Bluetooth.

Este ejercicio tan simple está publicado en el repositorio de Bitbloq con el nombre readBluetooth y a partir de aquí desarrollaremos nuestras comunicaciones para extender el comportamiento de nuestros robots.

El código generado es el siguiente, si se quiere copiar este programa para manejarlo desde el IDE de Arduino.


/***   Included libraries  ***/
#include 

/***   Global variables and function definition  ***/
SoftwareSerial puerto_serie_0(0, 1, 9600);
SoftwareSerial bluetooth_0(10, 11, 9600);
String BT_char = "";

/***   Setup  ***/
void setup() {}

/***   Loop  ***/
void loop() {
    BT_char = bluetooth_0.readString();
    if (BT_char.length() > 0) {
        puerto_serie_0.println(BT_char);
    }
    if (BT_char == "S") {
        puerto_serie_0.println("El valor es S");
    }
    delay(400);
}