Edited at

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


はじめに

 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感覚で使えます)

(その他の情報)

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