GPIO

Einleitung

Der GPIO-Header auf reComputer-Trägerplatinen ist eine vielseitige Hardware-Schnittstelle, die den AI-Compute-Modul direkt mit externen Sensoren und Aktoren verbindet. Mit einem Pinout, das hochgradig mit dem Raspberry Pi-Ökosystem kompatibel ist, ermöglicht es Entwicklern, problemlos handelsübliche Elektronik für schnelles Prototyping zu integrieren. Über grundlegende digitale Ein- und Ausgabe hinaus können diese gemultiplexten Pins für Standard-Kommunikationsprotokolle wie I2C, SPI, UART und PWM konfiguriert werden, was eine nahtlose Hardware-Steuerung für Robotik- und IoT-Projekte mit einfachen Bibliotheken wie Jetson.GPIO ermöglicht.

reComputer J401

reComputer J401

Jetson.GPIO ist NVIDIA's Python-Bibliothek zur Steuerung des 40-Pin GPIO-Headers auf Jetson-Geräten. Die API ist absichtlich ähnlich zu RPi.GPIO, was sie für Benutzer aus der Raspberry Pi-Entwicklung zugänglich macht.

Installation mit pip

Wenn die Bibliothek nicht vorinstalliert ist, ist die einfachste Methode:

bash
sudo pip3 install Jetson.GPIO

Manuelle Installation

Wenn Sie die Bibliothek aus dem Quellcode installieren müssen:

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

Benutzerrechte

Erlauben Sie dem aktuellen Benutzer den Zugriff auf GPIO:

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

Ersetzen Sie seeed durch Ihren tatsächlichen Benutzernamen, falls erforderlich.

Udev-Regel

Kopieren Sie die Regeldatei und laden Sie udev neu:

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

JetPack 6.2-Kompatibilitätshinweis

Auf einigen JetPack 6.2-Setups müssen Sie möglicherweise den Modellnamen exportieren, bevor Sie die Bibliothek verwenden:

bash
export JETSON_MODEL_NAME=JETSON_ORIN_NANO

40-Pin

GPIO steht für General Purpose Input/Output. Diese Pins ermöglichen es der Software, externe digitale Signale zu lesen oder einfache Peripheriegeräte wie LEDs, Tasten, Summer und Steuerleitungen anzusteuern.

Nummerierungsmodi

Die Jetson.GPIO-Bibliothek unterstützt zwei gängige Nummerierungsschemata:

ModusBeschreibungTypische Verwendung
BOARDNummeriert Pins nach ihrer physischen Position auf dem 40-Pin-HeaderAm besten, wenn Sie direkt von der Header-Beschriftung oder einem Pinout-Diagramm verdrahten
BCMNummeriert Pins nach der GPIO-Zuordnung, die von der Bibliothek verwendet wirdAm besten, wenn Sie Python-GPIO-Beispielen folgen, die sich auf logische GPIO-IDs beziehen

GPIO.BOARD-Layout

GPIO.BCM-Layout

Beispiel-Pin-Referenz

Das Bild unten zeigt ein zusätzliches Pin-Referenzbeispiel, das vor dem Testen von Eingabe- oder Ausgabefunktionen nützlich ist.

image-20260603112011055

GPIO-Eingang

Dieser Abschnitt zeigt, wie man einen GPIO-Eingang auf dem Jetson liest, indem man einen Testpin mit GND und 3.3V verbindet und den Eingangszustand in der Software beobachtet.

Hardware-Verbindung

Verwenden Sie Jumperdrähte, um die Header-Pins wie unten gezeigt anzuschließen. Eine einfache Testmethode besteht darin, zunächst GPIO.BOARD 12 mit GND zu verbinden.

[!CAUTION] Überprüfen Sie die Pin-Zuordnung vor dem Verdrahten. Falsche Verbindungen können die Platine kurzschließen.

Signal lesen

Führen Sie das Beispielskript aus den jetson-gpio-Beispielen aus:

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

Wenn das Ergebnis der erwarteten niedrigen Ebene entspricht, verbinden Sie den Testpin erneut von GND mit 3.3V und führen Sie das Skript erneut aus:

