まなびサイエンス

RaspberryPi と模型用 DC モーターで走り回る

  • 公開 2016/02/14
  • 更新 2017/02/08

 RaspberryPi で DC モーターを制御できるようになりました。しかも 2ch 分! ...ということで、今度は RaspberryPi を走り回らせてみたいと思います。

足回り

 サイバーな感じで動くオモチャと言えば Tank でしょう! ...ということで、タミヤ模型から発売のタンク基本セットをチョイス。懐かしいですね~heart02.gif 30年近く昔、よく工作して遊んでました。

 ただ、素のままだと前後直進しかできないので、左右のクローラを独立して動かせるよう、モーターが 2 個ついたギヤ ボックスと交換します。出力シャフトの長さはどちらも同じ 100mm*1 なので、タンク工作基本セットのギヤ ボックスをそのまま置き換えられます。ただ、ギヤ ボックスの幅が増えた分だけ、土台に固定する際に少し加工が必要になりますので、そこは創意工夫で。

その他の材料

  • RaspberryPi ... これがないと始まらない。
  • USB-Wifi ドングル ... 有線でもできないことはないですが、自由自在に走りまわしたいなら無線は必須。
  • モーター制御基板 ... 前回製作したモーター制御基板です。TA7291P を利用して GPIO 経由でモーターの正転/逆転/停止/ブレーキを制御します。
  • ジャンパ線 ... RaspberryPi の GPIO とモーター制御基板を結線します。
  • 電池ボックス ... RaspberryPi とモーター制御基板の電源です。今回、単3電池×6本の電池ボックスを、モーター用と RaspberryPi 用に 2 つ用意しました。モーター用と RaspberryPi 用の電源を分けたせいですが、一つにまとめても大丈夫と思います。
  • USB アダプタ ... 電池ボックスから供給される 7.2V を、RaspberryPi の電源用に 5V に変換します。これまた 100 均ショップの USB アダプタを流用しています。

ギャラリー

 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;
  1. *1 100mm×1本=50mm×2本

カテゴリー

過去ログ