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

by ハミングワークス in Circuits > Remote Control

316 Views, 0 Favorites, 0 Comments

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

iPad Pic JP PNG.png

ヴァレンタ ロコ は 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!

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

Zero Anatomy PNG.png
Wiring Motor and LED PNG.png

このチュートリアルで使用するヴァレンタ ロコは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にするとヘッドライトが点灯します。

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

Receiver PNG.png
Microbit Mount PNG.png
iPad and Microbit PNG.png
Tutorial iPad PNG.png

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

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

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

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

Downloads

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

Top Menu PNG.png

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

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

Choose microbit PNG.png

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

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

A B Reset PNG.png

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

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

LED matrix PNG.png

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

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

Ready to pair PNG.png

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

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

Pairing PNG.png

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

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

Successful PNG.png

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

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

Top Menu PNG.png
List PNG.png
Gamepad PNG.png

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

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

Gamepad PNG.png
Tutorial iPad PNG.png

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

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

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

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

Removing PNG.png

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

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

Setting Bluetooth PNG.png
Forget this device PNG.png
Forget OK PNG.png

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

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

Extensions PNG.png
Extensions to add PNG.png
Bluetooth Ext PNG.png
Devices Ext PNG.png

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

Bluetooth 拡張機能

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

Devices 拡張機能

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

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

MakeCode PNG.png
Receiver PNG.png
Receiver snapshot PNG.png

では 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をはなすと車が停止します。