本記事ではmicro:bitの無線機能を使いこなせるようになることを目指して解説します。
- micro:bit同士で無線通信する方法①【メッセージ送受信】
micro:bitでは「micro:bit同士の無線通信」と「micro:bitとデバイス(PCやタブレット)の無線通信」ができます。
本記事では「micro:bit同士の無線通信」について、実際のプログラム例と実行結果を示しながら解説します。
micro:bit同士で無線通信する方法①【メッセージ送受信】
micro:bitには無線通信用のアンテナが搭載されています。
micro:bit同士の通信を使ってできること
micro:bit同士の通信を使うと下記のようなことができます。
- グループ全員のmicro:bitにメッセージを送信できる
- micro:bitを搭載したロボットをmicro:bitで操縦できる
- micro:bitを搭載したロボット同士で連携できる
上記のとおりです。ぜひ、使い方をマスターしましょう!
micro:bit同士の通信とは?
micro:bitでは不特定多数の相手に対してメッセージを送信することができ、近くにあるmicro:bitはそのメッセージを受信することができます。
このときにmicro:bitがたくさんあると受信してほしくない相手にも受信されてしまうので、電波帯域(チャンネル)を設定します。
また、グループ設定(0~255)もあります。これは同じグループ番号を設定した相手とだけ通信します。
ここで、「帯域設定とグループ設定はどう違うの?」と思われるかもですが、違いは次のとおりです。
- 帯域設定・・・使う電波が違うのでそもそも通信できない
- グループ設定・・・通信はするけど違うグループのメッセージは破棄する
ざっくり説明すると上記のとおりです。もし、通信が途切れたり、安定しないときは帯域設定を変えてみましょう。
まずは、以上の全体像をイメージしてもらえればこのあとの解説を理解しやすいはずです。
送受信できる内容
micro:bit同士の通信で送受信できる内容は次のとおりです。
- 数値
- 文字列(最大19文字)
- 数値と文字列(最大8文字)
また、上記の内容を送信したときに下記の内容も一緒に送られます。
- 信号強度・・・信号の強さ
- 時刻・・・送信された時刻
- シリアル番号・・・micro:bit1つ1つに割り当てられた番号
これらは「micro:bit同士で無線通信する方法②」で解説します。
送信側と受信側の考え方
それでは、具体的にプログラムを作っていきましょう!
基本的には送信側のプログラムと受信側のプログラムをそれぞれ作ります。
- 送信側・・・送信命令を使ってメッセージを送信する
- 受信側・・・メッセージ受信をきっかけに動作する
上記のとおりです。
以降は、送受信設定、送信側、受信側の命令について解説します。
【送受信設定】「無線の電波帯域を設定する」ブロック
この命令は無線の電波帯域を設定する命令です。
電波帯域は次の通り84チャンネルで、何も設定しないとチャンネル7が使われます。
基本的には最初に一度設定すればいいので次のように使います。
【送受信設定】「無線のグループを設定」ブロック
この命令は無線通信をおこなうグループを設定する命令です。
グループは次の通り256グループで、何も設定しないとグループ0が使われます。
基本的には最初に一度設定すればいいので次のように使います。
【送信】「無線で数値を送信」ブロック
この命令は送信したい数値を指定できる命令です。
例えば、ボタンAを押すとメッセージを送信するプログラムは次のとおりです。
【送信】「無線で文字列を送信」ブロック
この命令は送信したい文字列を指定できる命令です。
例えば、ボタンAを押すとメッセージを送信するプログラムは次のとおりです。
【送信】「無線で送信」ブロック
この命令は送信したい文字列と数値を指定できる命令です。
例えば、ボタンAを押すとメッセージを送信するプログラムは次のとおりです。
【受信】「無線で受信したとき(数値)」ブロック
この命令は「無線で数値を送信」ブロックで送信されたメッセージを受信し、それをきっかけに動作する開始命令です。
例えば次のようにすると、受信した数値をLEDディスプレイに表示することができます。
【受信】「無線で受信したとき(文字列)」ブロック
この命令は「無線で文字列を送信」ブロックで送信されたメッセージを受信し、それをきっかけに動作する開始命令です。
例えば次のようにすると、受信した文字列をLEDディスプレイに表示することができます。
【受信】「無線で受信したとき(文字列・数値)」ブロック
この命令は「無線で送信」ブロックで送信されたメッセージを受信し、それをきっかけに動作する開始命令です。
例えば次のようにすると、受信した文字列と数値をLEDディスプレイに表示することができます。
micro:bitの送受信例① ~シンプルなメッセージ送信~
micro:bitのボタンを押すとメッセージを送信し、受信内容をLEDディスプレイに表示するプログラムを作りましょう。
プログラムの考え方は次のとおりです。共通内容、送信側、受信側でプログラムを作ります。
- 最初だけ「無線の電波帯域を設定する」
- 最初だけ「無線のグループを設定」
- ボタンAが押されたとき「無線で数値を送信」
- ボタンBが押されたとき「無線で文字列を送信」
- ボタンAとBが同時押しされたとき「無線で文字列、数値を送信」
- 無線で数値を受信したとき、受信した数値を表示する
- 無線で文字列を受信したとき、受信した文字列を表示する
- 無線で文字列と数値を受信したとき、受信した文字列と数値を表示する
上記のとおりです。これをプログラムにすると次のとおりです。
※実行結果は▶ボタンを押してから確認してみてください。
上記のプログラムをシミュレーターで動かした様子がこちらです。送信命令が実行される(今回はボタンAが押される)とmicro:bitがもう一台登場し、通信をシミュレーションできます。
また、実機のプログラムは2台のmicro:bitに同じプログラムを書き込んでもいいですし、送信側には共通と送信側のプログラム、受信側には共通と受信側のプログラムを書き込んでもいいです。
まとめ
本記事のおさらいです。
- 簡単にmicro:bit同士で通信できる
- micro:bitでは不特定多数の相手にメッセージを送れる
- 送れるメッセージ内容は「文字列、数値、文字列と数値」
- 通信相手は「電波帯域」と「グループ設定」で決める
- 送信命令と受信命令は対になっており、それぞれ対応した受信命令を使う
上記のとおりです。
次は「micro:bit同士で無線通信する方法②」です。