GPIO

Introductie

De GPIO-header op reComputer carrier boards is een veelzijdige hardware-interface ontworpen om de AI-computemodule direct te verbinden met externe sensoren en actuatoren. Met een pinout die zeer compatibel is met het Raspberry Pi-ecosysteem, kunnen ontwikkelaars gemakkelijk standaard elektronica integreren voor snelle prototyping. Naast basische digitale input en output kunnen deze gemultiplexte pinnen worden geconfigureerd om standaard communicatieprotocollen zoals I2C, SPI, UART en PWM te ondersteunen, waardoor naadloze hardwarebesturing voor robotica- en IoT-projecten mogelijk wordt met eenvoudige bibliotheken zoals Jetson.GPIO.

reComputer J401

reComputer J401

Jetson.GPIO is NVIDIA's Python-bibliotheek voor het aansturen van de 40-pins GPIO-header op Jetson-apparaten. De API is opzettelijk vergelijkbaar met RPi.GPIO, waardoor het toegankelijk is voor gebruikers met ervaring in Raspberry Pi-ontwikkeling.

Installeren met pip

Als de bibliotheek niet vooraf is geïnstalleerd, is de eenvoudigste methode:

bash
sudo pip3 install Jetson.GPIO

Handmatige installatie

Als u de bibliotheek uit de broncode moet installeren:

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

Gebruikersrechten

Sta de huidige gebruiker toe om toegang te krijgen tot GPIO:

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

Vervang seeed door uw daadwerkelijke gebruikersnaam indien nodig.

Udev-regel

Kopieer het regelbestand en herlaad 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

JetPack 6.2-compatibiliteitsopmerking

Op sommige JetPack 6.2-installaties moet u mogelijk de modelnaam exporteren voordat u de bibliotheek gebruikt:

bash
export JETSON_MODEL_NAME=JETSON_ORIN_NANO

40 pins

GPIO staat voor General Purpose Input/Output. Met deze pinnen kan software externe digitale signalen lezen of eenvoudige randapparaten zoals LED's, knoppen, zoemers en stuurlijnen aansturen.

Nummeringsmodi

De Jetson.GPIO-bibliotheek ondersteunt twee veelvoorkomende nummeringsschema's:

ModusBeschrijvingTypisch gebruik
BOARDNummering van pinnen op basis van hun fysieke locatie op de 40-pins headerHet beste wanneer u rechtstreeks vanaf de header-silkdruk of een pinout-diagram bedraadt
BCMNummering van pinnen op basis van de GPIO-toewijzing die door de bibliotheek wordt gebruiktHet beste wanneer u Python GPIO-voorbeelden volgt die verwijzen naar logische GPIO-ID's

GPIO.BOARD-indeling

GPIO.BCM-indeling

Voorbeeld pinreferentie

De afbeelding hieronder toont een extra pin-referentievoorbeeld dat nuttig is voordat u input- of outputfuncties test.

image-20260603112011055

GPIO Input

Dit gedeelte toont hoe u een GPIO-input op Jetson kunt lezen door een testpin te verbinden met GND en 3.3V en de inputstatus in de software te observeren.

Hardwareverbinding

Gebruik jumperdraden om de header-pinnen te verbinden zoals hieronder weergegeven. Een eenvoudige testmethode is om eerst GPIO.BOARD 12 met GND te verbinden.

[!CAUTION] Controleer de pin-toewijzing dubbel voordat u bedraadt. Onjuiste verbindingen kunnen de printplaat kortsluiten.

Het signaal lezen

Voer het voorbeeldscript uit de jetson-gpio-voorbeelden uit:

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

Als het resultaat overeenkomt met het verwachte lage niveau, verbind dan de testpin opnieuw van GND naar 3.3V en voer het script opnieuw uit:

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

De terminaluitvoer zou nu een hoog niveau signaal moeten melden.

GPIO Output

Introductie

Op JetPack 6.2 kunnen veel pinnen die eerder zowel input als output ondersteunden, zich alleen als input gedragen totdat de pinmux wordt aangepast. Deze pagina introduceert twee praktische manieren om het outputgedrag op ondersteunde pinnen te herstellen:

  1. Een tijdelijke busybox devmem-methode
  2. Een persistentere device-tree overlay-methode

Methode 1: Tijdelijke output met busybox

Stap 1: De Pinmux-register opvragen

Gebruik jetson-gpio-pinmux-lookup om het registeradres voor een header-pin te vinden:

bash
jetson-gpio-pinmux-lookup 31

Het voorbeeld hieronder toont de geretourneerde registerwaarde voor pin 31.

Stap 2: De outputmodus configureren

Installeer busybox indien nodig:

bash
sudo apt install busybox

Schrijf vervolgens de pinmux-registerwaarde:

bash
sudo busybox devmem 0x02430070 w 0x004

