GPIO

Introduction

L'en-tête GPIO sur les cartes porteur reComputer est une interface matérielle polyvalente conçue pour connecter le module de calcul IA directement aux capteurs et actionneurs externes. Avec un brochage altamente compatible avec l'écosystème Raspberry Pi, il permet aux développeurs d'intégrer facilement de l'électronique standard pour le prototypage rapide. Au-delà de l'entrée et sortie numérique de base, ces broches multiplexées peuvent être configurées pour prendre en charge des protocoles de communication standard comme I2C, SPI, UART et PWM, permettant un contrôle matériel transparent pour les projets de robotique et d'IoT à l'aide de bibliothèques simples telles que Jetson.GPIO.

reComputer J401

reComputer J401

Jetson.GPIO est la bibliothèque Python de NVIDIA pour contrôler l'en-tête GPIO 40 broches sur les appareils Jetson. Son API est intentionnellement similaire à RPi.GPIO, ce qui la rend accessible aux utilisateurs venant du développement Raspberry Pi.

Installer avec pip

Si la bibliothèque n'est pas préinstallée, la méthode la plus simple est :

bash
sudo pip3 install Jetson.GPIO

Installation manuelle

Si vous devez installer la bibliothèque depuis le code source :

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

Permissions utilisateur

Autoriser l'utilisateur actuel à accéder au GPIO :

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

Remplacez seeed par votre nom d'utilisateur réel si nécessaire.

Règle Udev

Copiez le fichier de règles et rechargez 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

Note de compatibilité JetPack 6.2

Sur certaines configurations JetPack 6.2, vous devrez peut-être exporter le nom du modèle avant d'utiliser la bibliothèque :

bash
export JETSON_MODEL_NAME=JETSON_ORIN_NANO

40 broches

GPIO signifie General Purpose Input/Output (Entrée/Sortie à Usage Général). Ces broches permettent au logiciel de lire des signaux numériques externes ou de piloter des périphériques simples tels que des LED, des boutons, des buzzers et des lignes de contrôle.

Modes de numérotation

La bibliothèque Jetson.GPIO prend en charge deux schémas de numérotation courants :

ModeDescriptionUtilisation typique
BOARDNumérote les broches par leur emplacement physique sur l'en-tête 40 brochesLe meilleur choix lorsque vous cablez directement depuis la sérigraphie de l'en-tête ou un diagramme de brochage
BCMNumérote les broches par le mappage GPIO utilisé par la bibliothèqueLe meilleur choix lorsque vous suivez des exemples GPIO Python qui font référence à des IDs GPIO logiques

Disposition GPIO.BOARD

Disposition GPIO.BCM

Référence de broche exemple

L'image ci-dessous montre un exemple supplémentaire de référence de broche utile avant de tester les fonctions d'entrée ou de sortie.

image-20260603112011055

Entrée GPIO

Cette section montre comment lire une entrée GPIO sur Jetson en connectant une broche de test à GND et 3.3V et en observant l'état d'entrée dans le logiciel.

Connexion matérielle

Utilisez des fils de pontage pour connecter les broches de l'en-tête comme indiqué ci-dessous. Une méthode de test simple consiste à connecter d'abord GPIO.BOARD 12 à GND.

[!CAUTION] Vérifiez deux fois le mappage des broches avant le câblage. Des connexions incorrectes peuvent court-circuiter la carte.

Lire le signal

Exécutez le script d'exemple des exemples jetson-gpio :

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

Si le résultat correspond au niveau bas attendu, reconnectez la broche de test de GND à 3.3V et exécutez le script à nouveau :

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

La sortie du terminal doit maintenant indiquer un signal de niveau haut.

Sortie GPIO

Introduction

Sur JetPack 6.2, de nombreuses broches qui prenaient en charge à la fois l'entrée et la sortie peuvent se comporter comme entrée uniquement jusqu'à ce que le pinmux soit ajusté. Cette page présente deux méthodes pratiques pour restaurer le comportement de sortie sur les broches prises en charge :

  1. Une méthode temporaire busybox devmem
  2. Une méthode plus persistante de superposition device-tree

Méthode 1 : Sortie temporaire avec busybox

Étape 1 : Interroger le registre Pinmux

Utilisez jetson-gpio-pinmux-lookup pour trouver l'adresse du registre d'une broche d'en-tête :

bash
jetson-gpio-pinmux-lookup 31

L'exemple ci-dessous montre la valeur du registre retournée pour la broche 31.

Étape 2 : Configurer le mode de sortie

Installez busybox si nécessaire :

bash
sudo apt install busybox

Puis écrivez la valeur du registre pinmux :

bash
sudo busybox devmem 0x02430070 w 0x004

Étape 3 : Exécuter le test de sortie

Mettez à jour le script d'exemple pour utiliser la bonne broche BCM pour votre cas de test, puis exécutez-le :

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

