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を連携させるには、以下のような接続イメージになります。
ちなみに、mBlock5で、上の図のようにサーバーを利用したデータ連携をする場合は、mBlock5上でユーザー登録をして、ログインしている状態にしておく必要があります。ユーザー登録は、メールアドレスとパスワードだけなので、特に重要な個人情報を求められる事はありません。
なので、Halocodeからのデータは、以下の経路をたどることになります。
Halocode→WiFi経由→mBlock5サーバー→WiFi経由→mBlock5のスプライト(PC)→ Bluetooth経由 →mBot
理由は、以下の制約条件を考慮する必要があるからです。
1、mBotは、ユーザークラウドメッセージを受け取れない
→mBlock5サーバーを介したメッセージのやり取りができない
Halocodeには、ユーザークラウドメッセージというブロックが標準で用意されています。
ユーザークラウドメッセージとは、WiFiで繋がったデバイス同士(この場合は、HalocodeとPC=mBlock5のスプライト)が、mBlockサーバーを介してメッセージのやり取りをする機能です。
例えば、mBlock5(PC)のスプライトを操作したら、ケーブルで接続したり、Bluetoothで接続しなくても、Halocodeを操作するプログラムを作ることが可能になります。
mBotには、WiFiの拡張モジュールがあります(日本で入手して、利用できるかは不明)が、たとえ、WiFi拡張モジュールを付けたとしても、mBlock5のmBotで利用できるブロックにユーザークラウドメッセージ機能はありません。
従って、mBlock5のからのメッセージ機能を介して連携することになります。標準でWiFi機能を持つCodey Rockyも同じ状況です。
2、mBlock5_v5.0.1は、1度に1台のデバイスしか接続出来ない。
→HalocodeとmBotを、mBlock5に同時に接続して、メッセージのやり取りができない
もし、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に接続したら、LEDを緑色に点灯させるというプログラムです。上の画像の左の塗りつぶしの所にSSIDを入れ、右にそのパスワードを入力します。
次に、ボタンを押したことをユーザークラウドメッセージで送るプログラムです。
ユーザークラウドメッセージの文字自体は、動作が分かるような任意の文字でいいので、短いものにしましょう。この文字の意味自体は、mBotは理解しませんので、単なる記号という意味合いですね。ちなみにですが、文字は半角英数で打ちましょう。
次のコードは、Halocodeが左右に傾いたことを送信するためのプログラムです。
Halocodeには、モーションセンサー(3軸加速度センサー+ジャイロセンサー)が搭載されています。
このセンサーを使いこなすと、様々なプログラムを作成することが出来ますが、少々難易度が上がります。そこで、今回は、上のブロックのように、Halocodeが左右に傾いているかどうかだけを扱うブロックで作成しました。
ちなみに、どこが基準で、傾いているか?ですが、Halocodeに「↑」が書いてあって、それが上に向いている状態が基準になります。
mblock5(スプライト・背景)のプログラム
次は、mBlock5内のスプライトと背景のプログラムです。mBlock5では、Halocodeが送ったユーザークラウドメッセージを、受け取って、mBotにアップロードメッセージとして送るプログラムを書きます。
スプライト
スプライトは、受け取ったユーザークラウドメッセージを言って、mBotに送るという事をさせます。スプライトーmBot間のメッセージのやり取りには、2通りのブロックがあります。
「通常のメッセージ」は、mBotにプログラムをアップロードせずに、mBlock5で実行する場合に利用することが出来ます。この場合、アップロードモードはOFFにしておく必要があります。
一方、プログラムの処理が重く複雑で、mBotへアップロードしなければ、うまく動かないならないような場合は、アップロードをONにしてアップロードしますが、その場合は、↑の通常メッセージブロックは使うことが出来ません。その場合には、拡張機能で、「アップロードのブロードキャスト」を追加してあげます。
すると、↓のようなブロックが使えるようになります。
今回は、通常メッセージでも大丈夫な簡単なプログラムですが、とりあえず、新しい機能を試すという事もありお、アップロードメッセージでプログラムを作りました。
背景
背景は、ユーザークラウドメッセージを受け取ったら色が変わるという事だけの処理をさせます。
mBotのプログラム
最後は、mBotのプログラムです。 mBotはスプライトから、アップロードメッセージを受け取りますので、同じく機能拡張でアップロードメッセージブロックを追加させた後に、下のようなプログラムを作ります。
これで、冒頭の動画のような動作をさせることが出来ます。気を付けたいのは、mBlock5とmBotはBluetoothか、USBケーブルで接続させたままの状態で実行する点です。
動画では、Bluetoothで接続させています。プログラムの実行は、mBotにアップロードしたプログラムで行ってが、メッセージの送受信だけは、mBlock5(PC)と接続したままでないといけないという訳です。
尚、Halocodeは、mBlock5のサーバーを通して繋がっているので、mBlock5と直接、接続させておく必要はありません。
※今回、Makeblock Japan様のご厚意で、日本発売前のHalocodeをお借りし、レビューする機会を頂いております。日本の電波法による技適などは、取得済のモノです。日本発売の時期、価格などは、近く発表されるとのことです。(2019年3月18日追記)
※2019年5月10日に発売開始されました。詳しくはこちら。