bash
cd /opt/seeed/development_guide/05_gpio/jetson-gpio/samples
export JETSON_MODEL_NAME=JETSON_ORIN_NANO
python3 simple_input.py

Die Terminalausgabe sollte nun ein hohes Signal melden.

GPIO-Ausgang

Einleitung

Auf JetPack 6.2 verhalten sich viele Pins, die zuvor sowohl Eingang als auch Ausgang unterstützten, möglicherweise nur als Eingang, bis der Pinmux angepasst wird. Diese Seite stellt zwei praktische Methoden vor, um das Ausgabeverhalten auf unterstützten Pins wiederherzustellen:

  1. Eine temporäre busybox devmem-Methode
  2. Eine dauerhaftere Device-Tree-Overlay-Methode

Methode 1: Temporärer Ausgang mit busybox

Schritt 1: Pinmux-Register abfragen

Verwenden Sie jetson-gpio-pinmux-lookup, um die Registeradresse für einen Header-Pin zu finden:

bash
jetson-gpio-pinmux-lookup 31

Das Beispiel unten zeigt den zurückgegebenen Registerwert für Pin 31.

Schritt 2: Ausgangsmodus konfigurieren

Installieren Sie bei Bedarf busybox:

bash
sudo apt install busybox

Schreiben Sie dann den Pinmux-Registerwert:

bash
sudo busybox devmem 0x02430070 w 0x004

Schritt 3: Ausgangstest ausführen

Aktualisieren Sie das Beispielskript, um den richtigen BCM-Pin für Ihren Testfall zu verwenden, und führen Sie es dann aus:

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

Sie können die Ausgangspegeländerung mit einem Multimeter oder Oszilloskop überprüfen.

Methode 2: Device-Tree-Overlay

Diese Methode ist besser, wenn Sie möchten, dass die Pin-Konfiguration bestehen bleibt.

Klonen Sie das Hilfsprojekt und bearbeiten Sie die DTS-Datei:

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

Passen Sie die Pin-Definition für den GPIO an, den Sie ändern möchten, und erstellen Sie dann das 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

Nachdem das Overlay aktiviert ist, verwenden Sie die bekannte BCM-Pinnummer im Testskript.

image-20260603151738253

Führen Sie den Ausgangstest erneut aus:

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

Referenzen

reComputer Super J401

reComputer Super J401

Einleitung

GPIO steht für General Purpose Input/Output. Diese Pins ermöglichen es der Software, externe digitale Signale zu lesen oder einfache Peripheriegeräte wie LEDs, Tasten, Summer und Steuerleitungen anzusteuern. Der reComputer Super verfügt über einen 40-Pin-Erweiterungsheader, der Zugriff auf GPIO-Pins bietet und eine einfache Integration mit externen Geräten ermöglicht.

40-Pin Extension Header

Hardware-Verbindung

Der reComputer Super verfügt über einen 40-Pin-Erweiterungsheader, der Zugriff auf GPIO-Pins bietet. Um die GPIO-Pins zu verwenden, müssen Sie externe Geräte an die entsprechenden Pins dieses Headers anschließen.

40-Pin-Header-Pinout

Die Details des 40-Pin-Headers sind unten dargestellt:

