RaspberryPi で DC モーターを制御できるようになりました。しかも 2ch 分! ...ということで、今度は RaspberryPi を走り回らせてみたいと思います。
サイバーな感じで動くオモチャと言えば Tank でしょう! ...ということで、タミヤ模型から発売のタンク基本セットをチョイス。懐かしいですね~ 30年近く昔、よく工作して遊んでました。
ただ、素のままだと前後直進しかできないので、左右のクローラを独立して動かせるよう、モーターが 2 個ついたギヤ ボックスと交換します。出力シャフトの長さはどちらも同じ 100mm*1 なので、タンク工作基本セットのギヤ ボックスをそのまま置き換えられます。ただ、ギヤ ボックスの幅が増えた分だけ、土台に固定する際に少し加工が必要になりますので、そこは創意工夫で。
t=1mm のアルミ板から TA7291P の放熱板を兼ねた固定ステーを製作してベースに固定します。TA7291P が基盤裏に唐突に生えていたのは、こういう理由でした。ちなみに、しばらく走り回らせてみましたが、3V 500mA 程度では TA7291P が放熱板が必要になるほど熱を持ちません。
クローラを装着したところ。おぉっ、タンクっぽくなった! ちなみによく"キャタピラ"と呼ばれているのは登録商標なのです。
空きスペースに電池ボックスと RaspberryPi を載せて、ジャンパ線で結線します。WiFi 経由で SSH ログインして、さっそく走らせてみましょう。
使用する GPIO は基本どこでも構いませんが、ポートによっては初期状態で High 出力となるポートがあるようです。その場合、RaspberryPi の電源投入と同時にモーターが暴走してしまうので、違うポートに変えてください。私の場合、GPIO15, 17, 18, 27 で動かしています。
動作確認として、SSH ログインして、gpio
コマンドでポートを直接操作します。毎回コマンドを打つのもアレなので、前進・後退・停止などの動作ごとにスクリプトを作っておくと便利です。動作確認が済んだら、例えば、Web インタフェース経由でリモコン操作できたりすると面白いですね。
$ cat setup_motors # ポートの初期設定 gpio -g mode 15 out; gpio -g mode 18 out; gpio -g mode 17 out; gpio -g mode 27 out; # モータを全停止 gpio -g write 15 0; gpio -g write 18 0; gpio -g write 17 0; gpio -g write 27 0; $ cat f # 前進 gpio -g write 15 1; gpio -g write 18 0; gpio -g write 17 1; gpio -g write 27 0; $ cat b # 後退 gpio -g write 15 0; gpio -g write 18 1; gpio -g write 17 0; gpio -g write 27 1; $ cat r # 右超信地旋回 gpio -g write 15 0; gpio -g write 18 1; gpio -g write 17 1; gpio -g write 27 0; $ cat l # 左超信地旋回 gpio -g write 15 1; gpio -g write 18 0; gpio -g write 17 0; gpio -g write 27 1; $ cat s # 停止 gpio -g write 15 0; gpio -g write 18 0; gpio -g write 17 0; gpio -g write 27 0; $ cat ss # 停止(ブレーキ) gpio -g write 15 1; gpio -g write 18 1; gpio -g write 17 1; gpio -g write 27 1;