上記は5秒スリープの実験結果である。53時間45分8秒、ブート31604回となった。これは、試験結果(前編)で推定した駆動時間から8時間近く、ブート回数から5千回近く少なくなっている。これには、次の3つの理由がある。

1つ目はプロトコル時間が増えたこと。53時間45分8秒 = 193508秒、193508 / 31604 ≒ 6.123秒。スリープ時間5秒を引くと、プロトコル時間は1.123秒であり、3秒スリープの1.062秒に対して61msec増加した。この増加理由として、サーバーに接続するPCへのデータ転送時間が要因として考えらる。駆動試験では、ブラウザを起動状態のままにし、3秒スリープと5秒スリープの状況を続けて数日間表示した。ブラウザのメモリ使用領域が徐々に増え、転送時間が長くなったと思われる。

サーバーは1秒間隔でPCへデータ転送しているため、その転送時間内にセンサデバイスから接続要求あった場合は、転送終了まで待たされることになる。ただし、61 / 1062 ≒ 0.57%の増加なので、全体の消費電力に対するインパクトはそれほど大きくない。

2つ目はバッテリーの実容量である。一般的に、実利用上の容量はスペックの7割に満たないと言われている。ここでは70%と見なすことにする。

3つ目は、周辺回路消費電流の仮設定値10mAの見積もりが、少なすぎたと思われる。バッテリー容量を3200 x 0.7 = 2240mAhとし、周辺回路電流Base、駆動時間Total、小型有機LED駆動を含むプロトコル電流Prot、ブート回数Boots、スリープ時間Sleepとすれば、次の式となる。

  • 2240 x 3600 [mAsec] = Base x Total + Prot x (Total – Boots x Sleep)

この式に、3秒スリープと5秒スリープの試験結果を代入し、BaseとProtを求める。

  • 8064000 = Base x 158466 + Prot x (158466 – 39065 x 3) = Base x 158466 + Prot x 41271
  • 8064000 = Base x 193508 + Prot x (193508 – 31604 x 5) = Base x 193508 + Prot x 35488

⇒ Base ≒ 19.7mA, Prot ≒ 119.6mA

プロトコル時間を3秒スリープと5秒スリープの中間値 (1.062 + 1.123) / 2 = 1.0925秒 ≒ 1.1秒と仮設定する。10秒スリープの予測値は以下となる。

  • 8064000 = (19.7 x (10 + 1.1) + 119.6 x 1.1) x Boots = 350.23 x Boots
  • Boots ≒ 23025, Total = 23025 x (10 + 1.1) ≒ 255578sec = 70時間59分38秒

上記は10秒スリープの実験結果である。71時間31分8秒、ブート23484回となった。計算から求めた予測値( 70時間59分38秒、23025回)に、かなり近いことが分かる。なお、プロトコル時間を求めると0.962秒であった。

試験結果をまとめると以下のようになる。試験に用いたESP32開発キットは、周辺回路の消費電流が予想外に大きく、思ったほど長い連続駆動時間とはならなかった。アプリケーションに応じた周辺回路の設計が、重要なポイントであることが分かる。

スリープ(秒) ブート回数 駆動時間(秒) 駆動時間(日時分)
3 39065 158682 1日20時間05分
5 31604 193508 2日05時間45分
10 23484 257433 2日23時間31分

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です