Android Things

Android Things, la apuesta de Google en IoT

Artículo

Comprobamos el potencial de Android Things con Raspberry Pi y Thingtia

Introducción

Android Things es una plataforma de sistema operativo embebido de Google basada en Android. Está dirigido a ser utilizada con dispositivos de Internet of Things (IoT) de baja potencia y con memoria limitada. Android Things ofrece algunas de las capacidades móviles de Android, incluyendo el desarrollo de las aplicaciones Android. Los desarrolladores pueden utilizar SDKs, APIs y servicios habituales de Android, incluida la plataforma Google Cloud.

Android Things
Alcance

Hemos implementado una aplicación que contará el número de caras y lo reportará a Thingtia. Esta aplicación ha sido distribuida en un modelo B de Raspberry Pi 3 con módulo de cámara y Android Things OS. La aplicación se ha implementado con 2 módulos dentro de la misma aplicación. Un módulo integrará el módulo de cámara y detectará el número de caras en la foto. El segundo módulo utiliza la API REST para enviar los datos del sensor a Thingtia. Con este PoC podremos probar las principales capacidades de Android Things como:

- Instalación de Android Things OS en Raspberry Pi.

- La Consola Android Things nos permite crear productos a través de los cuales podemos gestionar la versión de la aplicación, la distribución, el OS y las actualizaciones de la aplicación.

- Firebase gestionará la mensajería push y la gestión del estado de los dispositivos.

- Personalización completa del OS incluyendo el logotipo de arranque y la interfaz de usuario.

- Desarrollo de entornos con configuraciones y limitaciones.

- Integración con API de terceros como Thingtia Cloud.

- Integración con dispositivos externos de Raspberry Pi como el Módulo de Cámara.

Android Things
Descripción general técnica y configuración del entorno

Google proporciona una plataforma de confianza para desarrollar actualizaciones y correcciones estándar de Google y simplificar la integración de hardware:

- Las SoMs integran el SoC (System-on-chip), RAM, almacenamiento flash, WiFi, Bluetooth y otros componentes en una sola placa y cuentan con todas las certificaciones FCC necesarias.

- El Board Support Package (BSP) es administrado por Google, lo que significa que no tenemos que hacer kernel o desarrollo de firmware.

Android Things
Prueba de concepto

Hemos integrado un módulo de cámara con el cual tomaremos fotos y detectaremos el número de caras. El OS Android Things no viene con la aplicación de cámara. Así pues, para mostrar la vista previa o capturar la imagen necesitamos implementar nuestra propia versión de la cámara.

Hemos utilizado FCM para enviar datos a la aplicación. Una vez que el app obtiene el push enviará un broadcast y capturará la imagen usando la cámara.

Hemos integrado Thingtia con nuestra aplicación. Utilizamos la cámara como sensor que detecta número de las personas y actualiza a Thingtia. Desde la cámara tomaremos la foto y detectaremos el número de caras.

La aplicación desarrollada puede actualizar el número de caras detectadas al sensor de Thingtia. La aplicación puede hacer esto mediante una simple llamada de la API REST a Thingtia. Una vez hecho esto podemos ver el resultado (el número de caras) en la web de Thingtia.

Android Things
Conclusiones

Esta es la primera versión estable publicada de Android Things. Hemos detectado que la arquitectura de Android Things es similar a la aplicación móvil Android. La principal diferencia en la arquitectura del OS es que sólo tenemos un subconjunto de API de Java. Pero tenemos cosas adicionales: biblioteca de soporte y servicio de Google para Android Things. Podemos utilizar la misma arquitectura y los mismos patrones de diseño y proporciona muchas capacidades interesantes relacionadas con MDM y desarrollo de aplicaciones.

Observamos ciertas limitaciones en la versión actual. En este momento Android Things OS soporta sólo unos pocos dispositivos IoT. Estas placas utilizan una mezcla de CPUs basadas en Intel y ARM, y soportan tanto 32 bits como 64 bits. La cantidad mínima de RAM es de 512MB.

La instalación en un Raspberry Pi 3 Modelo B es muy simple. Con pocos pasos tienes tu Raspberry Pi listo para trabajar con conexión wifi. Además, la arquitectura Android Things SOM nos permite integrar fácilmente módulos estándar como cámaras y otros sensores. No hay necesidad de escribir controladores de hardware. Android Things proporciona el uso de la API de Java que es útil para implementar nuestra lógica de negocio.

El desarrollo con Android Things es similar al desarrollo nativo de Android para móviles: desarrollo de aplicaciones para dispositivos con las herramientas de desarrollo de Android, las API y los recursos existentes junto con las nuevas API que proporcionan I/O de bajo nivel y bibliotecas para componentes comunes. Google proporciona la imagen del sistema, actualizaciones y correcciones para que podamos centrarnos en la creación de productos de valor añadido. Podemos usar push system updates y nuestras propias actualizaciones de la aplicación a dispositivos utilizando diversos canales. Estos canales nos ayudan a manejar fácilmente nuestro proceso de prueba de la aplicación.