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: プログラムする

送信機 / ビーコン

1from microbit import *
2import radio
3radio.config(group=1, power=1)
4radio.on()
5
6while True:
7    radio.send('1')
8    sleep(200)
9

受信機

1from microbit import *
2import radio
3radio.config(group=1)
4radio.on()
5light = Image(5,5) # create an empty image
6
7# function to map signal stength to LED brightness
8def map(value, fromMin, fromMax, toMin, toMax):
9    fromRange = fromMax - fromMin
10    toRange = toMax - toMin
11    valueScaled = float(value - fromMin) / float(fromRange)
12    return toMin + (valueScaled * toRange)
13
14while True:
15    message = radio.receive_full()
16    if message:
17        signal = message[1]
18        brightness = map(signal, -98, -44, 0, 9)
19        light.fill(round(brightness))
20        display.show(light)
21

ステップ3: 改善する

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