GPIO
Última actualización:
Introducción
El header GPIO en las placas base reComputer es una interfaz hardware versátil diseñada para conectar el módulo de computación AI directamente con sensores y actuadores externos. Con un pinout altamente compatible con el ecosistema Raspberry Pi, permite a los desarrolladores integrar fácilmente electrónica lista para usar para prototipado rápido. Más allá de la entrada y salida digital básica, estos pines multiplexados se pueden configurar para soportar protocolos de comunicación estándar como I2C, SPI, UART y PWM, permitiendo un control de hardware fluido para proyectos de robótica e IoT usando bibliotecas simples como Jetson.GPIO.
reComputer J401
reComputer J401
Jetson.GPIO es la biblioteca Python de NVIDIA para controlar el header GPIO de 40 pines en dispositivos Jetson. Su API está intencionalmente diseñada para ser similar a RPi.GPIO, lo que la hace accesible para usuarios con experiencia en desarrollo Raspberry Pi.
Instalar con pip
Si la biblioteca no está preinstalada, el método más sencillo es:
sudo pip3 install Jetson.GPIO
Instalación manual
Si necesitas instalar la biblioteca desde el código fuente:
mkdir -p /opt/seeed/development_guide/05_gpio
cd /opt/seeed/development_guide/05_gpio
git clone https://github.com/NVIDIA/jetson-gpio
cd jetson-gpio
sudo python3 setup.py install
Permisos de usuario
Permitir que el usuario actual acceda a GPIO:
sudo groupadd -f -r gpio
sudo usermod -a -G gpio seeedReemplaza seeed con tu nombre de usuario real si es necesario.
Regla Udev
Copia el archivo de reglas y recarga udev:
cd /opt/seeed/development_guide/05_gpio/jetson-gpio
sudo cp lib/python/Jetson/GPIO/99-gpio.rules /etc/udev/rules.d/
sudo udevadm control --reload-rules
sudo udevadm trigger
Nota de compatibilidad con JetPack 6.2
En algunas configuraciones de JetPack 6.2, es posible que necesites exportar el nombre del modelo antes de usar la biblioteca:
export JETSON_MODEL_NAME=JETSON_ORIN_NANO40 pines
GPIO significa General Purpose Input/Output (Entrada/Salida de Propósito General). Estos pines permiten que el software lea señales digitales externas o controle periféricos simples como LEDs, botones, zumbadores y líneas de control.
Modos de numeración
La biblioteca Jetson.GPIO soporta dos esquemas de numeración comunes:
| Modo | Descripción | Uso típico |
|---|---|---|
BOARD | Numera los pines por su ubicación física en el header de 40 pines | Mejor cuando se cablea directamente desde la serigrafía del header o un diagrama de pines |
BCM | Numera los pines por el mapeo GPIO utilizado por la biblioteca | Mejor cuando se siguen ejemplos de GPIO en Python que hacen referencia a IDs GPIO lógicos |
Diseño GPIO.BOARD

Diseño GPIO.BCM

Referencia de pines de ejemplo
La imagen a continuación muestra un ejemplo adicional de referencia de pines que es útil antes de probar las funciones de entrada o salida.

Entrada GPIO
Esta sección muestra cómo leer una entrada GPIO en Jetson conectando un pin de prueba a GND y 3.3V y observando el estado de entrada en el software.
Conexión de hardware
Usa cables puente para conectar los pines del header como se muestra a continuación. Un método de prueba simple es conectar primero GPIO.BOARD 12 a GND.

Leer la señal
Ejecuta el script de ejemplo de los ejemplos de jetson-gpio:
cd /opt/seeed/development_guide/05_gpio/jetson-gpio/samples
sudo python3 simple_input.py
Si el resultado coincide con el nivel bajo esperado, reconecta el pin de prueba de GND a 3.3V y ejecuta el script de nuevo:
cd /opt/seeed/development_guide/05_gpio/jetson-gpio/samples
export JETSON_MODEL_NAME=JETSON_ORIN_NANO
python3 simple_input.py
La salida del terminal ahora debería reportar una señal de nivel alto.
Salida GPIO
Introducción
En JetPack 6.2, muchos pines que anteriormente soportaban tanto entrada como salida pueden comportarse solo como entrada hasta que se ajusta el pinmux. Esta página presenta dos formas prácticas de restaurar el comportamiento de salida en pines soportados:
- Un método temporal
busybox devmem - Un método más persistente de overlay de device-tree
Método 1: Salida temporal con busybox
Paso 1: Consultar el registro Pinmux
Usa jetson-gpio-pinmux-lookup para encontrar la dirección del registro de un pin del header:
jetson-gpio-pinmux-lookup 31
El ejemplo a continuación muestra el valor del registro devuelto para el pin 31.

