マイクロビットは、低電力、無線通信が可能、という特長があり、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日間動かすことができる計算になります。