今回はJetson NanoのGPIOを使ってデジタルのON/OFF信号を出力する方法を解説します。前回、解説したPWM信号でを使って制御するモーターの回転方向を制御するための信号として、デジタルON/OFF信号が必要となっため調べてみました。
Jetson NanoのPWM信号の出力方法は以下の記事で解説していますので、あわせてご覧ください。

また、以下のページでJetsonの活用方法について解説していますので、あわせてご覧ください。

環境
ハードウェア:NVIDIA Jetson Nano 4GB
JETPACK SDK:4.6.2
今回、JETPACKはJetson Nanoの最終サポートバージョンである4.6.2を使用しました。
インストール方法は以下の記事で解説していますので、あわせてご覧ください。

Jetson Nano本体は4GB版を使用しました。


ハードウェアの接続
今回も特に制御対象等は接続せず、Jetson NanoのGPIOの端子をオシロスコープで直接計測します。

GPIO16、GPIO18、GPIO22、GPIO24番ピンとGNDをオシロスコープのプローブに接続しました。この状態でプログラムからON/OFF信号を出力して波形を確認します。
今回使用したオシロスコープはOWON製のものです。アマゾン等でも購入することができます。

デジタルIOの実装方法
デジタルIOの制御方法はoutputメソッドの第1引数にピン番号、第2引数に信号の状態を「0」または「1」で指定します。
GPIO.output(output_pin1, 0)
作成したソースコード
今回作成したソースコードは以下の通りです。
2秒間隔で各端子の出力信号をON/OFFするプログラムです。
import Jetson.GPIO as GPIO
import time
#DIOピンを指定
output_pin1 = 22
output_pin2 = 24
output_pin3 = 16
output_pin4 = 18
#GPIOのpin指定方法を設定
GPIO.setmode(GPIO.BOARD)
#出力ピンに設定
GPIO.setup(22, GPIO.OUT)
GPIO.setup(24, GPIO.OUT)
GPIO.setup(16, GPIO.OUT)
GPIO.setup(18, GPIO.OUT)
try:
while True:
#GPIOの出力を0にする
GPIO.output(output_pin1, 0)
GPIO.output(output_pin2, 0)
GPIO.output(output_pin3, 0)
GPIO.output(output_pin4, 0)
# 0.5s間スリープする
time.sleep(2)
# GPIOの出力を1にする
GPIO.output(output_pin1, 1)
GPIO.output(output_pin2, 1)
GPIO.output(output_pin3, 1)
GPIO.output(output_pin4, 1)
# 0.5s間スリープする
time.sleep(2)
finally:
#CTRL+Cで停止
#GPIO初期化
GPIO.cleanup()

実行結果
実行した結果をオシロスコープで計測した状態です。
オシロスコープが2チャンネルですので、GPIO16、18番の写真のみですが、正しく3.3VのON/OFF信号を出力できていることが確認できましまた。

まとめ
今回はJetson NanoのGPIOを使ってデジタルのON/OFF信号を出力する方法を解説しました。リレー回路やLEDなど色々なものを制御するのに役立ちますので、ぜひ活用してみてください。
また、以下の記事で効率的にPythonのプログラミングスキルを学べるプログラミングスクールの選び方について解説しています。最近ではほとんどのスクールがオンラインで授業を受けられるようになり、仕事をしながらでも自宅で自分のペースで学習できるようになりました。
スキルアップや副業にぜひ活用してみてください。

スクールではなく、自分でPythonを習得したい方には、いつでもどこでも学べる動画学習プラットフォームのUdemyがおすすめです。
講座単位で購入できるため、スクールに比べ非常に安価(セール時1200円程度~)に学ぶことができます。私も受講しているおすすめの講座を以下の記事でまとめていますので、ぜひ参考にしてみてください。

それでは、また次の記事でお会いしましょう。


参考

コメント