Paso 2: Configurar el modo de salida
Instala busybox si es necesario:
sudo apt install busyboxLuego escribe el valor del registro pinmux:
sudo busybox devmem 0x02430070 w 0x004
Paso 3: Ejecutar la prueba de salida
Actualiza el script de ejemplo para usar el pin BCM correcto para tu caso de prueba, y luego ejecútalo:


cd /opt/seeed/development_guide/05_gpio/jetson-gpio/samples
export JETSON_MODEL_NAME=JETSON_ORIN_NANO
python3 simple_out.py
Puedes verificar el cambio de nivel de salida con un multímetro u osciloscopio.
Método 2: Overlay de Device-Tree
Este método es mejor si deseas que la configuración del pin persista.
Clona el proyecto auxiliar y edita el archivo DTS:
cd /opt/seeed/development_guide/05_gpio/jetson-gpio
git clone https://github.com/jetsonhacks/jetson-orin-gpio-patch.git
cd jetson-orin-gpio-patch
vim pin7_as_gpio.dts
Ajusta la definición del pin para el GPIO que deseas cambiar, y luego construye el overlay:
dtc -O dtb -o pin7_as_gpio.dtbo pin7_as_gpio.dts
sudo cp pin7_as_gpio.dtbo /boot
sudo /opt/nvidia/jetson-io/jetson-io.py

Después de que el overlay esté habilitado, usa el número de pin BCM conocido en el script de prueba.

Ejecuta la prueba de salida de nuevo:
cd /opt/seeed/development_guide/05_gpio/jetson-gpio/samples
python3 simple_out.pyReferencias
reComputer Super J401
reComputer Super J401
Introducción
GPIO significa General Purpose Input/Output (Entrada/Salida de Propósito General). Estos pines permiten que el software lea señales digitales externas o controle periféricos simples como LEDs, botones, zumbadores y líneas de control. El reComputer Super cuenta con un header de extensión de 40 pines que proporciona acceso a los pines GPIO, permitiendo una integración fácil con dispositivos externos.

