Divirtiéndonos con GPIO en Android

El ODROID-C1/C1+, ODROID-C2 y ODROID-XU4 tienen pines GPIO (Entrada/Salida de Propósito General) que permiten controlar dispositivos externos a través de software. Para acceder correctamente al puerto GPIO, debes instalar la imagen Android Marshmallow versión 2.8 o superior en el ODROID-C2, la imagen Android KitKat versión 3.2 o superior en el ODROID-C1/C1+, y la imagen Android KitKat versión 6.0 o superior, o la versión Android Nougat versión 1.3 20171214 o superior en el ODROID-XU4.

Esta WiKi explica cómo hacer una app Android que permita acceder a los puertos GPIO. Necesitas instalar Google Android Studio en tu PC host. Añade en primer lugar NDK y las herramientas necesarias antes de empezar con los pasos que se describen a continuación. Nosotros probamos estos pasos en Android Studio 2.3 y NDK R14.

Ubuntu/Linux

Puedes encontrar la ubicación del SDK de Android bajo este menú (File → Settings → Appearance & Behavior → System Settings → Android SDK)

Figure 1 - Android SDK location
Figura 1 - Ubicación del SDK de Android

Tras editar el archivo bashrc, debes iniciar sesión nuevamente o escribir "source ~/.bashrc" en la línea de comando. A continuación, descarga la librería NDK WiringPi y el código fuente de la aplicación  desde GitHub.

ODROID-C1+/C2

$ sudo apt install git
$ git clone https://github.com/codewalkerster/example-wiringPi -b odroid-c

ODROID-XU4

$ sudo apt install git
$ git clone https://github.com/codewalkerster/example-wiringPi -b odroid-xu
Ejecuta Android Studio y abre el proyecto descargado.

Figure 2 - Opening the wiringPi project
Figura 2 – Abriendo el proyecto wiringPi

Compilar el proyecto para crear un paquete apk

Selecciona Build -> Make Project desde menú. Verás un par de mensajes de error y deberás hacer clic en las siguientes opciones para completar el proceso de compilación, el cual generará un archivo APK para que lo ejecutes en tu ODROID:

  • Instalar la(s) plataforma(s) que faltan y sincronizar el proyecto
  • Instalar Build Tools 25.0.2 y sincronizar el proyecto

Windows

En Windows, configura la RUTA de entorno para que apunte a la ruta de la carpeta NDK y luego reinicia Windows.

Figure 3 - Setting the environment path to point to the NDK folder path
Figura 3: Configurando la ruta de entorno para que apunte a la ruta de la carpeta NDK

Figure 4 - Setting the environment path to point to the NDK folder path
Figura 4 - Configurando la ruta de entorno para que apunte a la ruta de la carpeta NDK

Figure 5 - Setting the environment path to point to the NDK folder path
Figura 5: Configurando la ruta de entorno para que apunte a la ruta de la carpeta NDK

Después, instala el programa cliente Git desde https://git-for-windows.github.io/, y clona el proyecto wiringPi, tal y como se muestra en la Figura 6.

Figure 6 - Cloning the project
Figura 6 – Clonando el proyecto

El proyecto está disponible en https://github.com/codewalkerster/example-wiringPi. Selecciona origin/odroid-c o origin/odroid-xu.

Figure 7 - Checking out the GitHub branch
Figura 7 – Verificando la rama de GitHub

Luego, instala el NDK seleccionando Tools -> Android -> SDK Manager en el menú.

Figure 8 - Installing the SDK
Figura 8 – Instalando el SDK

Figure 9 - Installing the SDK
Figura 9 – Instalando el SDK

Características del proyecto de ejemplo

Puedes leer el valor del conversor de señal analógica a digital (ADC) y mostrar el nivel de voltaje con 19 LED en la salida de GPIO. Puedes ver un video de demostración en https://youtu.be/lGqyhvd3q9U y https://youtu.be/lGqyhvd3q9U.

Figure 10 - Reading the ADC value on the ODROID-C1+/C2
Figura 10 - Lectura del valor ADC en ODROID-C1+/C2

Figure 11 - Reading the ADC value on the ODROID-XU4
Figura 11 - Lectura del valor ADC en el ODROID-XU4

PWM

La Figura 12 muestra un ejemplo básico de control del PWM. Puede escoger el número de salidas PWM (1 o 2), así como controlar la frecuencia y el índice de trabajo.

Figure 12 - Basic PWM control example
Figura 12 - Ejemplo básico de control PWM

Ejemplo de notificador de Gmail

Este es un proyecto muy divertido y útil que utiliza el puerto PWM. Cuando te encuentras visualizando videos o jugando a juegos, puedes pasar por alto la notificación de un correo electrónico o mensaje importante. El indicador es accionado por un servomotor que está conectado a un pin PWM en un puerto GPIO de 40 pines. El código puede descargarse desde  https://github.com/codewalkerster/GMailNotifier. Se puede ver una demo del proyecto en https://youtu.be/Vvq77w87RWQ.

I2C

La Figura 15 muestra un ejemplo de código para acceder a nuestra placa meteorológica para medir la temperatura, la humedad, la presión atmosférica, la altitud y la intensidad de luz visible/invisible a través de la interfaz I2C.

Figure 13 - Hardkernel’s Weather Board measures environmental statistics
Figura 13 – La placa meteorológica de Hardkernel mide las estadísticas medioambientales

Figure 14 - Hardkernel’s Weather Board measures environmental statistics
Figura 14 - La placa meteorológica de Hardkernel mide las estadísticas medioambientales

Figure 15 - A demo software for Sending and Receiving characters via UART interface
Figura 15 - Un software demo para enviar y recibir caracteres a través de la interfaz UART

Figure 16 - Demo software to access 1-wire protocol interfaced DS18S20 temperature sensor
Figura 16 - Software demo para acceder al sensor de temperatura DS18S20 que se comunica con el protocolo 1-wire

Kernel para I2C

Abra la aplicación File Manager y edita el archivo /storage/internal/boot.ini tal y como se muestra a continuación:

Original

movi read dtb 0 ${dtbaddr}
# load kernel from vat or boot partition.
movi read boot 0 ${loadaddr}
#fatload mmc 0:1 ${loadaddr} Image
booti ${loadaddr} - ${dtbaddr}
Después de editarlo
movi read dtb 0 ${dtbaddr}
# load kernel from vat or boot partition.
#movi read boot 0 ${loadaddr}
fatload mmc 0:1 ${loadaddr} Image
booti ${loadaddr} - ${dtbaddr}
Carga la imagen del kernel desde la partición vfat i2c. Si no puede encontrar el comando "fatload", elimina /storage/internal/boot.ini y reinicie el sistema. Para comentarios, preguntas y sugerencias, visita el artículo original de la Wiki en https://wiki.odroid.com/odroid-c2/application_note/gpio/enhancement_40pins_on_android.

Be the first to comment

Leave a Reply