Skip to content

アクティビティ

近接ビーコン

上級 | MakeCode, Python | LED表示, 無線 | 算術演算子, 通信, 電波

ステップ1: 作る

説明

無線を使ってもう一台のmicro:bitがどれだけ近くにあるかを検出し、宝さがしゲームを作ったり、安全なソーシャルディスタンスにいることを知らせるために使えます。

はじめに

プログラミングガイド

動作の仕組み

  • これにはmicro:bitが最低二台必要です。 異なるプログラムを二つ作成します。一つは、低電力の無線メッセージを常に送信するビーコンです。 もう一つのプログラムはその受信機になります。
  • レシーバーがビーコンからメッセージを拾えば、その強度をsignal と呼ばれる変数に格納し、LEDディスプレイに表示します。
  • 無線信号は送信機に近づけば近づくほど強くなります。信号が強い場合は、もう一方のmicro:bitがおそらく近いことを意味します。
  • 無線信号が弱い場合、もう一方のmicro:bitはおそらく遠くにあります。
  • 信号が強く接近すると大きくなる棒グラフが表示されます。 「数学」のマップブロックを使って、無線信号の強度を、約-95 (弱)から約-42 (強)までの範囲を0から9にマッピングし、棒グラフを表示します。

Pythonのバージョン

  • Pythonには、棒グラフやマップ関数が組み込まれていないので、動作が少し違います。 ビーコンに近づけば、LED全てが点灯し、さらに接近すれば明るくなります。
  • 無線強度の読み取りには、radio.receive_full() コマンドを使います。 この値は、メッセージ、信号強度、タイムスタンプを提供します。 信号強度だけが知りたいので、 signal = message[1] でこれを抜き出し、 signalという変数に格納します。
  • 信号強度は-98(最も弱い)から-45(最も強い)までの範囲になりえます。 そしてPythonプログラムはLEDの明るさを変更するために使える0〜9の範囲に変換するmapと呼ばれる関数を定義します。0はオフを意味し、 9はLEDの最大輝度です。 (この関数は、MakeCodeのmapブロックと非常に似た動作するので、他のPythonプロジェクトで使えます)
  • Pythonプログラムで ライトという空白の5 x 5のイメージをコマンド light = Image(5,5)を使って作成し、その明るさはlight.fill() コマンドを使って変化させます。

必要なもの

  • micro:bit2個と電池ボックス2個
  • MakeCodeまたはPythonエディター
  • バッテリーパック(オプション)

ステップ2: プログラムする

送信機 / ビーコン

受信機

ステップ3: 改善する

  • ビーコン/受信機コードを組み合わせれば、両方のタスクを行うmicro:bitを1台で持つことができます。
  • 近接検出器を着用できるよう、手首バンドを作成しましょう。
  • 1、2メートル離れているときの信号の強度はどのくらいですか? 誰かが近寄りすぎると、目や耳で感じるアラームを鳴らすようプログラムを変更してみましょう。
  • これらのプログラムを使って、宝探しゲームを作りましょう。ビーコンを隠して、たくさんのmicro:bitに受信機コードを入れましょう。
  • 屋外や広い空間では、送信機の電力を変えて実験してください。 0から7までの任意の数にすることができます