🛠 Dominar los GPIO en Banana Pi BPI-CM5
Objetivos
Este tutorial le guía en la manipulación de los pines de Entrada/Salida de Propósito General (GPIO) de su Banana Pi BPI-CM5. Aunque es compacto (55x40 mm), el módulo ofrece una flexibilidad notable gracias a sus conectores Board-to-Board compatibles con Raspberry Pi CM4. Configuraremos una salida para encender un LED y una entrada para detectar la pulsación de un botón. Esta práctica es fundamental para entender cómo su sistema Linux (Ubuntu, Debian o Armbian) interactúa con el mundo físico a través del SoC Amlogic A311D2.
Materiales Necesarios
- Una tarjeta Banana Pi BPI-CM5 instalada en una placa base (Carrier Board) compatible con CM4.
- Un sistema operativo Linux instalado (recomendado: Armbian o Ubuntu).
- Un LED (rojo o verde) y una resistencia de 220 a 330 ohmios.
- Un botón pulsador táctil.
- Cables de conexión (Jumpers) macho-hembra.
- Una protoboard (placa de prototipado) para facilitar el cableado.
- Una terminal SSH o una pantalla conectada mediante el puerto HDMI 2.1.
Pasos
- Preparación del Sistema: Conéctese por SSH o puerto serie. Asegúrese de que el sistema esté actualizado con
sudo apt update && sudo apt upgrade. Instale herramientas de control GPIO si es necesario. Aunquepython3-rpi.gpioes común para Pi, las herramientaslibgpiodsuelen ser mejores para arquitecturas Amlogic. Verifique la disponibilidad consudo apt install python3-gpiodo use sysfs directamente.
- Identificación de Pines: Consulte la documentación de su placa base. Los conectores B2B exponen pines según el estándar Raspberry Pi. Identifique un pin con capacidad GPIO (ej. GPIO17) para salida y otro (ej. GPIO27) para entrada.
- Cableado del LED (Salida):
- Conecte la pata larga del LED (ánodo) al pin GPIO elegido (ej. GPIO17) a través de la resistencia.
- Conecte la pata corta (cátodo) a un pin GND (tierra) de la placa base.
- Cableado del Botón (Entrada):
- Conecte una pata del botón al pin GPIO elegido (ej. GPIO27).
- Conecte la otra pata a GND.
- *Nota*: Deberá activar la resistencia de pull-up interna en el software para evitar estados flotantes.
``bash # Exportar pin 17 (la numeración BCM puede variar, verifique con gpioinfo) echo 17 > /sys/class/gpio/export echo out > /sys/class/gpio/gpio17/direction echo 1 > /sys/class/gpio/gpio17/value # Encender LED sleep 2 echo 0 > /sys/class/gpio/gpio17/value # Apagar LED ``
- Prueba en Línea de Comandos (Sysfs): Pruebe rápidamente sin programación compleja usando el directorio sysfs.
``bash echo 27 > /sys/class/gpio/export echo in > /sys/class/gpio/gpio27/direction # Verifique el estado (0 si se presiona debido al pull-up, 1 en caso contrario) cat /sys/class/gpio/gpio27/value ``
- Lectura de Entrada: Configure el pin 27 como entrada con pull-up.
Verificación
Debe observar que el LED se enciende y apaga según los comandos enviados. Mientras mantiene presionado el botón, el comando cat en el pin de entrada debe devolver 0. Si no sucede nada, verifique las conexiones físicas y asegúrese de tener derechos de root (sudo) para acceder a los archivos sysfs.
Para Ir Más Allá
Una vez dominadas las bases, explore bibliotecas de Python como libgpiod para una gestión robusta de interrupciones (detección de pulsación sin bucles de espera). También puede integrar estas E/S en aplicaciones que utilicen interfaces avanzadas del BPI-CM5, como la captura de video a través de los puertos MIPI-CSI o la visualización en múltiples salidas HDMI.