GPIO

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:

bash
sudo pip3 install Jetson.GPIO

Instalación manual

Si necesitas instalar la biblioteca desde el código fuente:

bash
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:

bash
sudo groupadd -f -r gpio
sudo usermod -a -G gpio seeed

Reemplaza seeed con tu nombre de usuario real si es necesario.

Regla Udev

Copia el archivo de reglas y recarga udev:

bash
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

3.27-installing-the-gpio-library-03

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:

bash
export JETSON_MODEL_NAME=JETSON_ORIN_NANO

40 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:

ModoDescripciónUso típico
BOARDNumera los pines por su ubicación física en el header de 40 pinesMejor cuando se cablea directamente desde la serigrafía del header o un diagrama de pines
BCMNumera los pines por el mapeo GPIO utilizado por la bibliotecaMejor 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.

image-20260603112011055

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.

[!CAUTION] Verifica dos veces el mapeo de pines antes de cablear. Las conexiones incorrectas pueden cortocircuitar la placa.

Leer la señal

Ejecuta el script de ejemplo de los ejemplos de jetson-gpio:

bash
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:

bash
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:

  1. Un método temporal busybox devmem
  2. 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:

bash
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:

bash
sudo apt install busybox

Luego escribe el valor del registro pinmux:

bash
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:

bash
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:

bash
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:

bash
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.

image-20260603151738253

Ejecuta la prueba de salida de nuevo:

bash
cd /opt/seeed/development_guide/05_gpio/jetson-gpio/samples
python3 simple_out.py

Referencias

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.

40-Pin Extension Header

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 headerSeñalPin BGAFunción predeterminada
13.3V-Alimentación principal 3.3V
25V-Alimentación principal 5V
3I2C1_SDAPDD.02Datos I2C #1
45V-Alimentación principal 5V
5I2C1_SCLPDD.01Reloj I2C #1
6GND-Tierra
7GPIO09PAC.06Entrada/Salida de propósito general
8UART1_TXDPR.02Transmisión UART #1
9GND-Tierra
10UART1_RXDPR.03Recepción UART #1
11UART1_RTSPR.04Solicitud de envío UART #1
12I2S0_SCLKPH.07Reloj I2S #0 de audio
13SPI1_SCKPY.00Reloj SPI #1
14GND-Tierra
15GPIO12PN.01Entrada/Salida de propósito general
16SPI1_CS1PY.04Selección de chip SPI #1 #1
173.3V-Alimentación principal 3.3V
18SPI1_CS0PY.03Selección de chip SPI #1 #0
19SPI0_MOSIPZ.05SPI #0 Master Out / Slave In
20GND-Tierra
21SPI0_MISOPZ.04SPI #0 Master In / Slave Out
22SPI1_MISOPY.01SPI #1 Master In / Slave Out
23SPI0_SCKPZ.03Reloj SPI #0
24SPI0_CS0PZ.06Selección de chip SPI #0 #0
25GND-Tierra
26SPI0_CS1PZ.07Selección de chip SPI #0 #1
27ID_I2C_SDA (I2C0_SDA)PDD.00Datos I2C #0
28ID_I2C_SCL (I2C0_SCL)PCC.07Reloj I2C #0
29GPIO01PQ.05Entrada/Salida de propósito general
30GND-Tierra
31GPIO11PQ.06Entrada/Salida de propósito general
32GPIO07PG.06Entrada/Salida de propósito general
33GPIO13PG.00Reservado del sistema
34GND-Tierra
35I2S0_LRCK (I2S0_FS)PI.02Sincronización de trama I2S #0 de audio
36UART1_CTSPR.05Borrar para enviar UART #1
37SPI1_MOSIPY.02SPI #1 Master Out / Slave In
38I2S0_SDIN (I2S0_DIN)PI.01Entrada de datos I2S #0 de audio
39GND-Tierra
40I2S0_SDOUT (I2S0_DOUT)PI.00Salida 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:

ModoDescripciónUso típico
BOARDNumera los pines por su ubicación física en el header de 40 pinesMejor cuando se cablea directamente desde la serigrafía del header o un diagrama de pines
BCMNumera los pines por el mapeo GPIO utilizado por la bibliotecaMejor 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

python
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

python
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).

image-20260603145642641

Pinout del header de 40 pines

agx_40pin.png

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.

[!NOTE] Muchas de las señales en el Header de Extensión de 40 pines provienen de traductores de nivel TI TXB0108. Debido al diseño de estos dispositivos, los controladores de salida son muy débiles, por lo que pueden ser sobreactivados por la salida de otro dispositivo conectado para soporte bidireccional. Las señales asociadas con estos buffers tienen un "3" en la columna de notas de la siguiente tabla. Consulte la Nota de Aplicación de Consideraciones de Uso de GPIO del Header de Extensión de 40 pines del Jetson Nano Developer Kit para más información.

image-20260603144115885

image-20260603144154470

[!NOTE] Notas:

  1. Esta es la capacidad de corriente por pin de alimentación.
  2. Estos pines se conectan al SoC a través de un traductor de nivel FXMA2102L8X. Son de drenador abierto (ya sea pull-up, o conducido a bajo por el SoC cuando se configura como salida). La máxima conducción que cumple con la hoja de datos VOL es 1mA.
  3. Consulte la nota relacionada arriba de la tabla.
  4. Estos pines se conectan a un buffer SN74LVC4T245.
  5. Estos pines están directamente conectados al SoC. La máxima conducción que cumple con la hoja de datos VOL/VOH completa es 1mA.
  6. Para el valor predeterminado de encendido, "pd" = Pull-down interno del SoC, "pu" = Pull-up interno del SoC, y "z" = Tristate
  7. En la columna Tipo/Dir, Salida es hacia el header de extensión. Entrada es desde el header de extensión. Bidir es para señales bidireccionales.
  8. La dirección indicada coincide con la indicada en los esquemas de diseño de referencia. Estas señales soportan funcionalidad GPIO y pueden ser bidireccionales.

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.
image-20260603145515081

image-20260603144641982