Conexión de hardware
El reComputer Super cuenta con un header de extensión de 40 pines que proporciona acceso a los pines GPIO. Para usar los pines GPIO, necesitas conectar dispositivos externos a los pines apropiados de este header.
Pinout del header de 40 pines
Los detalles del header de 40 pines se muestran a continuación:
| Pin del header | Señal | Pin BGA | Función predeterminada |
|---|---|---|---|
| 1 | 3.3V | - | Alimentación principal 3.3V |
| 2 | 5V | - | Alimentación principal 5V |
| 3 | I2C1_SDA | PDD.02 | Datos I2C #1 |
| 4 | 5V | - | Alimentación principal 5V |
| 5 | I2C1_SCL | PDD.01 | Reloj I2C #1 |
| 6 | GND | - | Tierra |
| 7 | GPIO09 | PAC.06 | Entrada/Salida de propósito general |
| 8 | UART1_TXD | PR.02 | Transmisión UART #1 |
| 9 | GND | - | Tierra |
| 10 | UART1_RXD | PR.03 | Recepción UART #1 |
| 11 | UART1_RTS | PR.04 | Solicitud de envío UART #1 |
| 12 | I2S0_SCLK | PH.07 | Reloj I2S #0 de audio |
| 13 | SPI1_SCK | PY.00 | Reloj SPI #1 |
| 14 | GND | - | Tierra |
| 15 | GPIO12 | PN.01 | Entrada/Salida de propósito general |
| 16 | SPI1_CS1 | PY.04 | Selección de chip SPI #1 #1 |
| 17 | 3.3V | - | Alimentación principal 3.3V |
| 18 | SPI1_CS0 | PY.03 | Selección de chip SPI #1 #0 |
| 19 | SPI0_MOSI | PZ.05 | SPI #0 Master Out / Slave In |
| 20 | GND | - | Tierra |
| 21 | SPI0_MISO | PZ.04 | SPI #0 Master In / Slave Out |
| 22 | SPI1_MISO | PY.01 | SPI #1 Master In / Slave Out |
| 23 | SPI0_SCK | PZ.03 | Reloj SPI #0 |
| 24 | SPI0_CS0 | PZ.06 | Selección de chip SPI #0 #0 |
| 25 | GND | - | Tierra |
| 26 | SPI0_CS1 | PZ.07 | Selección de chip SPI #0 #1 |
| 27 | ID_I2C_SDA (I2C0_SDA) | PDD.00 | Datos I2C #0 |
| 28 | ID_I2C_SCL (I2C0_SCL) | PCC.07 | Reloj I2C #0 |
| 29 | GPIO01 | PQ.05 | Entrada/Salida de propósito general |
| 30 | GND | - | Tierra |
| 31 | GPIO11 | PQ.06 | Entrada/Salida de propósito general |
| 32 | GPIO07 | PG.06 | Entrada/Salida de propósito general |
| 33 | GPIO13 | PG.00 | Reservado del sistema |
| 34 | GND | - | Tierra |
| 35 | I2S0_LRCK (I2S0_FS) | PI.02 | Sincronización de trama I2S #0 de audio |
| 36 | UART1_CTS | PR.05 | Borrar para enviar UART #1 |
| 37 | SPI1_MOSI | PY.02 | SPI #1 Master Out / Slave In |
| 38 | I2S0_SDIN (I2S0_DIN) | PI.01 | Entrada de datos I2S #0 de audio |
| 39 | GND | - | Tierra |
| 40 | I2S0_SDOUT (I2S0_DOUT) | PI.00 | Salida de datos I2S #0 de audio |
Instalación de la biblioteca GPIO
Modos de numeración
La biblioteca Jetson.GPIO soporta dos esquemas de numeración comunes:
| Modo | Descripción | Uso típico |
|---|---|---|
BOARD | Numera los pines por su ubicación física en el header de 40 pines | Mejor cuando se cablea directamente desde la serigrafía del header o un diagrama de pines |
BCM | Numera los pines por el mapeo GPIO utilizado por la biblioteca | Mejor cuando se siguen ejemplos de GPIO en Python que hacen referencia a IDs GPIO lógicos |
Ejemplos de uso de GPIO
Salida GPIO básica
import Jetson.GPIO as GPIO
import time
# Establecer modo GPIO
GPIO.setmode(GPIO.BOARD)
# Definir pin
output_pin = 12
# Configurar el pin
GPIO.setup(output_pin, GPIO.OUT)
try:
while True:
# Encender el pin
GPIO.output(output_pin, GPIO.HIGH)
time.sleep(1)
# Apagar el pin
GPIO.output(output_pin, GPIO.LOW)
time.sleep(1)
except KeyboardInterrupt:
# Limpiar
GPIO.cleanup()Entrada GPIO básica
import Jetson.GPIO as GPIO
import time
# Establecer modo GPIO
GPIO.setmode(GPIO.BOARD)
# Definir pin
input_pin = 11
# Configurar el pin
GPIO.setup(input_pin, GPIO.IN)
try:
while True:
# Leer el valor del pin
value = GPIO.input(input_pin)
print(f"Valor del pin: {value}")
time.sleep(0.5)
except KeyboardInterrupt:
# Limpiar
GPIO.cleanup()Funciones GPIO específicas de Super
El header de 40 pines del reComputer Super proporciona acceso a una gama de pines GPIO, permitiendo una integración flexible con dispositivos externos. Esto lo hace ideal para una variedad de aplicaciones, incluyendo:
- Control de LEDs y otros indicadores
- Lectura de pulsaciones de botones y entradas de sensores
- Control de motores y actuadores
- Interfaz con otros microcontroladores y dispositivos
Precauciones de seguridad
- Siempre verifica dos veces las conexiones de los pines antes de aplicar energía
- Usa resistencias apropiadas al conectar LEDs y otros componentes
- Evita cortocircuitos en los pines GPIO
- Ten en cuenta la corriente máxima nominal para los pines GPIO
Lecturas adicionales
Seeed Jetson AGX Orin Kit
Seeed Jetson AGX Orin Kit
Introducción
El Seeed Jetson AGX Orin Kit incluye un header de extensión de 40 pines (2 × 20, paso de 2,54 mm) (J30).
Pinout del header de 40 pines
El conector de extensión de 40 pines incluye varias interfaces de audio y control, incluyendo:
- Audio: I2S, Micrófono digital, Reloj y Control
- I2C (2x), SPI, UART, CAN y PWM (2x)
- GPIOs (tanto dedicados como compartidos con otros pines de interfaz)
Todos los pines de señal son de nivel 3.3V.


Header de automatización
El Seeed Jetson AGX Orin Kit incluye un header de 12 pines, paso de 2,54 mm (J42) que hace accesibles varias señales críticas de control del sistema.
- Pin #1, #12: GND
- Pin #2, #3, #4: Entrada, misma función que tres botones: Recovery, Reset, Power.
- Pin #5-#6: Abierto: Auto encendido deshabilitado; Cortocircuitado: Auto encendido habilitado.
- Pin #7: CVB_STBY: salida, indicando si el módulo está en reposo o no.
- Pin #8: SYSTEM_OC: entrada, para activar la limitación de Tegra.
- Pin #9-#10: Abierto: Wake(Boot) on LAN desde estado apagado deshabilitado; Cortocircuitado: Wake(Boot) on LAN desde estado apagado habilitado.
- Pin #11: JTAG_TRST, Reset de prueba JTAG.
