micro:bitとESPr Developerでゲートウェイ

マイクロビットは、低電力無線通信が可能、という特長があり、IoT端末として最適なデバイスです。


プログラムの内容にもよりますが、単三電池2本で1ヶ月以上も連続稼働でき、また、無線で数十mの通信が可能なので、ケーブルなしで所望の場所に設置することができます。

ただ、IoT端末として利用するならば、端末で採取したデータを、インターネット経由でWebサーバに送信したくなりますが、micro:bitの無線通信方式には「Bluetooth Low Energy(BLE)」、もしくはmicro:bit独自の「無線」しかなく、micro:bitから直接、インターネット経由でのデータ送信はできません。

そのため、micro:bitから無線で送られてきたデータを受信し、そのデータをWi-Fi経由でインターネットに送信するための「ゲートウェイ」を作ろうと思います。

以下のような仕様にします。

  • IoT端末(エッジノード)は、micro:bitで作ります。エッジノードは電池で1ヶ月以上動かすことができ、データ送信には無線を使うので、ケーブルなしで運用できます。
  • エッジノード−ゲートウェイ間の通信には、micro:bit独自の「無線」を使います。よって、ゲートウェイ側にもmicro:bitが必要になります。
  • ゲートウェイからWi-Fiでデータ送信するために、Wi-Fi通信機能のある ESPr Developer を使います。つまり、ゲートウェイ内部は、micro:bitとESPr Developerの2チップ構成となります。なお、ゲートウェイは消費電力が比較的大きくなるので、電源をコンセントにつないで稼働させることを想定しています。
  • デートウェイ内部での、micro:bitからESPr Developerへのデータ転送には、シリアル通信を使います。

ゲートウェイには、BLEとWi-Fiの両方が使用可能な、ESP32を使うという方法もありますが、今回は、仕様が分かりやすいmicro:bitの「無線」を使いたかったので、上記のような2チップ構成にしました。

以下のようなデータの流れになります。

エッジノード(micro:bit)→【無線】→ゲートウェイ(micro:bit)→【シリアル通信】→ゲートウェイ(ESPr Developer)→【Wi-Fi】→Wi-Fiルータ

また、ゲートウェイを使うと、多数のエッジノードと、ひとつのゲートウェイでシステムを作ることができます。

つまり、数十mの空間の中に、多数のエッジノードを設置し、それらで採取したデータをひとつのゲートウェイで受け取り、Wi-Fi送信することができるので、コンセントは1口使うだけで、多くの場所のデータを採取することができます。

ブレッドボードを使って、簡単にゲートウェイを作りました。

今回、エッジノードでは、micro:bit内蔵の加速度センサを使って、micro:bitの傾きを採取することにしました、また、電源は、MI:電源ボードを使って、ボタン電池で供給するようにしたので、それ以外の外付け部品は不要です。

これで、データ採取してみました。
採取したデータは、インターネット上のWebサーバに保存し、変化の推移をグラフ表示できるようにしてみました。

エッジノードとして、micro:bitを12台準備し、動作確認してみました。

なかなかいい感じにデータが採取できています。

今回は、あそびでデータを採取してみましたが、さまざまな有益な用途にも使えそうです。

ちなみに、上記のエッジノードについて、電池のもちを調べてみました。
1分毎にデータをゲートウェイに送信する条件で、単四電池2本で動かしてみたところ、22日間、連続稼働できました。
単三電池なら、55日間動かすことができる計算になります。

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


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


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

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