「Jetson Nano」でにゃんこを判別してLチカで知らせるエッジAIデバイスを作るJetson Nanoで組み込みAIを試す(5)(2/4 ページ)

» 2019年10月23日 10時00分 公開
[大原雄介MONOist]

GPIOポートを使ってLEDを取り付ける

 Jetson NanoにはGPIOポートがJ41というピンヘッダに用意されている(図1)。今回はPin 31とPin 33にLEDを取り付けてみることにする。

図1 図1 Jetson NanoのJ41の内訳。I2CやSPIなどとも多重化されているので、ちょっと分かりにくい(クリックで拡大) 出典:NVIDIA Japanが公開している“Getting Started with Jetson Nano”のスライド

 さて、Jetson NanoでGPIOを扱うためのパッケージとして、NVIDIAはJetson-gpioを提供している。面白いのは、このJetson-gpioが「Raspberry Pi」のGPIOパッケージ(RPi.GPIO)とインタフェースが互換になっていることで、特にPythonからだと最初のimportの宣言だけ変更すれば、後はRaspberry Piと同じ様に記述可能である。

 さてこのパッケージ、GitHubからダウンロードしても構わないのだが、確認したところ/opt/nvidia/jetson-gpio/の下に既にインストール済であった。もしインストールされていなければ、以下のコマンドでインストールできる。

pip install Jetson.GPIO
図2 図2 Jeson NanoとLEDの回路接続図(クリックで拡大)

 さて、この状態で動作するかどうかをちょっと確認してみよう。まずは回路をご紹介。図2は回路図、というにはおこがましいほどだが、今回の回路である。OSYL3133AOSNG3133Aは筆者の手持ちのLED(URLで分かる通り秋月電子商会でまとめ買いしたもの)で、おおむね2Vで20mAほどの消費電流となる。

 Jetson NanoのGPIOは3.3V出力なので、プルダウン抵抗は65Ωほどになる計算だが、手持ちがなく100Ωを利用している。Pin 31とPin 33から信号を、Pin 39からGNDを取る形である(図3)。回路そのものはブレッドボード上に実装した。

図3 図3 別にピンはどれを使っても良かったのだが、分かりやすさを優先(クリックで拡大)

 さて、図1にもちょっとあるが、rootになって直接「/sys/class/gpio」をたたくことが可能である。今回の場合、Pin 31とPin 33をオンにすればLEDが点灯するが、Pin 31はgpio200、Pin 33はgpio38に相当するので以下のコマンドを実施したところ、きちんと両方のLEDが点灯した(図4)。

図4 図4 緑のLEDはかなり弱々しい。根本的な問題はJetson Nanoの駆動できる電流が少ないことで、本当はもっと効率の良い(ただし高価な)LEDにした方がいいのだが、まぁお試しということで(クリックで拡大)
echo 38 > /sys/class/gpio/export
echo out > /sys/class/gpio/gpio38/direction
echo 1 > /sys/class/gpio/gpio38/value
echo 200 > /sys/class/gpio/export
echo out > /sys/class/gpio/gpio200/direction
echo 1 > /sys/class/gpio/gpio200/value

 さて、次はこれをPythonの中から操作する方法だ。まずは、アプリケーションからGPIOポートを操作する権限を与える必要がある。このために、gpioというグループを作り、ユーザーをこのgpioというグループに所属させた上で、gpioのグループにGPIOポートを操作する権限を付加するという手順を取る。

sudo groupadd -f -r gpio
sudo usermod -a -G gpio your_user_name(←ここに自分のユーザー名を入れる)

 次のグループへの権限付加だ。以下のコマンドを入力すればよい。

sudo cp lib/python/Jetson/GPIO/99-gpio.rules /etc/udev/rules.d/

 続けて以下のコマンドを入力する。

sudo udevadm control --reload-rules && sudo udevadm trigger

 これで登録できるはずなのだが、筆者の環境では再起動が必要だった。再起動後には、GPIOポートへの操作の権限が付加されている。

Copyright © ITmedia, Inc. All Rights Reserved.