EscornaAppBLE: MIT App Inventor 2

Introducción

En este tutorial vamos a aprender cómo realizar una aplicación para dispositivos Android con el entorno de desarrollo MIT App Inventor 2 con el objetivo de controlar mediante Bluetooth Low Energy (BLE) el robot Escornabot. 

Para dotar de conectividad BLE a nuestro querido Escornabot utilizaremos el módulo HM-10.

NOTA: El módulo bluetooth HM-10 lo conectaremos al Escornabot y es conveniente utilizar un divisor de tensión para no dañar el módulo si utilizamos la versión DIY. Para las versiones Compactus y Singularis esto no es necesario ya que dispone de un conector específico con un divisor de tensión ya integrado.

La idea es hacer una aplicación sencilla que tenga cuatro flechas que representen los movimientos de avanzar, retroceder, girar a la izquierda y girar a la derecha y los botones ejecutar y resetear.

También necesitaremos añadir los botones para poder escanear y conectar dispositivos Bluetooth Low Energy (BLE). 

El aspecto final será el que se muestra en la siguiente imagen:

Obteniendo los UUIDS

Necesitaremos tener unos conceptos básicos de la tecnología Bluetooth Low Energy  para entender su funcionamiento  (sobre todo entender los conceptos de servicios y características).

En los siguientes enlaces tenéis unas guías donde se explica su funcionamiento:

https://www.arduino.cc/en/Reference/ArduinoBLE

https://learn.adafruit.com/introduction-to-bluetooth-low-energy/introduction

Una vez entendido los conceptos básicos de la tecnología Bluetooth Low Energy que se explican en los enlaces anteriores vemos que nuestro sistema Bluetooth estará formado por los siguientes dispositivos:

    • Dispositivo central:  Teléfono móvil con la aplicación que crearemos.
    • Dispositivo periférico: Arduino Nano de nuestro Escornabot + módulo BLE HM-10.

Lo siguiente que tendremos que hacer es identificar qué servicio y qué característica tiene nuestro dispositivo periférico HM-10 para que nuestro dispositivo central se pueda conectar y enviarle instrucciones. Para ello:

    • Conectaremos el módulo HM-10 al Escornabot y activaremos el robot.
    • Utilizaremos la aplicación LightBlue® Explorer ( o equivalente) para vincular el módulo HM-10 a nuestro móvil y descubrir el servicio y característica que nos interesa para nuestro propósito. 

    • Una vez detectado el dispositivo, nos conectaremos a él y veremos que dentro del apartado de GATT SERVICES & CHARACTERISTICS dispone del servicio con el identificador 0000ffe0-0000-1000-8000-00805f9b34fb que es el que nos interesa:

    • Dentro de ese servicio veremos que existe la característica con el identificador 0000ffe1-0000-1000-8000-00805f9b34fb que es la que nos interesa y que tiene propiedades de escritura y lectura ( en nuestro proyecto solo utilizaremos la propiedad de escritura para enviar las instrucciones al robot):

    • Desde la propia aplicación podríamos enviar instrucciones al robot para comprobar su funcionamiento (Ejemplo: Escribir n\n  dentro del apartado WRITTEN VALUES y darle a WRITE→ esta es la instrucción de ir hacia adelante eligiendo previamente en “Data format” → UTF-8 String.)

En este punto ya tenemos la información de los identificadores del servicio y de la característica del módulo esclavo para que el módulo central se pueda conectar y enviarle instrucciones. En este caso son los siguientes:

Servicio UUID:  0000ffe0-0000-1000-8000-00805f9b34fb

Característica UUID: 0000ffe1-0000-1000-8000-00805f9b34fb

NOTA: Estos identificadores son los típicos que os vais a encontrar en vuestros módulos HM-10 y son los que ya se encuentran incluidos en la aplicación pero si fueran diferentes con la operativa anteriormente descrita los podéis obtener.

Programación

Lo primero que tendremos que realizar es crear un proyecto nuevo desde la Web de MIT App Inventor 2 e instalar (importar) la última versión de la extensión BluetoothLE.aix para poder tener disponibles los bloques necesarios para trabajar con Bluetooth Low Energy.

    • Enlace de descarga de la extensión BluetoothLE.aix (descargar) 
    • Tutorial de la extensión (ver)

En el siguiente documento en inglés (ver) se explica cómo importar la extensión y programar los bloques para poder escanear y vincular un dispositivo Bluetooth Low Energy con esta extensión:

Empezaremos creando dos variables globales para poner los identificadores (UUID) tanto del servicio como de la característica asociada al servicio que tendrá el dispositivo periférico (en nuestro caso el robot):

Crearemos una función que inicialice los elementos de la pantalla a sus valores por defecto:

Los siguientes bloques representan la gestión de los eventos para escanear y conectar dispositivos Bluetooth Low Energy y de esta manera poder vincular la aplicación con nuestro robot:

Los siguientes bloques representan las funciones que envían la instrucciones (eventos “TouchDown”) al robot por Bluetooth Low Energy cada vez que se interactúa con cada una de las flechas que representan los movimientos y los botones de ejecutar y resetear:

Finalmente se han añadido dos bloques para el control de errores:

En el siguiente enlace tenéis el proyecto completo para que podáis replicarlo o modificarlo en vuestra cuenta de MIT App Inventor 2 así como el fichero apk para instalarlo en el móvil (recordar de activar en vuestro móvil que se puedan instalar aplicaciones con origen desconocido)

https://github.com/avilmaru/escornaAppBLE