🛠 Dominar los GPIO en Banana Pi BPI-RT2
Objectifs
Este tutorial tiene como objetivo dominar la interacción de bajo nivel con los pines GPIO de la Banana Pi BPI-RT2. A diferencia de las placas Linux estándar, el SoC Realtek RTL8198D requiere una comprensión precisa del mapeo entre los pines físicos y los números de GPIO de Linux. Aprenderemos a identificar los pines disponibles en los conectores de 5 y 9 pines, configurar las direcciones (entrada/salida) y manipular los estados lógicos para interfaz con sensores o pantallas simples.
Matériel nécessaire
- Una placa Banana Pi BPI-RT2 alimentada (12V DC).
- Un convertidor USB-UART TTL (3.3V) para el acceso a la consola.
- Cables de conexión (jumpers) macho-hembra.
- Un LED y una resistencia de 330 ohmios (para prueba de salida).
- Un botón pulsador (para prueba de entrada).
- Un ordenador host con cliente SSH.
Étapes
Inicie sesión por SSH. El firmware OpenWrt utiliza el kernel Linux estándar. Para conocer el mapeo físico de los pines, consulte el esquema técnico o los archivos Device Tree Source (.dts) proporcionados en el BSP de Realtek. Los conectores de 5 y 9 pines exponen señales GPIO e I2C. Tenga en cuenta que los números de GPIO de Linux no siempre corresponden al orden físico de los pines.
- Acceso e identificación del mapeo
Antes de usar bibliotecas complejas, pruebe el acceso directo a través del sistema de archivos sysfs. Cree un directorio de trabajo y exporte un GPIO conocido (por ejemplo, GPIO 12, verifique con su mapeo): ``bash echo 12 > /sys/class/gpio/export ls /sys/class/gpio/gpio12/ `` Si aparece el directorio, el GPIO está disponible. Si ocurre un error "Device or resource busy", es posible que el GPIO esté siendo utilizado por el kernel o un controlador.
- Verificación de disponibilidad vía sysfs
Configure el GPIO como salida y encienda un LED conectado mediante una resistencia entre el pin GPIO y Tierra (GND): ``bash echo out > /sys/class/gpio/gpio12/direction echo 1 > /sys/class/gpio/gpio12/value ` El LED debe encenderse. Para apagarlo, escriba 0. Para liberar el recurso: `bash echo 12 > /sys/class/gpio/unexport ``
- Configuración de salida y prueba de LED
El método sysfs está obsoleto. Instale libgpiod-utils vía opkg si está disponible, o compílelo. Use gpioinfo para listar los chips GPIO disponibles. Identifique la línea correspondiente a su pin físico: ``bash gpioinfo ` Para poner una línea en salida alta (asumiendo chip0, línea 12): `bash gpiodetect gpioset gpiochip0 12=1 ``
- Uso de libgpiod (método moderno)
Configure el GPIO como entrada con pull-up interno si es compatible, de lo contrario use una resistencia externa hacia VCC. Lea el estado: ``bash echo in > /sys/class/gpio/gpio13/direction cat /sys/class/gpio/gpio13/value `` Presione el botón para ver cambiar el valor (0 o 1 según el cableado).
- Lectura de entrada (Botón pulsador)
Vérification
Asegúrese de que el LED se encienda y apague en respuesta a los comandos gpioset o escrituras sysfs. Verifique que la lectura del botón cambie de valor al presionarlo. Si los comandos fallan, verifique los permisos (chmod) y asegúrese de que el GPIO no esté reservado por el firmware para otras funciones (como WiFi o Ethernet).
Pour aller plus loin
Explore la interfaz I2C expuesta en los mismos conectores para conectar sensores digitales (temperatura, humedad). Use i2cdetect para escanear el bus. Para aplicaciones en tiempo real, considere escribir módulos del kernel personalizados usando las API GPIO del kernel de Linux, en lugar de llamadas al sistema desde el espacio de usuario, para reducir la latencia.
Otros tutoriales para esta placa
- Controlar GPIOs en Banana Pi BPI-RT2
- Configurar una red WiFi 6 fiable con BPI-RT2
- Puesta en marcha y primer arranque del Banana Pi BPI-RT2
- Interfacing a DHT11 Sensor with BPI-RT2 GPIO
- Configurar BPI-RT2 como pasarela de red y almacenamiento ligero
- Configuración avanzada: Primer acceso a consola y flasheo del firmware BPI-RT2