Vous pouvez vérifier le changement de niveau de sortie avec un multimètre ou un oscilloscope.

Méthode 2 : Superposition Device-Tree

Cette méthode est meilleure si vous souhaitez que la configuration des broches persiste.

Clonez le projet auxiliaire et modifiez le fichier 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

Ajustez la définition de broche pour le GPIO que vous souhaitez modifier, puis construisez la superposition :

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

Après activation de la superposition, utilisez le numéro de broche BCM connu dans le script de test.

image-20260603151738253

Exécutez le test de sortie à nouveau :

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

Références

reComputer Super J401

reComputer Super J401

Introduction

GPIO signifie General Purpose Input/Output (Entrée/Sortie à Usage Général). Ces broches permettent au logiciel de lire des signaux numériques externes ou de piloter des périphériques simples tels que des LED, des boutons, des buzzers et des lignes de contrôle. Le reComputer Super dispose d'un en-tête d'extension 40 broches qui donne accès aux broches GPIO, permettant une intégration facile avec des appareils externes.

40-Pin Extension Header

Connexion matérielle

Le reComputer Super dispose d'un en-tête d'extension 40 broches qui donne accès aux broches GPIO. Pour utiliser les broches GPIO, vous devez connecter des appareils externes aux broches appropriées de cet en-tête.

Brochage de l'en-tête 40 broches

Les détails de l'en-tête 40 broches sont indiqués ci-dessous :

Broche d'en-têteSignalBroche BGAFonction par défaut
13.3V-Alimentation principale 3.3V
25V-Alimentation principale 5V
3I2C1_SDAPDD.02Données I2C #1
45V-Alimentation principale 5V
5I2C1_SCLPDD.01Horloge I2C #1
6GND-Masse
7GPIO09PAC.06Entrée/Sortie à usage général
8UART1_TXDPR.02Transmission UART #1
9GND-Masse
10UART1_RXDPR.03Réception UART #1
11UART1_RTSPR.04Demande d'envoi UART #1
12I2S0_SCLKPH.07Horloge audio I2S #0
13SPI1_SCKPY.00Horloge SPI #1
14GND-Masse
15GPIO12PN.01Entrée/Sortie à usage général
16SPI1_CS1PY.04Sélection de puce SPI #1 #1
173.3V-Alimentation principale 3.3V
18SPI1_CS0PY.03Sélection de puce SPI #1 #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.03Horloge SPI #0
24SPI0_CS0PZ.06Sélection de puce SPI #0 #0
25GND-Masse
26SPI0_CS1PZ.07Sélection de puce SPI #0 #1
27ID_I2C_SDA (I2C0_SDA)PDD.00Données I2C #0
28ID_I2C_SCL (I2C0_SCL)PCC.07Horloge I2C #0
29GPIO01PQ.05Entrée/Sortie à usage général
30GND-Masse
31GPIO11PQ.06Entrée/Sortie à usage général
32GPIO07PG.06Entrée/Sortie à usage général
33GPIO13PG.00Réservé système
34GND-Masse
35I2S0_LRCK (I2S0_FS)PI.02Synchronisation de trame audio I2S #0
36UART1_CTSPR.05Effacement pour envoyer UART #1
37SPI1_MOSIPY.02SPI #1 Master Out / Slave In
38I2S0_SDIN (I2S0_DIN)PI.01Entrée données audio I2S #0
39GND-Masse
40I2S0_SDOUT (I2S0_DOUT)PI.00Sortie données audio I2S #0

Installation de la bibliothèque GPIO

Modes de numérotation

La bibliothèque Jetson.GPIO prend en charge deux schémas de numérotation courants :

ModeDescriptionUtilisation typique
BOARDNumérote les broches par leur emplacement physique sur l'en-tête 40 brochesLe meilleur choix lorsque vous cablez directement depuis la sérigraphie de l'en-tête ou un diagramme de brochage
BCMNumérote les broches par le mappage GPIO utilisé par la bibliothèqueLe meilleur choix lorsque vous suivez des exemples GPIO Python qui font référence à des IDs GPIO logiques

Exemples d'utilisation GPIO

Sortie GPIO de base

python
import Jetson.GPIO as GPIO
import time

# Définir le mode GPIO
GPIO.setmode(GPIO.BOARD)

# Définir la broche
output_pin = 12

# Configurer la broche
GPIO.setup(output_pin, GPIO.OUT)

try:
    while True:
        # Allumer la broche
        GPIO.output(output_pin, GPIO.HIGH)
        time.sleep(1)
        # Éteindre la broche
        GPIO.output(output_pin, GPIO.LOW)
        time.sleep(1)
except KeyboardInterrupt:
    # Nettoyer
    GPIO.cleanup()

Entrée GPIO de base

