LoginSignup
20
18

More than 3 years have passed since last update.

Jetson開発ボードでGPIOを使ってみる

Last updated at Posted at 2019-05-02

はじめに

 JETSON TX2の開発ボードには、RaspberryPiのピン互換のJ21があります。(ピン配置)
 RaspberryPiのWiringPiように、お手軽にGPIOを操作できるライブラリとして、NVIDIAのGitHubに、Python向けのGPIOライブラリが公開されています。

こちらを見る限り、XAVIER, TX2, TX1, NANOに対応しているようです)

 ここでは、LEDを点滅させるところまで試してみました。

インストール

こちらの手順に従って、インストールします。

前準備

python3の開発環境をインストール

~$ sudo apt install python3-dev python3-pip

Jetson.GPIOのインストール

GitHubからダウンロードしてインストール。

~$ sudo su
/home/nvidia# cd /opt/nvidia/
/opt/nvidia# git clone https://github.com/NVIDIA/jetson-gpio.git
/opt/nvidia# mv /opt/nvidia/jetson-gpio-master /opt/nvidia/jetson-gpio
/opt/nvidia# cd jetson-gpio
/opt/nvidia/jetson-gpio# python3 setup.py install

gpioグループの追加と、使用するユーザをそのグループに追加

/opt/nvidia/jetson-gpio# sudo groupadd -f -r gpio
/opt/nvidia/jetson-gpio# sudo usermod -a -G nvidia

udevルールをコピーして、udevに新しいルールを適応する

/opt/nvidia/jetson-gpio# cp /opt/nvidia/jetson-gpio/etc/99-gpio.rules /etc/udev/rules.d/
/opt/nvidia/jetson-gpio# udevadm control --reload-rules && sudo udevadm trigger
/opt/nvidia/jetson-gpio# exit

最後にスーパーユーザーから抜けます。

サンプルを試す

GPIOの出力のサンプルプログラムは、GPIO18(ピン番号12)を2秒間隔でON/OFFを繰り返します。
ここに抵抗とLEDを付けておきます。[Ctrl-C]で停止します。

(自作のRaspberryPi用絶縁IOボードPiFA-HATで動作検証。D6が点滅しています)
P_20190502_124913_.jpg

/opt/nvidia/jetson-gpio$ cd samples/
/opt/nvidia/jetson-gpio/samples$ ./run_sample.sh
Usage: ./run_sample.sh <sample application>
sample_application: simple_input.py
                    simple_output.py
                    button_led.py
                    button_event.py
                    button_interrupt.py
/opt/nvidia/jetson-gpio/samples$ ./run_sample.sh simple_out.py
Starting demo now! Press CTRL+C to exit
Outputting 1 to pin 18
Outputting 0 to pin 18
Outputting 0 to pin 18
Outputting 0 to pin 18
^CTraceback (most recent call last):
  File "./simple_out.py", line 48, in <module>
    main()
  File "./simple_out.py", line 39, in main
    time.sleep(1)
KeyboardInterrupt
nvidia@tegra-ubuntu:/opt/nvidia/jetson-gpio/samples$

補足

その1

./run_sample.shを使わず、直接simple_output.pyを実行するには、下記のようにします。

/opt/nvidia/jetson-gpio/samples$ export PYTHONPATH="/opt/nvidia/jetson-gpio/lib/python/
/opt/nvidia/jetson-gpio/samples$ ./simple_output.py

その2

GPIOの出力のサンプルプログラムの26行目は、GPIOの番号をリストにすると、まとめてON/OFFできます。
例えば、GPIO4, 5, 8, 13, 17, 24, 25をまとめて操作する場合は下記のように修正します。

修正前
# Pin Definitions
output_pin = 18  # BOARD pin 12, BCM pin 18
修正後
# Pin Definitions
output_pin = [4, 5, 8, 13, 17, 24, 25]

ひとりごと

18年春にTX2を入手してから、お手軽にGPIOを使う方法がないかと探していましたが、

といった感じで、なかなか良いサンプルが見つけられず・・・
このタイミングで、NVIDIA公式からライブラリが出てくれたのは、本当に有り難い事です。
(ホントにRaspberryPi感覚で使えます)

(その他の情報)

以上、ご参考になれば幸いです。

20
18
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
20
18