Header-PinSignalBGA-PinStandardfunktion
13.3V-Haupt-3.3V-Versorgung
25V-Haupt-5V-Versorgung
3I2C1_SDAPDD.02I2C #1 Daten
45V-Haupt-5V-Versorgung
5I2C1_SCLPDD.01I2C #1 Takt
6GND-Masse
7GPIO09PAC.06Universal-Ein-/Ausgabe
8UART1_TXDPR.02UART #1 Senden
9GND-Masse
10UART1_RXDPR.03UART #1 Empfangen
11UART1_RTSPR.04UART #1 Anforderung zu senden
12I2S0_SCLKPH.07Audio I2S #0 Takt
13SPI1_SCKPY.00SPI #1 Takt
14GND-Masse
15GPIO12PN.01Universal-Ein-/Ausgabe
16SPI1_CS1PY.04SPI #1 Chip-Auswahl #1
173.3V-Haupt-3.3V-Versorgung
18SPI1_CS0PY.03SPI #1 Chip-Auswahl #0
19SPI0_MOSIPZ.05SPI #0 Master Out / Slave In
20GND-Masse
21SPI0_MISOPZ.04SPI #0 Master In / Slave Out
22SPI1_MISOPY.01SPI #1 Master In / Slave Out
23SPI0_SCKPZ.03SPI #0 Takt
24SPI0_CS0PZ.06SPI #0 Chip-Auswahl #0
25GND-Masse
26SPI0_CS1PZ.07SPI #0 Chip-Auswahl #1
27ID_I2C_SDA (I2C0_SDA)PDD.00I2C #0 Daten
28ID_I2C_SCL (I2C0_SCL)PCC.07I2C #0 Takt
29GPIO01PQ.05Universal-Ein-/Ausgabe
30GND-Masse
31GPIO11PQ.06Universal-Ein-/Ausgabe
32GPIO07PG.06Universal-Ein-/Ausgabe
33GPIO13PG.00System reserviert
34GND-Masse
35I2S0_LRCK (I2S0_FS)PI.02Audio I2S #0 Frame-Sync
36UART1_CTSPR.05UART #1 Clear to Send
37SPI1_MOSIPY.02SPI #1 Master Out / Slave In
38I2S0_SDIN (I2S0_DIN)PI.01Audio I2S #0 Daten Eingang
39GND-Masse
40I2S0_SDOUT (I2S0_DOUT)PI.00Audio I2S #0 Daten Ausgang

GPIO-Bibliotheksinstallation

Nummerierungsmodi

Die Jetson.GPIO-Bibliothek unterstützt zwei gängige Nummerierungsschemata:

ModusBeschreibungTypische Verwendung
BOARDNummeriert Pins nach ihrer physischen Position auf dem 40-Pin-HeaderAm besten, wenn Sie direkt von der Header-Beschriftung oder einem Pinout-Diagramm verdrahten
BCMNummeriert Pins nach der GPIO-Zuordnung, die von der Bibliothek verwendet wirdAm besten, wenn Sie Python-GPIO-Beispielen folgen, die sich auf logische GPIO-IDs beziehen

GPIO-Verwendungsbeispiele

Grundlegender GPIO-Ausgang

python
import Jetson.GPIO as GPIO
import time

# GPIO-Modus setzen
GPIO.setmode(GPIO.BOARD)

# Pin definieren
output_pin = 12

# Pin einrichten
GPIO.setup(output_pin, GPIO.OUT)

try:
    while True:
        # Pin einschalten
        GPIO.output(output_pin, GPIO.HIGH)
        time.sleep(1)
        # Pin ausschalten
        GPIO.output(output_pin, GPIO.LOW)
        time.sleep(1)
except KeyboardInterrupt:
    # Aufräumen
    GPIO.cleanup()

Grundlegender GPIO-Eingang

python
import Jetson.GPIO as GPIO
import time

# GPIO-Modus setzen
GPIO.setmode(GPIO.BOARD)

# Pin definieren
input_pin = 11

# Pin einrichten
GPIO.setup(input_pin, GPIO.IN)

try:
    while True:
        # Pin-Wert lesen
        value = GPIO.input(input_pin)
        print(f"Pin-Wert: {value}")
        time.sleep(0.5)
except KeyboardInterrupt:
    # Aufräumen
    GPIO.cleanup()

Super-spezifische GPIO-Funktionen

Der 40-Pin-Header des reComputer Super bietet Zugriff auf eine Reihe von GPIO-Pins und ermöglicht eine flexible Integration mit externen Geräten. Dies macht ihn ideal für eine Vielzahl von Anwendungen, einschließlich:

  • Steuern von LEDs und anderen Anzeigen
  • Lesen von Tastendrücken und Sensoreingaben
  • Steuern von Motoren und Aktoren
  • Schnittstelle zu anderen Mikrocontrollern und Geräten

Sicherheitsvorkehrungen

  • Überprüfen Sie immer die Pin-Verbindungen, bevor Sie Strom anlegen
  • Verwenden Sie geeignete Widerstände beim Anschließen von LEDs und anderen Komponenten
  • Vermeiden Sie Kurzschlüsse an GPIO-Pins
  • Beachten Sie den maximalen Stromwert für GPIO-Pins

