
マイクロビットの無線機能/隣室温度を監視する
こんにちは rock204チャンネルです。
今回のテーマは「マイクロビットの無線機能 隣室温度を監視する」というテーマでお送りします。
動画内容は
・micro:bitの無線通信
・無線機能ブロックの使い方
・隣室の温度をリモート監視する
プログラム アラーム機能を追加
です。
マイクロビットの無線通信機能はマイクロビットは本体に内蔵された無線機能を使って 他のマイクロビットとワイヤレスに通信することができます。
無線はメッセージを送受信する 一つの方法で マイクロビットは無線 電波を使って 互いにデータを送信受信することができます。

マイクロビットの無線機能には2種類あります
一つはブルートゥース LEという方法です。
この機能は音楽再生などで 幅広く使われている無線通信技術Bluetoothの一部で、LEすなわちローエナジー つまり 低消費電力での通信が可能な規格を使用しいます。
もう一つの 無線機能は CPUに組み込まれた無線機能です。
このマイクロビット独自の無線機能はマイクロビットの頭脳に当たるCPU(中央演算処理装置)の機能の一つとして備えられており、ブルートゥースのような汎用性はありませんが マイクロビット同士の通信が非常に簡単にできるというメリットがあります。
この動画ではこの機能を使って説明をして行きます。

メークコードでの無線機能のブロックは、このように多くのブロックを使用することができます。
以下、順次使い方を説明をして行きます。

無線機能の基本的な使用方法を説明します。
送信側・受信側ともに 同じ無線のグループ設定番号を使用します。
そして、この場合Aボタンが押されたとき、「無線で文字列送信」のブロックを使用し”Hello”のデータを送ります。
受信側では 「無線で受信したとき received string」のブロックを使用して
文字列を受信しLEDディスプレイに 受信した received string を表示します。

無線グループについて見て行きましょう。
無線グループというのはいわゆるラジオ放送の周波数のようなものです。
同じグループ番号が付いているときマイクロビット同士でデータを交換することができますが違ったグループ番号で設定されたマイクロビット同士では通信をすることができません。
このことによってデータの混信を防ぎます。

送信側、受信側のブロックの対応をここに示します。
「無線で文字列送信」ブロックに対して 受信側では「無線で受信したときreceived string」ブロックを使用します。
「無線で 数値を送信」ブロックに対しては 「無線で受信したときreceived number」ブロックを使用します。
また 「無線で送信 文字列、 数値」ブロックに対しては「無線で受信したとき name value」ブロックを使用します。

それでは無線機能を使って隣の部屋の温度をリモート監視するプログラムについて考えてみましょう。
送信側のマイクロビットには温度を10秒間隔で送信するプログラムを書きます。
そして受信側のプログラムは受信した温度を表示 します。
またAボタンを押すと その温度を再表示する機能を付けていきます。

送信側のプログラムを見て行きましょう。
まず「最初だけ」ブロックの中で グループ設定を1にして
次に 測定間隔を決める変数intervalに 10×1000を代入します。
これは 10秒をミリ秒に変換するために用いています。
そしてハートマークを表示し 1秒間で表示を消します。
そして「ずっと」ブロックの中に無線で温度を送るブロックを入れます。
次にディスプレイに温度を表示し上向き矢印を入れます。
次に1秒間でこの表示を消し小さな マークを 表示します。
最後にintervalの時間だけ プログラムを停止します。
この流れを ずっと繰り返します。

受信側のプログラムです。
「最初だけ」ブロックに無線グループを1として送信側と一致させます。
そしてハートマークを表示し 1秒間すると小さなマークを表示します。
「無線で 数値が送られてきた時 」は送られてきた値received numberをbf 変数に入れます。そして下向き矢印を表示し 温度も表示します。
次に表示を消した後、小さなマークを表示します。
ボタンAでは 送られてきた温度の再表示を行ないます。

先に説明したプログラムにアラーム機能を追加 します。
送信側では 温度補正を行った上で10秒おきにデータを送信します。
受信側の追加機能としては アラーム機能を追加して行きます。
この機能は一定温度を超えるとアラームがなるように設定を行ないます。

送信側の変更機能を見てみましょう。
「最初だけ」ブロックの中の 変数intervalの設定の下に
変数hoseiに4を入れます。
これは補正温度を4度とする場合です。

次に「ずっと」ブロックの中の修正です。
測定された温度から補正値を引いて bfに代入します。
この値を 無線で送信しディスプレイに表示します。

受信側では 変数alarmを設けて 初期値を1とします。
1の場合がアラーム オン、 0の場合が アラーム オフとします。
そして設定温度を入れる変数としてset_value の変数を用意します。
これに29を入れます。すなわち 29度を超えた場合にアラーム音を鳴らすようにプログラムします。

「Bボタンが押されたとき」を追加し
アラームのオンオフが行えるようにします。
Alarm=1すなわちonの場合にはBボタンが押されるとオフにし
Alarm=0の場合 すなわちオフの場合はalarmを1とし再度onとします。

無線で 温度を受信したとき受信した数値を変数bfに代入します。
そして 「もし」ブロックを入れて条件式を bf すなわち温度が 設定値より大きい場合かつalarmが1の場合 右側の上のプログラムを実行します。
このプログラムではカウンターが0~10に変化するループを実行します。
ループ内は音を鳴らすブロックと停止ブロック を入れますので、音を鳴らしたり消えたりを繰り返します。
そして、それ以外の条件においては 温度表示に続き小さなマークの表示を行ないます。
以上でプログラムの修正は終わります。

まとめ
今回は マイクロビットにおける無線機能について説明しました。
この機能を使って 隣の部屋の温度を監視するプログラムを作成しました。
温度測定においては マイクロビットで測った温度と実際の温度は異なるので補正が必要となってきます。
また実用的な温度監視プログラムにおいては アラームのオン・オフ機能のほか設定温度の調整が必要となってきます。
ご視聴ありがとうございました。