TimerCameraのGROVEポートにENV.IIユニットをつなぎ、以下のような処理をさせているのですが、いくつか問題が発生しています。
以下のような状況になっています。
(1) USBポートから給電し、GROVEポートにENV.IIユニットをつないだ状態で使用
Wi-Fi接続が不安定で、かなりの高頻度でWi-Fiに接続できません。
(2) USBポートから給電し、GROVEポートにENV.IIユニットをつながない状態で使用
安定してWi-Fiに接続できます。
(3) TimerCamera内蔵バッテリーで動作させ、GROVEポートにENV.IIユニットをつないだ状態で使用
Wi-Fi接続は安定していますが、個体によっては非常に短期間にバッテリーを消費してしまいます。
問題は2点あります。
1点目は「Wi-Fi接続が不安定」という問題で、給電方法や外部デバイスの接続有無によっては、Wi-Fi接続が不安定になるという現象です。
「コンセントからACアダプター経由で給電」「PCのUSBポートから給電」のどちらであるか、またPCから給電の場合は、PCバッテリーの充電状態によっても状況が変わり、現象は安定していません。
こちら に、Wi-Fi接続が不安定になる現象についての記事があります。電源電圧によってWi-Fi電波の到達距離が極端に短くなるという問題で、対象デバイスにはTimerCameraも含まれています。
2点目は「内蔵バッテリーが短期間で消費される」という問題です。
プログラムの処理としては、Wi-Fi接続が「OK」「NG」のいずれであっても、その後にスタンバイ状態に移行します。スタンバイ時の電流消費は非常に小さいので、通信可否に関わらず、バッテリーは少なくとも数週間はもつという計算でした。
しかし、4個のデバイスで実験したところ、そのうちの数個はごく短期間(2〜3日)でバッテリーが空になり、充電しなおしても同じ状況が続きます。最短では、充電後半日でバッテリーが空になりました。
プログラムの処理が正常に行われていれば、このように短期間でバッテリーが消費されることはないことから、デバイスが(電源が不安定などの理由で)正常に起動できず、強制リブートを繰り返しているのではないか?と想像しています。
ふたつの問題は全く異なるものですが、原因が(多分)電源周りであるという点は同じです。
回路図 を確認すると、TimerCameraの電源周りはこんな感じになっているようです(間違えているかもしれません)。
細かく確認はしていませんが、GROVEポートにデバイスをつなぐことで、5V系電源に影響を及ぼす可能性はありそうです。
また、5V系電源が不安定になると、そこから生成している3.3V系電源に影響が及ぶ可能性も排除できません。
GROVEポートの電源電圧を、テスターで測ってみることにしました。
以下のようなスケッチをつくりました。デバイスが起動して5秒経過すると、20秒のスタンバイ状態に移行するものです。
#include "battery.h"
#include "bmm8563.h"
#define CAMERA_LED_GPIO 2
unsigned long interval = 20; // unit:sec
void setup() {
bat_init();
bmm8563_init();
bmm8563_setTimerIRQ(interval);
esp_sleep_enable_timer_wakeup(interval*1000*1000);
pinMode(CAMERA_LED_GPIO, OUTPUT);
digitalWrite(CAMERA_LED_GPIO, HIGH);
delay(5000);
digitalWrite(CAMERA_LED_GPIO, LOW);
bat_disable_output();
esp_deep_sleep_start();
}
void loop() {
}
TimerCamaraとテスターを以下のようにつなぎ、GROVEポートのV-G間の電圧をテスターで測ります。
結果は以下のとおりです。
電源供給方法 | ENV.IIユニット | 動作時電圧 | スタンバイ時電圧 |
---|---|---|---|
USBポート | あり | 4.68V | 4.74V |
USBポート | なし | 4.69V | 4.75V |
内蔵バッテリー | あり | 3.47V | 時間経過と共に低下 |
内蔵バッテリー | なし | 3.47V | 時間経過と共に低下 |
USBポートから給電した場合と、内蔵バッテリーで動作させた場合では、電圧値が大きく異なっており、内蔵バッテリーでは3.5V以下となっています。
現在、イチゴ栽培用のビニールハウスに、内蔵バッテリー駆動のTimerCameraを4台設置して温度計測を行なっているため、最も困っているのは「(3)短期間にバッテリーを消費する」という問題です。
5V系電源の電圧が低い上、スタンバイ時には電源供給もなくなるため、再起動時には瞬時に大きな電流が流れ、3.3V系電源の電圧も安定せず、強制リブートを繰り返すということはあり得そうです。
実際には動的な電圧変動(電源ノイズ)が原因となっていそうですが、詳細を調べることはできず、またハードウェアを触らない限りは対策もできません。
とりあえずは、GROVEポートにつなぐケーブルを短くして(少しでも負荷を軽くして)様子を見ることにします。
状況が改善されないようであれば、TimerCameraの利用をあきらめ、別のデバイス活用も検討する必要がありそうです。
なお、私がM5Stack、M5StickCの使い方を習得するのにあたっては、以下の書籍を参考にさせていただきました。
ごく基本的なところから、かなり複雑なスケッチや、ネットワーク接続など、比較的高度なものまで、つまづかずに読み進めていけるような構成になっており、大変わかりやすい本です。