GPIO
はじめに
reComputer carrier board の GPIO ヘッダーは、AI コンピュートモジュールを外部センサーやアクチュエーターに直接接続するために設計された多用途なハードウェアインターフェースです。Raspberry Pi エコシステムと高い互換性を持つピン配置により、開発者は既成の電子機器を簡単に統合して迅速なプロトタイピングを実現できます。基本的なデジタル入力・出力に加え、これらのマルチプレクストピンは I2C、SPI、UART、PWM などの標準通信プロトコルをサポートするように構成でき、Jetson.GPIO などのシンプルなライブラリを使用してロボットや IoT プロジェクトのシームレスなハードウェア制御を実現します。
reComputer J401
reComputer J401
Jetson.GPIO は、NVIDIA が提供する Jetson デバイスの 40 ピン GPIO ヘッダーを制御するための Python ライブラリです。API は意図的に RPi.GPIO と似せており、Raspberry Pi 開発経験のあるユーザーが 쉽게 접근할 수 있도록 설계되었습니다.
pip でインストール
ライブラリがプレインストールされていない場合、最もシンプルな方法は:
sudo pip3 install Jetson.GPIO
手動インストール
ソースコードからライブラリをインストールする必要がある場合:
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
ユーザーの権限
現在のユーザーが GPIO にアクセスできるようにする:
sudo groupadd -f -r gpio
sudo usermod -a -G gpio seeed必要に応じて seeed を実際のユーザー名に置き換えてください。
Udev ルール
ルールファイルをコピーして 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 互換性に関する注意
一部の JetPack 6.2 セットアップでは、ライブラリを使用する前にモデル名をエクスポートする必要がある場合があります:
export JETSON_MODEL_NAME=JETSON_ORIN_NANO40 ピン
GPIO は General Purpose Input/Output(汎用入出力)の略です。これらのピンを使用すると、LED、ボタン、ブザー、制御ラインなどの単純な外部機器を駆動する外部デジタル信号をソフトウェアで読み取ることができます。
番号付けモード
Jetson.GPIO ライブラリは 2 つの一般的な番号付けスキームをサポートしています:
| モード | 説明 | 典型的な使用 |
|---|---|---|
BOARD | 40 ピン ヘッダー上の物理的な位置でピンに番号を付ける | ヘッダーのシルク印刷やピン配置図から直接配線する場合に最適 |
BCM | ライブラリで使用される GPIO マッピングでピンに番号を付ける | 論理 GPIO ID を参照する Python GPIO の例に従う場合に最適 |
GPIO.BOARD レイアウト

GPIO.BCM レイアウト

ピン参照の例
以下の画像は、入力または出力機能をテストする前に有用な追加のピン参照例を示しています。

GPIO 入力
このセクションでは、テストピンを GND と 3.3V に接続し、ソフトウェアで入力状態を観察することで、Jetson 上の GPIO 入力を読み取る方法を示します。
ハードウェア接続
以下の図のように、ジャンパーワイヤーを使用してヘッダーピンを接続してください。シンプルなテスト方法は、最初に GPIO.BOARD 12 を GND に接続することです。

[!CAUTION] 配線前にピン マッピングを必ず確認してください。誤った接続はボードをショートさせる可能性があります。
信号の読み取り
jetson-gpio サンプルからサンプル スクリプトを実行します:
cd /opt/seeed/development_guide/05_gpio/jetson-gpio/samples
sudo python3 simple_input.py
結果が予想される低レベルと一致する場合は、テストピンを GND から 3.3V に再接続してスクリプトを再度実行します:
cd /opt/seeed/development_guide/05_gpio/jetson-gpio/samples
export JETSON_MODEL_NAME=JETSON_ORIN_NANO
python3 simple_input.py
ターミナル出力に今度はハイレベル信号が表示されます。
GPIO 出力
はじめに
JetPack 6.2 では、以前は入力と出力を両方サポートしていた多くのピンが、pinmux が調整されるまで入力のみとして動作する可能性があります。このページでは、サポートされているピンで出力動作を復元する 2 つの実用的な方法を示します:
- 一時的な
busybox devmemメソッド - より永続的な device-tree overlay メソッド
方法 1:busybox を使用した一時的な出力
ステップ 1:Pinmux レジスタのクエリ
ヘッダーピンのレジスタ アドレスを見つけるには jetson-gpio-pinmux-lookup を使用します:
jetson-gpio-pinmux-lookup 31
以下の例はピン 31 の返されたレジスタ値を示しています。

ステップ 2:出力モードの構成
必要に応じて busybox をインストールします:
sudo apt install busybox次に pinmux レジスタ値を書き込みます:
sudo busybox devmem 0x02430070 w 0x004
ステップ 3:出力テストの実行
テスト ケースの正しい BCM ピンを使用するようにサンプル スクリプトを更新し、実行します:


