「ものづくり:make」を楽しみながら学ぶ人へ向けた独習サポートサイト。

micro:bit Lab.【マイクロビット】

micro:bit Lab.では、micro:bit【マイクロビット】に関する情報を紹介しています。

無線操縦で走る!荷台が動く!サイレン音が鳴り響く!
5-10

Running:bit【無線操縦編】

2019-10-062019-10-06

micro:bitの無線機能を使って「Running:bit」を無線操縦するプログラムを紹介します。micro:bitに搭載された加速度センサーのみで、前進・後進・左右への旋回・その場回転の動作と移動速度を制御します。また、ボタンAで荷台の上下、ボタンBで通常モードと緊急モード(サイレン音あり)を切り替えます。

5-10-1.Running:bit

Yahboom(中国名:亚博)Running:bitは、LEGO互換のブロックで組み立てるキットで、2種類のモーター(DCモーター・サーボモーター)と、同社の多機能・低価格なmicro:bit用の拡張ボード「Super:bit expansion board」を使って、動きの異なる5種類のロボットカーを作ることができます。Running:bitは「付録3-15.Running:bit」で詳しく紹介しています。

Running:bit(Proficient Carrier)

本記事で、無線操縦するのは、前方に荷台のある「Proficient Carrier」です。荷台を上下に動かすことができます。

図5-10-1-1.Proficient Carrier
図5-10-1-1.Proficient Carrier

2個のDCモーター(Red motor)を使って、左右の後輪を別々に駆動します。タイヤの回転する方向(正転・逆転)と回転速度を組み合わせることで、前進・後進・左右への旋回・その場回転などが行えます。

図5-10-1-2.後輪を別々に回転させるDCモーター(Red motor)
図5-10-1-2.後輪を別々に回転させるDCモーター(Red motor)

前輪は、金属製のボールキャスターです。後輪の動きに合わせて、あらゆる方向へ自在に進みます。

図5-10-1-3.自在に動く前輪(ボールキャスター)
図5-10-1-3.自在に動く前輪(ボールキャスター)

荷台は、回転角270度のサーボモーター(Gray servo)と二つのギアを組み合わせることによって、上下に動きます。

図5-10-1-4.荷台を上下させるサーボモーター(Gray servo)
図5-10-1-4.荷台を上下させるサーボモーター(Gray servo)

Proficient Carrierの組み立て

Proficient Carrierを組み立てましょう。組立説明書は、同社のウェブサイト「Running:bitのチュートリアル」で公開されています。

組み立てが完了したら、DCモーター(Red motor)とサーボモーター(Gray servo)のリード線を、拡張ボード「Super:bit expansion board」の端子へ接続します。進行方向に対して左側のDCモーターをM1、右側のDCモーターをM3へ接続します。サーボモーターをS1へ接続します。コネクターの向きが決まっているので、写真を見ながらリード線の色を合わせて、端子へ差し込みましょう。

micro:bitとバッテリー(18650型充電池)も忘れずに取り付けましょう。バッテリーは、Super:bit expansion boardに取り付けたまま、USBケーブルを使って充電することができます。詳しくは「付録3-14.Super:bit expansion board」をご覧ください。

組み立て後は、荷台に取り付けられたグレーのギアを外しておきます。Running:bit側へプログラムを書き込み、スイッチをオンにすると、サーボモーター(Gray servo)の位置が初期化されます。この位置が、荷台の最下部になるので、調節してギアを取り付けてください。

図5-10-1-5.Super:bit expansion boardへの接続
図5-10-1-5.Super:bit expansion boardへの接続

5-10-2.デモ

コントローラー側のmicro:bitを前後左右へ傾けることにより、Running:bitが移動します。前後左右の傾きの検出には、micro:bitにあらかじめ搭載されている加速度センサーを使っています。傾きの向きと大きさによって、Running:bitの左右に取り付けられたモーターの回転する方向(正転・逆転)と回転速度を変化させ、前進・後進・左右への旋回・その場回転といった動作と、それぞれの移動速度を調節しています。

ボタンAを押すと、荷台を上下します。ボタンBを押すと、走行モードが変化します。走行モードには、通常モードと緊急モードの2種類があります。通常モードは、緑と黄のランプが点灯します。緊急モードは、赤と白のランプが点灯して、サイレン音が鳴り響きます。

Running:bitのスイッチをオンにした直後は、ブレーキがかかっています。ボタンA+Bでブレーキを解除して走行を楽しんでください。

5-10-3.このプログラムの動作に必要なもの

