Tumble:bit【無線操縦編】
micro:bitの無線機能を使って「Tumble:bit」を無線操縦するプログラムを紹介します。micro:bitに搭載された加速度センサーのみで、前進・後進・左右への旋回・その場回転の動作と移動速度を制御します。
5-11-1.Tumble:bit
Yahboom(中国名:亚博)のTumble:bitは、LEGO互換のブロックで組み立てるキットで、LEGOと接続可能なDCモーターと、同社の多機能・低価格なmicro:bit用の拡張ボード「Super:bit expansion board」を使って作るロボットカーです。詳しくは「付録3-14.Super:bit expansion board」をご覧ください。
Tumble:bitの最大の特徴は、その構造です。本体の両側に大きなタイヤが取り付けられ、この2輪のタイヤだけで本体を支えています。この構造によって、本体が揺れるように動くため、走行時nに独特な動きが生み出されます。急な方向転換時には、本体が回転することも!
タイヤは、中心のハブとリムを、赤い輪ゴムのスポークでつなぐ構造で、そのデザインの美しさが目を引きます。
LEGOと接続可能な2個のDCモーターを使って、左右のタイヤを別々に駆動します。タイヤの回転する方向(正転・逆転)と回転速度を組み合わせることで、前進・後進・左右への旋回・その場回転などが行えます。
DCモーターとタイヤは、十字軸によって接続されています。
本体の内部に、同社の多機能・低価格なmicro:bit用の拡張ボード「Super:bit expansion board」を搭載しています。
Tumble:bitの組み立て
Tumble:bitを組み立てましょう。組立説明書は、同社のウェブサイト「Tumble:bitのチュートリアル」で公開されています。
組み立てが完了したら、DCモーターのリード線を、拡張ボード「Super:bit expansion board」の端子へ接続します。進行方向に対して左側のDCモーターをM1、右側のDCモーターをM2へ接続します。コネクターの向きが決まっているので、写真を見ながらリード線の色を合わせて、端子へ差し込みましょう。
micro:bitとバッテリー(18650型充電池)も忘れずに取り付けましょう。バッテリーは、Super:bit expansion boardに取り付けたまま、USBケーブルを使って充電することができます。詳しくは「付録3-14.Super:bit expansion board」をご覧ください。
5-11-2.デモ
コントローラー側のmicro:bitを前後左右へ傾けることにより、Tumble:bitが移動します。前後左右の傾きの検出には、micro:bitにあらかじめ搭載されている加速度センサーを使っています。傾きの向きと大きさによって、Tumble:bitの左右に取り付けられたモーターの回転する方向(正転・逆転)と回転速度を変化させ、前進・後進・左右への旋回・その場回転といった動作と、それぞれの移動速度を調節しています。
Tumble:bitのスイッチをオンにした直後は、ブレーキがかかっています。ボタンAでブレーキを解除して走行を楽しんでください。ボタンBを押すと、赤と白のランプが点灯します。ボタンA+Bを押すと、メロディを演奏します。
5-11-3.このプログラムの動作に必要なもの
このプログラムの動作には次のものが必要です。
- micro:bit本体×2台(Tumble:bit用・コントローラー用)
- Tumble:bit(Super:bit expansion boardを含む)
- 電池ボックスと電池(コントローラー用)
- パソコン(*1)
- USBケーブル(*1)
(*1):パソコン・USBケーブルは、プログラミングに必要なものです。
5-11-4.コントローラー側のサンプルプログラム(ブロック)
コントローラー側のサンプルプログラム(ブロック)です。
最初だけ実行されるプログラム
無線のグループ設定と変数の初期化を行っています。グループの番号は、コントローラーとTumble:bitで一致していれば36以外でもかまいません。
ずっと実行されるプログラム
micro:bitに搭載されている加速度センサーで、前後(加速度Y)と左右(加速度X)の傾きを測定しています。前後の傾きに応じて、モーターの速度が変化するように、-255(後進の最大速度)~255(前進の最大速度)の範囲でマッピングしています。さらに、左右の傾きに応じて旋回(または回転)するように、旋回(または回転)の内側にあるモーターの速度を-100%(逆回転の最大速度)~100%(順回転の最大速度)の範囲で変化するように計算しています。最後に求めたモーターの速度を無線で送信します。この動作は、変数「動作中」が真の場合のみ行います。
ボタンAが押されたときに実行されるプログラム
変数「動作中」の値を反転(真偽を入れ替え)します。
ボタンBが押されたときに実行されるプログラム
変数「LED点灯中」の値を反転(真偽を入れ替え)します。その後、真偽に応じて「LED=1」「LED=0」を無線で送信します。
ボタンA+Bが押されたときに実行されるプログラム
「MUSIC=1」を無線で送信します。
5-11-5.コントローラー側のサンプルプログラム(JavaScript)
コントローラー側のサンプルプログラム(JavaScript)です。
5-11-6.Tumble:bit側のサンプルプログラム(ブロック)
Tumble:bit側のサンプルプログラム(ブロック)です。拡張機能「https://github.com/lzty634158/SuperBit」の追加が必要です。
最初だけ実行されるプログラム
無線のグループ設定と変数の初期化を行っています。グループの番号は、コントローラーとTumble:bitで一致していれば36以外でもかまいません。
ずっと実行されるプログラム
変数「LED点灯」が真の場合、ライト(NeoPixel)をひとつずつずらして点灯します。
無線で受信したときに実行されるプログラム
コントローラーから送信される値によって、モーターの回転速度の設定・メロディの演奏・ライト(NeoPixel)の設定を行います。
5-11-7.Tumble:bit側のサンプルプログラム(JavaScript)
Tumble:bit側のサンプルプログラム(JavaScript)です。拡張機能「https://github.com/lzty634158/SuperBit」の追加が必要です。