マイクロビットは、ブロックエディタで子供にも簡単にプログラムがつくれる上、無線機能がついていたり、各種センサやLEDが搭載されていたりと、とても便利で使いやすいマイコンボードです。
また、マイクロビットはホビー用途だけでなく、かなり実用的なデバイスをつくることもできます。
例えば こちら の記事では、複数の子機で採取したデータを、無線で1台の親機に送信し、親機につないだPCで各子機のデータを観測しています。
まさにIoTシステムで行いたいようなことをマイクロビットで実現できており、マイクロビットが実用的な用途にも使えることが分かります。
ただ、マイクロビットをこのような用途で使おうとすると、消費電力の問題が生じます。
マイクロビットは非常に低電力なマイコンデバイスですが、それでも無線機能を使うと数十mA(こちら の実験では最大20mA程度)の電流を消費します。
また、ブロックエディタには無線通信をオフにするブロックがないため、一度無線機能を使うと、その後は常時20mA近くの電流を消費してしまいます。
このため、コンセントから電源を供給できるような用途であれば良いのですが、屋外など、マイクロビットを乾電池などで駆動したい場合、長期間にわたって連続稼働させることはできません。
たとえば、容量2000mAhの単三型Ni-MH電池を使う場合、マイクロビットの消費電流値が常時20mAだとすると、
2000mAh / 20mA = 100h = 4.2日
となり、4日程度しかデータを採取できないことになります。
さて、マイクロビットのブロックエディタ(MakeCodeエディタ)で「拡張機能」にどんなものがあるのか眺めていたところ、「Power」という拡張機能をみつけました。
まだベータ版で、しかもマイクロビットv2でなければ使えない機能ですが、これを使えば上記の消費電力の問題を解決できる可能性があります。
早速試してみることにしました。
以前と同じ、こちら のプログラムを、「Power」機能を使って低電力化してみます。
親機のプログラムはこちらです。
以前の記事と全く同じで、子機から無線でデータを受信するたびに、そのデータをPCに送信するものです。
従来版の子機のプログラムはこちらです。
5秒ごとに、加速度データを無線で親機に送信します。
今回改良した、「Power」機能を使った子機のプログラムです。
従来版では「ずっと」ブロックを使っていましたが、代わりに「full power every」ブロックを使います。
5秒ごとにフルパワーにし、加速度データを無線で親機に送信した後、「request low power」でローパワーに移行します。
2種類のプログラムを書き込んだ子機用マイクロビット2台に、それぞれ乾電池をつないで動かします。
親機用マイクロビットをPCにつなぎ、ブロックエディタで「コンソールを表示」したところ、このように2台の子機のデータが表示されました。
「Power」機能をつかった改良版プログラムでも、従来版と同様に、問題なくデータ採取できることが確認できました。
次に、肝心の消費電流値を測定します。
単三型Ni-MH電池を2本つかいます。
電池から子機用マイクロビットに電源供給する回路の途中に、以下のようにテスターをつないで電流値を測定しました。
その結果、従来版プログラムでは常時 12.9mA 程度の電流消費だったのに対し、「Power」機能をつかった改良版プログラムでは、無線送信中の一瞬だけ12mA以上になった後、1.4mA 程度の電流消費になり、これを5秒間隔で繰り返すという結果になりました。
ローパワー中の電流消費は通常動作中の約1/9と、すばらしい結果です。
たとえば数十分ごとにデータ採取するような用途であれば、ほとんどの時間でマイクロビットはローパワーということになります。
先ほどの計算と同じように、容量2000mAhの単三型Ni-MH電池を使う場合で計算してみると、
2000mAh / 1.4mA = 1429h = 59.5日
と、なんと2ヶ月近くにわたりデータを採取できる計算になります。
これだけ連続稼働できるのであれば、本当にいろいろな用途に活用できそうです。
なお、私がマイクロビットの使い方を習得するのにあたっては、以下の書籍を参考にさせていただきました。
初心者向けから、比較的高度なものまで、さまざまな情報が記載されているだけでなく、子供向けの作例も多数掲載されていますので、「プログラミング教育」のための題材さがしなどにもおすすめです。