Stap 3: De outputtest uitvoeren

Werk het voorbeeldscript bij om de juiste BCM-pin voor uw testcase te gebruiken en voer het vervolgens uit:

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

U kunt de outputniveaVerandering verifiëren met een multimeter of oscilloscoop.

Methode 2: Device-Tree Overlay

Deze methode is beter als u wilt dat de pinconfiguratie aanhoudt.

Kloon het hulpproject en bewerk het DTS-bestand:

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

Pas de pindefinitie aan voor de GPIO die u wilt wijzigen en bouw vervolgens de 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

Nadat de overlay is ingeschakeld, gebruikt u het bekende BCM-pinnummer in het testscript.

image-20260603151738253

Voer de outputtest opnieuw uit:

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

Referenties

reComputer Super J401

reComputer Super J401

Introductie

GPIO staat voor General Purpose Input/Output. Met deze pinnen kan software externe digitale signalen lezen of eenvoudige randapparaten zoals LED's, knoppen, zoemers en stuurlijnen aansturen. De reComputer Super heeft een 40-pins uitbreidingsheader die toegang biedt tot GPIO-pinnen, waardoor eenvoudige integratie met externe apparaten mogelijk is.

40-Pin Extension Header

Hardwareverbinding

De reComputer Super heeft een 40-pins uitbreidingsheader die toegang biedt tot GPIO-pinnen. Om de GPIO-pinnen te gebruiken, moet u externe apparaten aansluiten op de juiste pinnen van deze header.

40-pins Header Pinout

De details van de 40-pins header worden hieronder getoond:

Header-pinSignaalBGA-pinStandaardfunctie
13.3V-Hoofd 3.3V-voeding
25V-Hoofd 5V-voeding
3I2C1_SDAPDD.02I2C #1 Data
45V-Hoofd 5V-voeding
5I2C1_SCLPDD.01I2C #1 Klok
6GND-Massa
7GPIO09PAC.06Algemeen gebruik I/O
8UART1_TXDPR.02UART #1 Verzenden
9GND-Massa
10UART1_RXDPR.03UART #1 Ontvangen
11UART1_RTSPR.04UART #1 Verzoek om te verzenden
12I2S0_SCLKPH.07Audio I2S #0 Klok
13SPI1_SCKPY.00SPI #1 Klok
14GND-Massa
15GPIO12PN.01Algemeen gebruik I/O
16SPI1_CS1PY.04SPI #1 Chip Select #1
173.3V-Hoofd 3.3V-voeding
18SPI1_CS0PY.03SPI #1 Chip Select #0
19SPI0_MOSIPZ.05SPI #0 Master Out / Slave In
20GND-Massa
21SPI0_MISOPZ.04SPI #0 Master In / Slave Out
22SPI1_MISOPY.01SPI #1 Master In / Slave Out
23SPI0_SCKPZ.03SPI #0 Klok
24SPI0_CS0PZ.06SPI #0 Chip Select #0
25GND-Massa
26SPI0_CS1PZ.07SPI #0 Chip Select #1
27ID_I2C_SDA (I2C0_SDA)PDD.00I2C #0 Data
28ID_I2C_SCL (I2C0_SCL)PCC.07I2C #0 Klok
29GPIO01PQ.05Algemeen gebruik I/O
30GND-Massa
31GPIO11PQ.06Algemeen gebruik I/O
32GPIO07PG.06Algemeen gebruik I/O
33GPIO13PG.00Systeem Gereserveerd
34GND-Massa
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 Data In
39GND-Massa
40I2S0_SDOUT (I2S0_DOUT)PI.00Audio I2S #0 Data Out

GPIO-bibliotheekinstallatie

Nummeringsmodi

De Jetson.GPIO-bibliotheek ondersteunt twee veelvoorkomende nummeringsschema's:

ModusBeschrijvingTypisch gebruik
BOARDNummering van pinnen op basis van hun fysieke locatie op de 40-pins headerHet beste wanneer u rechtstreeks vanaf de header-silkdruk of een pinout-diagram bedraadt
BCMNummering van pinnen op basis van de GPIO-toewijzing die door de bibliotheek wordt gebruiktHet beste wanneer u Python GPIO-voorbeelden volgt die verwijzen naar logische GPIO-ID's

GPIO-gebruiksvoorbeelden

Basis GPIO Output

python
import Jetson.GPIO as GPIO
import time

# GPIO-modus instellen
GPIO.setmode(GPIO.BOARD)

# Pin definiëren
output_pin = 12

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

try:
    while True:
        # Pin aanzetten
        GPIO.output(output_pin, GPIO.HIGH)
        time.sleep(1)
        # Pin uitzetten
        GPIO.output(output_pin, GPIO.LOW)
        time.sleep(1)
except KeyboardInterrupt:
    # Opruimen
    GPIO.cleanup()

