Introduction: [2021] タブレット (iPadまたはiPhone) でmicro:bit搭載の電車を走らせよう!

About: スクール・クラブ活動に関わる皆様に楽しい教材を設計しています。自己学習と協力体験の両面から楽しさを追求します。

ヴァレンタ ロコ は micro:bit を使いリモート操作できるレゴトレイン互換の電車です。レゴテクニックの部品と互換性があります。各台車にギアモーターがあります。

今回のプロジェクトでは、micro:bit が提供するアプリをお手持ちの iPhone (iPad) にダウンロードしてゲームパッドとして使いたいと思います。App Store 内で micro:bit と検索すると無償でアプリがダウンロード可能です。iPhone (iPad) にアプリをインストールし micro:bit と Bluetooth でペアリングしたら、ゲームパッドを設定してワイヤレスで操作できる様にしてみましょう!

このチュートリアルでは、アプリの設定、Bluetooth によるペアリング、ゲームパッドの準備などを解説します。マイクロソフト社の MakeCode エディターを使用してコーディングします。難しいと感じる方の為にもサンプルコードをダウンロードできる様に用意しますのでご安心ください。

iPhone (iPad) アプリ内のゲームパッドのボタンA、Bを押して前後に電車を走らせたり、LEDを点灯させたりなど様々な機能に挑戦したいと思います。

なお、世界最大の3Dプリントモデルサイト Thingiverse からレゴトレイン互換レール (直線、曲線) をダウンロードできますので、3D印刷して自由にレイアウトを作成できます。たくさんレールを3D印刷して電車を走らせてみましょう!

Supplies

今回のプロジェクトを始める前にヴァレンタ ロコ を組み立て設定する必要があります。

以下を事前に確認してください。

チュートリアル 「ヴァレンタ ロコ 設定ガイド」

micro:bit が提供するアプリをお手持ちの iPhone (iPad) にダウンロードする必要があります。お手持ちの iPhone (iPad) に micro:bit アプリをインストールし micro:bit と Bluetooth でペアリングが可能かご確認ください。

別途、micro:bit (1個)、単3電池 (6本) を使用します。はんだ付けしたり接着や塗装などの作業は必要ありません。簡単な作業で部品を取り付けて組み立てることができます。ヴァレンタ ロコ は英国 4Tronix 社と、Hummingworks 合同会社のパートナーシップにより共同開発いたしました。

The tutorial in English is available!

Step 1: ケーブルの接続方法を確認しよう

このチュートリアルで使用するヴァレンタ ロコはDRV8833チップを搭載するモーターコントローラーを使用しており、2つのDCモーター、4つのGPIO汎用入出力ピン(P0, P1, P2, P8)を操作できます。各ピンは3本で構成され、信号を送る (S) シグナル (黄ケーブル)、(V) ボルト (赤ケーブル)、(G) グランド (黒ケーブル)で構成されます。 4つのGPIO汎用入出力ピンはスイッチにより3.3Vまたは5Vを選択可能です。LEDを接続する場合は5Vを選択します。

台車からモーターのケーブルが伸びていますので図を参照しながらモーターコントローラーに接続します。

  • 一方の台車のモーターケーブルの赤いケーブルをM1の左側ピンに接続します。黒いケーブルをM1の右側ピンに接続します。
  • もう一方の台車のモーターケーブルの赤いケーブルをM2の左側ピンに接続します。黒いケーブルをM2の右側ピンに接続します。

LEDヘッドライト搭載の電車ボディーをお持ちの場合、GPIO汎用出入力を使用して点灯させることができます。その場合は P0, P1, P2, P8ピンのいずれかを選択します。ここではP8ピンを例に説明します。一方のヘッドライトの赤いケーブルをP8の (V) ボルトのピンに接続します。黒いケーブルをP8の (G) グランドのピンに接続します。ヴァレンタ ロコのモーターコントローラーの電源をONにするとヘッドライトが点灯します。

Step 2: サンプルコードをダウンロードしよう

このチュートリアル内では、マイクロソフト社 MakeCode エディターにて作成した micro:bit 用のサンプルコードを使用します。さっそくダウンロードしてみましょう。全てプログラミング済みですのですぐに遊べます。後のステップでサンプルコードの解説をします。サンプルコードが理解出来たら新しいコーディングに挑戦してみてください!

このステップ内にあるサンプルコードをお手元のコンピューターにダウンロードしてください。コンピューターと micro:bit を USB ケーブルで接続してファイルをドラッグアンドドロップして書き込んでください。

Receiver.hex サンプルファイル を受信側の micro:bit に書き込みます。受信側の micro:bit を電車に搭載してモーターコントローラーの電源をONにしましょう!