Weiterführende Literatur

Seeed Jetson AGX Orin Kit

Seeed Jetson AGX Orin Kit

Einleitung

Das Seeed Jetson AGX Orin Kit enthält einen 40-Pin- (2 × 20, 2,54 mm Rastermaß) Erweiterungsheader (J30).

image-20260603145642641

40-Pin-Header-Pinout

agx_40pin.png

Der 40-Pin-Erweiterungsanschluss umfasst verschiedene Audio- und Steuerschnittstellen, darunter:

  • Audio: I2S, digitales Mikrofon, Takt und Steuerung
  • I2C (2x), SPI, UART, CAN und PWM (2x)
  • GPIOs (sowohl dedizierte als auch mit anderen Schnittstellen-Pins geteilte)

Alle Signalpins sind auf 3,3V-Pegel.

[!NOTE] Viele der Signale am 40-Pin-Erweiterungsheader stammen von TI TXB0108-Pegelwandlern. Aufgrund des Designs dieser Geräte sind die Ausgangstreiber sehr schwach, sodass sie von einem anderen angeschlossenen Geräteausgang für bidirektionale Unterstützung übersteuert werden können. Die mit diesen Puffern verbundenen Signale haben eine "3" in der Notizspalte der folgenden Tabelle. Weitere Informationen finden Sie in der Application Note zu den 40-Pin-Erweiterungsheader-GPIO-Verwendungshinweisen des Jetson Nano Developer Kit.

image-20260603144115885

image-20260603144154470

[!NOTE] Anmerkungen:

  1. Dies ist die Stromfähigkeit pro Stromversorgungspin.
  2. Diese Pins sind über einen FXMA2102L8X-Pegelwandler mit dem SoC verbunden. Sie sind Open-Drain (entweder hochgezogen oder vom SoC niedrig getrieben, wenn sie als Ausgänge konfiguriert sind). Der maximale Antrieb, der das Datenblatt VOL erfüllt, beträgt 1mA.
  3. Siehe zugehörige Anmerkung über der Tabelle.
  4. Diese Pins sind mit einem SN74LVC4T245-Puffer verbunden.
  5. Diese Pins sind direkt mit dem SoC verbunden. Der maximale Antrieb, der das vollständige Datenblatt VOL/VOH erfüllt, beträgt 1mA.
  6. Für die Standardeinstellung beim Einschalten gilt: "pd" = SoC-interner Pull-down, "pu" = SoC-interner Pull-up und "z" = Tristate
  7. In der Spalte Typ/Richtung ist Ausgang zum Erweiterungsheader, Eingang vom Erweiterungsheader. Bidir ist für bidirektionale Signale.
  8. Die angegebene Richtung entspricht der im Referenzdesign-Schaltplänen angegebenen Richtung. Diese Signale unterstützen GPIO-Funktionalität und können bidirektional sein.

Automatisierungsheader

Das Seeed Jetson AGX Orin Kit enthält einen 12-Pin-Header mit 2,54 mm Rastermaß (J42), der mehrere kritische Systemsteuersignale zugänglich macht.

  • Pin #1, #12: GND
  • Pin #2, #3, #4: Eingang, gleiche Funktion wie drei Tasten: Recovery, Reset, Power.
  • Pin #5-#6: Offen: Auto-Einschalten deaktiviert; Kurzgeschlossen: Auto-Einschalten aktiviert.
  • Pin #7: CVB_STBY: Ausgang, zeigt an, ob das Modul im Ruhezustand ist.
  • Pin #8: SYSTEM_OC: Eingang, um Tegra-Drosselung auszulösen.
  • Pin #9-#10: Offen: Wake(Boot) on LAN aus dem Aus-Zustand ist deaktiviert; Kurzgeschlossen: Wake(Boot) on LAN aus dem Aus-Zustand ist aktiviert.
  • Pin #11: JTAG_TRST, JTAG-Test-Reset.
image-20260603145515081

image-20260603144641982