Unlimited Plugins, WordPress themes, videos & courses! Unlimited asset downloads! From $16.50/m
Advertisement
  1. Code
  2. Android SDK

Android Things: Tu Primer Proyecto

by
Difficulty:BeginnerLength:MediumLanguages:
This post is part of a series called Android Things.
Introduction to Android Things
Android Things: Peripheral Input/Output

Spanish (Español) translation by Rafael Chavarría (you can also view the original English article)

Android Things, la nueva plataforma de Google para crear dispositivos conectados a Internet of Things (IoT), es una manera sencilla de empaparte de una de las tecnologías eel futuro. En este tutorial aprenderás cómo comenzar con Android Things. Puedes crear tu primer proyecto simple y comenzar usando GPIO (General Purpose Input/Output) para leer presiones de botón e iluminar un LED.

Para más antecedentes sobre Android Things, revisa mi artículo aquí en Envato Tuts+.

Preparando Tu Tablero

Antes de que puedas comenzar programando para Android Things, necesitarás establecer un tablero físico de prototipado para ejecutar el sistema operativo.

Actualmente hay tres opciones para tableros:

  • Raspberry Pi
  • Tablero Intel Edison con Arduino
  • NXP Pico i.MX6UL

En este tutorial, te mostraré como comenzar con el Raspberry Pi, ya que es el más común y asequible de los tableros de prototipado actuales. Si estás usando un ambiente distinto de desarrollo, puedes encontrar las instrucciones específicas para iniciar tu tablero en la página de documentación oficial de Android Things.

Raspberry Pi

Para poner Android Things en un Pi, necesitarás un Raspberry Pi 3 B y el siguiente hardware adicional:

  • Cable HDMI y un display (como un monitor de computadora)
  • Cable de Ethernet conectado a tu internet
  • Cable micro-USB
  • Tarjeta micro SD con al menos 8GB de espacio y un adaptador de tarjeta SD
SD card and adapter
  • Una computadora que pueda leer y escribir a una tarjeta SD

Una vez que has reunido todos los componentes requeridos, necesitarás descargar la última versión de sistema para el Raspberry Pi desde Google. Todas las imágenes actuales puedes ser encontradas en la página de Descargas de Imagen de Sistema de Android Things.

Una vez que haz descargado el archivo, necesitarás descomprimirlo para obtener el archivo .img. Debido al tamaño del archivo, algunos programas podrías tener un problema descomprimiendo, tales como la Utilidad Archivo estándar en OS X, que devolverá un .cpgz o .zip en un ciclo. Si esto sucede, puedes instalar Unarchiver para OS X o 7zip para Windows para extraer el archivo apropiadamente.

Con el archivo .img extraído, necesitarás colocarlo en tu tarjeta SD. Este proceso puede variar por sistema operativo. Esta sección recorrerá el proceso en OS X, a través de instrucciones que también existen para Linux y Windows.

Primero, inserta la tarjeta SD en tu computadora. Si tu tarjeta SD no está formateada como FAT-32, necesitarás hacer esto ahora. Después, necesitarás ejecutar el comando diskutil list para encontrar la ruta a tu tarjeta SD.

Terminal output from diskutil list command

En la captura de arriba, la tarjeta SD entera tiene la ruta /dev/disk3 (no confundir con el identificador de partición disk3s1). Usar esta ruta, ejecuta el comando diskutil unmountDisk para que el disco pueda ser flasheado.

Terminal output from diskutil unmountDisk command

El paso final en flashear la imagen Android Things para Raspberry Pi es copiar la imagen a tu tarjeta SD con el siguiente comando (actualizado con la ruta correcta para tu imagen y número de disco): sudo dd bs=1m if=image.img of=/dev/rdisk

Terminal output from checking progress on Android Things image copying to sd card

Es importante notar que esta operación podría tomar unos cuantos minutos. Puedes revisar el progreso actual con el comando Control-T.

Cuando tu imagen termina de flashear a la tarjeta SD, remueve la tarjeta micro SD de tu adaptador e insértala en la parte inferior del Raspberry Pi.

Raspberry Pi with inserted SD card

Después, conecta tu Raspberry Pi a tu display via el cable HDMI, a tu red con un cable de Ethernet y a una fuente de poder (como tu computadora) con el cable micro USB tipo B.

Raspberry Pi with minimum connections necessary to finish setup

Cuando tu Raspberry Pi ha iniciado, deberías ver lo siguiente en tu display.

Android Things display screen with IP address shown

Notarás la dirección IP de tu dispositivo en la parte inferior de la pantalla. Necesitarás esta para conectar tu tablero Android Things con el comando adb connect <ip address>.

En este punto, podrás conectarte a tu recién flasheado tablero Android Things y cargar apps a este, que es lo que discutiremos en la siguiente sesión. Si quieres desconectar tu Raspberry Pi de tu red física y usar el chip WiFi integrado, necesitarás ejecutar el siguiente comando.

Esto te permitirá reiniciar tu dispositivo y accesarlo a tavés de la red WiFi sin estar atado a la conexión ethernet.

Un Primer Proyecto Simple

Antes de que comiences a escribir código para tu nueva app Android Things, deberías asegurarte de que tu hardware está configurado para el proyecto que quieres construir. Para nuestro proyecto introductorio, crearemos un dispositivo simple que permita a los usuarios presionar un botón, que encenderá un LED. Cuando el botón es liberado, el LED se apagará. Necesitarás los siguientes componentes de hardware.

  • una tarjeta compatible con Android Things que esté flasheada con la última versión del SO
  • un LED
  • un botón
  • una resistencia de 10 Ω (color de resistencias café, negro, naranja)
  • una resistencia de 470 Ω (color de resistencia amarillo, violeta, café)
  • cables
  • tablero de circuitos

