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

Añadir icono y acceso directo de una aplicación en Ubuntu gnome 3

Buenas,

Utilizo Ubuntu 14.04 Gnome http://ubuntugnome.org/ y al instalar por ejemplo Sublime text 2 o Eclipse me ocurre que :

$ cd /usr/share/applications/
$ sudo nano sublime-text-2.desktop
  • Que el archivo contenga :
[Desktop Entry]
Name= NOMBRE DEL PROGRAMA
GenericName=DESCRIPCION DEL PROGRAMA
Comment=COMENTARIO DEL PROGRAMA
Exec=RUTA DEL PROGRAMA O EL NOMBRE SI ESTA AÑADIDO AL PATH start -i
Terminal=false
Type=Application
Icon= RUTAN DEL ICONO
Categories=CATEGORIA A LA QUE PERTENECE, QUE EXISTA COMO Network;FileTransfer;
StartupNotify=false

Como por ejemplo para sublime test :

[Desktop Entry]
Name=Sublime
GenericName=Sublime
Comment=Editor
Exec=/home/luisan/Sublime2/sublime_text
Terminal=false
Type=Application
Icon=/home/luisan/Sublime2/Icon/128x128/sublime_text.png

Y nada espero que os sirva ;) .

Indicar que tuve problemas porque estaba escribiendo la ruta de esta forma:

~/Sublime2/sublime_text en vez de /home/luisan/Sublime2/sublime_text

Sublime Text 2 en Ubuntu 14.04

Muy buenas ;)

Los pasos para instalar Sublime Text 2 en Ubuntu 14.04:

  • Descargar de su web http://www.sublimetext.com/2 en 64bit en mi caso y (Ubuntu 14.04).

  • Una vez descargado descomprmir y dar permisos totales :

$ sudo chmod -R 777 ./Sublime2
  • Doble click en sublime_text o ejecutarlo :
$ ./Sublime2

Una vez descargado para no tener que ir cada vez que quiera ejecutarlo a la carpeta lo añado al path de mi equipo añadiendo las siguientes lineas a .bashrc ( se encuentra en la carpeta home oculto)

export SUBLIME_HOME=~/Sublime2
export PATH=${PATH}:$SUBLIME_HOME

Indicar que yo he descargado Sublime Text 2 en mi directorio home ~/ y que he renombrado la carpeta a Sublime2 para no tener problemas con los espacios.

Esquema básico de Markdown

Buenas, aquí un esquema de uso básico de Markdown. Para más información vean la especificación oficial de su creador John Gruber o el ejemplo de Github.

Voy a mostrar primero el código markdown y posteriormente el resultado.

Texto básico :

Código markdown:
Cursiva:  *italic* y  así tambien  _italic_ , en  negrita **bold**  y también __bold__ , resaltar  texto : `important` text. signo de porcentaje : % y `%`
Paragrafo con nota de pie (builtin parser only). [^note-id]
Insertar `[ TOC ]` sin espacions genera una tabla de contenidos (builtin parsers only)

Resultado:

Cursiva: italic y así tambien italic , en negrita bold y también bold , resaltar texto : important text. signo de porcentaje : % y %
Paragrafo con nota de pie (builtin parser only). [^note-id]
Insertar [ TOC ] sin espacions genera una tabla de contenidos (builtin parsers only)

Indentación :

Código markdown:
> Aquí texto indentado
>> aún mas indentado

Resultado:

Aquí texto indentado

aún mas indentado

Titulo cabeceras :

Código markdown:
# El más grande (h1)
## Mediano (h2)
### Pequeño (h3)
#### más pequeno (hX)
##### y más pequeño (hX)
###### y más pequeño.. (hX)
Resultado:

El más grande (h1)

Mediano (h2)

Pequeño (h3)

más pequeno (hX)

y más pequeño (hX)
y más pequeño.. (hX)

Listas :

Código markdown:
- Los puntos/guinoes puedne ser con :  `-`, `+`, or `*`
- Punto uno
- Punto dos 
  - sub item 1
  - sub item 2
Con texto indentado dentro
- Punto de la lista 3
+ Punto de la lista 4
* Punto de la lista 5

1. Punto ordenado uno
2. Punto ordenado dos
...  y así sucesivamente

Resultado:
  • Los puntos/guinoes puedne ser con : -, +, or *
  • Punto uno
  • Punto dos
    • sub item 1
    • sub item 2
      Con texto indentado dentro
  • Punto de la lista 3
  • Punto de la lista 4
  • Punto de la lista 5
  1. Punto ordenado uno
  2. Punto ordenado dos
    … y así sucesivamente
Código markdown:
Esto es un ejemplo  [de link a mi blog](http://blog.luisangonzalez.es/).
Resultado:

Esto es un ejemplo de link a mi blog.

Imágenes :

Código markdown:
Un simple imagen :
![Fenix logo](http://blog.luisangonzalez.es/img/fenix.jpg "Fenix logo")
Resultado:

Fenix logo

Código :

Código markdown:
Es sencillo mostrar código en markdown.
Puede hacerse  `highlight` para algunas palabras.
Y bloques de código :
<script>
int cinco = 5;
</script>
En hexo en la línea del principio 3 x ` y 3 x ` al final

Resultado:

Es sencillo mostrar código en markdown.
Puede hacerse highlight para algunas palabras.
Y bloques de código :

<script>
Ojo en la línea del principio 3 x ` 
document.location = 'http://lmgtfy.com/?q=markdown+cheat+sheet';
 y 3 x ` al final 
</script>

Tablas :

Código markdown:
| Año  | Mínima temperatura | Máxima temperatura |
| ---- | ------------------ | -------------------|
| 1900 | -10                 |                  25 |
| 1910 | -15                 |                 30 |
| 1920 | -10                 |                  32 |
Resultado:
Año Mínima temperatura Máxima temperatura
1900 -10 25
1910 -15 30
1920 -10 32

Primer post con hexo.io

Después de un largo tiempo sin utilizar el blog que comenze con Octopress he decidido continuar escribiendo pero esta vez utilizando hexo.io, los motivos del cambio son :

  1. By by Ruby, no tengo nada contra Ruby pero me parece un coñazo todo el tema de las gemas, RVM, Bundle, rake install, rake… y me siento más comodo utilizando JavaScript.

  2. Después de utilizar Octopress que me ha parecido estupendo prefiero utilizar hexo.io que usa Node.js el cual estoy conociendo cada vez más y quiero profundizar.

  3. Como indican en hexo.io —> A fast, simple & powerful blog framework, powered by Node.js. Y así es, esto me ha convencido :

 $ npm install hexo -g
 $ hexo init blog
 $ cd blog
 $ npm install
 $ hexo server

Saludos ;)