このプログラムの動作には次のものが必要です。

  • micro:bit本体×2台(Running:bit用・コントローラー用)
  • Running:bit(Super:bit expansion boardを含む)
  • 電池ボックスと電池(コントローラー用)
  • パソコン(*1)
  • USBケーブル(*1)

(*1):パソコン・USBケーブルは、プログラミングに必要なものです。

5-10-4.コントローラー側のサンプルプログラム(ブロック)

コントローラー側のサンプルプログラム(ブロック)です。

最初だけ実行されるプログラム

無線のグループ設定と変数の初期化を行っています。グループの番号は、コントローラーとRunning:bitで一致していれば36以外でもかまいません。

図5-10-4-1.最初だけ実行されるプログラム
図5-10-4-1.最初だけ実行されるプログラム

ずっと実行されるプログラム

micro:bitに搭載されている加速度センサーで、前後(加速度Y)と左右(加速度X)の傾きを測定しています。前後の傾きに応じて、モーターの速度が変化するように、-255(後進の最大速度)~255(前進の最大速度)の範囲でマッピングしています。さらに、左右の傾きに応じて旋回(または回転)するように、旋回(または回転)の内側にあるモーターの速度を-100%(逆回転の最大速度)~100%(順回転の最大速度)の範囲で変化するように計算しています。最後に求めたモーターの速度を無線で送信します。この動作は、変数「動作中」が真の場合のみ行います。

図5-10-4-2.ずっと実行されるプログラム
図5-10-4-2.ずっと実行されるプログラム

ボタンAが押されたときに実行されるプログラム

変数「荷台の位置が上」が真なら「DOWN=0」、偽なら「UP=0」を無線で送信します。そのあと、変数の値を反転(真偽を入れ替え)します。

図5-10-4-3.ボタンAが押されたときに実行されるプログラム
図5-10-4-3.ボタンAが押されたときに実行されるプログラム

ボタンBが押されたときに実行されるプログラム

変数「緊急」が真なら「EMER=0」、偽なら「NONEMER=0」を無線で送信します。そのあと、変数の値を反転(真偽を入れ替え)します。

図5-10-4-4.ボタンBが押されたときに実行されるプログラム
図5-10-4-4.ボタンBが押されたときに実行されるプログラム

ボタンA+Bが押されたときに実行されるプログラム

変数「動作中」の値を反転(真偽を入れ替え)します。

図5-10-4-5.ボタンA+Bが押されたときに実行されるプログラム
図5-10-4-5.ボタンA+Bが押されたときに実行されるプログラム

5-10-5.コントローラー側のサンプルプログラム(JavaScript)

コントローラー側のサンプルプログラム(JavaScript)です。

5-10-6.Running:bit側のサンプルプログラム(ブロック)

Running:bit側のサンプルプログラム(ブロック)です。拡張機能「https://github.com/lzty634158/SuperBit」の追加が必要です。

最初だけ実行されるプログラム

無線のグループ設定と変数の初期化を行っています。グループの番号は、コントローラーとRunning:bitで一致していれば36以外でもかまいません。また、通常モードのライト点灯と荷台を一番下へセットしています。

図5-10-6-1.最初だけ実行されるプログラム
図5-10-6-1.最初だけ実行されるプログラム

ずっと実行されるプログラム

ライト(NeoPixel)をひとつずつずらして点灯します。通常モードと緊急モードで点灯時間が異なります。

図5-10-6-2.ずっと実行されるプログラム
図5-10-6-2.ずっと実行されるプログラム

無線で受信したときに実行されるプログラム

コントローラーから送信される値によって、モーターの回転速度の設定・荷台の上下・ライトの点灯(通常モード・緊急モード)を行います。

図5-10-6-3.無線で受信したときに実行されるプログラム
図5-10-6-3.無線で受信したときに実行されるプログラム

関数:ライト点灯

走行モードに応じた色(通常モード:緑と黄、緊急モード:赤と白)でライト(NeoPixel)を点灯します。

図5-10-6-4.関数:ライト点灯
図5-10-6-4.関数:ライト点灯

バックグラウンドで実行されるプログラム

緊急モード時にサイレン音を鳴らします。

図5-10-6-5.バックグラウンドで実行されるプログラム
図5-10-6-5.バックグラウンドで実行されるプログラム

5-10-7.Running:bit側のサンプルプログラム(JavaScript)

Running:bit側のサンプルプログラム(JavaScript)です。拡張機能「https://github.com/lzty634158/SuperBit」の追加が必要です。

この記事を読んだ人は、こんな記事にも興味があります。
スポンサーリンク
TOPへ移動
目次へ移動