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:
sudo pip3 install Jetson.GPIO
Handmatige installatie
Als u de bibliotheek uit de broncode moet installeren:
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:
sudo groupadd -f -r gpio
sudo usermod -a -G gpio seeedVervang seeed door uw daadwerkelijke gebruikersnaam indien nodig.
Udev-regel
Kopieer het regelbestand en herlaad 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
JetPack 6.2-compatibiliteitsopmerking
Op sommige JetPack 6.2-installaties moet u mogelijk de modelnaam exporteren voordat u de bibliotheek gebruikt:
export JETSON_MODEL_NAME=JETSON_ORIN_NANO40 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:
| Modus | Beschrijving | Typisch gebruik |
|---|---|---|
BOARD | Nummering van pinnen op basis van hun fysieke locatie op de 40-pins header | Het beste wanneer u rechtstreeks vanaf de header-silkdruk of een pinout-diagram bedraadt |
BCM | Nummering van pinnen op basis van de GPIO-toewijzing die door de bibliotheek wordt gebruikt | Het 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.

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:
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:
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:
- Een tijdelijke
busybox devmem-methode - 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:
jetson-gpio-pinmux-lookup 31
Het voorbeeld hieronder toont de geretourneerde registerwaarde voor pin 31.

Stap 2: De outputmodus configureren
Installeer busybox indien nodig:
sudo apt install busyboxSchrijf vervolgens de pinmux-registerwaarde:
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:


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

Voer de outputtest opnieuw uit:
cd /opt/seeed/development_guide/05_gpio/jetson-gpio/samples
python3 simple_out.pyReferenties
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.

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-pin | Signaal | BGA-pin | Standaardfunctie |
|---|---|---|---|
| 1 | 3.3V | - | Hoofd 3.3V-voeding |
| 2 | 5V | - | Hoofd 5V-voeding |
| 3 | I2C1_SDA | PDD.02 | I2C #1 Data |
| 4 | 5V | - | Hoofd 5V-voeding |
| 5 | I2C1_SCL | PDD.01 | I2C #1 Klok |
| 6 | GND | - | Massa |
| 7 | GPIO09 | PAC.06 | Algemeen gebruik I/O |
| 8 | UART1_TXD | PR.02 | UART #1 Verzenden |
| 9 | GND | - | Massa |
| 10 | UART1_RXD | PR.03 | UART #1 Ontvangen |
| 11 | UART1_RTS | PR.04 | UART #1 Verzoek om te verzenden |
| 12 | I2S0_SCLK | PH.07 | Audio I2S #0 Klok |
| 13 | SPI1_SCK | PY.00 | SPI #1 Klok |
| 14 | GND | - | Massa |
| 15 | GPIO12 | PN.01 | Algemeen gebruik I/O |
| 16 | SPI1_CS1 | PY.04 | SPI #1 Chip Select #1 |
| 17 | 3.3V | - | Hoofd 3.3V-voeding |
| 18 | SPI1_CS0 | PY.03 | SPI #1 Chip Select #0 |
| 19 | SPI0_MOSI | PZ.05 | SPI #0 Master Out / Slave In |
| 20 | GND | - | Massa |
| 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 | SPI #0 Klok |
| 24 | SPI0_CS0 | PZ.06 | SPI #0 Chip Select #0 |
| 25 | GND | - | Massa |
| 26 | SPI0_CS1 | PZ.07 | SPI #0 Chip Select #1 |
| 27 | ID_I2C_SDA (I2C0_SDA) | PDD.00 | I2C #0 Data |
| 28 | ID_I2C_SCL (I2C0_SCL) | PCC.07 | I2C #0 Klok |
| 29 | GPIO01 | PQ.05 | Algemeen gebruik I/O |
| 30 | GND | - | Massa |
| 31 | GPIO11 | PQ.06 | Algemeen gebruik I/O |
| 32 | GPIO07 | PG.06 | Algemeen gebruik I/O |
| 33 | GPIO13 | PG.00 | Systeem Gereserveerd |
| 34 | GND | - | Massa |
| 35 | I2S0_LRCK (I2S0_FS) | PI.02 | Audio I2S #0 Frame Sync |
| 36 | UART1_CTS | PR.05 | UART #1 Clear to Send |
| 37 | SPI1_MOSI | PY.02 | SPI #1 Master Out / Slave In |
| 38 | I2S0_SDIN (I2S0_DIN) | PI.01 | Audio I2S #0 Data In |
| 39 | GND | - | Massa |
| 40 | I2S0_SDOUT (I2S0_DOUT) | PI.00 | Audio I2S #0 Data Out |
GPIO-bibliotheekinstallatie
Nummeringsmodi
De Jetson.GPIO-bibliotheek ondersteunt twee veelvoorkomende nummeringsschema's:
| Modus | Beschrijving | Typisch gebruik |
|---|---|---|
BOARD | Nummering van pinnen op basis van hun fysieke locatie op de 40-pins header | Het beste wanneer u rechtstreeks vanaf de header-silkdruk of een pinout-diagram bedraadt |
BCM | Nummering van pinnen op basis van de GPIO-toewijzing die door de bibliotheek wordt gebruikt | Het beste wanneer u Python GPIO-voorbeelden volgt die verwijzen naar logische GPIO-ID's |
GPIO-gebruiksvoorbeelden
Basis GPIO Output
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
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).
40-pins Header Pinout
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.


[!NOTE] Notities:
- Dit is de stroomcapaciteit per voedingspin.
- 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.
- Zie gerelateerde notitie boven tabel.
- Deze pinnen zijn verbonden met een SN74LVC4T245 buffer.
- Deze pinnen zijn direct verbonden met de SoC. De max. stuur die voldoet aan het volledige datablad VOL/VOH is 1mA.
- Voor power-on default, "pd" = SoC interne pulldown, "pu" = SoC interne pullup, en "z" = Tristate
- In de Type/Dir-kolom is Output naar de uitbreidingsheader, Input van de uitbreidingsheader. Bidir is voor bidirectionele signalen.
- 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.