cd /opt/seeed/development_guide/05_gpio/jetson-gpio/samples
export JETSON_MODEL_NAME=JETSON_ORIN_NANO
python3 simple_out.py
マルチメートルまたはオシロスコープで出力レベルの変化を確認できます。
方法 2:Device-Tree Overlay
ピン構成を持続させたい場合にこの方法は優れています。
ヘルパー プロジェクトをクローンして DTS ファイルを編集します:
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
変更したい GPIO のピン定義を調整し、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

overlay が有効になったら、テスト スクリプトで既知の BCM ピン番号を使用します。

出力テストを再度実行します:
cd /opt/seeed/development_guide/05_gpio/jetson-gpio/samples
python3 simple_out.py参照
reComputer Super J401
reComputer Super J401
はじめに
GPIO は General Purpose Input/Output(汎用入出力)の略です。これらのピンを使用すると、LED、ボタン、ブザー、制御ラインなどの単純な外部機器を駆動する外部デジタル信号をソフトウェアで読み取ることができます。reComputer Super は GPIO ピンへのアクセスを提供する 40 ピン拡張ヘッダーを特徴とし、外部デバイスとの容易な統合を可能にします。

ハードウェア接続
reComputer Super は GPIO ピンへのアクセスを提供する 40 ピン拡張ヘッダーを特徴としています。GPIO ピンを使用するには、外部デバイスをこのヘッダーの適切なピンに接続する必要があります。
40 ピン ヘッダー ピン配置
40 ピン ヘッダーの詳細は以下の通りです:
| ヘッダーピン | 信号 | BGA ピン | デフォルト機能 |
|---|---|---|---|
| 1 | 3.3V | - | メイン 3.3V 電源 |
| 2 | 5V | - | メイン 5V 電源 |
| 3 | I2C1_SDA | PDD.02 | I2C #1 データ |
| 4 | 5V | - | メイン 5V 電源 |
| 5 | I2C1_SCL | PDD.01 | I2C #1 クロック |
| 6 | GND | - | GND |
| 7 | GPIO09 | PAC.06 | 汎用入出力 |
| 8 | UART1_TXD | PR.02 | UART #1 送信 |
| 9 | GND | - | GND |
| 10 | UART1_RXD | PR.03 | UART #1 受信 |
| 11 | UART1_RTS | PR.04 | UART #1 送信要求 |
| 12 | I2S0_SCLK | PH.07 | オーディオ I2S #0 クロック |
| 13 | SPI1_SCK | PY.00 | SPI #1 クロック |
| 14 | GND | - | GND |
| 15 | GPIO12 | PN.01 | 汎用入出力 |
| 16 | SPI1_CS1 | PY.04 | SPI #1 チップ選択 #1 |
| 17 | 3.3V | - | メイン 3.3V 電源 |
| 18 | SPI1_CS0 | PY.03 | SPI #1 チップ選択 #0 |
| 19 | SPI0_MOSI | PZ.05 | SPI #0 マスター出力/スレーブ入力 |
| 20 | GND | - | GND |
| 21 | SPI0_MISO | PZ.04 | SPI #0 マスター入力/スレーブ出力 |
| 22 | SPI1_MISO | PY.01 | SPI #1 マスター入力/スレーブ出力 |
| 23 | SPI0_SCK | PZ.03 | SPI #0 クロック |
| 24 | SPI0_CS0 | PZ.06 | SPI #0 チップ選択 #0 |
| 25 | GND | - | GND |
| 26 | SPI0_CS1 | PZ.07 | SPI #0 チップ選択 #1 |
| 27 | ID_I2C_SDA (I2C0_SDA) | PDD.00 | I2C #0 データ |
| 28 | ID_I2C_SCL (I2C0_SCL) | PCC.07 | I2C #0 クロック |
| 29 | GPIO01 | PQ.05 | 汎用入出力 |
| 30 | GND | - | GND |
| 31 | GPIO11 | PQ.06 | 汎用入出力 |
| 32 | GPIO07 | PG.06 | 汎用入出力 |
| 33 | GPIO13 | PG.00 | システム予約 |
| 34 | GND | - | GND |
| 35 | I2S0_LRCK (I2S0_FS) | PI.02 | オーディオ I2S #0 フレーム同期 |
| 36 | UART1_CTS | PR.05 | UART #1 クリアトゥザーнд |
| 37 | SPI1_MOSI | PY.02 | SPI #1 マスター出力/スレーブ入力 |
| 38 | I2S0_SDIN (I2S0_DIN) | PI.01 | オーディオ I2S #0 データ入力 |
| 39 | GND | - | GND |
| 40 | I2S0_SDOUT (I2S0_DOUT) | PI.00 | オーディオ I2S #0 データ出力 |
GPIO ライブラリのインストール
番号付けモード
Jetson.GPIO ライブラリは 2 つの一般的な番号付けスキームをサポートしています:
| モード | 説明 | 典型的な使用 |
|---|---|---|
BOARD | 40 ピン ヘッダー上の物理的な位置でピンに番号を付ける | ヘッダーのシルク印刷やピン配置図から直接配線する場合に最適 |
BCM | ライブラリで使用される GPIO マッピングでピンに番号を付ける | 論理 GPIO ID を参照する Python GPIO の例に従う場合に最適 |
GPIO 使用例
基本的な GPIO 出力
import Jetson.GPIO as GPIO
import time
# GPIO モードを設定
GPIO.setmode(GPIO.BOARD)
# ピンを定義
output_pin = 12
# ピンを設定
GPIO.setup(output_pin, GPIO.OUT)
try:
while True:
# ピンをオン
GPIO.output(output_pin, GPIO.HIGH)
time.sleep(1)
# ピンをオフ
GPIO.output(output_pin, GPIO.LOW)
time.sleep(1)
except KeyboardInterrupt:
# クリーンアップ
GPIO.cleanup()基本的な GPIO 入力
import Jetson.GPIO as GPIO
import time
# GPIO モードを設定
GPIO.setmode(GPIO.BOARD)
# ピンを定義
input_pin = 11
# ピンを設定
GPIO.setup(input_pin, GPIO.IN)
try:
while True:
# ピン値を読み取り
value = GPIO.input(input_pin)
print(f"ピン値: {value}")
time.sleep(0.5)
except KeyboardInterrupt:
# クリーンアップ
GPIO.cleanup()Super 固有 GPIO 機能
reComputer Super の 40 ピン ヘッダーは外部デバイスとの柔軟な統合を可能にするさまざまな GPIO ピンへのアクセスを提供します。これは、以下を含むさまざまなアプリケーションに最適です:
- LED やその他のインジケーターの制御
- ボタンの押下やセンサー入力の読み取り
- モーターやアクチュエーターの制御
- 他のマイクロコントローラーやデバイスとのインターフェース
安全上の注意
- 電源を投入する前は必ずピン接続を慎重に確認してください
- LED やその他のコンポーネントを接続する場合は適切な抵抗を使用してください
- GPIO ピンのショートを避けてください
- GPIO ピンの最大電流定格に注意してください
参考文献
Seeed Jetson AGX Orin Kit
Seeed Jetson AGX Orin Kit
はじめに
Seeed Jetson AGX Orin Kit には、40 ピン(2 × 20、2.54 mm ピッチ)の拡張ヘッダー(J30)が含まれています。
40 ピン ヘッダー ピン配置
40 ピン拡張コネクタには、次のようなさまざまなオーディオおよび制御インターフェースが含まれています:
- オーディオ:I2S、デジタルマイク、クロックおよび制御
- I2C (2x)、SPI、UART、CAN および PWM (2x)
- GPIO(専用および他のインターフェースピンと共有)
すべての信号ピンは 3.3V レベルです。
[!NOTE] 40 ピン拡張ヘッダーの多くの信号は、TI TXB0108 レベル変換器からのものです。これらのデバイスの設計により、出力ドライバーは非常に弱いため、双方向サポートのために接続された別のデバイス出力によってオーバードライブされる可能性があります。これらのバッファに関連する信号は、次の表の注釈列に「3」が付いています。詳細については、Jetson Nano Developer Kit 40 ピン拡張ヘッダー GPIO 使用に関する考慮事項アプリケーション ノートを参照してください。


