「Jetson Nano」でにゃんこを判別してLチカで知らせるエッジAIデバイスを作る:Jetson Nanoで組み込みAIを試す(5)(2/4 ページ)
NVIDIAが価格99ドルをうたって発表した組み込みAIボード「Jetson Nano」。本連載では、技術ライターの大原雄介氏が、Jetson Nanoの立ち上げから、一般的な組み込みAIとしての活用までを含めていろいろと試していく。第5回では、猫とその種類の判別結果をLED点灯(Lチカ)で知らせる機能を作成してみる。
GPIOポートを使ってLEDを取り付ける
Jetson NanoにはGPIOポートがJ41というピンヘッダに用意されている(図1)。今回はPin 31とPin 33にLEDを取り付けてみることにする。
図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は回路図、というにはおこがましいほどだが、今回の回路である。OSYL3133AとOSNG3133Aは筆者の手持ちのLED(URLで分かる通り秋月電子商会でまとめ買いしたもの)で、おおむね2Vで20mAほどの消費電流となる。
Jetson NanoのGPIOは3.3V出力なので、プルダウン抵抗は65Ωほどになる計算だが、手持ちがなく100Ωを利用している。Pin 31とPin 33から信号を、Pin 39からGNDを取る形である(図3)。回路そのものはブレッドボード上に実装した。
さて、図1にもちょっとあるが、rootになって直接「/sys/class/gpio」をたたくことが可能である。今回の場合、Pin 31とPin 33をオンにすればLEDが点灯するが、Pin 31はgpio200、Pin 33はgpio38に相当するので以下のコマンドを実施したところ、きちんと両方のLEDが点灯した(図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.