Este artículo describe cómo configurar un botón GPIO con vistas a apagar y encender el sistema. Los breves pasos de configuración incluyen:
- Conectar un botón en forma de tabulador al puerto pin que quieras utilizar
- Configurar el número GPIO usando boot.ini
- Compilar y grabar el kernel DTS modificado, que sólo es necesario para Android
Configuración del Hardware
En primer lugar, debes preparar un interruptor que se conectará a dos líneas GPIO. El cable rojo será para la alimentación y el cable gris para la línea activa (puesta a tierra o potencia de 3.3V).
El diagrama de la disposición de los pines ODROID-C2 http://bit.ly/2aXAlmt nos será muy útil para este proyecto. En nuestro caso, utilizaremos el pin #29 del conector de expansión de 40 pines. El pin es asignado a GPIOX.BIT0 y su número GPIO será 228. Conecta la línea roja al pin #29. Su estado por defecto será high y el interruptor activado será low. Por lo tanto, debe conectar la línea gris del interruptor a la puesta a tierra (GND), pin #30.
Núemro de Pin
(Linea Roja) |
Número GPIO | Nivel Activo
(Linea Gris) |
29 | GPIO# 228 | Active Low (Pin 30) |
Teclas disponibles
Aquí tienes ejemplos de teclas disponibles para el conector de 40 pines y el conector de 7 pines. Puede localizar los ejemplos de asignación de pin para Línea roja y Línea gris.
(1) J2 - 2×20 pins
Nivel Activo
(Linea Gris) |
GPIO # | Pin #
(Linea Roja) |
Pin #
(Linea Roja) |
GPIO # | Nivel Activo
(Linea Gris) |
- | 3.3V Power | 1 | 2 | - | - |
- | - | 3 | 4 | - | - |
- | - | 5 | 6 | Ground | - |
Active Low (Pin 9) | GPIO# 249 | 7 | 8 | - | - |
- | Ground | 9 | 10 | - | - |
Active Low (Pin 14) | GPIO# 247 | 11 | 12 | GPIO#238 | Active Low (Pin 14) |
Active Low (Pin 14) | GPIO# 239 | 13 | 14 | Ground | - |
Active Low (Pin 14) | GPIO# 237 | 15 | 16 | GPIO#236 | Active Low (Pin 14) |
- | 3.3V Power | 17 | 18 | GPIO#233 | Active Low (Pin 20) |
Active Low (Pin 20) | GPIO# 235 | 19 | 20 | Ground | - |
Active Low (Pin 20) | GPIO# 232 | 21 | 22 | GPIO#231 | Active Low (Pin 20) |
Active Low (Pin 25) | GPIO# 230 | 23 | 24 | GPIO#229 | Active Low (Pin 25) |
- | Ground | 25 | 26 | GPIO# 225 | Active High (Pin 17) |
- | - | 27 | 28 | - | - |
Active Low (Pin 30) | GPIO# 228 | 29 | 30 | Ground | - |
Active Low (Pin 30) | GPIO# 219 | 31 | 32 | GPIO# 224 | Active Low (Pin 34) |
Active High (Pin 17) | GPIO# 234 | 33 | 34 | Ground | |
Active Low (Pin 34) | GPIO# 214 | 35 | 36 | GPIO# 218 | Active Low (Pin 34) |
- | - | 37 | 38 | - | - |
- | Ground | 39 | 40 | - | - |
(2) J7 - 1×7 pins
Pin #
(Linea Roja) |
GPIO # | Nivel Activo
(Linea Gris) |
1 | Ground | - |
2 | GPIO# 128 | Active Low (Pin 1) |
3 | 5.0V Power | - |
4 | GPIO# 130 | Active Low (Pin 1) |
5 | GPIO# 132 | Active Low (Pin 1) |
6 | GPIO# 131 | Active Low (Pin 1) |
7 | GPIO# 133 | Active Low (Pin 1) |
Puedes encontrar información detallada sobre conectores de expansión de 40 y 7 pines http://bit.ly/2gzCA7c.
Configurar el Software Ubuntu
La versión liberada debe ser la 3.14.79-107 (26 de febrero de 2017) o superior. Puedes asignar un número GPIO con env gpiopower en boot.ini:
## gpio power key : J2 (2x20) Pin#29 , GPIOX.BIT0 setenv gpiopower "228" ... ## Add gpiopower like "setenv bootargs ${bootargs} gpiopower=${gpiopower}" setenv bootargs "root=UUID=e139ce78-9841-40fe-8823-96a304a09859 rootwait ro ${condev} no_console_suspend hdmimode=${m} ${cmode} m_bpp=${m_bpp} vout=${vout} fsck.repair=yes net.ifnames=0 elevator=noop disablehpd=${hpd} max_freq=${max_freq} maxcpus=${maxcpus} monitor_onoff=${monitor_onoff} disableuhs=${disableuhs} mmc_removable=${mmc_removable} usbmulticam=${usbmulticam} ${hid_quirks} gpiopower=${gpiopower}"
Configurar la acción del botón para el apagado
Si tienes la intención de apagar la placa con el botón de encendido, necesitas cambiar el patrón de acción de la tecla. Para hacer posible esto, primero abre el cuadro de diálogo de Preferencias de la gestión de energía ([System] → [Preferences] → [Hardware] → [Power Management]) y selecciona la festaña [General].
Acción de encendido
Para reactivar el sistema después de apagarlo, es necesario presionar el botón durante un tiempo (2-3 segundos).
Configurar el software Android
En Android, necesitas modificar el archivo DTS en Android Marshmallow (v2.4) y versiones superiores para usar esta funcionalidad.
Tienes que modificar el archivo DTS para activar la funcionalidad de la tecla GPIO:
/arch/arm64/boot/dts/meson64_odroidc2.dts ... gpio_keypad{ . status = "okay"; . }; …Tras compilar el archivo DTS, puedes grabar el archivo DTB en la placa:
$ make odroidc2_defconfig $ make dtbs $ fastboot flash dtb arch/arm64/boot/dts/meson64_odroidc2.dtb $ fastboot rebootDebes grabar el archivo DTBS cuando la placa esté en modo fastboot de u-boot:
$ reboot fastboot
Configurar boot.ini
En Android boot.ini, puedes descomentar la entrada "gpipower" y modificar el número existente por el número aplicable en tu caso:
## gpio power key : J2 (2x20) Pin#29 , GPIOX.BIT0 setenv gpiopower "228"
Configurar la acción del botón para el apagado
En Android, no necesitas seleccionar ninguna opción de menú para las acciones del botón. Ya se encuentran definidas del siguiente modo:
Un evento de tecla corto se usa para dormir, y con evento largo, puedes manejar las opciones de apagado/reinicio.
Con la versión Android Marshmallow v2.4 o superior, es posible apagar el sistema con una pulsación larga (5 segundos).
Acción de encendido
Para encender después del apagado es necesario presionar el botón durante un tiempo (2-3 segundos).
Solución de problemas
Puedes consultar los post del foro en http://bit.ly/2gtE4MA y http://bit.ly/2zGwB4X para obtener consejos de cómo solucionar problemas. Para comentarios, preguntas y sugerencias, visita http://bit.ly/2yYFWrB.
Be the first to comment