Basis GPIO Input

python
import Jetson.GPIO as GPIO
import time

# GPIO-modus instellen
GPIO.setmode(GPIO.BOARD)

# Pin definiëren
input_pin = 11

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

try:
    while True:
        # Pinwaarde lezen
        value = GPIO.input(input_pin)
        print(f"Pinwaarde: {value}")
        time.sleep(0.5)
except KeyboardInterrupt:
    # Opruimen
    GPIO.cleanup()

Super-specifieke GPIO-functies

De 40-pins header van de reComputer Super biedt toegang tot een scala aan GPIO-pinnen, waardoor flexibele integratie met externe apparaten mogelijk is. Dit maakt het ideaal voor een verscheidenheid aan toepassingen, waaronder:

  • Aansturen van LED's en andere indicatoren
  • Lezen van knopdrukken en sensorinputs
  • Aansturen van motoren en actuatoren
  • Interface met andere microcontrollers en apparaten

Veiligheidsvoorzorgsmaatregelen

  • Controleer altijd dubbel de pinverbindingen voordat u stroom inschakelt
  • Gebruik geschikte weerstanden bij het aansluiten van LED's en andere componenten
  • Vermijd kortsluiting van GPIO-pinnen
  • Houd rekening met de maximale stroomwaarde voor GPIO-pinnen

Verdere lectuur

Seeed Jetson AGX Orin Kit

Seeed Jetson AGX Orin Kit

Introductie

De Seeed Jetson AGX Orin Kit bevat een 40-pins (2 × 20, 2,54 mm pitch) uitbreidingsheader (J30).

image-20260603145642641

40-pins Header Pinout

agx_40pin.png

De 40-pins uitbreidingsconnector bevat verschillende audio- en besturingsinterfaces, waaronder:

  • Audio: I2S, Digitaal Mic, Klok en Besturing
  • I2C (2x), SPI, UART, CAN en PWM (2x)
  • GPIO's (zowel dedicated als gedeeld met andere interface-pinnen)

Alle signaalpinnen zijn 3,3V-niveau.

[!NOTE] Veel van de signalen op de 40-pins uitbreidingsheader komen van TI TXB0108 level shifters. Vanwege het ontwerp van deze apparaten zijn de outputdrivers erg zwak, zodat ze kunnen worden overstuurd door de output van een ander aangesloten apparaat voor bidirectionele ondersteuning. De signalen die aan deze buffers zijn gekoppeld, hebben een "3" in de notitiekolom van de volgende tabel. Zie de Jetson Nano Developer Kit 40-pin Expansion Header GPIO Usage Considerations Application Note voor meer informatie.

image-20260603144115885

image-20260603144154470

[!NOTE] Notities:

  1. Dit is de stroomcapaciteit per voedingspin.
  2. Deze pinnen zijn via een FXMA2102L8X level shifter verbonden met de SoC. Ze zijn open-drain (ofwel pull-up, ofwel laag aangestuurd door de SoC wanneer geconfigureerd als outputs). De max. stuur die voldoet aan het datablad VOL is 1mA.
  3. Zie gerelateerde notitie boven tabel.
  4. Deze pinnen zijn verbonden met een SN74LVC4T245 buffer.
  5. Deze pinnen zijn direct verbonden met de SoC. De max. stuur die voldoet aan het volledige datablad VOL/VOH is 1mA.
  6. Voor power-on default, "pd" = SoC interne pulldown, "pu" = SoC interne pullup, en "z" = Tristate
  7. In de Type/Dir-kolom is Output naar de uitbreidingsheader, Input van de uitbreidingsheader. Bidir is voor bidirectionele signalen.
  8. De aangegeven richting komt overeen met die in de referentieontwerp-schema's. Deze signalen ondersteunen GPIO-functionaliteit en kunnen bidirectioneel zijn.

Automatisering Header

De Seeed Jetson AGX Orin Kit bevat een 12-pins, 2,54 mm pitch header (J42) die toegang biedt tot verschillende kritieke systeembesturingssignalen.

  • Pin #1, #12: GND
  • Pin #2, #3, #4: Input, dezelfde functie als drie knoppen: Recovery, Reset, Power.
  • Pin #5-#6: Open: Auto inschakelen uitgeschakeld; Short: Auto inschakelen ingeschakeld.
  • Pin #7: CVB_STBY: output, geeft aan of de module in slaap is of niet.
  • Pin #8: SYSTEM_OC: input, om Tegra throttling te activeren.
  • Pin #9-#10: Open: Wake(Boot) on LAN vanuit uit-stand is uitgeschakeld; Short: Wake(Boot) on LAN vanuit uit-stand is ingeschakeld.
  • Pin #11: JTAG_TRST, JTAG Test Reset.
image-20260603145515081

image-20260603144641982