まずはタミヤのプログラミングカムロボットを組み立てます。心臓部であるメカニカルなプログラミング機構を外しMaker Piのモーターシールドと接続します。
モーターシールドと電池ボックスの接続
左キャタピラをMotor1、右キャタピラをMotor2に接続します。モニターボタンを押してそれぞれM1Aが前進M1Bが後進するように接続。右キャタピラはM2Aを前進、M2Bを後進になるようにつなぎます。バッテリーボックスはスイッチ付き単3×3本タイプを使用。
Maker Pi RP2040にMicroPythonをインストール
Make itではMicroPythonでプログラミングしていきますので、Maker PiにMicroPythonをインストール。「ラズピコ MicroPython インストール」でググるといろいろ出てくるとおもいます。
IDE Thonnyで動かしてみる
まずはIDE Thonnyから右のプログラムを実行させてみます。再生ボタンを押します。どうでしょう?動きましたか?5秒間前進、1秒ストップそして5秒間回転。という動きを繰り返します。
エラーは出ていませんか?インタープリタはMicroPythonを選択。portはUSBmodemをセレクトします。
import machine でハードウエア関連の関数をインポートします。
import utimeはタイマー関連のインポート。
machine.PWM(machine.Pin(8))で8番PINをPWM出力に設定。freq(50)は周波数を50Hzに指定。
duty_u16(30000)は30000/65536%の出力設定を行っています。引数は0から65536の間で自由に設定します。注意点はM1AとM1Bを同時に出力させないことです。同様にM2AとM2Bも同時にオンできません。
utime.sleep(5)は5秒間のスリープですね。
while true 以下を繰り返しです。
motorshield.py
import machine
import utime
# Setup DC Motor pins
M1A = machine.PWM(machine.Pin(8))
M1B = machine.PWM(machine.Pin(9))
M2A = machine.PWM(machine.Pin(10))
M2B = machine.PWM(machine.Pin(11))
M1A.freq(50)
M1B.freq(50)
M2A.freq(50)
M2B.freq(50)
while True:
print("Forward slow")
M1A.duty_u16(30000)
M1B.duty_u16(0)
M2A.duty_u16(30000)
M2B.duty_u16(0)
utime.sleep(5)
print("Stop")
M1A.duty_u16(0)
M1B.duty_u16(0)
M2A.duty_u16(0)
M2B.duty_u16(0)
utime.sleep(1)
print("turn")
M1A.duty_u16(0)
M1B.duty_u16(30000)
M2A.duty_u16(30000)
M2B.duty_u16(0)
utime.sleep(5)
動きをカスタムしてみる
今のところはwhile True以下を変えてみましょう。print(“”)に動きを決める。right turn、Forward fast、backward、色々と作って見てください。変な動きをすることがあるかもしれません。動きを止めたいときはMaker PI RP2040のリセットボタンを押してください。このリセットボタンもMaker Piの大きなアドバンテージです。本家Raspberry Pi picoにはついてませんから。
クールな動きができたら、いよいよ本体に書き込みます。save asでraspberry pi picoを選んで、ファイル名をmain.pyで書き込んでケーブルを外し、ロボットの電源を落とし再度電源をオンにしたら先ほどのプログラムを忠実に実行してくれます。完全自立走行型ロボットの完成です。