PythonでTENORI-ONを動かすblog(仮)

PythonでMIDIを作ってYAMAHAのTENORI-ONをごにょごにょするよ。

MaixduinoでMakerDrive(モータードライバ )制御

注意) BLINKアプリでの操作は、MaixPyにuselectが実装されていないので、2020/8/23現在はできません!!

 

ようやくスタートラインに立った感。

Maixduinoでモータードライバ を動かすまで、結構長い道のりだった。

 

用意したもの

  • Maixduino
  • USB type-Cケーブル(Maixduino用)
  • MakerDrive (モータードライバ )
  • タミヤ ダブルギヤボックス
  • 外部電源(3.3V or 5V) ※↑の動画では3.3V使用
  • ジャンパーピン
    • オスーメス 5本(MakerDrive - Maixduino用)
    • 外部電源用2本 ※何を使うかによる

加えて、モーターにコンデンサー 100nF、外部電源のところにパスコンとしてコンデンサー 1μFつけるのがベターなのですが、そもそもArduino・ラズパイを通らずMaixduinoにチャレンジする人はそうそういないので割愛。

f:id:bastardeyes:20200823184209j:plain

接続イメージ

f:id:bastardeyes:20200823185026j:plain

モーターにコンデンサの図

USBから3.3Vor5V取るのは、みんなのラボさんの「ブレッドボード電源モジュール」が重宝してます。マルツ本店2Fに在庫が買えるとラッキーです。

minnanolab.net

実体配線図

データを作る余力がありませんでした。。

あと前述のコンデンサー書いてないですが、まぁ動きます。

f:id:bastardeyes:20200823184150j:plain

手書きですみません



コード

 前進、後進、右回転、左回転をするだけです。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が割り当てられている。

maixpy.sipeed.com

ピンアサインはSipeedのGitHubからmaixduino_pins.pngを参照。

 

この先やりたいこと

一旦はBLINKアプリで動作させたかったけれど、uselectが使えないのでそれは先のお話。

カメラを使って自動運転できると良いなぁ。

そういえばM5Atom(Arduino) + MakerDrive + BLINKアプリの記事を書いてないので、後で書く予定。