Halocodeを使ってmBotを操作

 Halocode(ハロコード)とは、Makeblock社の教育用シングルボードコンピューターです。Makeblockはこれまでは、教育用プログラマブルロボットmBotとかがメインでしたが、Halocodeを見ると、かなり公教育への採用を意識したなあ、という感じですね。
 この分野で先行するmicrobitと比べて、単体でWiFi接続ができるなど、優位点も非常に多く、ポテンシャルの非常に高いSTEAM教育用ツールです。

 Halocodeは、Makeblockのプログラミングソフトウェア「mBlock5」を活用しながら、Codey RockyやmBotを操作させたり、連携させることが可能です。今回はmakeblockのプログラマブルロボットmBotとの連携をさせてみたいと思います。

HalocodeとmBotの連携方法 

 「Halocodeが右に傾いたらmBotが右折する。Halocodeが左に傾いたら、mBotが左折する。Halocodeのボタンを押したらmBotが回転する」

今回は、このようなHalocode-mBot連動プログラムを作りたいと思います。動作のイメージは↓のような感じです。

 まず、2019年3月15日現在のmBlock5の最新版「mBlock5_v5.0.1」の場合、HalocodeとmBotを連携させるには、以下のような接続イメージになります。

Halocode_mBot_接続イメージ画像

HalocodeとmBotの連携イメージ図

 ちなみに、mBlock5で、上の図のようにサーバーを利用したデータ連携をする場合は、mBlock5上でユーザー登録をして、ログインしている状態にしておく必要があります。ユーザー登録は、メールアドレスとパスワードだけなので、特に重要な個人情報を求められる事はありません。

なので、Halocodeからのデータは、以下の経路をたどることになります。

Halocode→WiFi経由→mBlock5サーバー→WiFi経由→mBlock5のスプライト(PC)→ Bluetooth経由 →mBot 

理由は、以下の制約条件を考慮する必要があるからです。

1、mBotは、ユーザークラウドメッセージを受け取れない
→mBlock5サーバーを介したメッセージのやり取りができない

 Halocodeには、ユーザークラウドメッセージというブロックが標準で用意されています。
 ユーザークラウドメッセージとは、WiFiで繋がったデバイス同士(この場合は、HalocodeとPC=mBlock5のスプライト)が、mBlockサーバーを介してメッセージのやり取りをする機能です。
 例えば、mBlock5(PC)のスプライトを操作したら、ケーブルで接続したり、Bluetoothで接続しなくても、Halocodeを操作するプログラムを作ることが可能になります。

ユーザークラウドメッセージ画像

mBlock5のHalocodeユーザークラウドメッセージ

ユーザークラウドメッセージ

mBlock5のスプライト用ユーザークラウドメッセージは拡張機能で追加可能

 

 mBotには、WiFiの拡張モジュールがあります(日本で入手して、利用できるかは不明)が、たとえ、WiFi拡張モジュールを付けたとしても、mBlock5のmBotで利用できるブロックにユーザークラウドメッセージ機能はありません。
 従って、mBlock5のからのメッセージ機能を介して連携することになります。標準でWiFi機能を持つCodey Rockyも同じ状況です。

2、mBlock5_v5.0.1は、1度に1台のデバイスしか接続出来ない。
→HalocodeとmBotを、mBlock5に同時に接続して、メッセージのやり取りができない

mBlock5は同時に1台しか接続できない画像


 もし、1の制約条件がなくなれば、HalocodeとmBotは、ユーザークラウドメッセージでのやり取りで連携できるので、かなりスマートです。
 mBotにWiFi拡張モジュールを付けるという、mBot用のWiFiモジュールが恐らく技適の問題で販売されていない日本では結構難しい問題をクリアしつつ、インターネット接続環境は必須という状況ですが。。
 Codey Rockyは、WiFi機能がすでに搭載されているので、もしかすると、今後のmBlock5のアップデートでユーザークラウドメッセージ対応が可能になるかも知れません。

 もし、2の制約条件がなくなれば、クラウドサーバーは介す必要が無いので、mBotのWiFi化は必要なく、Halocode-mBlock5-mBotというメッセージのやり取りになりますので、難易度はぐっと下がります。

 この辺の制約条件は、mBlock5のアップデートで、そのうち解消されるでしょう!特に制約条件2に関しては、割と近い将来、解消される気がします。何の根拠もない勝手な予想ですが(笑)

 いずれにせよ、今回は、

 Halocode→WiFi経由→mBlockサーバー→WiFi経由→mBlock5(PC)→ Bluetooth経由 →mBot 

という経路で、HalocodeとmBotを連携させてみようと思います。

