今日は久々にmicro:bitを触りました。
micro:bitはお互いがbluetoothで通信する機能を持っているのですが、それを利用して2台の距離をざっくりと測る方法を試してみました。
実はmicro:bitの標準ブロックの中に、受信時の「信号強度」を見るブロックがあります。
信号は、送信側と受信側の距離が離れれば弱くなります。
この原理を利用して測定できるのではないかと考えました。
今回、障害物は無いものとして考えています。
プログラムの内容はこちら。
まずは送信側。
<最初だけ>
・グループを設定しています。(今回は「1」)
受信側と送信側が同じ数字であればOK。
・送信強度を設定しています。
値は「0~7」で選べます。
0でも信号は出ているようでした。
<ずっと>
適当なデータを送る為に、数字の「0」を送信しています。
一定間隔で信号を出すイメージで、一時停止を入れています。(無くてもいいかも)
次に受信側のプログラム。
<最初だけ>
・無線のグループ「1」を設定。(送信側と同じ値)
<無線で受信したとき(recievedNumver)>
送信側の「0」を受け取ったときの動作をここに書きます。
まず数値を表示して動作確認をしたところ、「-90~-50」くらいの値が得られました。(単位は「dBm(デシベルミリワット)」のようです)
値がマイナスのままだとうまくグラフ化できなかったので、「+100」しています。(ここの値は適当)
グラフの最大値は「40」にしました。(ここも適当)
最終的にはシンプルなプログラムになりましたね。
シンプルイズベスト!
動作確認の様子はこちら。
机の端から端まで、およそ1mくらいでしたが結構いい感じに反応してくれました。
信号強度を変えると、測定レンジや分解能が変わったりするかも?
実際は障害物が色々とあるところで使いたいので、また実験してみようと思います。