ラズパイ× tensorflowでプラレール自動運転(1) モータドライバを準備する
AIで自動運転!わーい、この響きを実行したかった。
tensorflowで駅の写真を学習・推論させ、プラレールをラズパイで自動運転するまでを3回に分けて書いていきます。 今回はH/W編、「Raspberry Pi用 MAX14870搭載 デュアルモータードライバ」を動かします。
1.接続の様子
以下のように6ピン余るようにGPIOピンに挿します。ラズパイは「Raspberry Pi 3 Model B+」です。
MAX14870は4.5V以上の電圧が必要なので、単三電池4本をモータ駆動用の電源とします。3本だと電池が新品の時しか動きませんでした。このMotor Driver Output端子とプラレールの電池ボックス端子を配線します。
1.サンプルプログラム
ライブラリも公開されていますが、接続確認のために2秒だけモータを回す簡単なプログラムを載せておきます。
import RPi.GPIO as GPIO import time GPIO.setmode(GPIO.BOARD) # 使用するピン番号を設定 DIR_1 = 18 DIR_2 = 22 EN_N = 29 PWM1 = 32 PWM2 = 33 # 各ピンを出力ピンに設定 GPIO.setup(DIR_1, GPIO.OUT, initial=GPIO.LOW) # LOW:forward GPIO.setup(DIR_2, GPIO.OUT, initial=GPIO.LOW) GPIO.setup(EN_N, GPIO.OUT, initial=GPIO.LOW) # Low active GPIO.setup(PWM1, GPIO.OUT, initial=GPIO.LOW) GPIO.setup(PWM2, GPIO.OUT, initial=GPIO.LOW) # PWM オブジェクトのインスタンスを作成、周波数:3000Hz p1 = GPIO.PWM(PWM1, 3000) p2 = GPIO.PWM(PWM2, 3000) # PWM信号を出力 p1.start(0) p2.start(0) p1.ChangeDutyCycle(50) p2.ChangeDutyCycle(50) # 2.0秒待つ time.sleep(2.0) # PWM を停止 p1.stop() p2.stop() GPIO.cleanup()
さあ次は学習用の写真をとりまくるぞー!