電車に搭載されるモーターコントローラーの電源をONにすると受信側の micro:bit に給電され遊ぶことができます。iPad または iPhone 内のゲームパッドアプリのボタンA, Bを押すと受信側の micro:bit を搭載する電車が前後に走ります。ボタンA, Bを押すと電車が停止します。

Step 3: アプリを設定しよう (パート1)

App Store 内からお手持ちの iPhone (iPad) に micro:bit アプリをダウンロード、インストールできたでしょうか?アプリを開いたら Choose micro:bit (マイクロビットを選ぶ) ボタンを押してみましょう。

Step 4: アプリを設定しよう (パート2)

まだ micro:bit はお手持ちの iPhone (iPad) とは Bluetooth でペアリングできていません。Pair a micro:bit (マイクロビットをペアリングする) ボタンを押してみましょう。

Step 5: アプリを設定しよう (パート3)

次に micro:bit のボタン A、B を押しながら裏側の RESET ボタンも同時に押し micro:bit 前面の LED が全て点灯するのを確認しましょう。その後、全てのボタンから手を離して、アプリ内の Next (次へ) ボタンを押してみましょう。

Step 6: アプリを設定しよう (パート4)

micro:bit 前面の点灯している LED ドットと同様に、アプリ内に表示されているドットを一つ一つ正確にタップして入力してみましょう。その後、アプリ内の Next (次へ) ボタンを押してみましょう。

Step 7: アプリを設定しよう (パート5)

micro:bit と Bluetooth でペアリングを開始する準備ができたようです。アプリ内の Next (次へ) ボタンを押してみましょう。

Step 8: アプリを設定しよう (パート6)

micro:bit と iPad (iPhone) のペアリングまであともう少しです。Pair ボタンを押して進みましょう。

Step 9: アプリを設定しよう (パート7)

ペアリングが成功したら OK ボタンを押して最初のメニューの画面に戻りましょう。

Step 10: アプリを設定しよう (パート8)

アプリのトップ画面に戻り Monitor and Control (モニターとコントロール) ボタンを押して、ゲームパッドを設定する画面に進みましょう。画面下の Add + (追加) ボタンを押して、リスト内の Game Pad (ゲームパッド) を追加しましょう。ゲームパッド画面下の Start (開始) ボタンを押して電車を運転する事ができます。

Step 11: アプリを設定しよう (パート9)

ゲームパッドのボタンには以下のコーデイングが設定されています。

ボタンを押して電車を運転してみましょう。

  • ボタン A を押す -> 電車が前進する
  • ボタン A を離す -> 電車が停止する
  • ボタン B を押す -> 電車が後進する
  • ボタン B を離す -> 電車が停止する

Step 12: アプリ内からペアリング済み Micro:bit を削除する場合

このアプリ内では複数の micro:bit をペアリングして遊ぶことができます。もし micro:bit を数多くペアリングしてしまい、後から特定の micro:bit を削除したい場合は、アプリのトップ画面に戻り Choose micro:bit (マイクロビットを選ぶ) ボタンを押して先ほどの画面に戻ります。 画面内で削除したい micro:bit を選び、ごみ箱 ボタンを押して削除します。

Step 13: Bluetooth設定 (iPadまたはiPhone) からmicro:bitを削除する場合

複数の micro:bit をペアリングしてしまい、後に特定の micro:bit を削除したい場合は iPhone (iPad) 内の Bluetooth 設定からも micro:bit を削除する事をお勧めします。お手持ちの iPhone (iPad) の「設定」から「Bluetooth」に移動し、削除したい micro:bit を選択して削除します。

Step 14: MakeCode エディターに拡張機能を追加しよう

MakeCodeエディター左にあるメニュー内にこれらの拡張機能が追加されているか確認してください。もし追加されていない場合は、メニューの Extensions をクリックします。次の画面で追加したい拡張機能が表示されたら、一つづつクリックして追加して下さい。

Bluetooth 拡張機能

Bluetooth を経由して micro:bit のデジタル・アナログピンを操作できる様にします。

Devices 拡張機能

アプリ内のゲームパッドの各ボタンの操作を設定します。

Step 15: Receiver.hex サンプルファイルを確認しよう

では Receiver.hex サンプルファイルを確認してゆきましょう。MakeCodeエディターを開き Import ボタンをクリックします。受信側の micro:bit 内に保存されている Receiver.hex サンプルファイルを選択して開きます。

on start ブロック

このブロックはプログラム起動時に1度だけ呼び出されるブロックです。

bluetooth io pin service

このブロックを通じて Bluetooth を経由し micro:bit のデジタル・アナログピンを操作できる様にします。