Una vez que tienes tus componentes, puedes comenzar a conectar las cosas. He incluido dos diagramas para tu primer proyecto: un diagrama de cableado para el Intel Edison con tablero Arduino, y uno para el Raspberry Pi.

Wiring diagram for project using Intel Edison with Arduino breakout board
Wiring diagram for Raspberry Pi

Una vez que tienes cableado tu tablero, es tiempo de escribir tu primera app.

Configuración de App

Android Things requiere proyectos para construir con un mínimo de SDK 24. Puedes comenzar este tutorial creando un nuevo proyecto con el requerimiento mínimo y una Activity vacía.

Cuando tu proyecto base ha sido creado, abre el archivo build.gradle del módulo de tu app. Bajo el nodo de dependencias, incluye la librería Android Things. Al momento de escribir esto, la librería aún está en vista previa de desarrollador uno.

Después, abre tu archivo AndroidManifest.xml. Necesitarás declarar que tu app usa la librería Android Things agregando la siguiente línea dentro de tu nodo application.

La cosa final por hacer en tu manifiesto es agregar un intent-filter a tu nodo MainActivity que permite a tu dispositivo saber que debería lanzar esta Activity al inicio. Debido a que Android Things lanza las aplicaciones al arranque, generalmente solo querrás una app instalada en un dispositivo a la vez.

Una vez que terminaste con el manifiesto, puedes abrir MainActivity.java, ya que aquí es donde ocurrirá la lógica principal de tu proyecto. El objeto que instanciará tus conexiones de entrada y salida se llama PeripheralManagerService, así que comencemos obteniendo una referencia a este en onCreate()

Ahora que tienes tu PeripheralManagerService, hagamos una cosa más antes de entrar a escribir nuestro código de control. Anteriormente cableaste todos tus componentes al tablero usando pines específicos. Para poder controlar los periféricos que tienes adjuntos a estos pines, necesitarás conocer el nombre de cada pin en tu tablero. Puedes imprimir una lista de cada componente usando PeripheralManagerService de esta manera:

La línea de arriba imprimirá lo siguiente en una Raspberry Pi:

En el diagrama de cableado de Raspberry Pi anterior en esta sección, conectaste el botón a BCM21 y el LED a BCM6. En el diagrama de Intel Edison con  Arduino, conectaste el botón a IO12 y el LED a IO13. Guardemos estos valores como elementos String en la parte superior de nuestro Activity. Esta muestra usará los valores Raspberry Pi, aunque puedes usar cualquier nombre de pin apropiados para tu tarjeta de cableado.

En el siguiente par de secciones, usaremos esta información para comunicar con ambos componentes.

Salida a LED

Componentes básicos, tales como LEDs, puede ser accedidos usando el objeto de Android Things Gpio. Al inicio de nuestro Activity crea un objeto Gpio. Este será usado para referenciar nuestra conexión al LED en nuestra app.

Una vez que tienes el objeto de referencia, necesitarás inicializarlo en onCreate(). Puedes hacer esto llamando openGpio con el nombre de pin de tu objeto PeripheralManagerService. También querrás declarara el estado inicial del componente, que en este caso es DIRECTION_OUT_INITIALLY_LOW (esencialmente "apagado"). Necesitarás envolver las llamadas de configuración I/O en un bloque try/catch en caso de que ocurra una IOException.

Ahora que hemos creado nuestra referencia LED, necesitarás poder hacer cambios al estado del LED (encendido y apagado). Puedes usar el método setValue(boolean) en el Gpio para cambiar el estado de un componente.

Finalmente, cuando tu Activity es destruida, necesitarás cerrar todas las conexiones y nulificar tus referencias de hardware en onDestroy().

Y eso es todo lo que hay que escribir para un componente básico. Aunque la app puede controlar un LED, no hay lógica en lugar para cambiar el estado del LED. En el siguiente paso, leeremos las presiones del botón para activar o desactivar este componente.

Leyendo la Entrada de Botón

Mientras que los botones son componentes bastantes sencillos, Google aún ha liberado un conjunto de librerías para hacer fácil el uso de botones y varios otros componentes. Para esta sección usarás el driver de botón para conectar al botón y leer su estado, pero primero necesitas importar el driver del botón a tu archivo build.gradle.

Después, declara un objeto ButtonInputDriver como un miembro variable para tu clase MainActivity.

Puedes inicializar este objeto y registrarlo dentro del bloque try usado en onCreate() para tu componente LED.

Una vez que tu ButtonInputDriver es creado, mandará eventos de presión de botón a los métodos onKeyDown() y onKeyUp() con el código de tecla que especificaste en la creación del driver, que puede ser anulado en tu Activity para cambiar el estado de tu LED.

Finalmente, necesitarás quitar el registro y anular tu ButtonInputDriver en onDestroy(), justo com hicimos con tu LED.

Conclusión

En este tutorial, aprendiste cómo flashear una Raspberry Pi con Android Things, configurar un circuito simple consistente en un botón y un LED, y escribir una app Android para controlar el LED basado en presiones del botón usando una librería de driver.

En este punto, deberías poder usar otras librerías de driver y crear tus propios circuitos más complejos. En el siguiente tutorial de esta serie, veremos los distintos tipos de periféricos de entrada/salida que están disponibles en Android Things, ¡y después iremos a crear nuestro propio driver de componente!

Mientras tanto, ¡revisa algunos de nuestros otros cursos y tutoriales sobre desarrollo Android!

Advertisement
Advertisement
Advertisement
Advertisement
Looking for something to help kick start your next project?
Envato Market has a range of items for sale to help get you started.