JetsonでLチカする

Jetsonを手に入れたのでとりあえずLEDをチカチカさせてみましたが、想像を絶する簡単さでした。Lチカだけなら難易度はラズベリーパイと同じぐらいです。

JetsonでLチカする

ハードウェア

今回利用するハードウェアはJetson Nano 2GB モデルです。

点灯に利用するLEDは 3v で点灯できるものであれば何でもOKです。電流制限用の抵抗は200Ω~1KΩ程度であればLED点灯が確認出来ると思います。

*最大輝度で光らせるには適切な抵抗値を計算する必要がありますが、Lチカは点灯が確認できればOKなのである程度の範囲なら何でも良いです。
ライブラリとパーミッション
JetPack 4.6からはライブラリとパーミッションの変更が必要ありません。そのままコードを書いて実行したら動くようになっているので、ライブラリのインストールとパーミッション変更は飛ばしてください。

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

ライブラリを利用しますが、すでに自分の場合はなにかのパッケージインストール時にインストールされていたため必要ありませんでした。

以下のコマンドを実行します。

sudo pip3 install Jetson.GPIO
GitHub - NVIDIA/jetson-gpio: A Python library that enables the use of Jetson’s GPIOs
A Python library that enables the use of Jetson’s GPIOs - GitHub - NVIDIA/jetson-gpio: A Python library that enables the use of Jetson’s GPIOs
https://github.com/NVIDIA/jetson-gpio

パーミッションの設定

JetsonでGPIOの利用にはパーミッション設定が必要となるようなので以下のコマンドを実行し、現在ログインしているユーザーに権限を与えます

MEMO

2行目の最後のパラメーターは現在ログインしているユーザー名に適宜置き換えてください。自分の場合はユーザー名としてkotaを利用しています。

sudo groupadd -f -r gpio
sudo usermod -a -G gpio kota

配線

今回はブレッドボードを利用して配線します。特にGPIOは何番でもかまわないのですがGNDの隣で便利なので GPIO 23番を利用します。

GPIOピン配列を確認

GPIOヘッダーはラズベリーパイと同じ40ピンです。基板側にもピン番号がシルク印刷されているのでわかりやすいですね。

https://developer.nvidia.com/embedded/learn/jetson-nano-2gb-devkit-user-guide

ケーブルは以下のようなデュポンケーブルを利用します。

GPIO23とGND
ピンを触る時は

面倒くさがらず電源をOFFにしてから接続しましょう。意図せず本体や他のピンと短絡させてしまうと故障の原因になります。

GNDに赤色のケーブル、そしてGPIO 23に青色のケーブルを接続しました。

ケーブルの反対側をブレッドボードの適当箇所に挿し、LEDと接続していきます。

GPIO23 をオンにするとプラス側になるので、LEDの足の長い方に接続します。

LEDの足の短い方は抵抗と接続し、抵抗の反対側をGNDから伸ばしたケーブルに接続して完了です。

MEMO

基本的に抵抗はLEDのプラス・マイナスどちら側に接続しても同じように動作します。

プログラム

以下のような適当なコードを作成し、保存します。ファイル名は何でもOKですが、この記事では gpio.py という名前にしました。

import Jetson.GPIO as GPIO

GPIO.setmode(GPIO.BOARD)
GPIO.setup(23, GPIO.OUT)
GPIO.output(23, GPIO.HIGH)
GPIO.cleanup()
GPIO 23 を ON にするコード

では実行は以下のコマンドです。

python3 gpio.py
LEDがON

恐ろしく簡単にONになってしまいましたね。ラズベリーパイと同様にすごく簡単です。

なんせコード5行しか書いてませんからね!

OFFにするコード

次はOFFにするコードです。GPIO.HIGH でオン, GPIO.LOW でオフになります。

import Jetson.GPIO as GPIO

GPIO.setmode(GPIO.BOARD)
GPIO.setup(23, GPIO.OUT)
GPIO.output(23, GPIO.LOW)
GPIO.cleanup()
GPIO 23 を OFF にするコード

GPIOをまとめて初期化するコード

このライブラリは結構気の利いた作りになっていて、このようにまとめて初期化する事もできます。便利ですね。

import Jetson.GPIO as GPIO

GPIO.setmode(GPIO.BOARD)
channels = [18, 12, 23] 
GPIO.setup(channels, GPIO.OUT)
GPIO.output(23, GPIO.LOW)
GPIO.cleanup()
いくつかのGPIOをまとめて初期化することもできます

まとめ

簡単です
ラズベリーパイと比較してほぼ同じぐらいの難易度です。
英語しかない
Lチカ程度ならそれほど難しい訳ではないので、ドキュメントが無くてもなんとかなりそうですが、残念ながらほぼ英語情報しかありません。もちろん探せばありますが、ラズベリーパイと比較すると日本語情報は大幅に少ない印象です。

ラズベリーパイ等でやったことがある方なら一瞬で出来ると思います。


References

  1. Jetson Nano 2GB Developer Kit User Guide https://developer.nvidia.com/embedded/learn/jetson-nano-2gb-devkit-user-guide
記事の内容は間違いが無いように気をつけていますが、私の認識違いや、ミスなどにより間違っている可能性もあります。もし発見された場合はお問い合わせフォームよりご連絡頂けると幸いです。