電車の進行方向とスピードを定義するブロックについて見てゆきましょう。各台車にモーター(M1、M2)が接続されています。

function goForward ブロック

Functions 拡張機能内に goForward 関数を作成します。

digital write pin P13 to 0

P13ピンはM1モーターの進行方向を定義します。Pins 拡張機能から digital write pin P13 to 0 をドラッグアンドドロップして作成します。0 の値を選択する事でM1モーターは前進します。

digital write pin P15 to 0

P15ピンはM2モーターの進行方向を定義します。Pins 拡張機能から digital write pin P15 to 0 をドラッグアンドドロップして作成します。0 の値を選択する事でM2モーターは前進します。

analog write pin P12 to 1023

P12ピンはM1モーターのスピードを定義します。Pins 拡張機能から analog write pin P12 to 1023 をドラッグアンドドロップして作成します。1023 の値を選択する事でM1モーターは全速力のスピードで前進します。

analog write pin P14 to 1023

P14ピンはM2モーターのスピードを定義します。Pins 拡張機能から analog write pin P14 to 1023 をドラッグアンドドロップして作成します。1023 の値を選択する事でM2モーターは全速力のスピードで前進します。

function goBackward ブロック

Functions 拡張機能内に goBackward 関数を作成します。

digital write pin P12 to 0

P12ピンはM1モーターの進行方向を定義します。Pins 拡張機能から digital write pin P12 to 0 をドラッグアンドドロップして作成します。0 の値を選択する事でM1モーターは後進します。

digital write pin P14 to 0

P14ピンはM2モーターの進行方向を定義します。Pins 拡張機能から digital write pin P14 to 0 をドラッグアンドドロップして作成します。0 の値を選択する事でM2モーターは後進します。

analog write pin P13 to 1023

P13ピンはM1モーターのスピードを定義します。Pins 拡張機能から analog write pin P13 to 1023 をドラッグアンドドロップして作成します。1023 の値を選択する事でM1モーターは全速力のスピードで後進します。

analog write pin P15 to 1023

P15ピンはM2モーターのスピードを定義します。Pins 拡張機能から analog write pin P15 to 1023 をドラッグアンドドロップして作成します。1023 の値を選択する事でM2モーターは全速力のスピードで後進します。

function stop ブロック

Functions 拡張機能内に stop 関数を作成します。

digital write pin P13 to 0

P13ピンはM1モーターの進行方向を定義します。Pins 拡張機能から digital write pin P13 to 0 をドラッグアンドドロップして作成します。0 の値を選択する事でM1モーターは前進します。

digital write pin P15 to 0

P15ピンはM2モーターの進行方向を定義します。Pins 拡張機能から digital write pin P15 to 0 をドラッグアンドドロップして作成します。0 の値を選択する事でM2モーターは前進します。

analog write pin P12 to 0

P12ピンはM1モーターのスピードを定義します。Pins 拡張機能から analog write pin P12 to 0 をドラッグアンドドロップして作成します。0 の値を選択する事でM1モーターは停止します。

analog write pin P14 to 0

P14ピンはM2モーターのスピードを定義します。Pins 拡張機能から analog write pin P14 to 0 をドラッグアンドドロップして作成します。0 の値を選択する事でM2モーターは停止します。

ゲームパッドのボタンAの操作を以下の様に設定してみましょう

ボタンAを押したままの状態にすると、電車が前進する

ボタンAを離した状態にすると、電車が停止する

on gamepad button A down ブロック

Devices 拡張機能から on gamepad button A down ブロックをドラッグアンドドロップします。その中にFunctions 拡張機能から call goForward ブロックをドラッグアンドドロップします。ボタンAを押すと電車が前進します。

on gamepad button A up ブロック

Devices 拡張機能から on gamepad button A up ブロックをドラッグアンドドロップします。その中にFunctions 拡張機能から call stop ブロックをドラッグアンドドロップします。ボタンAをはなすと電車が停止します。

ゲームパッドのボタンBの操作を以下の様に設定してみましょう

ボタンBを押したままの状態にすると、電車が後進する

ボタンBを離した状態にすると、電車が停止する

on gamepad button B down ブロック

Devices 拡張機能から on gamepad button B down ブロックをドラッグアンドドロップします。その中にFunctions 拡張機能から call goBackward ブロックをドラッグアンドドロップします。ボタンBを押すと車が後進します。

on gamepad button B up ブロック

Devices 拡張機能から on gamepad button B up ブロックをドラッグアンドドロップします。その中にFunctions 拡張機能から call stop ブロックをドラッグアンドドロップします。ボタンBをはなすと車が停止します。