micro:bitを使ってみる 13 〜無線通信

前回の記事でインストールした「muエディタ」を使って、MicroPythonで何か作ってみようと思います。

ふたつのマイクロビットと、MicroPythonの無線通信機能を使って、一方のマイクロビット のセンサで取得したデータを、もう一方のマイクロビット に送信してみます。


機能

一方のmicro:bitは、電池で駆動させます。
1秒間隔で、温度と加速度センサの値を取得し、その値を「(温度,X値,Y値,Z値)」の書式で送信します。

もう一方のmicro:bitは、パソコンとつないだ状態で使用します。
送られてきたデータを受信し、そのままprintします。
パソコンでは「muエディタ」を起動しておきます。「プロッター」という機能で、折れ線グラフ表示ができるようなので、これを使って、受信情報を表示します。

つまり、電池で駆動しているmicro:bitで観測したデータを、(もうひとつのmicro:bitを介して)無線接続されたパソコンで、グラフ表示させます。

材料

  • micro:bit(2)
  • 電池ボックス(単三x2本用)
  • 電池(単三×2)
  • USBケーブル
  • 皿ネジ(M3x15mm)(2)
  • ナット(M3)(4)
  • プラスチック座金(内径3mm)(2)

プログラム

送信用micro:bitのプログラムは、以下のとおりです。今回は、温度と加速度センサの値を観測していますが、外付けのセンサなどを使うことで、さまざまなデータが観測できます。無線通信は消費電力が大きいので、データ送信後はすぐにOFFにしています。sleepの時間を増やして、データ観測の間隔を粗くすることで、消費電力を削減できます。

import radio
from microbit import *

while True:
    t = str(temperature())
    x = str(accelerometer.get_x())
    y = str(accelerometer.get_y())
    z = str(accelerometer.get_z())
    mess = '(' + t + ',' + x + ',' + y + ',' + z + ')'
    radio.on()
    radio.send(mess)
    radio.off()
    sleep(1000)

受信用micro:bitのプログラムは、以下のとおりです。受け取ったデータを、そのままprintしているだけです。こちらはパソコンにつながっており、消費電力を気にする必要はないので、無線は常時ONにしています。

import radio
from microbit import *

radio.on()

while True:
    mess = radio.receive()
    if mess:
        print(mess)

つなぎかた

送信用micro:bitは電池ボックスと、受信用micro:bitは、USBケーブルでバソコンと、それぞれつなぐだけです。

結果

「muエディタ」の「プロッター」ボタンをクリックすると、ウインドウの下半分に4本の折れ線グラフが表示されます。送信用micro:bitを色々な向きに傾けると、3本のグラフが変動します。1本は温度なので(ほとんど)変化しません。

この仕組みを使えば、電源のない、はなれた場所にmicro:bitを設置し、そこからセンサの観測データを無線で送信し、パソコンで確認することができるので、色々と応用がききそうです。
ただ、通信距離は、せいぜい数m程度のようです。

なお、私がマイクロビットの使い方を習得するのにあたっては、以下の書籍を参考にさせていただきました。


初心者向けから、比較的高度なものまで、さまざまな情報が記載されているだけでなく、子供向けの作例も多数掲載されていますので、「プログラミング教育」のための題材さがしなどにもおすすめです。


このサイトで書いている、マイクロビットに関するブログ記事を、「さとやまノート」という別のブログページに、あらためて整理してまとめました。

他のマイクロビット記事にも興味のある方は「さとやまノート」をご覧ください。