Halocodeのプログラム

 まずは、Halocodeのプログラミングです。Halocodeを使ってプログラミングや電子工作をする場合、WiFiに接続する場合のプログラムは、頻繁に使うので、覚えてしまいましょう。

Halocode_WiFi接続のためのプログラム_mBlock5の画像

 上のプログラムは、Halocodeの電源を入れ、WiFiに接続したら、LEDを緑色に点灯させるというプログラムです。上の画像の左の塗りつぶしの所にSSIDを入れ、右にそのパスワードを入力します。

 次に、ボタンを押したことをユーザークラウドメッセージで送るプログラムです。
Halocode_ボタンを押したことをユーザークラウドメッセージで送信するプログラム_mBlock5の画像
ユーザークラウドメッセージの文字自体は、動作が分かるような任意の文字でいいので、短いものにしましょう。この文字の意味自体は、mBotは理解しませんので、単なる記号という意味合いですね。ちなみにですが、文字は半角英数で打ちましょう。

 次のコードは、Halocodeが左右に傾いたことを送信するためのプログラムです。

Halocode_傾いたことをユーザークラウドメッセージで送信するプログラム_mBlock5の画像

Halocodeには、モーションセンサー(3軸加速度センサー+ジャイロセンサー)が搭載されています。

Halocode_モーションセンサーの画像

HaloCodeの3つの軸(x、y、z)と、それに対応するロールとピッチの方向の説明図

 このセンサーを使いこなすと、様々なプログラムを作成することが出来ますが、少々難易度が上がります。そこで、今回は、上のブロックのように、Halocodeが左右に傾いているかどうかだけを扱うブロックで作成しました。

 Halocode_傾き検知のブロック_mblock5の画像

 ちなみに、どこが基準で、傾いているか?ですが、Halocodeに「↑」が書いてあって、それが上に向いている状態が基準になります。

Halocode_モーションセンサーの基準点の画像

Halocodeのモーションセンサーの基準点

mblock5(スプライト・背景)のプログラム

 次は、mBlock5内のスプライトと背景のプログラムです。mBlock5では、Halocodeが送ったユーザークラウドメッセージを、受け取って、mBotにアップロードメッセージとして送るプログラムを書きます。

スプライト

スプライトは、受け取ったユーザークラウドメッセージを言って、mBotに送るという事をさせます。スプライトーmBot間のメッセージのやり取りには、2通りのブロックがあります。

「通常のメッセージ」は、mBotにプログラムをアップロードせずに、mBlock5で実行する場合に利用することが出来ます。この場合、アップロードモードはOFFにしておく必要があります。

mblock5のメッセージブロックの画像

 一方、プログラムの処理が重く複雑で、mBotへアップロードしなければ、うまく動かないならないような場合は、アップロードをONにしてアップロードしますが、その場合は、↑の通常メッセージブロックは使うことが出来ません。その場合には、拡張機能で、「アップロードのブロードキャスト」を追加してあげます。

mblock5のアップロードメッセージ拡張機能

すると、↓のようなブロックが使えるようになります。

mBlock5_アップロードメッセージブロックの画像

今回は、通常メッセージでも大丈夫な簡単なプログラムですが、とりあえず、新しい機能を試すという事もありお、アップロードメッセージでプログラムを作りました。

Halocode_mBotへメッセージ送るためのスプライトプログラムの画像

背景

背景は、ユーザークラウドメッセージを受け取ったら色が変わるという事だけの処理をさせます。

Halocode_mBlockの背景を変えるためのプログラムの画像

mBotのプログラム

 最後は、mBotのプログラムです。 mBotはスプライトから、アップロードメッセージを受け取りますので、同じく機能拡張でアップロードメッセージブロックを追加させた後に、下のようなプログラムを作ります。

Halocode_傾きに応じてmBotの動きを変えるプログラムの画像

 これで、冒頭の動画のような動作をさせることが出来ます。気を付けたいのは、mBlock5とmBotはBluetoothか、USBケーブルで接続させたままの状態で実行する点です。
 動画では、Bluetoothで接続させています。プログラムの実行は、mBotにアップロードしたプログラムで行ってが、メッセージの送受信だけは、mBlock5(PC)と接続したままでないといけないという訳です。

 尚、Halocodeは、mBlock5のサーバーを通して繋がっているので、mBlock5と直接、接続させておく必要はありません。

※今回、Makeblock Japan様のご厚意で、日本発売前のHalocodeをお借りし、レビューする機会を頂いております。日本の電波法による技適などは、取得済のモノです。日本発売の時期、価格などは、近く発表されるとのことです。(2019年3月18日追記)

※2019年5月10日に発売開始されました。詳しくはこちら

7月9日HaloCodeもくもく会案内