python
import Jetson.GPIO as GPIO
import time

# Définir le mode GPIO
GPIO.setmode(GPIO.BOARD)

# Définir la broche
input_pin = 11

# Configurer la broche
GPIO.setup(input_pin, GPIO.IN)

try:
    while True:
        # Lire la valeur de la broche
        value = GPIO.input(input_pin)
        print(f"Valeur de la broche: {value}")
        time.sleep(0.5)
except KeyboardInterrupt:
    # Nettoyer
    GPIO.cleanup()

Fonctionnalités GPIO spécifiques Super

L'en-tête 40 broches du reComputer Super donne accès à une gamme de broches GPIO, permettant une intégration flexible avec des appareils externes. Cela le rend idéal pour une variété d'applications, notamment :

  • Contrôler des LED et autres indicateurs
  • Lire les pressions de boutons et les entrées de capteurs
  • Contrôler des moteurs et actionneurs
  • Interfacer avec d'autres microcontrôleurs et appareils

Précautions de sécurité

  • Vérifiez toujours deux fois les connexions des broches avant d'appliquer l'alimentation
  • Utilisez des résistances appropriées lors du branchement de LED et autres composants
  • Évitez les courts-circuits sur les broches GPIO
  • Tenez compte du courant maximal nominal pour les broches GPIO

Lectures complémentaires

Seeed Jetson AGX Orin Kit

Seeed Jetson AGX Orin Kit

Introduction

Le Seeed Jetson AGX Orin Kit comprend un en-tête d'extension 40 broches (2 × 20, pas de 2,54 mm) (J30).

image-20260603145642641

Brochage de l'en-tête 40 broches

agx_40pin.png

Le connecteur d'extension 40 broches comprend diverses interfaces audio et contrôle, notamment :

  • Audio : I2S, microphone numérique, horloge et contrôle
  • I2C (2x), SPI, UART, CAN et PWM (2x)
  • GPIOs (dédiés ainsi que partagés avec d'autres broches d'interface)

Toutes les broches de signal sont de niveau 3,3V.

[!NOTE] Beaucoup des signaux de l'en-tête d'extension 40 broches proviennent de translateurs de niveau TI TXB0108. En raison de la conception de ces dispositifs, les pilotes de sortie sont très faibles, ils peuvent donc être suractivés par la sortie d'un autre appareil connecté pour le support bidirectionnel. Les signaux associés à ces tampons ont un "3" dans la colonne de notes du tableau suivant. Consultez la note d'application Considérations d'utilisation GPIO de l'en-tête d'extension 40 broches du Jetson Nano Developer Kit pour plus d'informations.

image-20260603144115885

image-20260603144154470

[!NOTE] Notes :

  1. C'est la capacité de courant par broche d'alimentation.
  2. Ces broches se connectent au SoC via un translateur de niveau FXMA2102L8X. Elles sont à drain ouvert (soit pull-up, soit pilotées à l'état bas par le SoC lorsqu'elles sont configurées en sortie). Le courant maximum conforme à la fiche technique VOL est de 1mA.
  3. Voir la note associée ci-dessus du tableau.
  4. Ces broches se connectent à un tampon SN74LVC4T245.
  5. Ces broches sont directement connectées au SoC. Le courant maximum conforme à la fiche technique VOL/VOH complète est de 1mA.
  6. Pour la valeur par défaut à la mise sous tension, "pd" = Pull-down interne SoC, "pu" = Pull-up interne SoC, et "z" = Tristate
  7. Dans la colonne Type/Dir, Sortie est vers l'en-tête d'extension. Entrée est depuis l'en-tête d'extension. Bidir est pour les signaux bidirectionnels.
  8. La direction indiquée correspond à celle indiquée dans les schémas de conception de référence. Ces signaux prennent en charge la fonctionnalité GPIO et peuvent être bidirectionnels.

En-tête d'automatisation

Le Seeed Jetson AGX Orin Kit comprend un en-tête 12 broches, pas de 2,54 mm (J42) qui rend accessibles plusieurs signaux de contrôle système critiques.

  • Broche #1, #12 : GND
  • Broche #2, #3, #4 : Entrée, même fonction que trois boutons : Recovery, Reset, Power.
  • Broche #5-#6 : Ouvert : Auto mise sous tension désactivée ; Court-circuité : Auto mise sous tension activée.
  • Broche #7 : CVB_STBY : sortie, indiquant si le module est en veille ou non.
  • Broche #8 : SYSTEM_OC : entrée, pour déclencher la limitation Tegra.
  • Broche #9-#10 : Ouvert : Wake(Boot) on LAN depuis l'état éteint désactivé ; Court-circuité : Wake(Boot) on LAN depuis l'état éteint activé.
  • Broche #11 : JTAG_TRST, reset de test JTAG.
image-20260603145515081

image-20260603144641982