この記事は 「Scratch Advent Calendar 2019」の 19日目の記事です。
今年の Scratch Advent Calendar には、既に以下の記事 3つを投稿していますが、また記事を書いてみようと思います。
- 機械学習・音声認識・デバイス連携の独自拡張(2019/12/6)
- 画像認識・デバイス連携・関連の独自拡張(2019/12/7)
- Scratch と micro:bit で鳴き声がする動物パズルを作る(2019/12/12)
はじめに
何を書くか悩みましたが、最終的に上記のアドベントカレンダー用記事にも登場している、今年1番大活躍の micro:Maqueen 関連の話を書こうと思います。
具体的には、Junya Ishihara(@ jishiha)さんが公開されている独自環境の Scratch で利用可能な、micro:Maqueen用の独自拡張「Scratch2Maqueen」の話になります。
Scratch2Maqueen
関連ページ
Scratch2Maqueen について、Web上の関連ページを見てみます。
以下のページが、利用方法などの掲載があるページです。
- Scratch2Maqueen | scratch2maqueen
- champierre/scratch2maqueen: Control DFRobot Maqueen from Scratch
上記のページから、使い方の部分を抜粋してみます。
Usage
▼ Setup
- You need the special hex file to be downloaded to your micro:bit. Open the MakeCode project below, then click Download to install the .hex file.
»MakeCode project:scratch2maqueen- Open https://champierre.github.io/scratch3/.
- Open “Choose an Extension” window and select “Scratch2Maqueen”.
- Run Scratch Link, then connect to the micro:bit set on Maqueen.
- After you connect to the micro:bit, you need to calibrate the micro:bit compass. (Calibrating the micro:bit Compass)
使い始めるためのステップ
日本語でおおまかな流れを書くと、以下の通りとなるようです(元のものと一部、順番が違ってますが、前後しても大丈夫なところです)。
- 指定された MakeCode のプロジェクトの内容を micro:bit へ書き込む
- PC で ScratchLink を起動する
- PCで独自環境に用意された Scratch を開く
- 上記 3 で開いた Scratch の拡張機能の選択画面で「Scratch2Maqueen」を選ぶ
- Scratch と micro:bit との接続の操作をする
- micro:bit でコンパスの調整が始まるので、micro:bit を決められた通りに動かして調整を完了させる ⇒ 詳細は「この Webサイト」を参照して実施
- 調整が完了したら、Scratch と micro:bit がつながる
自分のはまりどころは、上記の 5〜6 のあたりで、Scratch との接続をするときに、コンパスの調整の操作を完了させて初めて接続が完了する、というところでした。
公式の Scratch 3.0 と micro:bit の接続では、micro:bit に所定のファイルを書き込んで、かつ、PC側で Scratch Link を起動していれば、あっさり Scratch と micro:bit の接続操作は完了できるので、そのイメージがあったせいか、「なぜか接続できない!?」と思った以上に迷ってしまいました。
無事に接続ができたところで、拡張機能を使うステップへ進んでいきます。
拡張機能で使えるブロック
Scratch の拡張
ここで、拡張機能でどんなブロックが利用可能かを、独自で用意された Scratch環境で見てみます。
拡張機能の一覧で、3番目に表示されています。
この拡張機能を選ぶことで表示されるブロックは以下のとおりです。
上から順に、このような処理のためのブロックが並んでいるようです。
- micro:Maqueen側の機能
- モーター制御
- 両輪をそれぞれ動かしたり止めたりするブロック
- センサー利用
- 超音波距離センサ
- 底面のライントレース用センサ①
- 底面のライントレース用センサ②
- 前面の単色LED関連
- 左側LEDの ON/OFF
- 右側LEDの ON/OFF
- モーター制御
- micro:bit本体の機能
- micro:bit上のボタンの押下関連
- micro:bit上の LED 関連(アイコン表示、文字表示、表示を消す)
- micro:bit内の センサ関連(照度、コンパス、加速度関連)
MakeCode の拡張機能との比較
ここで、MakeCode用の拡張機能と簡単に比較してみます。
2020/12/19時点では、MakeCode で micro:Maqueen の拡張機能を読み込むと、メニューの中に「MaqueenIR」と「Maqueen」
という 2つの追加項目が表示されるようです。
項目「MaqueenIR」
「MaqueenIR」のほうは、赤外線受信関連の機能が 2つ並んでいました。
1つ目のブロックは、ボタン押下を条件に処理を行うようなブロックになっているようですが、選択項目で出てくるものはプリセットされた赤外線リモコンのボタンという感じに見えました(実際に試せてないです・・・)。
自分が micro:Maqueen を買ったころから拡張機能のバージョンアップが行われたのですが、こちらは以前はなかった項目のように思います(見落としていただけだったりして・・・)。
項目「Maqueen」
「Maqueen」のほうは、モーター制御や LED制御などの色々な機能が並んでいます。
具体的には、おおよそこんな感じです。
- 赤外線受信関連
- 超音波距離センサ関連
- タイヤを動かすモーターの制御
- サーボモーターの制御(※バージョン4以上)
- 底面のライントレース用のセンサ関連
- 前面の単色LED関連
また、底面にフルカラーLEDが4つついていますが、こちらは NeoPixel拡張を利用して制御する形です。また、ブザーもついているので、音を鳴らす処理も利用できます。
どんなセンサ等が組み込まれているかは、スイッチサイエンスさんの Micro: Maqueen のページを見るのが分かりやすいです。
以下、そのページからの一部抜粋です。
- 赤外線グレースケールセンサ(High-Lowレベル)× 2
- ブザー × 1
- 赤外線受信機(NECデコーダ)× 1
- LEDライト(High-Lowレベル制御)× 2
- RGB LEDライト(1600万色)× 4
- SR04、SR04P超音波インタフェース(5 V)× 1
- I2Cインタフェース(3.3 V)× 1
- Gravity拡張インタフェース(P1、P2)× 2
- N20オールメタルギアモーター × 2
実際に試してみる
キー入力で走行を制御
それでは、Scratch と micro:Maqueen の連携を試してみます。
まずは、単純に「キーボードの矢印キーを押すと特定の方向に走る」というものをやってみました。
プログラムはこれだけです。
そして、実際に動作させた様子がこちらになります。
@jishiha さんが提供されている、Scratch2Maqueen を試してみた動画。https://t.co/A2Ibz2MyrT pic.twitter.com/7zqXXKj3Zh
— you (@youtoy) December 19, 2019
LEDの光り方が意図通りではないですが、全体としては思った通りの挙動になりました。
超音波距離センサを使ってみる
あともう1つ、micro:Maqueen の持つ機能である、超音波距離センサを試してみます。
距離に関する設定をするブロックは、条件文の中で使うもののため、とりあえず「ずっと」ブロックの中に条件文を作って、そこで micro:Maqueen を停止させる契機として使ってみます。
プログラムは以下のとおりです。
また、それを実際に動作させた様子を動画にしたものがこちらです。
動画の最初は、前に進んで後退してという動きをしますが、その後の部分では手がかざされたところで停止するのが分かるかと思います。
こちらは続き。
— you (@youtoy) December 19, 2019
超音波距離センサを使ったものです。
障害物がなければ前後に移動して止まり、もし障害物があれば緊急停止してLEDが点灯するというもの。 pic.twitter.com/INKQL3SP0p
おわりに
今回、Scratch と micro:Maqueen を連携させて、キーボードでの micro:Maqueen の操作をやってみたり、距離センサーを使ったプログラムを試してみました。
今回は、拡張機能の一部のみを試しましたが、様々ある拡張機能同士を混ぜて使ってみたら面白いことができそうで、何か考えて試してみようと思います。