micro:bitを使ってみる 20 〜無線でモーターを操作

モータードライバを使って、マイクロビットでモーターを動かそうと思います。


今回は、micro:bitをふたつ使い、無線でモーターを制御します。「タミヤ 楽しい工作シリーズ組み立てキット リモコンロボット」を使います。このロボットは、左右ふたつのモーターで、好きな方向に動かせるものです。これを、送信機用micro:bitのふたつのボタンで操作しようと思います。


機能

ふたつのmicro:bitのうち、ひとつが送信機となり、ロボットを操縦します。Aボタンを押している間、左側のモーターが動き、Bボタンを押している間、右側のモーターが動くようにします。
操縦している内容を、無線機能で、もうひとつのmicro:bitに送信します。

もうひとつのmicro:bitが受信機となります。受信した情報に応じて、0番端子と1番端子の値を切り替えます。0番端子の値によって左側のモーターを、1番端子の値によって右側のモーターを制御します。
0番端子、1番端子を、モータードライバにつなぎ、ふたつのモーターを制御します。

今回使うモータードライバは、秋月電子で売っている、ステッピング&DCモータドライバモジュール(DRV8835)というものです。
このモータードライバは、MODE=0のとき、以下のようなピン仕様になっています。「X」のところには「A」もしくは「B」が入ります。ドライバひとつで、ふたつのモーターを制御できます。

MODE xIN1 xIN2 xOUT1 xOUT2 FUNC
0 0 0 Z Z 空転
0 0 1 L H 逆転
0 1 0 H L 正転
0 1 1 L L ブレーキ

今回は、これらのうち、「正転」と「ブレーキ」のモードを使います。つまり、MODEはグランド(0)、AIN1とBIN1は電源電圧(1)に固定したうえで、micro:bitの0番端子をAIN2に、1番端子をBIN2につなぎます。0番、1番端子が「0」のときに、それぞれモータA、モータBが動き、「1」のときに止まります。

材料

  • micro:bit(2)
  • micro:bit用MI:電源ボード、ボタン電池(CR2032) ※送信側micro:bit用
  • 電池ボックス(単四×2、PHコネクタ付き)、電池(単四×2) ※受信側micro:bit用
  • 電池ボックス(単三×2)、電池(単三×2) ※モーター用
  • タミヤ 楽しい工作シリーズ組み立てキット リモコンロボット(クローラータイプ)
  • ステッピング&DCモータドライバモジュール(DRV8835)
  • ブレッドボード
  • ジャンパー線、ハードジャンパー線
  • 皿ネジ(M3x15mm)、ナット(M3)、プラスチック座金(内径3mm)
  • 消しゴムの切れはし、両面テープ

プログラム

送信機側のプログラムは以下のとおりです。
ボタンAとボタンBの状態の組み合わせ(合計4とおり)によって、0〜3の数値を送信します。送信は0.1秒ごとに行います。

受信機側のプログラムは以下のとおりです。
受信した数値に応じて、端子P0とP1の値を切り替えます。

つなぎかた

「micro:bit用MI:電源ボード」というものを購入しました。

これは、micro:bitと同じ大きさのボードで、ボタン電池を入れられるようになっています。これをmicro:bitとネジでつなぐことで、micro:bitに電源供給ができます。
今回は、送信機側のmicro:bitに、これを使いました。

リモコンロボットを組み立てます。モーターの端子には、ブレッドボードにさせるように、ジャンパー線をつないでおきます。

受信機側の回路図は以下のとおりです。一応、micro:bit用の電源と、モーター用の電源は分けることにしました。

回路図に従って、ブレッドボードで接続していきます。右側の「+」のラインが、micro:bit用の電源で、左側の「+」のラインが、モーター用の電源です。「-」は、左右とも共通にします。

micro:bitの端子には、ジャンパー線をつないでおきます。

micro:bitの「3V」、「GND」を、ブレッドボードの、micro:bit用電源、グランドのラインにつなぎます。「0」、「1」を、モータードライバの「AIN2」、「BIN2」につなぎます。

電池ボックスをふたつ用意します。PHコネクタの付いている方がmicro:bit用、ジャンパー線の付いている方がモーター用です。

micro:bit用電池ボックスは、micro:bitの電源コネクタに、モーター用電池ボックスは、ブレッドボードの、モーター用電源、グランドのラインにつなぎます。

モータAの端子を、モータードライバの「AOUT1」、「AOUT2」に、モータBの端子を、モータードライバの「BOUT1」、「BOUT2」につなぎます。全てをロボットの上に乗せてできあがりです。

結果

送信機のボタン操作で、ロボットを操作することができました。

なお、私がマイクロビットの使い方を習得するのにあたっては、以下の書籍を参考にさせていただきました。


初心者向けから、比較的高度なものまで、さまざまな情報が記載されているだけでなく、子供向けの作例も多数掲載されていますので、「プログラミング教育」のための題材さがしなどにもおすすめです。


このサイトで書いている、マイクロビットに関するブログ記事を、「さとやまノート」という別のブログページに、あらためて整理してまとめました。

他のマイクロビット記事にも興味のある方は「さとやまノート」をご覧ください。