マイクロビットの無線通信で信号の強度を変えながら値を送信してみる


マイクロビットの無線通信では送信側(transmitter)から値を送信する時の信号の強度を変更することが出来ます。

今回は送信側(transmitter)の信号の強度を高めると、受信側(receiver)では受信信号強度(Received Signal Strength Indicator:RSSI)がどのように変化していくか?を見ていきます。


早速、検証用のコードを作成します。


transmitter.py

from microbit import *
import radio

power = 1
while True:
	radio.config(group=1, power=power)
	radio.on()

	# 信号強度の値を送信する
	radio.send(str(power))

	power += 1
	if power >= 8:
		power = 1

	sleep(1000)

上記のコードでは1秒毎に信号強度を1ずつ上げて受信側に値を送信します。

信号強度(power)は 0 〜 7 までの値を指定することになっているので、今回はその範囲内で強度を変更しながら値を送信していきます。

ちなみにマイクロビットの無線通信の標準設定では信号の強度は 6 に設定されています。




続いて。受信側(receiver)の方のコードを作成します。


receiver.py

import radio

radio.config(group=1)
radio.on()

while True:
	details = radio.receive_full()
	if details:
		msg, rssi, timestamp = details
		print(str(msg.decode("UTF-8"))+":"+str(rssi))

送信側から値を受け取った時に、受信側の信号強度:RSSIの値を出力するようにしています。


二つのマイクロビットに各コードをフラッシングして、



のように近づけたままにして受信側の方でシリアルを開き値を確認してみると、

1:-43
2:-39
3:-35
4:-31
5:-28
6:-26
7:-24

のように送信側の信号強度を高めると、受信側のRSSIの値が下がりました。

マイクロビットの二点間の距離を測定する時に、遠くにいる時は送信側の送信強度を高め大雑把に値を取得し、近くにいる時は送信側の送信強度を低め、細かく値を取得するといったことで活用できそうです。

同じカテゴリーの記事
マインクラフト用ビジュアルエディタを開発しています。
詳しくはinunosinsi/mcws_blockly - githubをご覧ください。