MaixduinoでMakerDrive(モータードライバ )制御
注意) BLINKアプリでの操作は、MaixPyにuselectが実装されていないので、2020/8/23現在はできません!!
ようやくスタートラインに立った感。
Maixduinoでモータードライバ を動かすまで、結構長い道のりだった。
MaixduinoとMaker Driveでモーター動かしてみたんだけど、宙に浮かせるための台(マウスレスト)がずれて、なんか荒ぶった動きに。 pic.twitter.com/FGS26quSyF
— パリピ般若(hack-tenorion) (@hack_tnr) August 23, 2020
用意したもの
- Maixduino
- USB type-Cケーブル(Maixduino用)
- MakerDrive (モータードライバ )
- タミヤ ダブルギヤボックス
- 外部電源(3.3V or 5V) ※↑の動画では3.3V使用
- ジャンパーピン
- オスーメス 5本(MakerDrive - Maixduino用)
- 外部電源用2本 ※何を使うかによる
加えて、モーターにコンデンサー 100nF、外部電源のところにパスコンとしてコンデンサー 1μFつけるのがベターなのですが、そもそもArduino・ラズパイを通らずMaixduinoにチャレンジする人はそうそういないので割愛。
USBから3.3Vor5V取るのは、みんなのラボさんの「ブレッドボード電源モジュール」が重宝してます。マルツ本店2Fに在庫が買えるとラッキーです。
実体配線図
データを作る余力がありませんでした。。
あと前述のコンデンサー書いてないですが、まぁ動きます。
コード
前進、後進、右回転、左回転をするだけです。MakerDrive用のライブラリは不要。
トラ技2019年11月号に掲載されているPCA9685はライブラリがあるので、これとは違った内容になります。
import time from machine import Timer,PWM from Maix import GPIO freq=100000 max_duty=50 #最大100。大きいほど速い。 tim_1 = Timer(Timer.TIMER0, Timer.CHANNEL0, mode=Timer.MODE_PWM) tim_2 = Timer(Timer.TIMER0, Timer.CHANNEL1, mode=Timer.MODE_PWM) tim_3 = Timer(Timer.TIMER0, Timer.CHANNEL2, mode=Timer.MODE_PWM) tim_4 = Timer(Timer.TIMER0, Timer.CHANNEL3, mode=Timer.MODE_PWM) #右タイヤ前進(ボード 8番ピン) ch_r1 = PWM(tim_1, freq=freq, duty=0,pin=14) #右タイヤ後進(ボード 9番ピン) ch_r2 = PWM(tim_2, freq=freq, duty=0,pin=13) #左タイヤ前進(ボード 10番ピン) ch_l2 = PWM(tim_3, freq=freq, duty=0,pin=12) #左タイヤ後進(ボード 11番ピン) ch_l1 = PWM(tim_4, freq=freq, duty=0,pin=11) #前進 ch_r1.duty(max_duty) ch_l1.duty(max_duty) ch_r2.duty(0) ch_l2.duty(0) time.sleep(3) #後進 ch_r1.duty(0) ch_l1.duty(0) ch_r2.duty(max_duty) ch_l2.duty(max_duty) time.sleep(3) #右回転 ch_r1.duty(0) ch_l1.duty(max_duty) ch_r2.duty(0) ch_l2.duty(0) time.sleep(3) #左回転 ch_r1.duty(max_duty) ch_l1.duty(0) ch_r2.duty(0) ch_l2.duty(0) time.sleep(3) ch_r1.disable() ch_r2.disable() ch_l2.disable() ch_l1.disable()
参考資料
PWMは最大12こまで扱える。
Timerは0-3まで。それぞれにChannel 0-4が割り当てられている。
ピンアサインはSipeedのGitHubからmaixduino_pins.pngを参照。
この先やりたいこと
一旦はBLINKアプリで動作させたかったけれど、uselectが使えないのでそれは先のお話。
カメラを使って自動運転できると良いなぁ。
そういえばM5Atom(Arduino) + MakerDrive + BLINKアプリの記事を書いてないので、後で書く予定。