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 でインストール

ライブラリがプレインストールされていない場合、最もシンプルな方法は:

bash
sudo pip3 install Jetson.GPIO

手動インストール

ソースコードからライブラリをインストールする必要がある場合:

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

ユーザーの権限

現在のユーザーが GPIO にアクセスできるようにする:

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

必要に応じて seeed を実際のユーザー名に置き換えてください。

Udev ルール

ルールファイルをコピーして 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 互換性に関する注意

一部の JetPack 6.2 セットアップでは、ライブラリを使用する前にモデル名をエクスポートする必要がある場合があります:

bash
export JETSON_MODEL_NAME=JETSON_ORIN_NANO

40 ピン

GPIO は General Purpose Input/Output(汎用入出力)の略です。これらのピンを使用すると、LED、ボタン、ブザー、制御ラインなどの単純な外部機器を駆動する外部デジタル信号をソフトウェアで読み取ることができます。

番号付けモード

Jetson.GPIO ライブラリは 2 つの一般的な番号付けスキームをサポートしています:

モード説明典型的な使用
BOARD40 ピン ヘッダー上の物理的な位置でピンに番号を付けるヘッダーのシルク印刷やピン配置図から直接配線する場合に最適
BCMライブラリで使用される GPIO マッピングでピンに番号を付ける論理 GPIO ID を参照する Python GPIO の例に従う場合に最適

GPIO.BOARD レイアウト

GPIO.BCM レイアウト

ピン参照の例

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

image-20260603112011055

GPIO 入力

このセクションでは、テストピンを GND3.3V に接続し、ソフトウェアで入力状態を観察することで、Jetson 上の GPIO 入力を読み取る方法を示します。

ハードウェア接続

以下の図のように、ジャンパーワイヤーを使用してヘッダーピンを接続してください。シンプルなテスト方法は、最初に GPIO.BOARD 12GND に接続することです。

[!CAUTION] 配線前にピン マッピングを必ず確認してください。誤った接続はボードをショートさせる可能性があります。

信号の読み取り

jetson-gpio サンプルからサンプル スクリプトを実行します:

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

結果が予想される低レベルと一致する場合は、テストピンを GND から 3.3V に再接続してスクリプトを再度実行します:

bash
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 つの実用的な方法を示します:

  1. 一時的な busybox devmem メソッド
  2. より永続的な device-tree overlay メソッド

方法 1:busybox を使用した一時的な出力

ステップ 1:Pinmux レジスタのクエリ

ヘッダーピンのレジスタ アドレスを見つけるには jetson-gpio-pinmux-lookup を使用します:

bash
jetson-gpio-pinmux-lookup 31

以下の例はピン 31 の返されたレジスタ値を示しています。

ステップ 2:出力モードの構成

必要に応じて busybox をインストールします:

bash
sudo apt install busybox

次に pinmux レジスタ値を書き込みます:

bash
sudo busybox devmem 0x02430070 w 0x004

ステップ 3:出力テストの実行

テスト ケースの正しい BCM ピンを使用するようにサンプル スクリプトを更新し、実行します:

bash
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 ファイルを編集します:

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

変更したい GPIO のピン定義を調整し、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

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

image-20260603151738253

出力テストを再度実行します:

bash
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 ピン拡張ヘッダーを特徴とし、外部デバイスとの容易な統合を可能にします。

40-Pin Extension Header

ハードウェア接続

reComputer Super は GPIO ピンへのアクセスを提供する 40 ピン拡張ヘッダーを特徴としています。GPIO ピンを使用するには、外部デバイスをこのヘッダーの適切なピンに接続する必要があります。

40 ピン ヘッダー ピン配置

40 ピン ヘッダーの詳細は以下の通りです:

ヘッダーピン信号BGA ピンデフォルト機能
13.3V-メイン 3.3V 電源
25V-メイン 5V 電源
3I2C1_SDAPDD.02I2C #1 データ
45V-メイン 5V 電源
5I2C1_SCLPDD.01I2C #1 クロック
6GND-GND
7GPIO09PAC.06汎用入出力
8UART1_TXDPR.02UART #1 送信
9GND-GND
10UART1_RXDPR.03UART #1 受信
11UART1_RTSPR.04UART #1 送信要求
12I2S0_SCLKPH.07オーディオ I2S #0 クロック
13SPI1_SCKPY.00SPI #1 クロック
14GND-GND
15GPIO12PN.01汎用入出力
16SPI1_CS1PY.04SPI #1 チップ選択 #1
173.3V-メイン 3.3V 電源
18SPI1_CS0PY.03SPI #1 チップ選択 #0
19SPI0_MOSIPZ.05SPI #0 マスター出力/スレーブ入力
20GND-GND
21SPI0_MISOPZ.04SPI #0 マスター入力/スレーブ出力
22SPI1_MISOPY.01SPI #1 マスター入力/スレーブ出力
23SPI0_SCKPZ.03SPI #0 クロック
24SPI0_CS0PZ.06SPI #0 チップ選択 #0
25GND-GND
26SPI0_CS1PZ.07SPI #0 チップ選択 #1
27ID_I2C_SDA (I2C0_SDA)PDD.00I2C #0 データ
28ID_I2C_SCL (I2C0_SCL)PCC.07I2C #0 クロック
29GPIO01PQ.05汎用入出力
30GND-GND
31GPIO11PQ.06汎用入出力
32GPIO07PG.06汎用入出力
33GPIO13PG.00システム予約
34GND-GND
35I2S0_LRCK (I2S0_FS)PI.02オーディオ I2S #0 フレーム同期
36UART1_CTSPR.05UART #1 クリアトゥザーнд
37SPI1_MOSIPY.02SPI #1 マスター出力/スレーブ入力
38I2S0_SDIN (I2S0_DIN)PI.01オーディオ I2S #0 データ入力
39GND-GND
40I2S0_SDOUT (I2S0_DOUT)PI.00オーディオ I2S #0 データ出力

GPIO ライブラリのインストール

番号付けモード

Jetson.GPIO ライブラリは 2 つの一般的な番号付けスキームをサポートしています:

モード説明典型的な使用
BOARD40 ピン ヘッダー上の物理的な位置でピンに番号を付けるヘッダーのシルク印刷やピン配置図から直接配線する場合に最適
BCMライブラリで使用される GPIO マッピングでピンに番号を付ける論理 GPIO ID を参照する Python GPIO の例に従う場合に最適

GPIO 使用例

基本的な GPIO 出力

python
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 入力

python
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)が含まれています。

image-20260603145642641

40 ピン ヘッダー ピン配置

agx_40pin.png

40 ピン拡張コネクタには、次のようなさまざまなオーディオおよび制御インターフェースが含まれています:

  • オーディオ:I2S、デジタルマイク、クロックおよび制御
  • I2C (2x)、SPI、UART、CAN および PWM (2x)
  • GPIO(専用および他のインターフェースピンと共有)

すべての信号ピンは 3.3V レベルです。

[!NOTE] 40 ピン拡張ヘッダーの多くの信号は、TI TXB0108 レベル変換器からのものです。これらのデバイスの設計により、出力ドライバーは非常に弱いため、双方向サポートのために接続された別のデバイス出力によってオーバードライブされる可能性があります。これらのバッファに関連する信号は、次の表の注釈列に「3」が付いています。詳細については、Jetson Nano Developer Kit 40 ピン拡張ヘッダー GPIO 使用に関する考慮事項アプリケーション ノートを参照してください。

image-20260603144115885

image-20260603144154470

[!NOTE] 注:

  1. これは電源ピンごとの電流容量です。
  2. これらのピンは FXMA2102L8X レベル変換器を通じて SoC に接続されています。これらはオープンソース(プルアップされているか、出力として構成されている場合は SoC によってロー drive されます)です。データシートの VOL を満たす最大 drive 力は 1mA です。
  3. 上記の表の関連する注を参照してください。
  4. これらのピンは SN74LVC4T245 バッファに接続されています。
  5. これらのピンは SoC に直接接続されています。完全なデータシート VOL/VOH を満たす最大 drive 力は 1mA です。
  6. 電源投入時のデフォルトについて、「pd」= SoC 内部プルダウン、「pu」= SoC 内部プルアップ、「z」= トライステート
  7. タイプ/方向列で、出力は拡張ヘッダーへの方向、入力は拡張ヘッダーからのものです。双方向は双方向信号用です。
  8. 示された方向は、参照設計 схем で示された方向と一致しています。これらの信号は 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 テスト リセット。
image-20260603145515081

image-20260603144641982