実験室で電圧を記録するロガーとしては、ここまでの作品で用が足りますが、電池を使ってこれをフィールドで長期稼働させるとなると電力供給の問題が起こります。後述の通り、Arduino UNOは単体で動かすだけでも、約50mAの電流を消費します。2500mAhのエネループプロ(×4本)で駆動すると、2500mAh/50mA=50hつまり約2日しか稼働しないことになります。これをいかに数か月~数年に延ばすか、が非常に難しい問題になります。本来、マイコンというのは非常に小さい電力で稼働するものですが、Arduino UNOにはUSB-シリアル変換チップその他いろいろ載っており、また接続したセンサーやモジュールにも常時電流が流れます。これを根本的に解決するには、Arduinoのような素人向けマイコンボードではなく、マイコンそのものを単位として一からロガーを構成し、省電設計をする必要があります。ただ、これ以外にもいくつか方法はあります。まず、ここでこれらの方法を概観します。
省電力化する
① Arduino UNOではなくArduino Pro Mini (3.3V 8MHz)やESP32など、より省電力化されたボード・マイコンを用いる
② スリープ機能を使う
③ 既往の電源管理モジュール(TPL5110など)を使う、あるいは作る
電力供給を解決する
(i) 巨大なバッテリーを用いる
(ii) 太陽光発電などエナジーハーヴェスティングをする
①~③と(i)~(ii)を組み合わせることで、より長寿命なシステムを構築できます。結論からいうと、①②だけでは抜本的に省電力化はできないようです。数分の1~1/10程度の省電力化はできるようですが、これでもエネループでは数週間しかもちません。(i)もスマート・抜本的な解決策には思えません。そこで、管理人が辿りついた結論としては、可能な限り①(Pro MiniはUNOに対して特段劣る部分はないので、こちらを用いるに越したことはない)は用いるとして、これと②(ii)の組み合わせ、②③の組み合わせがよさそうということです。
Arduino Pro Mini
ここでは、まずArduino Pro Mini 3.3V 8MHzを紹介します。以下のように、1つあたり500円程度で買えます。ピンヘッダも必要になります。Pro Miniは本家のArduinoは廃盤になったようですが、互換品はまだ買えます。
![]() |
HiLetgo 5個セット PRO Mini Atmega328P-AU 5V / 16MHz...
1,650円
Amazon |
ピンヘッダは同梱されていることが多いですが、安いので余分に買っておくとよいです。
![]() |
10pcs シングル40ピン オス+メスストレートタイプ ピンヘッダー PCB用 2.54 mm
174円
Amazon |
ピンヘッダは下の写真のように下向き・上向きにつけてもどちらでもいいですが、下向きが主流です。
A4・A5・A6・A7は(下向きには)つけないでおくと、ブレッドボードにそのまま挿してプロトタイプがつくれます。
基本的にArduino UNOと同じように使えますが、以下が異なります。
・ピンヘッダが付いていないので、自分ではんだ付けする必要がある
・USB-シリアル変換チップが載っていないので、スケッチを書き込む際に、外付けのUSB-シリアル変換モジュールが必要になる
・3.3V・8MHzで稼働する(ただし、5Vを流しても瞬時に壊れることはない)
・各段に小さい
・アナログピンA6・A7がある(UNOはA5まで)
プログラムを書き込むときは、下の写真のようにUSB-シリアル変換モジュールを介してPCとArduino Pro Miniを接続します。
例えばこれを使うとよいです。
6線使い、以下のように接続します。変換モジュールにはPCとUSBケーブルで接続するための端子があります。
注意が必要なのは、シリアル変換モジュールのRXとPro MiniのTX、シリアル-USB変換モジュールのTXとPro MiniのRX、というように、TXとRXは互い違いに接続することです。TはTransmit(送信)、RはReceive(受信)ですので。Arduino IDE(ソフトウェア)では、「ツール」の「ボード」から「Arduino Pro or Pro Mini」を選んで、さらに「プロセッサ:"Atmega328 (3.3V 8MHz)"」を選び、「シリアルポート」に現れている「COM X」(XはPCが自動的にアサインする数字)を選びます。あとの使い方はArduino UNOと同じです。ピンアサインもUNOと同じで、A4・A5がそれぞれI2C通信のSDA・SCLになります。2つだけちょっとおかしな位置にあるピンなので、わかりやすいです。
Pro Miniの電源関係はややわかりづらいので説明しておきます。シリアル-USB変換モジュールを介して先の写真のようにつないでいるとき、Vccに直接3.3Vちょうど(PCからの5V供給を、このモジュールが3.3Vに制御してくれています)が送られています。Vccはマイコンの動作電圧そのものになるので、ここに例えば4.2Vを送れば、全体が4.2Vで動くことになり、RTCやSDカードなどの周辺装置にもVcc端子を介して4.2Vがかかります。この程度なら問題はないですし、3.3Vモデルに5Vをかけても、少なくとも長い時間でなければ壊れたことはありません。一方、「RAW」という端子がありますが、ここに電圧をかけると、電圧レギュレータを介して3.3Vに調整されてからシステムに電圧がかかります。では常にこのRAW端子に電圧をかければよいということになりそうですが、3.3Vに減圧する以上、入力電圧は3.3Vよりある程度大きくなくてはなりません。3.3Vちょうどくらいの電圧をRAW端子にかけるとうまく動作しないことがあるので注意が必要です。エネループ3本(3.9~4.2V)をRAW端子・GND端子につないで動作させるのがちょうどよいようです(12Vまでかけてよいようなので、もちろん4本つないでも構いません。電圧レギュレータによるエネルギーロスが大きくなるだけです)。
Arduinoシリーズを使ってフィールド観測を行う場合、このPro Miniの出番が多くなります。省電力なうえに、小さなスペースに収めることができるからです。たとえば下の写真のように、ユニバーサル基板の上に載せ、他のモジュールとともに配線を固定(はんだ付け)し、完成品とします。
消費電力について
ここで、Arduino UNOとPro Miniの消費電力の比較をしてみます。ここでは以下の2つのスケッチを試します。1つ目は、「何もしない」スケッチです。2つ目はスリープを導入しています。これにより、Arduinoは省電力モードに入ります。avrのライブラリは標準としてすでに入っていると思いますが、ここではEnerlibライブラリを以下よりダウンロードしてインストール(やり方については第7回参照)してください。
https://github.com/Arduino-IoT/libraries/tree/master/Enerlib
これらをUNOとPro Miniで試してみました。UNO互換品にはいくつか種類があり、ここではUNO Aとしたもの(マイコンがATMEGA328P-PU、USB-シリアル変換チップがatmega16u2)とUNO Bとしたもの(マイコンがATMEGA328P-AU、USB-シリアル変換チップがCH340)、およびPro Miniを試しています。消費電力は以下のようになりました(どうやって計るか?テスターを使って直列つなぎにします。小学校で習った通りです)。
|
何もしない |
スリープ |
UNO A |
48mA |
33mA |
UNO B |
63mA |
48mA |
Pro Mini 3.3V 8 MHz |
5mA |
1.5mA |
他のボードも含めた比較は第31回を見て下さい。
さて、Pro Mini 3.3V 8MHzの省電力性能がよくわかりました。しかし、この電流はあくまで単体での消費電力であり、実際にはこれにRTCだのSDカードだのセンサーだのつけることになります。これらのモジュールは、それぞれおよそ1mAほど消費し、マイコンがスリープしても消費は続くので、4つつければスリープ時でも5~6mA消費することになってしまいます(2500mAhのエネループプロで約400時間、2~3週間程度)。少しでも省電力化するためにできることとしては、Arduinoそのものや、RTCなどモジュールについているLEDをもぎとることです。これにより、それぞれ0.5mAくらいずつ消費を減らすことができます(誰も見ていないロガーボックスの中で光り続けるほど無駄なことはない)。
ここで、素朴な疑問。スリープからはどうやって起きる?これについては次回説明します。