[!NOTE] 注:
- これは電源ピンごとの電流容量です。
- これらのピンは FXMA2102L8X レベル変換器を通じて SoC に接続されています。これらはオープンソース(プルアップされているか、出力として構成されている場合は SoC によってロー drive されます)です。データシートの VOL を満たす最大 drive 力は 1mA です。
- 上記の表の関連する注を参照してください。
- これらのピンは SN74LVC4T245 バッファに接続されています。
- これらのピンは SoC に直接接続されています。完全なデータシート VOL/VOH を満たす最大 drive 力は 1mA です。
- 電源投入時のデフォルトについて、「pd」= SoC 内部プルダウン、「pu」= SoC 内部プルアップ、「z」= トライステート
- タイプ/方向列で、出力は拡張ヘッダーへの方向、入力は拡張ヘッダーからのものです。双方向は双方向信号用です。
- 示された方向は、参照設計 схем で示された方向と一致しています。これらの信号は GPIO 機能をサポートし、双方向である可能性があります。
自動化ヘッダー
Seeed Jetson AGX Orin Kit には、いくつかの重要なシステム制御信号にアクセスできる 12 ピン、2.54 mm ピッチのヘッダー(J42)が含まれています。
- ピン #1, #12: GND
- ピン #2, #3, #4: 入力、3 つのボタンと同じ機能:Recovery、Reset、Power。
- ピン #5-#6: オープン:自動電源投入無効;ショート:自動電源投入有効。
- ピン #7: CVB_STBY: 出力、モジュールがスリープ状態かどうかを示します。
- ピン #8: SYSTEM_OC: 入力、Tegra スロットルをトリガーします。
- ピン #9-#10: オープン:オフ状態からの Wake(Boot) on LAN 無効;ショート:オフ状態からの Wake(Boot) on LAN 有効。
- ピン #11: JTAG_TRST、JTAG テスト リセット。
