Conectar placa arduino (bq zum) por Bluetooth en Android

Con Cordova o Phonegap tenemos la gran ventaja de desarrollar una sola vez y que esta sea compatible para multiple plataformas móviles en las que se encuentran Android y IOS.

Cuando vamos a desarrollar una aplicación que hace uso de elementos nativos de la plataforma, es decir no solo es una capa de presentación web si no que utilizamos elementos físicos como el giroscopio, wifi o bluetooth en la mayoría de los casos nos vemos obligados de utilizar plugins de cordova/phonegap.

En este caso vamos a utilizar cordova-plugin-bluetooth-serial.

La aplicación de ejemplo consiste en conectar nuestro móvil con una placa Arduino que dispone de modulo de Bluetooth, en este caso bq zum pero se puede utilizar cualquier otra añadiendo el modulo de Bluetooth.

Para ello:

  • En la placa Arduino conectaremos un LED en el pin 13.
  • Cargamos el programa en la placa.
  • El código de la App lo tenemos dispone en el repo de github.

  • Nos descagamos el código o hacemos git clone:
    git clone git@github.com:Luisangonzalez/cordova-bluetooth-serial.git

  • Accedemos al directorio: cd cordova-bluetooth-serial
  • Asumiendo que tenemos instalado el SDK de Android.
  • Con cordova instalado y configurado compilamos la APP:
    • Añadimos la plataforma android: $ cordova platform add android
    • Instalamos el plugin bluetooth: $ cordova plugin add cordova-plugin-bluetooth-serial
    • compilamos la app: $ cordova run

Si observamos el código Arduino que hemos subido a la placa consiste en estar leyendo constantemente y en el caso de leer “b” encender el led y en caso “c” apagar el led.

if (bluetooth_0.available() > 0) {
        bluetooth_0.println("Avaliable");
        read = bluetooth_0.readString();
        if (read == "b" || ledon) {
            bluetooth_0.print("ON");
            digitalWrite(led_0, HIGH);
            ledon = true;
        } else if (read == "c" || !ledon) {
            bluetooth_0.print("OFF");
            digitalWrite(led_0, LOW);
            ledon = false;
        }
    }

En el caso del código de cordova observamos en www/js/index.js :

  • Al comienzo del archivo en comentarios incluimos las funciones globales como LED13ON y LED13OFF que posterimente indicamos:
    /*
    global cordova, console, $, bluetoothSerial,refreshButton, deviceList, disconnectButton, connectionScreen, messageDiv, led13ButtonON,led13ButtonOFF
    */
    
  • A parte de las funciones para conectar y emparejar las propias que hemos realizado para enviar “b” para encender el LED:
    LED13ON: function() {
    bluetoothSerial.write("b");
    }
    

y “c para apagarlo”:

LED13OFF: function() {
  bluetoothSerial.write("c");
}

En el caso de www/index.html:
para hacer uso de las funciones de index.js simplemente añadimos al id de los botones el nombre de las funciones:

<p>
    <a class="topcoat-button--large" id="led13ButtonON">LED 13 ON</a>
    <a class="topcoat-button--large" id="led13ButtonOFF">LED 13 OFF</a>
</p>

Para cualquier enviar comentarios para que os pueda ayudar si me es posible, espero que os haya gustado ;).

Añadir dispositivo para depurar e instalar apps con Android Studio o Cordova/Phonegap

Desarrollar aplicaciones móviles usando el emulador de Android no siempre es tan rápido como esperamos ni mucho menos para testear los gestos táctiles, la mejor opción es depurar e isntalar las aplicaciones que estamos desarrollando en un dispositivo físico el problema es que no siempre se añade y configura automaticamente para ser usuado con Android Studio o con cordova.

En mi caso utilizo un bq X5 y estos son los pasos que he seguido para pdoer utilizarlo en Ubuntu 14.04.

  • Intalar MTPS

    sudo apt-get install libmtp-common mtp-tools libmtp-dev libmtp-runtime libmtp9
    sudo apt-get install mtpfs
    
  • Añadir el id :

Con el comando lsusb nos listara todos los usbs conectados, entre ellos el dispositivo móvil.

$lsusb
Bus 002 Device 002: ID 8087:8001 Intel Corp.
Bus 002 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 001 Device 002: ID 8087:8009 Intel Corp.
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 004 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 003 Device 003: ID 8087:07dc Intel Corp.
Bus 003 Device 002: ID 046d:c52e Logitech, Inc.
Bus 003 Device 005: ID 2a47:7f10  #Este es id
Bus 003 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
  • Como usuario root añadimos al archivo /etc/udev/rules.d/51-android.rules. la siguiente linea:
    SUBSYSTEM=="usb", ATTR{idVendor}=="0x2a47", MODE="0666", GROUP="plugdev"

  • En el archivo que se encuentra en nuestra carpeta de usuario ~/.android/adb_usb.ini añaidmos el id del dispositivo: 0x2a47 en nuestro caso.

Siguiendo estos pasos, podremos utilizar nuestro móvil con Android Studio o cordova/phonegap.

Indicar que gran parte de la información se encuentra en
http://developer.android.com/tools/device.html

Instalar Cordova Android en Ubuntu 14.04

Guia sencilla para instalar cordova

Como indican en la web de apache cordova o traves del gestor de paquetes npm siguiendo las instrucciones que indican:

sudo apt-add-repository ppa:cordova-ubuntu/ppa
sudo apt-get update
sudo apt-get install cordova-cli
npm install -g cordova

Y para Ubuntu instalando los paquetes:

sudo apt-get install cmake debhelper libx11-dev libicu-dev pkg-config qtbase5-dev qtchooser qtdeclarative5-dev qtfeedback5-dev qtlocation5-dev qtmultimedia5-dev qtpim5-dev qtsensors5-dev qtsystems5-dev